summaryrefslogtreecommitdiff
path: root/target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch')
-rw-r--r--target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch b/target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch
new file mode 100644
index 0000000..0fe9015
--- /dev/null
+++ b/target/linux/omap/patches-3.14/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch
@@ -0,0 +1,38 @@
+From c99bd415829ef29adf71bb1e1b577650f10e93f5 Mon Sep 17 00:00:00 2001
+From: Darren Etheridge <detheridge@ti.com>
+Date: Mon, 4 Nov 2013 12:27:40 -0600
+Subject: [PATCH 752/752] video/da8xx-fb fix defect with vsync callback
+ invocation
+
+Fix defect where SGX is running at half of the expected framerate.
+The original patch (@ commit ID 9a1a810516ae9cb3259b898b6879901c5b44fa90)
+seems to have a mistake where it only calls the callback
+for the even or the odd frames depending on the revision of the LCD controller
+This patch corrects this and invokes the callback for both odd and even frame
+for just the Rev02 version of the LCDC (won't find an SGX GPU on a Rev01).
+
+Signed-off-by: Darren Etheridge <detheridge@ti.com>
+---
+ drivers/video/da8xx-fb.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/video/da8xx-fb.c
++++ b/drivers/video/da8xx-fb.c
+@@ -903,6 +903,8 @@ static irqreturn_t lcdc_irq_handler_rev0
+ LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
+ par->vsync_flag = 1;
+ wake_up_interruptible(&par->vsync_wait);
++ if (vsync_cb_handler)
++ vsync_cb_handler(vsync_cb_arg);
+ }
+
+ /* Set only when controller is disabled and at the end of
+@@ -968,8 +970,6 @@ static irqreturn_t lcdc_irq_handler_rev0
+ LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
+ par->vsync_flag = 1;
+ wake_up_interruptible(&par->vsync_wait);
+- if (vsync_cb_handler)
+- vsync_cb_handler(vsync_cb_arg);
+ }
+ }
+