summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>2025-02-10 18:56:13 +0100
committerHans Verkuil <hverkuil@xs4all.nl>2025-04-25 10:15:27 +0200
commit25482a986e44fddd3af77458071fbbd222795917 (patch)
tree9ed2db6c18e52d492de80b65b2bb6eb16ab103b7
parent1dadd89b58108d3df701d6d9e19cd34818f97f7f (diff)
media: rcar-vin: Remove superfluous starting state
The STARTING state is superfluous and can be replaced with a check of the sequence counter. The design idea is that the first buffer returned from the driver have to come from the first hardware buffer slot. Failing this the first 3 buffers queued to the device can be returned out-of-order. But it's much clearer to check the sequence counter to only return the first buffer if it comes from hardware slot 0 then it is to carry around an extra state just for this. Remove the unneeded state and replace it with a simpler check. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com> Tested-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
-rw-r--r--drivers/media/platform/renesas/rcar-vin/rcar-dma.c5
-rw-r--r--drivers/media/platform/renesas/rcar-vin/rcar-vin.h2
2 files changed, 2 insertions, 5 deletions
diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-dma.c b/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
index fc64f013ec050..125af7ae9fbf1 100644
--- a/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
@@ -1048,7 +1048,7 @@ static int rvin_capture_start(struct rvin_dev *vin)
/* Continuous Frame Capture Mode */
rvin_write(vin, VNFC_C_FRAME, VNFC_REG);
- vin->state = STARTING;
+ vin->state = RUNNING;
return 0;
}
@@ -1104,14 +1104,13 @@ static irqreturn_t rvin_irq(int irq, void *data)
* To hand buffers back in a known order to userspace start
* to capture first from slot 0.
*/
- if (vin->state == STARTING) {
+ if (!vin->sequence) {
if (slot != 0) {
vin_dbg(vin, "Starting sync slot: %d\n", slot);
goto done;
}
vin_dbg(vin, "Capture start synced!\n");
- vin->state = RUNNING;
}
/* Capture frame */
diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-vin.h b/drivers/media/platform/renesas/rcar-vin/rcar-vin.h
index 4cb25d8bbf327..f13ef379d095f 100644
--- a/drivers/media/platform/renesas/rcar-vin/rcar-vin.h
+++ b/drivers/media/platform/renesas/rcar-vin/rcar-vin.h
@@ -64,13 +64,11 @@ enum rvin_isp_id {
/**
* enum rvin_dma_state - DMA states
* @STOPPED: No operation in progress
- * @STARTING: Capture starting up
* @RUNNING: Operation in progress have buffers
* @STOPPING: Stopping operation
*/
enum rvin_dma_state {
STOPPED = 0,
- STARTING,
RUNNING,
STOPPING,
};