]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
video: fbdev: mxsfb: fix pixelclock polarity
authorStefan Agner <stefan@agner.ch>
Thu, 9 Nov 2017 17:09:30 +0000 (18:09 +0100)
committerBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Thu, 9 Nov 2017 17:09:30 +0000 (18:09 +0100)
The PIXDATA flags of the display_flags enum are controller centric,
e.g. NEGEDGE means the controller shall drive the data signals on
pixelclocks negative edge. However, the drivers flag is display
centric: Sample the data on negative (falling) edge.

Therefore, change the if statement to check for the POSEDGE flag
(which is typically not set):
Drive on positive edge => sample on negative edge

Signed-off-by: Stefan Agner <stefan@agner.ch>
Acked-by: Shawn Guo <shawnguo@kernel.org>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Liu Ying <Ying.Liu@freescale.com>
Cc: Lothar Waßmann <LW@KARO-electronics.de>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Max Krummenacher <max.krummenacher@toradex.com>
Cc: Mauro Salvini <mauro.salvini@smigroup.net>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
drivers/video/fbdev/mxsfb.c

index 7846f0e8bbbb55f9ad691b733b6d2333452a672e..79b1dc7f042b220277a997169efdee2757784554 100644 (file)
 #define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */
 
 #define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT        (1 << 6)
-#define MXSFB_SYNC_DOTCLK_FALLING_ACT  (1 << 7) /* negtive edge sampling */
+#define MXSFB_SYNC_DOTCLK_FALLING_ACT  (1 << 7) /* negative edge sampling */
 
 enum mxsfb_devtype {
        MXSFB_V3,
@@ -788,7 +788,16 @@ static int mxsfb_init_fbinfo_dt(struct mxsfb_info *host,
 
        if (vm.flags & DISPLAY_FLAGS_DE_HIGH)
                host->sync |= MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
-       if (vm.flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
+
+       /*
+        * The PIXDATA flags of the display_flags enum are controller
+        * centric, e.g. NEGEDGE means drive data on negative edge.
+        * However, the drivers flag is display centric: Sample the
+        * data on negative (falling) edge. Therefore, check for the
+        * POSEDGE flag:
+        * drive on positive edge => sample on negative edge
+        */
+       if (vm.flags & DISPLAY_FLAGS_PIXDATA_POSEDGE)
                host->sync |= MXSFB_SYNC_DOTCLK_FALLING_ACT;
 
 put_display_node: