]> git.ipfire.org Git - thirdparty/openwrt.git/blob
d3084d0cd6ad9c45feadec7a8a966834890061b8
[thirdparty/openwrt.git] /
1 From da72cd31a92730881deb46a7796d3b2674345462 Mon Sep 17 00:00:00 2001
2 From: Naushir Patuck <naush@raspberrypi.com>
3 Date: Mon, 29 Jan 2024 09:02:03 +0000
4 Subject: [PATCH 0858/1085] drivers: media: pisp_be: Update seqeuence numbers
5 of the buffers
6
7 Add a framebuffer sequence counter and increment on every completed job.
8 This counter is then used to update the VB2 buffer sequence count before
9 calling vb2_buffer_done().
10
11 Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
12 ---
13 drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 5 +++++
14 1 file changed, 5 insertions(+)
15
16 --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
17 +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
18 @@ -203,6 +203,7 @@ struct pispbe_node_group {
19 struct media_pad pad[PISPBE_NUM_NODES]; /* output pads first */
20 struct pisp_be_tiles_config *config;
21 dma_addr_t config_dma_addr;
22 + unsigned int sequence;
23 };
24
25 /* Records details of the jobs currently running or queued on the h/w. */
26 @@ -703,10 +704,13 @@ static void pispbe_isr_jobdone(struct pi
27 for (i = 0; i < PISPBE_NUM_NODES; i++) {
28 if (buf[i]) {
29 buf[i]->vb.vb2_buf.timestamp = ts;
30 + buf[i]->vb.sequence = job->node_group->sequence;
31 vb2_buffer_done(&buf[i]->vb.vb2_buf,
32 VB2_BUF_STATE_DONE);
33 }
34 }
35 +
36 + job->node_group->sequence++;
37 }
38
39 static irqreturn_t pispbe_isr(int irq, void *dev)
40 @@ -962,6 +966,7 @@ static int pispbe_node_start_streaming(s
41
42 spin_lock_irqsave(&pispbe->hw_lock, flags);
43 node->node_group->streaming_map |= BIT(node->id);
44 + node->node_group->sequence = 0;
45 spin_unlock_irqrestore(&pispbe->hw_lock, flags);
46
47 dev_dbg(pispbe->dev, "%s: for node %s (count %u)\n",