Re: [PATCH v2 3/5] media: rcar-vin: Remove superfluous starting state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 22/01/2025 18:53, Niklas Söderlund wrote:
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@xxxxxxxxxxxx>
---
  drivers/media/platform/renesas/rcar-vin/rcar-dma.c | 5 ++---
  drivers/media/platform/renesas/rcar-vin/rcar-vin.h | 2 --
  2 files changed, 2 insertions(+), 5 deletions(-)

Reviewed-by: Tomi Valkeinen <tomi.valkeinen+renesas@xxxxxxxxxxxxxxxx>

I don't understand the feature, though =). Why does the first buffer have to come from slot 0?

 Tomi


diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-dma.c b/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
index a16adc6fd4dc..ba55ccf648de 100644
--- a/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/renesas/rcar-vin/rcar-dma.c
@@ -1064,7 +1064,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;
  }
@@ -1120,14 +1120,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 4cb25d8bbf32..f13ef379d095 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,
  };





[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux