@@ -47,7 +47,7 @@ static void msm_dp_panel_read_psr_cap(struct msm_dp_panel_private *panel)
47
47
48
48
static int msm_dp_panel_read_dpcd (struct msm_dp_panel * msm_dp_panel )
49
49
{
50
- int rc ;
50
+ int rc , max_lttpr_lanes , max_lttpr_rate ;
51
51
struct msm_dp_panel_private * panel ;
52
52
struct msm_dp_link_info * link_info ;
53
53
u8 * dpcd , major , minor ;
@@ -75,6 +75,16 @@ static int msm_dp_panel_read_dpcd(struct msm_dp_panel *msm_dp_panel)
75
75
if (link_info -> rate > msm_dp_panel -> max_dp_link_rate )
76
76
link_info -> rate = msm_dp_panel -> max_dp_link_rate ;
77
77
78
+ /* Limit data lanes from LTTPR capabilities, if any */
79
+ max_lttpr_lanes = drm_dp_lttpr_max_lane_count (panel -> link -> lttpr_common_caps );
80
+ if (max_lttpr_lanes && max_lttpr_lanes < link_info -> num_lanes )
81
+ link_info -> num_lanes = max_lttpr_lanes ;
82
+
83
+ /* Limit link rate from LTTPR capabilities, if any */
84
+ max_lttpr_rate = drm_dp_lttpr_max_link_rate (panel -> link -> lttpr_common_caps );
85
+ if (max_lttpr_rate && max_lttpr_rate < link_info -> rate )
86
+ link_info -> rate = max_lttpr_rate ;
87
+
78
88
drm_dbg_dp (panel -> drm_dev , "version: %d.%d\n" , major , minor );
79
89
drm_dbg_dp (panel -> drm_dev , "link_rate=%d\n" , link_info -> rate );
80
90
drm_dbg_dp (panel -> drm_dev , "lane_count=%d\n" , link_info -> num_lanes );
0 commit comments