]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/omap: change default signal polarities and drives
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 17 Apr 2020 11:41:51 +0000 (14:41 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 5 May 2020 06:58:37 +0000 (09:58 +0300)
If the given videomode does not specify DISPLAY_FLAG_* for the specific
signal property, the driver used a default value. These defaults were
never thought through, as the expectation was that all the DISPLAY_FLAGS
are always set explicitly.

With DRM bridge and panel drivers this is not the case, and while that
issue should be resolved in the future, it's still good to have sane
signal defaults.

This patch changes the defaults to what the hardware has as reset
defaults. Also, based on my experience, I think they make sense and are
more likely correct than the defaults without this patch.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200417114151.25843-1-tomi.valkeinen@ti.com
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/gpu/drm/omapdrm/dss/dispc.c

index dbb90f2d2ccde5973db67530924c358059cec747..6639ee9b05d3d611b8d055af724f057237680e52 100644 (file)
@@ -3137,33 +3137,12 @@ static void _dispc_mgr_set_lcd_timings(struct dispc_device *dispc,
        dispc_write_reg(dispc, DISPC_TIMING_H(channel), timing_h);
        dispc_write_reg(dispc, DISPC_TIMING_V(channel), timing_v);
 
-       if (vm->flags & DISPLAY_FLAGS_VSYNC_HIGH)
-               vs = false;
-       else
-               vs = true;
-
-       if (vm->flags & DISPLAY_FLAGS_HSYNC_HIGH)
-               hs = false;
-       else
-               hs = true;
-
-       if (vm->flags & DISPLAY_FLAGS_DE_HIGH)
-               de = false;
-       else
-               de = true;
-
-       if (vm->flags & DISPLAY_FLAGS_PIXDATA_POSEDGE)
-               ipc = false;
-       else
-               ipc = true;
-
-       /* always use the 'rf' setting */
-       onoff = true;
-
-       if (vm->flags & DISPLAY_FLAGS_SYNC_POSEDGE)
-               rf = true;
-       else
-               rf = false;
+       vs = !!(vm->flags & DISPLAY_FLAGS_VSYNC_LOW);
+       hs = !!(vm->flags & DISPLAY_FLAGS_HSYNC_LOW);
+       de = !!(vm->flags & DISPLAY_FLAGS_DE_LOW);
+       ipc = !!(vm->flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE);
+       onoff = true; /* always use the 'rf' setting */
+       rf = !!(vm->flags & DISPLAY_FLAGS_SYNC_POSEDGE);
 
        l = FLD_VAL(onoff, 17, 17) |
                FLD_VAL(rf, 16, 16) |