openwrt/target/linux/bcm27xx/patches-6.6/950-0858-drivers-media-pisp_be-Update-seqeuence-numbers-of-th.patch
Álvaro Fernández Rojas 8c405cdccc bcm27xx: add 6.6 kernel patches
The patches were generated from the RPi repo with the following command:
git format-patch v6.6.34..rpi-6.1.y

Some patches needed rebasing and, as usual, the applied and reverted, wireless
drivers, Github workflows, READMEs and defconfigs patches were removed.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-06-18 18:52:49 +02:00

48 lines
1.6 KiB
Diff

From da72cd31a92730881deb46a7796d3b2674345462 Mon Sep 17 00:00:00 2001
From: Naushir Patuck <naush@raspberrypi.com>
Date: Mon, 29 Jan 2024 09:02:03 +0000
Subject: [PATCH 0858/1085] drivers: media: pisp_be: Update seqeuence numbers
of the buffers
Add a framebuffer sequence counter and increment on every completed job.
This counter is then used to update the VB2 buffer sequence count before
calling vb2_buffer_done().
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
@@ -203,6 +203,7 @@ struct pispbe_node_group {
struct media_pad pad[PISPBE_NUM_NODES]; /* output pads first */
struct pisp_be_tiles_config *config;
dma_addr_t config_dma_addr;
+ unsigned int sequence;
};
/* Records details of the jobs currently running or queued on the h/w. */
@@ -703,10 +704,13 @@ static void pispbe_isr_jobdone(struct pi
for (i = 0; i < PISPBE_NUM_NODES; i++) {
if (buf[i]) {
buf[i]->vb.vb2_buf.timestamp = ts;
+ buf[i]->vb.sequence = job->node_group->sequence;
vb2_buffer_done(&buf[i]->vb.vb2_buf,
VB2_BUF_STATE_DONE);
}
}
+
+ job->node_group->sequence++;
}
static irqreturn_t pispbe_isr(int irq, void *dev)
@@ -962,6 +966,7 @@ static int pispbe_node_start_streaming(s
spin_lock_irqsave(&pispbe->hw_lock, flags);
node->node_group->streaming_map |= BIT(node->id);
+ node->node_group->sequence = 0;
spin_unlock_irqrestore(&pispbe->hw_lock, flags);
dev_dbg(pispbe->dev, "%s: for node %s (count %u)\n",