This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: rockchip: rga: set dma mask to 32 bits
Author:  Michael Tretter <m.tret...@pengutronix.de>
Date:    Fri Oct 13 13:00:27 2023 +0200

The RGA DMA descriptor list contains only 32-bit addresses. Set the
dma_mask to only allocate memory that is addressable by the descriptors.

This prevents errors when preparing vb2 buffers that were allocated by
the RGA.

Signed-off-by: Michael Tretter <m.tret...@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 drivers/media/platform/rockchip/rga/rga.c | 8 ++++++++
 1 file changed, 8 insertions(+)

---

diff --git a/drivers/media/platform/rockchip/rga/rga.c 
b/drivers/media/platform/rockchip/rga/rga.c
index f18fccc7b204..ea566c11734a 100644
--- a/drivers/media/platform/rockchip/rga/rga.c
+++ b/drivers/media/platform/rockchip/rga/rga.c
@@ -98,6 +98,7 @@ queue_init(void *priv, struct vb2_queue *src_vq, struct 
vb2_queue *dst_vq)
        src_vq->drv_priv = ctx;
        src_vq->ops = &rga_qops;
        src_vq->mem_ops = &vb2_dma_sg_memops;
+       dst_vq->gfp_flags = __GFP_DMA32;
        src_vq->buf_struct_size = sizeof(struct rga_vb_buffer);
        src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        src_vq->lock = &ctx->rga->mutex;
@@ -112,6 +113,7 @@ queue_init(void *priv, struct vb2_queue *src_vq, struct 
vb2_queue *dst_vq)
        dst_vq->drv_priv = ctx;
        dst_vq->ops = &rga_qops;
        dst_vq->mem_ops = &vb2_dma_sg_memops;
+       dst_vq->gfp_flags = __GFP_DMA32;
        dst_vq->buf_struct_size = sizeof(struct rga_vb_buffer);
        dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        dst_vq->lock = &ctx->rga->mutex;
@@ -824,6 +826,12 @@ static int rga_probe(struct platform_device *pdev)
                goto err_put_clk;
        }
 
+       ret = dma_set_mask_and_coherent(rga->dev, DMA_BIT_MASK(32));
+       if (ret) {
+               dev_err(rga->dev, "32-bit DMA not supported");
+               goto err_put_clk;
+       }
+
        ret = v4l2_device_register(&pdev->dev, &rga->v4l2_dev);
        if (ret)
                goto err_put_clk;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to