rockchip:hdmi: modify hdmi input color mode according to the vop output domain(RGB/YUV)

This commit is contained in:
zwl
2014-08-22 09:01:09 +08:00
parent c0d496b44f
commit 5ca6692f0b
2 changed files with 22 additions and 3 deletions

View File

@@ -287,8 +287,13 @@ static int rk3036_hdmi_config_video(struct hdmi *hdmi_drv,
if (hdmi_drv->data->soc_type == HDMI_SOC_RK3036) {
vpara->input_color = VIDEO_INPUT_COLOR_RGB;
vpara->output_color = VIDEO_OUTPUT_RGB444;/*rk3036 vop only can output rgb fmt*/
} else if (hdmi_drv->data->soc_type == HDMI_SOC_RK312X)
vpara->input_color = VIDEO_INPUT_COLOR_YCBCR444;/*rk3128 vop can output yuv444 fmt*/
} else if (hdmi_drv->data->soc_type == HDMI_SOC_RK312X) {
/* rk3128 vop can output yuv444 fmt */
if (vpara->input_color == VIDEO_INPUT_COLOR_YCBCR444)
vpara->output_color = VIDEO_OUTPUT_YCBCR444;
else
vpara->output_color = VIDEO_OUTPUT_RGB444;
}
if (hdmi_drv->pwr_mode == LOWER_PWR)
rk3036_hdmi_set_pwr_mode(hdmi_drv, NORMAL);

View File

@@ -569,10 +569,24 @@ int hdmi_switch_fb(struct hdmi *hdmi, int vic)
*/
int hdmi_init_video_para(struct hdmi *hdmi_drv, struct hdmi_video_para *video)
{
struct rk_lcdc_driver *lcdc_drv = NULL;
if (unlikely(hdmi_drv == NULL))
return -1;
lcdc_drv = hdmi_drv->lcdc;
if (unlikely(lcdc_drv == NULL))
return -1;
memset(video, 0, sizeof(struct hdmi_video_para));
video->vic = hdmi_drv->vic;
video->input_mode = VIDEO_INPUT_RGB_YCBCR_444;
video->input_color = VIDEO_INPUT_COLOR_RGB;
if (lcdc_drv->output_domain == OUTPUT_RGB_DOMAIN)
video->input_color = VIDEO_INPUT_COLOR_RGB;
else
video->input_color = VIDEO_INPUT_COLOR_YCBCR444;
video->output_mode = hdmi_drv->edid.sink_hdmi;
video->format_3d = 0; /* TODO modify according to EDID if need */
video->pixel_repet = 0;