summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c7
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.h2
-rw-r--r--drivers/video/fbdev/msm/msm_mdss_io_8974.c19
3 files changed, 18 insertions, 10 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index 83a5f5bc64a6..2ec588eb35e4 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -659,7 +659,7 @@ int dsi_panel_device_register(struct platform_device *pdev,
return rc;
}
- if ((dsi_pclk_rate < 3300000) || (dsi_pclk_rate > 103300000))
+ if ((dsi_pclk_rate < 3300000) || (dsi_pclk_rate > 250000000))
dsi_pclk_rate = 35000000;
mipi->dsi_pclk_rate = dsi_pclk_rate;
@@ -790,6 +790,11 @@ int dsi_panel_device_register(struct platform_device *pdev,
ctrl_pdata->on = panel_data->on;
ctrl_pdata->off = panel_data->off;
+ ctrl_pdata->pclk_rate = dsi_pclk_rate;
+ ctrl_pdata->byte_clk_rate = panel_data->panel_info.clk_rate / 8;
+ pr_debug("%s: pclk=%d, bclk=%d\n", __func__,
+ ctrl_pdata->pclk_rate, ctrl_pdata->byte_clk_rate);
+
pr_debug("%s: Panal data initialized\n", __func__);
return 0;
}
diff --git a/drivers/video/fbdev/msm/mdss_dsi.h b/drivers/video/fbdev/msm/mdss_dsi.h
index 06c2952686c1..4b920a6dc2e9 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.h
+++ b/drivers/video/fbdev/msm/mdss_dsi.h
@@ -286,6 +286,8 @@ struct mdss_dsi_ctrl_pdata {
struct dsi_panel_cmds_list *on_cmds;
struct dsi_panel_cmds_list *off_cmds;
struct dsi_drv_cm_data shared_pdata;
+ u32 pclk_rate;
+ u32 byte_clk_rate;
};
int dsi_panel_device_register(struct platform_device *pdev,
diff --git a/drivers/video/fbdev/msm/msm_mdss_io_8974.c b/drivers/video/fbdev/msm/msm_mdss_io_8974.c
index 3b6fc382fbe6..2b07e43851cd 100644
--- a/drivers/video/fbdev/msm/msm_mdss_io_8974.c
+++ b/drivers/video/fbdev/msm/msm_mdss_io_8974.c
@@ -173,6 +173,7 @@ void mdss_dsi_unprepare_clocks(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
void mdss_dsi_clk_enable(struct mdss_panel_data *pdata)
{
struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
+ u32 esc_clk_rate = 19200000;
ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
@@ -186,17 +187,17 @@ void mdss_dsi_clk_enable(struct mdss_panel_data *pdata)
return;
}
- if (clk_set_rate(ctrl_pdata->esc_clk, 19200000) < 0)
- pr_err("%s: dsi_esc_clk - clk_set_rate failed\n",
- __func__);
+ pr_debug("%s: Setting clock rates: pclk=%d, byteclk=%d escclk=%d\n",
+ __func__, ctrl_pdata->pclk_rate,
+ ctrl_pdata->byte_clk_rate, esc_clk_rate);
+ if (clk_set_rate(ctrl_pdata->esc_clk, esc_clk_rate) < 0)
+ pr_err("%s: dsi_esc_clk - clk_set_rate failed\n", __func__);
- if (clk_set_rate(ctrl_pdata->byte_clk, 53000000) < 0)
- pr_err("%s: dsi_byte_clk - clk_set_rate failed\n",
- __func__);
+ if (clk_set_rate(ctrl_pdata->byte_clk, ctrl_pdata->byte_clk_rate) < 0)
+ pr_err("%s: dsi_byte_clk - clk_set_rate failed\n", __func__);
- if (clk_set_rate(ctrl_pdata->pixel_clk, 70000000) < 0)
- pr_err("%s: dsi_pixel_clk - clk_set_rate failed\n",
- __func__);
+ if (clk_set_rate(ctrl_pdata->pixel_clk, ctrl_pdata->pclk_rate) < 0)
+ pr_err("%s: dsi_pixel_clk - clk_set_rate failed\n", __func__);
clk_enable(ctrl_pdata->esc_clk);
clk_enable(ctrl_pdata->byte_clk);