From: Zheng Yang <zhengyang@rock-chips.com>
Date: Fri, 6 Apr 2012 02:17:48 +0000 (+0800)
Subject: rk30:hdmi: fix hdmi display error when switch resolution.
X-Git-Tag: firefly_0821_release~9465
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8c891dbc1ec39a52f575f19c6ae93499345d31cc;p=firefly-linux-kernel-4.4.55.git

rk30:hdmi: fix hdmi display error when switch resolution.
---

diff --git a/drivers/video/rockchip/hdmi/rk30_hdmi.h b/drivers/video/rockchip/hdmi/rk30_hdmi.h
index 7cc680669303..66ee37685945 100755
--- a/drivers/video/rockchip/hdmi/rk30_hdmi.h
+++ b/drivers/video/rockchip/hdmi/rk30_hdmi.h
@@ -24,7 +24,7 @@ enum {
 #define HDMI_SOURCE_DEFAULT		HDMI_SOURCE_LCDC1
 
 /* default HDMI output video mode */
-#define HDMI_VIDEO_DEFAULT_MODE			HDMI_1920x1080p_60Hz//HDMI_1280x720p_60Hz
+#define HDMI_VIDEO_DEFAULT_MODE			HDMI_1280x720p_60Hz//HDMI_1920x1080p_60Hz
 #define HDMI_AUDIO_DEFAULT_CHANNEL		2
 #define HDMI_AUDIO_DEFAULT_RATE			HDMI_AUDIO_FS_44100
 #define HDMI_AUDIO_DEFAULT_WORD_LENGTH	HDMI_AUDIO_WORD_LENGTH_16bit
diff --git a/drivers/video/rockchip/hdmi/rk30_hdmi_lcdc.c b/drivers/video/rockchip/hdmi/rk30_hdmi_lcdc.c
index 0c3d6e296e7f..6ca348f50de3 100755
--- a/drivers/video/rockchip/hdmi/rk30_hdmi_lcdc.c
+++ b/drivers/video/rockchip/hdmi/rk30_hdmi_lcdc.c
@@ -486,20 +486,30 @@ const char *hdmi_get_video_mode_name(unsigned char vic)
 int hdmi_switch_fb(struct hdmi *hdmi, int vic)
 {
 	int rc = 0;
+	struct layer_par *par = NULL;
+	struct rk_lcdc_device_driver * dev_drv;
+	struct rk29fb_screen *screen; 
 
-//	if(hdmi->config_set.resolution == 0)
-//		hdmi->config_set.resolution = HDMI_DEFAULT_RESOLUTION;
+	if(hdmi->vic == 0)
+		hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
 		
 	if(hdmi->lcdc == NULL || hdmi->lcdc->screen == NULL) {
 		dev_err(hdmi->dev, "lcdc %d not exist\n", HDMI_SOURCE_DEFAULT);
 		return -1;
 	}
 
+	dev_drv = hdmi->lcdc;
+	screen = dev_drv->screen;
 	rc = hdmi_set_info(hdmi->lcdc->screen, vic);
 
 	if(rc == 0 &&  hdmi->lcdc->load_screen) {
 		
-		rc = hdmi->lcdc->load_screen(hdmi->lcdc, 0);
+		hdmi->lcdc->load_screen(hdmi->lcdc, 0);
+		par = &dev_drv->layer_par[1];
+   		par->xsize = screen->x_res;
+    	par->ysize = screen->y_res;
+		hdmi->lcdc->set_par(hdmi->lcdc, 1);
+		hdmi->lcdc->pan_display(hdmi->lcdc, 1);
 	}
 	return rc;
 }