diff options
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-.patch | 60 |
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 + |