From: Zheng Yang 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; }