@@ -404,9 +404,9 @@ static void ch7033_bridge_mode_set(struct drm_bridge *bridge,
/* Input clock and sync polarity. */
regmap_update_bits(priv->regmap, 0x19, 0x1, mode->clock >> 16);
regmap_update_bits(priv->regmap, 0x19, HPO_I | VPO_I | GCLKFREQ,
- (mode->flags & DRM_MODE_FLAG_PHSYNC) ? HPO_I : 0 |
- (mode->flags & DRM_MODE_FLAG_PVSYNC) ? VPO_I : 0 |
- mode->clock >> 16);
+ ((mode->flags & DRM_MODE_FLAG_PHSYNC) ? HPO_I : 0) |
+ ((mode->flags & DRM_MODE_FLAG_PVSYNC) ? VPO_I : 0) |
+ (mode->clock >> 16));
regmap_write(priv->regmap, 0x1a, mode->clock >> 8);
regmap_write(priv->regmap, 0x1b, mode->clock);
@@ -427,8 +427,8 @@ static void ch7033_bridge_mode_set(struct drm_bridge *bridge,
/* Output sync polarity. */
regmap_update_bits(priv->regmap, 0x2e, HPO_O | VPO_O,
- (mode->flags & DRM_MODE_FLAG_PHSYNC) ? HPO_O : 0 |
- (mode->flags & DRM_MODE_FLAG_PVSYNC) ? VPO_O : 0);
+ ((mode->flags & DRM_MODE_FLAG_PHSYNC) ? HPO_O : 0) |
+ ((mode->flags & DRM_MODE_FLAG_PVSYNC) ? VPO_O : 0));
/* HDMI horizontal output timing. */
regmap_update_bits(priv->regmap, 0x54, HWO_HDMI_HI | HOO_HDMI_HI,
The problem is that the bitwise OR operation has higher precedence than the ternary expression. The existing code will either set HPO_I, VPO_I, or "mode->clock >> 16" but not a combination of the three which is what we want. Fixes: e7f12054a1b9 ("drm/bridge: chrontel-ch7033: Add a new driver") Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> --- From static analysis. Not tested! drivers/gpu/drm/bridge/chrontel-ch7033.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)