[PATCH 3/9] media: rzg2l-cru: Use bulk reset API in rzg2l_cru_start_streaming_vq()

From: Tommaso Merciai

Date: Tue Jun 16 2026 - 13:13:45 EST


Replace individual reset_control_deassert() calls for aresetn and presetn
with reset_control_bulk_deassert(), and consolidate the error path labels
into a single err_assert_resets using reset_control_bulk_assert().

No functional changes intended.

Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@xxxxxxxxxxxxxx>
---
.../platform/renesas/rzg2l-cru/rzg2l-video.c | 23 ++++++++-----------
1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
index 5185a547461d..bf61a74f8f74 100644
--- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
+++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
@@ -672,6 +672,10 @@ irqreturn_t rzg3e_cru_irq(int irq, void *data)
static int rzg2l_cru_start_streaming_vq(struct vb2_queue *vq, unsigned int count)
{
struct rzg2l_cru_dev *cru = vb2_get_drv_priv(vq);
+ struct reset_control_bulk_data resets[] = {
+ { .rstc = cru->aresetn },
+ { .rstc = cru->presetn },
+ };
int ret;

ret = pm_runtime_resume_and_get(cru->dev);
@@ -683,19 +687,12 @@ static int rzg2l_cru_start_streaming_vq(struct vb2_queue *vq, unsigned int count
goto err_pm_put;

/* Release reset state */
- ret = reset_control_deassert(cru->aresetn);
+ ret = reset_control_bulk_deassert(ARRAY_SIZE(resets), resets);
if (ret) {
- dev_err(cru->dev, "failed to deassert aresetn\n");
+ dev_err(cru->dev, "failed to deassert resets\n");
goto err_vclk_disable;
}

- ret = reset_control_deassert(cru->presetn);
- if (ret) {
- reset_control_assert(cru->aresetn);
- dev_err(cru->dev, "failed to deassert presetn\n");
- goto assert_aresetn;
- }
-
/* Allocate scratch buffer */
cru->scratch = dma_alloc_coherent(cru->dev, cru->format.sizeimage,
&cru->scratch_phys, GFP_KERNEL);
@@ -703,7 +700,7 @@ static int rzg2l_cru_start_streaming_vq(struct vb2_queue *vq, unsigned int count
rzg2l_cru_return_buffers(cru, VB2_BUF_STATE_QUEUED);
dev_err(cru->dev, "Failed to allocate scratch buffer\n");
ret = -ENOMEM;
- goto assert_presetn;
+ goto err_assert_resets;
}

cru->active_slot = 0;
@@ -722,11 +719,9 @@ static int rzg2l_cru_start_streaming_vq(struct vb2_queue *vq, unsigned int count
if (ret)
dma_free_coherent(cru->dev, cru->format.sizeimage, cru->scratch,
cru->scratch_phys);
-assert_presetn:
- reset_control_assert(cru->presetn);

-assert_aresetn:
- reset_control_assert(cru->aresetn);
+err_assert_resets:
+ reset_control_bulk_assert(ARRAY_SIZE(resets), resets);

err_vclk_disable:
clk_disable_unprepare(cru->vclk);
--
2.54.0