summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAravind Venkateswaran <aravindh@codeaurora.org>2013-03-08 11:37:37 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:15:15 -0700
commite60425617f573bc40886a2a072bed01e3759d7db (patch)
tree395278428374ec45d02b0162928af2447429e590
parentecdb612d649f6a936e93edcc34fe4c3c43145938 (diff)
msm: mdss: Use computed values for DSI clocks
When setting the rates for the DSI byte clock, pixel clock and the escape clock, use the computed values based on panel parameters instead of hardcoded values. Change-Id: Ief4d639d2d67b99439784eeb68cae924619cbaf1 Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
-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);