Do not fix modes. Instead set any sync polarity passed through VPL_PREPARE and fb_videomode. Signed-off-by: Andrey Gusakov <andrey.gusakov@xxxxxxxxxxxxxxxxxx> --- drivers/video/tc358767.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/video/tc358767.c b/drivers/video/tc358767.c index 0ef9e642d..619f259ff 100644 --- a/drivers/video/tc358767.c +++ b/drivers/video/tc358767.c @@ -725,6 +725,7 @@ err_dpcd_inval: static int tc_set_video_mode(struct tc_data *tc, struct fb_videomode *mode) { int ret; + u32 reg; int htotal; int vtotal; int vid_sync_dly; @@ -785,8 +786,12 @@ static int tc_set_video_mode(struct tc_data *tc, struct fb_videomode *mode) tc_write(DP0_SYNCVAL, (mode->vsync_len << 16) | (mode->hsync_len << 0)); - tc_write(DPIPXLFMT, VS_POL_ACTIVE_LOW | HS_POL_ACTIVE_LOW | - DE_POL_ACTIVE_HIGH | SUB_CFG_TYPE_CONFIG1 | DPI_BPP_RGB888); + reg = DE_POL_ACTIVE_HIGH | SUB_CFG_TYPE_CONFIG1 | DPI_BPP_RGB888; + if (!(mode->sync & FB_SYNC_VERT_HIGH_ACT)) + reg |= VS_POL_ACTIVE_LOW; + if (!(mode->sync & FB_SYNC_HOR_HIGH_ACT)) + reg |= HS_POL_ACTIVE_LOW; + tc_write(DPIPXLFMT, reg); /* * Recommended maximum number of symbols transferred in a transfer unit: @@ -1301,10 +1306,6 @@ static int tc_get_videomodes(struct tc_data *tc, struct display_timings *timings return ret; } - /* hsync, vsync active low */ - timings->modes->sync &= ~(FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT); - return ret; } -- 2.13.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox