Hi,
Vinod: as I promised: https://lkml.org/lkml/2015/5/8/80
With this series it is possible to put omap-dma or edma to even late_initcall and the drivers will figure out the load order fine(ish). We need to add dma_request_slave_channel_compat_reason() which is the equivalent of dma_request_slave_channel_compat() but returning with error codes in case of failure instead of NULL pointer. The rest of the series just converts the OMAP/daVinci drivers to use this new function to get the channel(s) and to handle the deferred probing.
I did not moved the omap-dma, edma or ti-dma-crossbar from arch_initcall. If I do so UART will only comes up after the DMA driver is loaded since we are using, or going to use 8250 with DAM support. This delays the kernel messages. Other issue is the MMC/SD cards. On board with eMMC and SD card slot the mmcblk0/1 might get swapped due to different probe order for the MMC/SD drivers. For example in omap5-uevm: 1. omap-dma in arch_initcall the SD card is mmcblk1 (4809c000.mmc) and eMMC is mmcblk0 (480b4000.mmc) 2. omap-dma in late_initcall the SD card is mmcblk0 (4809c000.mmc) and eMMC is mmcblk1 (480b4000.mmc)
Because in case 1 the 4809c000.mmc got deferred by missing regulator so 480b4000.mmc got registered first. In case 2 both deferring because of DMA and at the end 4809c000.mmc get registered first. So far I have not found a way to bind mmcblk0/1 to a specific node...
Regards, Peter --- Peter Ujfalusi (13): dmaengine: of_dma: Correct return code for of_dma_request_slave_channel in case !CONFIG_OF dmaengine: Introduce dma_request_slave_channel_compat_reason() serial: 8250_dma: Support for deferred probing when requesting DMA channels mmc: omap_hsmmc: No need to check DMA channel validity at module remove mmc: omap_hsmmc: Support for deferred probing when requesting DMA channels mmc: omap: Support for deferred probing when requesting DMA channels mmc: davinci_mmc: Support for deferred probing when requesting DMA channels crypto: omap-aes - Support for deferred probing when requesting DMA channels crypto: omap-des - Support for deferred probing when requesting DMA channels crypto: omap-sham - Support for deferred probing when requesting DMA channel spi: omap2-mcspi: Support for deferred probing when requesting DMA channels [media] omap3isp: Support for deferred probing when requesting DMA channel ASoC: omap-pcm: Switch to use dma_request_slave_channel_compat_reason()
drivers/crypto/omap-aes.c | 38 ++++++++++++++++--------------- drivers/crypto/omap-des.c | 38 ++++++++++++++++--------------- drivers/crypto/omap-sham.c | 15 ++++++++---- drivers/media/platform/omap3isp/isphist.c | 12 +++++++--- drivers/mmc/host/davinci_mmc.c | 26 ++++++++++++--------- drivers/mmc/host/omap.c | 20 ++++++++++++---- drivers/mmc/host/omap_hsmmc.c | 28 ++++++++++------------- drivers/spi/spi-omap2-mcspi.c | 36 +++++++++++++++++------------ drivers/tty/serial/8250/8250_dma.c | 18 +++++++-------- include/linux/dmaengine.h | 22 ++++++++++++++++++ include/linux/of_dma.h | 2 +- sound/soc/omap/omap-pcm.c | 16 ++++++++----- 12 files changed, 164 insertions(+), 107 deletions(-)