diff options
| author | Sricharan R <[email protected]> | 2017-04-10 16:51:01 +0530 |
|---|---|---|
| committer | Joerg Roedel <[email protected]> | 2017-04-20 16:31:06 +0200 |
| commit | 09515ef5ddad71c7820e5e428da418b709feeb26 (patch) | |
| tree | 3786792035e575e806a629cbf02ac3c96f5ebe53 /include/linux | |
| parent | efc8551a276faab19d85079da02c5fb602b0dcbe (diff) | |
of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices
Configuring DMA ops at probe time will allow deferring device probe when
the IOMMU isn't available yet. The dma_configure for the device is
now called from the generic device_attach callback just before the
bus/driver probe is called. This way, configuring the DMA ops for the
device would be called at the same place for all bus_types, hence the
deferred probing mechanism should work for all buses as well.
pci_bus_add_devices (platform/amba)(_device_create/driver_register)
| |
pci_bus_add_device (device_add/driver_register)
| |
device_attach device_initial_probe
| |
__device_attach_driver __device_attach_driver
|
driver_probe_device
|
really_probe
|
dma_configure
Similarly on the device/driver_unregister path __device_release_driver is
called which inturn calls dma_deconfigure.
This patch changes the dma ops configuration to probe time for
both OF and ACPI based platform/amba/pci bus devices.
Tested-by: Marek Szyprowski <[email protected]>
Tested-by: Hanjun Guo <[email protected]>
Reviewed-by: Robin Murphy <[email protected]>
Acked-by: Rob Herring <[email protected]>
Acked-by: Bjorn Helgaas <[email protected]> (drivers/pci part)
Acked-by: Rafael J. Wysocki <[email protected]>
Signed-off-by: Sricharan R <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dma-mapping.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 0977317c6835..4f3eecedca2d 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -728,6 +728,18 @@ dma_mark_declared_memory_occupied(struct device *dev, } #endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */ +#ifdef CONFIG_HAS_DMA +int dma_configure(struct device *dev); +void dma_deconfigure(struct device *dev); +#else +static inline int dma_configure(struct device *dev) +{ + return 0; +} + +static inline void dma_deconfigure(struct device *dev) {} +#endif + /* * Managed DMA API */ |