summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorTatenda Chipeperekwa <tatendac@codeaurora.org>2017-01-30 15:52:56 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-03-08 12:46:27 -0800
commit2367aa4dc1cbdb850a7b7f2f2e2bd75a33fe73d7 (patch)
tree7f4ef379ba6cb01cffd092696ea881f0c7854f91 /drivers/video/fbdev
parentcc54970685fe40a997a5d25bc4830ec56a9b63ed (diff)
msm: mdss: dp: set failsafe link parameters on EDID failure
Set the link parameters that correspond to the failsafe resolution if there is a failure in reading or parsing the EDID data. This will allow the display to be configured with the failsafe resolution and prevent the driver from going into a bad state. CRs-Fixed: 2002794 Change-Id: I5882e66eee6073da6484903956abdcb3db05a5ea Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp.c b/drivers/video/fbdev/msm/mdss_dp.c
index bd8e710870f7..e0e24e238d94 100644
--- a/drivers/video/fbdev/msm/mdss_dp.c
+++ b/drivers/video/fbdev/msm/mdss_dp.c
@@ -1673,6 +1673,19 @@ static void mdss_dp_set_default_resolution(struct mdss_dp_drv_pdata *dp)
DEFAULT_VIDEO_RESOLUTION, true);
}
+static void mdss_dp_set_default_link_parameters(struct mdss_dp_drv_pdata *dp)
+{
+ const int default_max_link_rate = 0x6;
+ const int default_max_lane_count = 1;
+
+ dp->dpcd.max_lane_count = default_max_lane_count;
+ dp->dpcd.max_link_rate = default_max_link_rate;
+
+ pr_debug("max_link_rate = 0x%x, max_lane_count= 0x%x\n",
+ dp->dpcd.max_link_rate,
+ dp->dpcd.max_lane_count);
+}
+
static int mdss_dp_edid_init(struct mdss_panel_data *pdata)
{
struct mdss_dp_drv_pdata *dp_drv = NULL;
@@ -1878,12 +1891,16 @@ static int mdss_dp_process_hpd_high(struct mdss_dp_drv_pdata *dp)
pr_debug("edid read error, setting default resolution\n");
mdss_dp_set_default_resolution(dp);
+ mdss_dp_set_default_link_parameters(dp);
goto notify;
}
ret = hdmi_edid_parser(dp->panel_data.panel_info.edid_data);
if (ret) {
- pr_err("edid parse failed\n");
+ pr_err("edid parse failed, setting default resolution\n");
+
+ mdss_dp_set_default_resolution(dp);
+ mdss_dp_set_default_link_parameters(dp);
goto notify;
}