[PATCH] of/platform: Initialise AMBA default DMA masks
Christoph Hellwig
hch at lst.de
Tue Aug 28 09:23:38 UTC 2018
> /* 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 {
More information about the dri-devel
mailing list