From 4aa6a1ac4a5e3e0629b8b325504f25799d739851 Mon Sep 17 00:00:00 2001 From: Yakir Yang Date: Tue, 21 Jul 2015 22:47:55 -0500 Subject: [PATCH] rockchip: rk3288: fix phsync & pvsync bug Struct edid defien pvsync & phsync as an character, like '+' or '-', so we need to check sync polarity by comparing with characters '+' and '-' instead of treating as boolean. BRANCH=None BUG=chrome-os-partner:42946 TEST=Mickey board, light monitor normally Change-Id: I14c72aa8994227092a1059d2b25c1dd2249b9db1 Signed-off-by: Yakir Yang Reviewed-on: https://chromium-review.googlesource.com/289963 Reviewed-by: Julius Werner Commit-Queue: David Hendricks Tested-by: David Hendricks Reviewed-on: https://chromium-review.googlesource.com/293603 Reviewed-by: David Hendricks --- src/soc/rockchip/rk3288/hdmi.c | 4 ++-- src/soc/rockchip/rk3288/vop.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/soc/rockchip/rk3288/hdmi.c b/src/soc/rockchip/rk3288/hdmi.c index 850b3c4e9a..1b488b2f10 100644 --- a/src/soc/rockchip/rk3288/hdmi.c +++ b/src/soc/rockchip/rk3288/hdmi.c @@ -494,11 +494,11 @@ static void hdmi_av_composer(const struct edid *edid) /* set up hdmi_fc_invidconf */ inv_val = HDMI_FC_INVIDCONF_HDCP_KEEPOUT_INACTIVE; - inv_val |= (edid->pvsync ? + inv_val |= ((edid->pvsync == '+') ? HDMI_FC_INVIDCONF_VSYNC_IN_POLARITY_ACTIVE_HIGH : HDMI_FC_INVIDCONF_VSYNC_IN_POLARITY_ACTIVE_LOW); - inv_val |= (edid->phsync ? + inv_val |= ((edid->phsync == '+') ? HDMI_FC_INVIDCONF_HSYNC_IN_POLARITY_ACTIVE_HIGH : HDMI_FC_INVIDCONF_HSYNC_IN_POLARITY_ACTIVE_LOW); diff --git a/src/soc/rockchip/rk3288/vop.c b/src/soc/rockchip/rk3288/vop.c index 06a580f195..87853b6bb4 100644 --- a/src/soc/rockchip/rk3288/vop.c +++ b/src/soc/rockchip/rk3288/vop.c @@ -130,8 +130,8 @@ void rkvop_mode_set(u32 vop_id, const struct edid *edid, u32 mode) clrsetbits_le32(&preg->dsp_ctrl0, M_DSP_OUT_MODE | M_DSP_VSYNC_POL | M_DSP_HSYNC_POL, V_DSP_OUT_MODE(15) | - V_DSP_HSYNC_POL(!!edid->phsync) | - V_DSP_VSYNC_POL(!!edid->pvsync)); + V_DSP_HSYNC_POL(edid->phsync == '+') | + V_DSP_VSYNC_POL(edid->pvsync == '+')); writel(V_HSYNC(hsync_len) | V_HORPRD(hsync_len + hback_porch + hactive + hfront_porch),