msm: mdss: fix the pixel clock calculation for fb modes
In the current implementation, if panel is configured in split mode and supports multiple resolutions, then the pixel clock calculation for the supported modes does not take split mode into consideration. This causes issues when recovery or charger application try to configure display. So fix the same by recalculating the pixel clock with taking care of proper width in case of split mode panel. Change-Id: Ie6b50bcd67d3e283610f8b04ac0a974b3527e552 Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
This commit is contained in:
parent
823d04d683
commit
b3c7e19b74
1 changed files with 15 additions and 2 deletions
|
@ -1192,11 +1192,24 @@ static int mdss_fb_init_panel_modes(struct msm_fb_data_type *mfd,
|
|||
if (pdata->next) {
|
||||
spt = mdss_panel_get_timing_by_name(pdata->next,
|
||||
modedb[i].name);
|
||||
if (!IS_ERR_OR_NULL(spt))
|
||||
/* for split config, recalculate xres and pixel clock */
|
||||
if (!IS_ERR_OR_NULL(spt)) {
|
||||
unsigned long pclk, h_total, v_total;
|
||||
modedb[i].xres += spt->xres;
|
||||
else
|
||||
h_total = modedb[i].xres +
|
||||
modedb[i].left_margin +
|
||||
modedb[i].right_margin +
|
||||
modedb[i].hsync_len;
|
||||
v_total = modedb[i].yres +
|
||||
modedb[i].lower_margin +
|
||||
modedb[i].upper_margin +
|
||||
modedb[i].vsync_len;
|
||||
pclk = h_total * v_total * modedb[i].refresh;
|
||||
modedb[i].pixclock = KHZ2PICOS(pclk / 1000);
|
||||
} else {
|
||||
pr_debug("no matching split config for %s\n",
|
||||
modedb[i].name);
|
||||
}
|
||||
|
||||
/*
|
||||
* if no panel timing found for current, need to
|
||||
|
|
Loading…
Add table
Reference in a new issue