u32 hactive, h_total, hpw, hfp, hbp;
        u32 vactive, v_total, vpw, vfp, vbp;
        u8 settle = 0x08;
-       int ret;
+       int ret, hsync_activehigh, vsync_activehigh;
 
        if (!lt)
                return -EINVAL;
        hpw = lt->mode.hsync_len;
        hbp = lt->mode.hback_porch;
        h_total = hactive + hfp + hpw + hbp;
+       hsync_activehigh = lt->mode.flags & DISPLAY_FLAGS_HSYNC_HIGH;
 
        vactive = lt->mode.vactive;
        vfp = lt->mode.vfront_porch;
        vpw = lt->mode.vsync_len;
        vbp = lt->mode.vback_porch;
        v_total = vactive + vfp + vpw + vbp;
+       vsync_activehigh = lt->mode.flags & DISPLAY_FLAGS_VSYNC_HIGH;
 
        if (vactive <= 600)
                settle = 0x04;
        ret |= regmap_write(lt->regmap[I2C_CEC_DSI], 0x3e, hfp & 0xff);
        ret |= regmap_write(lt->regmap[I2C_CEC_DSI], 0x3f, hfp >> 8);
 
+       ret |= regmap_update_bits(lt->regmap[I2C_MAIN], 0xab, BIT(0),
+                                 vsync_activehigh ? BIT(0) : 0);
+       ret |= regmap_update_bits(lt->regmap[I2C_MAIN], 0xab, BIT(1),
+                                 hsync_activehigh ? BIT(1) : 0);
+
        return ret;
 }