On Fri May 2 17:44:42 2025 +0200, Stanislaw Gruszka wrote:
> We can call ipu6_isys_queue_buf_ready() directly. The only current
> usage is pin_ready pointer is to check if pin was prepared before
> IPU6_FW_ISYS_RESP_TYPE_PIN_DATA_READY interrupt, we can use queue
> pointer for that purpose.
> 
> Signed-off-by: Stanislaw Gruszka <stanislaw.grus...@linux.intel.com>
> Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/pci/intel/ipu6/ipu6-isys-queue.c | 2 +-
 drivers/media/pci/intel/ipu6/ipu6-isys-video.c | 3 +--
 drivers/media/pci/intel/ipu6/ipu6-isys-video.h | 8 +-------
 drivers/media/pci/intel/ipu6/ipu6-isys.c       | 7 +++----
 4 files changed, 6 insertions(+), 14 deletions(-)

---

diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c 
b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c
index a9127b1c4d45..aa2cf7287477 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c
@@ -738,7 +738,7 @@ static void
 ipu6_stream_buf_ready(struct ipu6_isys_stream *stream, u8 pin_id, u32 pin_addr,
                      u64 time, bool error_check)
 {
-       struct ipu6_isys_queue *aq = stream->output_pins[pin_id].aq;
+       struct ipu6_isys_queue *aq = stream->output_pins_queue[pin_id];
        struct ipu6_isys *isys = stream->isys;
        struct device *dev = &isys->adev->auxdev.dev;
        struct ipu6_isys_buffer *ib;
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c 
b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
index 959869a88556..33ff938caa70 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
@@ -486,8 +486,7 @@ static int ipu6_isys_fw_pin_cfg(struct ipu6_isys_video *av,
 
        output_pins = cfg->nof_output_pins++;
        aq->fw_output = output_pins;
-       stream->output_pins[output_pins].pin_ready = ipu6_isys_queue_buf_ready;
-       stream->output_pins[output_pins].aq = aq;
+       stream->output_pins_queue[output_pins] = aq;
 
        output_pin = &cfg->output_pins[output_pins];
        output_pin->input_pin_id = input_pins;
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h 
b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h
index 1d945be2b879..1dd36f2a077e 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h
@@ -37,12 +37,6 @@ struct sequence_info {
        u64 timestamp;
 };
 
-struct output_pin_data {
-       void (*pin_ready)(struct ipu6_isys_stream *stream,
-                         struct ipu6_fw_isys_resp_info_abi *info);
-       struct ipu6_isys_queue *aq;
-};
-
 /*
  * Align with firmware stream. Each stream represents a CSI virtual channel.
  * May map to multiple video devices
@@ -68,7 +62,7 @@ struct ipu6_isys_stream {
        struct completion stream_stop_completion;
        struct ipu6_isys *isys;
 
-       struct output_pin_data output_pins[IPU6_ISYS_OUTPUT_PINS];
+       struct ipu6_isys_queue *output_pins_queue[IPU6_ISYS_OUTPUT_PINS];
        int error;
        u8 vc;
 };
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c 
b/drivers/media/pci/intel/ipu6/ipu6-isys.c
index 8df1d83a74b5..7b09782ab679 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c
@@ -1294,12 +1294,11 @@ static int isys_isr_one(struct ipu6_bus_device *adev)
                 */
                ipu6_put_fw_msg_buf(ipu6_bus_get_drvdata(adev), resp->buf_id);
                if (resp->pin_id < IPU6_ISYS_OUTPUT_PINS &&
-                   stream->output_pins[resp->pin_id].pin_ready)
-                       stream->output_pins[resp->pin_id].pin_ready(stream,
-                                                                   resp);
+                   stream->output_pins_queue[resp->pin_id])
+                       ipu6_isys_queue_buf_ready(stream, resp);
                else
                        dev_warn(&adev->auxdev.dev,
-                                "%d:No data pin ready handler for pin id %d\n",
+                                "%d:No queue for pin id %d\n",
                                 resp->stream_handle, resp->pin_id);
                if (csi2)
                        ipu6_isys_csi2_error(csi2);

Reply via email to