summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_panel.c11
-rw-r--r--drivers/video/fbdev/msm/mdss_panel.c17
-rw-r--r--drivers/video/fbdev/msm/mdss_panel.h7
3 files changed, 25 insertions, 10 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c
index 3847d62ff887..017bac29cf3c 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_panel.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c
@@ -1290,16 +1290,7 @@ static void mdss_panel_parse_te_params(struct device_node *np,
/* override te parameters if panel is in sw te mode */
if (panel_info->sim_panel_mode == SIM_SW_TE_MODE) {
- panel_info->te.sync_cfg_height = panel_info->yres
- + panel_info->lcdc.v_front_porch
- + panel_info->lcdc.v_back_porch;
- panel_info->te.vsync_init_val = 0;
- panel_info->te.start_pos = 5;
- panel_info->te.rd_ptr_irq = 1;
- pr_debug("SW TE override: read_ptr:%d,start_pos:%d,height:%d,init_val:%d\n",
- panel_info->te.rd_ptr_irq, panel_info->te.start_pos,
- panel_info->te.sync_cfg_height,
- panel_info->te.vsync_init_val);
+ mdss_panel_override_te_params(panel_info);
} else {
rc = of_property_read_u32
(np, "qcom,mdss-tear-check-sync-cfg-height", &tmp);
diff --git a/drivers/video/fbdev/msm/mdss_panel.c b/drivers/video/fbdev/msm/mdss_panel.c
index afac91a35bc9..3ee449afad87 100644
--- a/drivers/video/fbdev/msm/mdss_panel.c
+++ b/drivers/video/fbdev/msm/mdss_panel.c
@@ -504,6 +504,18 @@ void mdss_panel_debugfs_cleanup(struct mdss_panel_info *panel_info)
pr_debug("Cleaned up mdss_panel_debugfs_info\n");
}
+void mdss_panel_override_te_params(struct mdss_panel_info *pinfo)
+{
+ pinfo->te.sync_cfg_height = mdss_panel_get_vtotal(pinfo);
+ pinfo->te.vsync_init_val = 0;
+ pinfo->te.start_pos = 5;
+ pinfo->te.rd_ptr_irq = 1;
+ pr_debug("SW TE override: read_ptr:%d,start_pos:%d,height:%d,init_val:%d\n",
+ pinfo->te.rd_ptr_irq, pinfo->te.start_pos,
+ pinfo->te.sync_cfg_height,
+ pinfo->te.vsync_init_val);
+}
+
void mdss_panel_debugfsinfo_to_panelinfo(struct mdss_panel_info *panel_info)
{
struct mdss_panel_data *pdata;
@@ -550,6 +562,11 @@ void mdss_panel_debugfsinfo_to_panelinfo(struct mdss_panel_info *panel_info)
}
pinfo->panel_max_vtotal = mdss_panel_get_vtotal(pinfo);
+
+ /* override te parameters if panel is in sw te mode */
+ if (panel_info->sim_panel_mode == SIM_SW_TE_MODE)
+ mdss_panel_override_te_params(panel_info);
+
pdata = pdata->next;
} while (pdata);
}
diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h
index 314e01de3fb7..dda3789d67c1 100644
--- a/drivers/video/fbdev/msm/mdss_panel.h
+++ b/drivers/video/fbdev/msm/mdss_panel.h
@@ -775,6 +775,13 @@ int mdss_panel_get_boot_cfg(void);
*/
bool mdss_is_ready(void);
int mdss_rect_cmp(struct mdss_rect *rect1, struct mdss_rect *rect2);
+
+/**
+ * mdss_panel_override_te_params() - overrides TE params to enable SW TE
+ * @pinfo: panel info
+ */
+void mdss_panel_override_te_params(struct mdss_panel_info *pinfo);
+
#ifdef CONFIG_FB_MSM_MDSS
int mdss_panel_debugfs_init(struct mdss_panel_info *panel_info);
void mdss_panel_debugfs_cleanup(struct mdss_panel_info *panel_info);