Messages in this thread | | | From | Flavio Suligoi <> | Subject | RE: [PATCH 2/2] spi: pxa2xx: use a module softdep for dw_dmac | Date | Thu, 11 Apr 2019 07:14:06 +0000 |
| |
> > I think that the problem could be related to how the DMA channel is > requested. > > At the moment the function used are: > > > pxa2xx_spi_dma_setup --> dma_request_slave_channel_compat --> > > --> __dma_request_slave_channel_compat --> dma_request_slave_channel --> > > --> dma_request_chan > > > Actually the final function "dma_request_chan" return > > the channel number or "-EPROBE_DEFER" if it's not ready. > > But this information ("-EPROBE_DEFER") is lost in the penultimate > function > > "dma_request_slave_channel", which return only the chann, if all is ok, > or > > NULL, in case of errors. > > So the deferral mechanism is not used. > > Right, yes - that analysis seems correct. The interfaces seem a bit > weird here but fixing them looks like the most complete and robust fix.
Ok Mark, I'll fix this problem as soon as I can, using EPROBE_DEFER. For now, in my application, I use the patch that I already sent, with the "softdep" workaround:
MODULE_SOFTDEP("pre: dw_dmac");
I tested it a lot, with more than 2000 cold reboot (automatic switch on/off using a controlled power supply) and it always worked good.
Thanks for your help!
Flavio
| |