diff options
| author | Aravind Venkateswaran <aravindh@codeaurora.org> | 2013-03-08 11:37:37 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:15:15 -0700 |
| commit | e60425617f573bc40886a2a072bed01e3759d7db (patch) | |
| tree | 395278428374ec45d02b0162928af2447429e590 | |
| parent | ecdb612d649f6a936e93edcc34fe4c3c43145938 (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.c | 7 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.h | 2 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/msm_mdss_io_8974.c | 19 |
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); |
