Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77497c04 authored by Sandeep Panda's avatar Sandeep Panda Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarSandeep Panda <spanda@codeaurora.org>
parent a385b633
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -1161,11 +1161,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