drm/sun4i: dsi: Fix front vs back porch calculation
authorMaxime Ripard <maxime.ripard@bootlin.com>
Mon, 11 Feb 2019 14:41:25 +0000 (15:41 +0100)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Tue, 19 Feb 2019 10:08:29 +0000 (11:08 +0100)
Since I always confuse the back and front porches, a few miscalculation
slipped through. Fix them.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/90c2375b8a853cae0dcc135cedb47edbc26168d8.1549896081.git-series.maxime.ripard@bootlin.com
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c

index 869e0aedf3434363e995789f746a68e69ef34c63..9357266961315091109f00a53526434de5595b54 100644 (file)
@@ -478,7 +478,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
         */
 #define HBP_PACKET_OVERHEAD    6
        hbp = max((unsigned int)HBP_PACKET_OVERHEAD,
-                 (mode->hsync_start - mode->hdisplay) * Bpp - HBP_PACKET_OVERHEAD);
+                 (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD);
 
        /*
         * The frontporch is set using a blanking packet (4 bytes +
@@ -486,7 +486,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
         */
 #define HFP_PACKET_OVERHEAD    6
        hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
-                 (mode->htotal - mode->hsync_end) * Bpp - HFP_PACKET_OVERHEAD);
+                 (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD);
 
        /*
         * hblk seems to be the line + porches length.
@@ -532,8 +532,8 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
        regmap_write(dsi->regs, SUN6I_DSI_BASIC_SIZE0_REG,
                     SUN6I_DSI_BASIC_SIZE0_VSA(mode->vsync_end -
                                               mode->vsync_start) |
-                    SUN6I_DSI_BASIC_SIZE0_VBP(mode->vsync_start -
-                                              mode->vdisplay));
+                    SUN6I_DSI_BASIC_SIZE0_VBP(mode->vtotal -
+                                              mode->vsync_end));
 
        regmap_write(dsi->regs, SUN6I_DSI_BASIC_SIZE1_REG,
                     SUN6I_DSI_BASIC_SIZE1_VACT(mode->vdisplay) |