msm: mdss: fix the logic for configuration of DSI clock source
The DSI clocks need to sourced out of the correct DSI PLL depending on the h/w configuration. The current assumption is that the clk_set_parent operation on DSI branch clocks is necessary for targets which support 2 DSI PLLs. However, there is a possibility that the DSI clock source needs to be set even for single DSI targets if the clock driver implements multi-parent based approach for DSI RCG clock structures. Add change to take care of this. Change-Id: Ib399a8264d0d9919701c70ed6a77d50a69ec386c Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
This commit is contained in:
parent
bc27abf530
commit
11cb05daed
1 changed files with 17 additions and 7 deletions
|
@ -80,9 +80,8 @@ static void mdss_dsi_config_clk_src(struct platform_device *pdev)
|
|||
struct mdss_dsi_data *dsi_res = platform_get_drvdata(pdev);
|
||||
struct dsi_shared_data *sdata = dsi_res->shared_data;
|
||||
|
||||
if (!sdata->ext_byte0_clk || !sdata->ext_byte1_clk ||
|
||||
!sdata->ext_pixel0_clk || !sdata->ext_pixel1_clk) {
|
||||
pr_debug("%s: config_clk_src not needed\n", __func__);
|
||||
if (!sdata->ext_byte0_clk || !sdata->ext_pixel0_clk) {
|
||||
pr_debug("%s: DSI-0 ext. clocks not present\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -102,10 +101,15 @@ static void mdss_dsi_config_clk_src(struct platform_device *pdev)
|
|||
if (mdss_dsi_is_hw_config_split(sdata)) {
|
||||
sdata->byte1_parent = sdata->byte0_parent;
|
||||
sdata->pixel1_parent = sdata->pixel0_parent;
|
||||
} else {
|
||||
} else if (sdata->ext_byte1_clk && sdata->ext_pixel1_clk) {
|
||||
sdata->byte1_parent = sdata->ext_byte1_clk;
|
||||
sdata->pixel1_parent = sdata->ext_pixel1_clk;
|
||||
} else {
|
||||
pr_debug("%s: DSI-1 external clocks not present\n",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
|
||||
pr_debug("%s: default: DSI0 <--> PLL0, DSI1 <--> %s", __func__,
|
||||
mdss_dsi_is_hw_config_split(sdata) ? "PLL0" : "PLL1");
|
||||
} else {
|
||||
|
@ -122,9 +126,15 @@ static void mdss_dsi_config_clk_src(struct platform_device *pdev)
|
|||
sdata->byte0_parent = sdata->ext_byte0_clk;
|
||||
sdata->pixel0_parent = sdata->ext_pixel0_clk;
|
||||
} else if (mdss_dsi_is_pll_src_pll1(sdata)) {
|
||||
pr_debug("%s: single source: PLL1", __func__);
|
||||
sdata->byte0_parent = sdata->ext_byte1_clk;
|
||||
sdata->pixel0_parent = sdata->ext_pixel1_clk;
|
||||
if (sdata->ext_byte1_clk && sdata->ext_pixel1_clk) {
|
||||
pr_debug("%s: single source: PLL1", __func__);
|
||||
sdata->byte0_parent = sdata->ext_byte1_clk;
|
||||
sdata->pixel0_parent = sdata->ext_pixel1_clk;
|
||||
} else {
|
||||
pr_err("%s: DSI-1 external clocks not present\n",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
sdata->byte1_parent = sdata->byte0_parent;
|
||||
sdata->pixel1_parent = sdata->pixel0_parent;
|
||||
|
|
Loading…
Add table
Reference in a new issue