From: Mark Yao Date: Tue, 3 Nov 2015 02:21:26 +0000 (+0800) Subject: video: hdmi: judge interlace mode from vmode bit mask X-Git-Tag: firefly_0821_release~3642 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2b0be80c6ae6b484791b39da5bbaea536a1b23bd;p=firefly-linux-kernel-4.4.55.git video: hdmi: judge interlace mode from vmode bit mask Vmode is a flag with bit mask, we can't judge interlace mode from equal compare, need mask its bit. Change-Id: Iad69bd52173c5ea179639deaff25f9a4ed3fc5d3 Signed-off-by: Mark Yao --- diff --git a/drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c b/drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c index bf521936643c..9e7b8761c88e 100644 --- a/drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c +++ b/drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c @@ -373,13 +373,13 @@ static void hdmi_sort_modelist(struct hdmi_edid *edid, int feature) continue; if ((feature & SUPPORT_1080I) == 0 && hdmi_mode[i].mode.xres == 1920 && - hdmi_mode[i].mode.vmode == - FB_VMODE_INTERLACED) + (hdmi_mode[i].mode.vmode & + FB_VMODE_INTERLACED)) continue; if ((feature & SUPPORT_480I_576I) == 0 && hdmi_mode[i].mode.xres == 720 && - hdmi_mode[i].mode.vmode == - FB_VMODE_INTERLACED) + hdmi_mode[i].mode.vmode & + FB_VMODE_INTERLACED) continue; vic = modelist->vic; modelist->vic = hdmi_mode[i].vic; @@ -493,7 +493,7 @@ int hdmi_ouputmode_select(struct hdmi *hdmi, int edid_ok) just list common hdmi foramt. */ if (mode->xres > 3840 || mode->refresh < 50 || - mode->vmode == FB_VMODE_INTERLACED || + (mode->vmode & FB_VMODE_INTERLACED) || hdmi_mode[i].vic & HDMI_VIDEO_DMT) continue; } @@ -508,11 +508,11 @@ int hdmi_ouputmode_select(struct hdmi *hdmi, int edid_ok) continue; if ((feature & SUPPORT_1080I) == 0 && mode->xres == 1920 && - mode->vmode == FB_VMODE_INTERLACED) + (mode->vmode & FB_VMODE_INTERLACED)) continue; if ((feature & SUPPORT_480I_576I) == 0 && mode->xres == 720 && - mode->vmode == FB_VMODE_INTERLACED) + (mode->vmode & FB_VMODE_INTERLACED)) continue; hdmi_add_videomode(mode, head); } @@ -633,11 +633,11 @@ void hdmi_init_modelist(struct hdmi *hdmi) continue; if ((feature & SUPPORT_1080I) == 0 && hdmi_mode[i].mode.xres == 1920 && - hdmi_mode[i].mode.vmode == FB_VMODE_INTERLACED) + (hdmi_mode[i].mode.vmode & FB_VMODE_INTERLACED)) continue; if ((feature & SUPPORT_480I_576I) == 0 && hdmi_mode[i].mode.xres == 720 && - hdmi_mode[i].mode.vmode == FB_VMODE_INTERLACED) + (hdmi_mode[i].mode.vmode & FB_VMODE_INTERLACED)) continue; hdmi_add_videomode(&(hdmi_mode[i].mode), head); } diff --git a/drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2_hw.c b/drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2_hw.c index 2561f0bc5099..39ce9c434109 100755 --- a/drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2_hw.c +++ b/drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2_hw.c @@ -833,7 +833,7 @@ static int rockchip_hdmiv2_video_framecomposer(struct hdmi *hdmi_drv, v_FC_VSYNC_POL(vsync_pol) | v_FC_HSYNC_POL(hsync_pol) | v_FC_DE_POL(de_pol) | v_FC_HDMI_DVI(vpara->sink_hdmi) | v_FC_INTERLACE_MODE(mode->vmode)); - if (mode->vmode == FB_VMODE_INTERLACED && + if ((mode->vmode & FB_VMODE_INTERLACED) && vpara->format_3d != HDMI_3D_FRAME_PACKING) hdmi_msk_reg(hdmi_dev, FC_INVIDCONF, m_FC_VBLANK, v_FC_VBLANK(1));