Hi Geert
...which is in fact the exact same problem that the IOMMU code has - might it make sense to give of_dma_request_slave_channel() similar (optional?) driver_deferred_probe_check_state() logic, i.e. "if my DMAC driver's not shown up by this point, assume it's not built-in and go on without it". Of course it is somewhat easier for IOMMU drivers as there's zero chance of those popping up as modules later on.
It may solve the issue in some cases. But only if the dmac is reprobed before the DMA slave driver, which is not guaranteed.
BTW, it seems e.g. i2c and serial suffer from the same problem, and fall back to PIO. However, these drivers try to obtain the DMA channel when used, not during probe, so they start using DMA after the dmac has been probed successfully.
Actually sound driver get DMA channel when used. But checking DMA availability when probe timing (= try to get, and release it soon). sound driver side other approach is that it don't check it when probe.
Best regards --- Kuninori Morimoto