aboutsummaryrefslogtreecommitdiff
path: root/SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch')
-rw-r--r--SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch b/SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch
new file mode 100644
index 0000000..a812477
--- /dev/null
+++ b/SOURCES/0001-drm-sun4i-sun6i_mipi_dsi-fix-horizontal-timing-calcu.patch
@@ -0,0 +1,59 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Icenowy Zheng <icenowy@aosc.io>
+Date: Mon, 16 Mar 2020 21:35:02 +0800
+Subject: [PATCH] drm/sun4i: sun6i_mipi_dsi: fix horizontal timing calculation
+
+The max() function call in horizontal timing calculation shouldn't pad a
+length already subtracted with overhead to overhead, instead it should
+only prevent the set timing to underflow.
+
+Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
+---
+ drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+index aa67cb037e9d..52e009dc632b 100644
+--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
++++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+@@ -556,7 +556,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
+ */
+ #define HSA_PACKET_OVERHEAD 10
+ hsa = max((unsigned int)HSA_PACKET_OVERHEAD,
+- (mode->hsync_end - mode->hsync_start) * Bpp - HSA_PACKET_OVERHEAD);
++ (mode->hsync_end - mode->hsync_start) * Bpp) - HSA_PACKET_OVERHEAD;
+
+ /*
+ * The backporch is set using a blanking packet (4
+@@ -565,7 +565,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
+ */
+ #define HBP_PACKET_OVERHEAD 6
+ hbp = max((unsigned int)HBP_PACKET_OVERHEAD,
+- (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD);
++ (mode->htotal - mode->hsync_end) * Bpp) - HBP_PACKET_OVERHEAD;
+
+ /*
+ * The frontporch is set using a sync event (4 bytes)
+@@ -575,7 +575,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
+ */
+ #define HFP_PACKET_OVERHEAD 16
+ hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
+- (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD);
++ (mode->hsync_start - mode->hdisplay) * Bpp) - HFP_PACKET_OVERHEAD;
+
+ /*
+ * The blanking is set using a sync event (4 bytes)
+@@ -584,8 +584,8 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
+ */
+ #define HBLK_PACKET_OVERHEAD 10
+ hblk = max((unsigned int)HBLK_PACKET_OVERHEAD,
+- (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp -
+- HBLK_PACKET_OVERHEAD);
++ (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp) -
++ HBLK_PACKET_OVERHEAD;
+
+ /*
+ * And I'm not entirely sure what vblk is about. The driver in
+--
+2.26.2
+