>       /* setup generic device info */
> +     dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
> +     if (!dev->dev.dma_mask)
> +             dev->dev.dma_mask = &dev->dev.coherent_dma_mask;

We should never set dma_mask to point to the coherent_dma_mask,
as that will cause problems with devices that have different
mask for the two.

How about something like this?

---
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 7ba90c290a42..c04ed124305c 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -242,6 +242,9 @@ static struct amba_device *of_amba_device_create(struct 
device_node *node,
                goto err_clear_flag;
 
        /* setup generic device info */
+       dev->dma_mask = DMA_BIT_MASK(32);
+       dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
+       dev->dev.dma_mask = &dev->dma_mask;
        dev->dev.of_node = of_node_get(node);
        dev->dev.fwnode = &node->fwnode;
        dev->dev.parent = parent ? : &platform_bus;
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index d143c13bed26..fbc7adf3ca54 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -34,6 +34,7 @@ struct amba_device {
        unsigned int            periphid;
        unsigned int            irq[AMBA_NR_IRQS];
        char                    *driver_override;
+       u64                     dma_mask;
 };
 
 struct amba_driver {
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to