aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-17 15:02:39 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-17 15:11:23 +0200
commitd5c4f24b2af991df2ec24df1a3f906049370f59f (patch)
tree640c4a349a2fce2b7dbee7ed0115726bd5d9c245 /target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch
parent99ad84b6d9727a63f99a16e0b8386747262e3433 (diff)
downloadupstream-d5c4f24b2af991df2ec24df1a3f906049370f59f.tar.gz
upstream-d5c4f24b2af991df2ec24df1a3f906049370f59f.tar.bz2
upstream-d5c4f24b2af991df2ec24df1a3f906049370f59f.zip
bcm27xx: remove linux 5.10 compatibility
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch75
1 files changed, 0 insertions, 75 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch b/target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch
deleted file mode 100644
index f8c37f2784..0000000000
--- a/target/linux/bcm27xx/patches-5.10/950-0497-media-bcm2835-unicam-Fix-bug-in-buffer-swapping-logi.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 8740c5d8ab750b3e12f7f081082e2ae8c22ab6db Mon Sep 17 00:00:00 2001
-From: Naushir Patuck <naush@raspberrypi.com>
-Date: Fri, 5 Mar 2021 15:40:45 +0000
-Subject: [PATCH] media: bcm2835-unicam: Fix bug in buffer swapping
- logic
-
-If multiple sets of interrupts occur simultaneously, it may be unsafe
-to swap buffers, as the hardware may already be re-using the current
-buffers. In such cases, avoid swapping buffers, and wait for the next
-opportunity at the Frame End interrupt to signal completion.
-
-Additionally, check the packet compare status when watching for frame
-end for buffers swaps, as this could also signify a frame end event.
-
-Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
----
- .../media/platform/bcm2835/bcm2835-unicam.c | 21 ++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
---- a/drivers/media/platform/bcm2835/bcm2835-unicam.c
-+++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
-@@ -798,6 +798,7 @@ static irqreturn_t unicam_isr(int irq, v
- unsigned int sequence = unicam->sequence;
- unsigned int i;
- u32 ista, sta;
-+ bool fe;
- u64 ts;
-
- sta = reg_read(unicam, UNICAM_STA);
-@@ -815,12 +816,18 @@ static irqreturn_t unicam_isr(int irq, v
- return IRQ_HANDLED;
-
- /*
-+ * Look for either the Frame End interrupt or the Packet Capture status
-+ * to signal a frame end.
-+ */
-+ fe = (ista & UNICAM_FEI || sta & UNICAM_PI0);
-+
-+ /*
- * We must run the frame end handler first. If we have a valid next_frm
- * and we get a simultaneout FE + FS interrupt, running the FS handler
- * first would null out the next_frm ptr and we would have lost the
- * buffer forever.
- */
-- if (ista & UNICAM_FEI || sta & UNICAM_PI0) {
-+ if (fe) {
- /*
- * Ensure we have swapped buffers already as we can't
- * stop the peripheral. If no buffer is available, use a
-@@ -831,7 +838,15 @@ static irqreturn_t unicam_isr(int irq, v
- if (!unicam->node[i].streaming)
- continue;
-
-- if (unicam->node[i].cur_frm)
-+ /*
-+ * If cur_frm == next_frm, it means we have not had
-+ * a chance to swap buffers, likely due to having
-+ * multiple interrupts occurring simultaneously (like FE
-+ * + FS + LS). In this case, we cannot signal the buffer
-+ * as complete, as the HW will reuse that buffer.
-+ */
-+ if (unicam->node[i].cur_frm &&
-+ unicam->node[i].cur_frm != unicam->node[i].next_frm)
- unicam_process_buffer_complete(&unicam->node[i],
- sequence);
- unicam->node[i].cur_frm = unicam->node[i].next_frm;
-@@ -868,7 +883,7 @@ static irqreturn_t unicam_isr(int irq, v
- * where the HW does not actually swap it if the new frame has
- * already started.
- */
-- if (ista & (UNICAM_FSI | UNICAM_LCI) && !(ista & UNICAM_FEI)) {
-+ if (ista & (UNICAM_FSI | UNICAM_LCI) && !fe) {
- for (i = 0; i < ARRAY_SIZE(unicam->node); i++) {
- if (!unicam->node[i].streaming)
- continue;