summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch
new file mode 100644
index 000000000..3e158c628
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0060-media-aspeed-use-different-delays-for-triggering-VE-.patch
@@ -0,0 +1,60 @@
+From 431c7974302fad5ae835adb46d3c8fa4034c845a Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
+Date: Tue, 21 May 2019 16:06:56 -0700
+Subject: [PATCH 2/4] media: aspeed: use different delays for triggering VE H/W
+ reset
+
+In case of watchdog timeout detected while doing mode detection,
+it's better triggering video engine hardware reset immediately so
+this commit fixes code for the case. Other than the case, it will
+trigger video engine hardware reset after RESOLUTION_CHANGE_DELAY.
+
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
+---
+ drivers/media/platform/aspeed-video.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
+index ee1f87a08c7c..b8540cc7848d 100644
+--- a/drivers/media/platform/aspeed-video.c
++++ b/drivers/media/platform/aspeed-video.c
+@@ -522,7 +522,7 @@ static void aspeed_video_bufs_done(struct aspeed_video *video,
+ spin_unlock_irqrestore(&video->lock, flags);
+ }
+
+-static void aspeed_video_irq_res_change(struct aspeed_video *video)
++static void aspeed_video_irq_res_change(struct aspeed_video *video, ulong delay)
+ {
+ spin_lock(&video->lock);
+ dev_dbg(video->dev, "Resolution changed; resetting\n");
+@@ -534,7 +534,7 @@ static void aspeed_video_irq_res_change(struct aspeed_video *video)
+ spin_unlock(&video->lock);
+ aspeed_video_bufs_done(video, VB2_BUF_STATE_ERROR);
+
+- schedule_delayed_work(&video->res_work, RESOLUTION_CHANGE_DELAY);
++ schedule_delayed_work(&video->res_work, delay);
+ }
+
+ static irqreturn_t aspeed_video_irq(int irq, void *arg)
+@@ -547,7 +547,7 @@ static irqreturn_t aspeed_video_irq(int irq, void *arg)
+ * re-initialize
+ */
+ if (sts & VE_INTERRUPT_MODE_DETECT_WD) {
+- aspeed_video_irq_res_change(video);
++ aspeed_video_irq_res_change(video, 0);
+ return IRQ_HANDLED;
+ }
+
+@@ -565,7 +565,8 @@ static irqreturn_t aspeed_video_irq(int irq, void *arg)
+ * Signal acquired while NOT doing resolution
+ * detection; reset the engine and re-initialize
+ */
+- aspeed_video_irq_res_change(video);
++ aspeed_video_irq_res_change(video,
++ RESOLUTION_CHANGE_DELAY);
+ return IRQ_HANDLED;
+ }
+ }
+--
+2.21.0
+