summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorAravind Venkateswaran <aravindh@codeaurora.org>2017-02-17 16:36:40 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-13 18:19:30 -0700
commit7d8800fa4d7cb6d8f68cf26206098a96e82638a6 (patch)
tree9af0443bc34edd4432e8a5017aa357aaa4b10ed5 /drivers/video/fbdev
parentf8c32514eb82a3bdbf99386d3a6828c68f31ff87 (diff)
msm: mdss: dp: increase AUX controller hardware timeout limits
Increase the AUX controller hardware timeout limits to the maximum value supported. This increases the AUX controller hardware's robustness in handling transactions in the face of differing timing from one DisplayPort sink to another. CRs-Fixed: 2006096 Change-Id: Ia0da13720526a96f3a88a849043a3ffbb1185cf7 Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org> Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.c1
-rw-r--r--drivers/video/fbdev/msm/mdss_dp_util.c13
-rw-r--r--drivers/video/fbdev/msm/mdss_dp_util.h3
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp.c b/drivers/video/fbdev/msm/mdss_dp.c
index f067ce07c6db..630898812a7b 100644
--- a/drivers/video/fbdev/msm/mdss_dp.c
+++ b/drivers/video/fbdev/msm/mdss_dp.c
@@ -1907,6 +1907,7 @@ static int mdss_dp_host_init(struct mdss_panel_data *pdata)
mdss_dp_ctrl_reset(&dp_drv->ctrl_io);
mdss_dp_phy_reset(&dp_drv->ctrl_io);
mdss_dp_aux_reset(&dp_drv->ctrl_io);
+ mdss_dp_aux_set_limits(&dp_drv->ctrl_io);
mdss_dp_aux_ctrl(&dp_drv->ctrl_io, true);
pr_debug("Ctrl_hw_rev =0x%x, phy hw_rev =0x%x\n",
diff --git a/drivers/video/fbdev/msm/mdss_dp_util.c b/drivers/video/fbdev/msm/mdss_dp_util.c
index ea492f54054c..c073be47b822 100644
--- a/drivers/video/fbdev/msm/mdss_dp_util.c
+++ b/drivers/video/fbdev/msm/mdss_dp_util.c
@@ -858,6 +858,19 @@ void mdss_dp_setup_tr_unit(struct dss_io_data *ctrl_io, u8 link_rate,
pr_debug("dp_tu=0x%x\n", dp_tu);
}
+void mdss_dp_aux_set_limits(struct dss_io_data *ctrl_io)
+{
+ u32 const max_aux_timeout_count = 0xFFFFF;
+ u32 const max_aux_limits = 0xFFFFFFFF;
+
+ pr_debug("timeout=0x%x, limits=0x%x\n",
+ max_aux_timeout_count, max_aux_limits);
+
+ writel_relaxed(max_aux_timeout_count,
+ ctrl_io->base + DP_AUX_TIMEOUT_COUNT);
+ writel_relaxed(max_aux_limits, ctrl_io->base + DP_AUX_LIMITS);
+}
+
void mdss_dp_ctrl_lane_mapping(struct dss_io_data *ctrl_io, char *l_map)
{
u8 bits_per_lane = 2;
diff --git a/drivers/video/fbdev/msm/mdss_dp_util.h b/drivers/video/fbdev/msm/mdss_dp_util.h
index 37cb515518e3..967f7842d1c3 100644
--- a/drivers/video/fbdev/msm/mdss_dp_util.h
+++ b/drivers/video/fbdev/msm/mdss_dp_util.h
@@ -35,6 +35,8 @@
#define DP_AUX_CTRL (0x00000230)
#define DP_AUX_DATA (0x00000234)
#define DP_AUX_TRANS_CTRL (0x00000238)
+#define DP_AUX_TIMEOUT_COUNT (0x0000023C)
+#define DP_AUX_LIMITS (0x00000240)
#define DP_AUX_STATUS (0x00000244)
#define DP_DPCD_CP_IRQ (0x201)
@@ -272,6 +274,7 @@ static const struct dp_vc_tu_mapping_table tu_table[] = {
0x21, 0x000c, false, 0x00, 0x00, 0x00, 0x27},
};
+void mdss_dp_aux_set_limits(struct dss_io_data *ctrl_io);
int dp_aux_read(void *ep, struct edp_cmd *cmds);
int dp_aux_write(void *ep, struct edp_cmd *cmd);
void mdss_dp_state_ctrl(struct dss_io_data *ctrl_io, u32 data);