summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.c12
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.h2
-rw-r--r--drivers/video/fbdev/msm/mdss_dp_aux.c9
3 files changed, 11 insertions, 12 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp.c b/drivers/video/fbdev/msm/mdss_dp.c
index 5735f7566d53..eafe2ed93c34 100644
--- a/drivers/video/fbdev/msm/mdss_dp.c
+++ b/drivers/video/fbdev/msm/mdss_dp.c
@@ -1399,12 +1399,7 @@ int mdss_dp_on_hpd(struct mdss_dp_drv_pdata *dp_drv)
if (dp_drv->new_vic && (dp_drv->new_vic != dp_drv->vic))
dp_init_panel_info(dp_drv, dp_drv->new_vic);
- dp_drv->link_rate =
- mdss_dp_gen_link_clk(&dp_drv->panel_data.panel_info,
- dp_drv->dpcd.max_lane_count);
-
- pr_debug("link_rate=0x%x, Max rate supported by sink=0x%x\n",
- dp_drv->link_rate, dp_drv->dpcd.max_link_rate);
+ dp_drv->link_rate = mdss_dp_gen_link_clk(dp_drv);
if (!dp_drv->link_rate) {
pr_err("Unable to configure required link rate\n");
ret = -EINVAL;
@@ -1414,8 +1409,6 @@ int mdss_dp_on_hpd(struct mdss_dp_drv_pdata *dp_drv)
mdss_dp_phy_share_lane_config(&dp_drv->phy_io, dp_drv->orientation,
dp_drv->dpcd.max_lane_count);
- pr_debug("link_rate = 0x%x\n", dp_drv->link_rate);
-
ret = mdss_dp_enable_mainlink_clocks(dp_drv);
if (ret)
goto exit;
@@ -3141,8 +3134,7 @@ static bool mdss_dp_video_pattern_test_lt_needed(struct mdss_dp_drv_pdata *dp)
* 2. Lane count changes
* For now, assume that lane count is not going to change
*/
- new_link_rate = mdss_dp_gen_link_clk(&dp->panel_data.panel_info,
- dp->dpcd.max_lane_count);
+ new_link_rate = mdss_dp_gen_link_clk(dp);
pr_debug("new link rate = 0x%x, current link rate = 0x%x\n",
new_link_rate, dp->link_rate);
if (new_link_rate != dp->link_rate) {
diff --git a/drivers/video/fbdev/msm/mdss_dp.h b/drivers/video/fbdev/msm/mdss_dp.h
index d5e73e264f89..26bf771f8ea5 100644
--- a/drivers/video/fbdev/msm/mdss_dp.h
+++ b/drivers/video/fbdev/msm/mdss_dp.h
@@ -960,7 +960,7 @@ void mdss_dp_fill_link_cfg(struct mdss_dp_drv_pdata *ep);
void mdss_dp_sink_power_down(struct mdss_dp_drv_pdata *ep);
void mdss_dp_lane_power_ctrl(struct mdss_dp_drv_pdata *ep, int up);
void mdss_dp_config_ctrl(struct mdss_dp_drv_pdata *ep);
-char mdss_dp_gen_link_clk(struct mdss_panel_info *pinfo, char lane_cnt);
+char mdss_dp_gen_link_clk(struct mdss_dp_drv_pdata *dp);
int mdss_dp_aux_set_sink_power_state(struct mdss_dp_drv_pdata *ep, char state);
int mdss_dp_aux_send_psm_request(struct mdss_dp_drv_pdata *dp, bool enable);
void mdss_dp_aux_send_test_response(struct mdss_dp_drv_pdata *ep);
diff --git a/drivers/video/fbdev/msm/mdss_dp_aux.c b/drivers/video/fbdev/msm/mdss_dp_aux.c
index 1386adc8cc00..2b2a92a0326e 100644
--- a/drivers/video/fbdev/msm/mdss_dp_aux.c
+++ b/drivers/video/fbdev/msm/mdss_dp_aux.c
@@ -499,12 +499,14 @@ void dp_extract_edid_feature(struct edp_edid *edid, char *buf)
edid->dpm, edid->color_format);
};
-char mdss_dp_gen_link_clk(struct mdss_panel_info *pinfo, char lane_cnt)
+char mdss_dp_gen_link_clk(struct mdss_dp_drv_pdata *dp)
{
const u32 encoding_factx10 = 8;
const u32 ln_to_link_ratio = 10;
u32 min_link_rate, reminder = 0;
char calc_link_rate = 0;
+ struct mdss_panel_info *pinfo = &dp->panel_data.panel_info;
+ char lane_cnt = dp->dpcd.max_lane_count;
pr_debug("clk_rate=%llu, bpp= %d, lane_cnt=%d\n",
pinfo->clk_rate, pinfo->bpp, lane_cnt);
@@ -543,6 +545,11 @@ char mdss_dp_gen_link_clk(struct mdss_panel_info *pinfo, char lane_cnt)
calc_link_rate = DP_LINK_RATE_540;
}
+ pr_debug("calc_link_rate=0x%x, Max rate supported by sink=0x%x\n",
+ dp->link_rate, dp->dpcd.max_link_rate);
+ if (calc_link_rate > dp->dpcd.max_link_rate)
+ calc_link_rate = dp->dpcd.max_link_rate;
+ pr_debug("calc_link_rate = 0x%x\n", calc_link_rate);
return calc_link_rate;
}