[PATCH 06/13] media: rockchip: rga: set dma mask to 32 bits
Robin Murphy
robin.murphy at arm.com
Thu Sep 14 07:40:14 PDT 2023
On 2023-09-14 13:40, Michael Tretter wrote:
> 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. Imported buffers may still fail the preparation, as they may be
> allocated above the 4 GB boundary.
>
> Signed-off-by: Michael Tretter <m.tretter at pengutronix.de>
> ---
> drivers/media/platform/rockchip/rga/rga.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c
> index f18fccc7b204..149deb1f1e03 100644
> --- a/drivers/media/platform/rockchip/rga/rga.c
> +++ b/drivers/media/platform/rockchip/rga/rga.c
> @@ -824,6 +824,12 @@ static int rga_probe(struct platform_device *pdev)
> goto err_put_clk;
> }
>
> + ret = dma_set_mask(rga->dev, DMA_BIT_MASK(32));
You want dma_set_mask_and_coherent(), given that you are using coherent
allocations as well. The driver's getting away with it since the default
masks happen to be 32-bit anyway, but it's better to be explicit.
Thanks,
Robin.
> + 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;
>
More information about the Linux-rockchip
mailing list