On Fri, 30 Nov 2018 at 09:15, Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> wrote: > > On 2018/11/29 17:59, Chunyan Zhang wrote: > > Hi Adrian, > > > > On Thu, 29 Nov 2018 at 15:36, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > >> > >> On 29/11/18 8:22 AM, Chunyan Zhang wrote: > >>> On Tue, 20 Nov 2018 at 21:41, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > >>>> > >>>> On 12/11/18 9:26 AM, Chunyan Zhang wrote: > >>>>> Some standard SD host controllers can support both external dma > >>>>> controllers as well as ADMA/SDMA in which the SD host controller > >>>>> acts as DMA master. TI's omap controller is the case as an example. > >>>>> > >>>>> Currently the generic SDHCI code supports ADMA/SDMA integrated in > >>>>> the host controller but does not have any support for external DMA > >>>>> controllers implemented using dmaengine, meaning that custom code is > >>>>> needed for any systems that use an external DMA controller with SDHCI. > >>>> > >>>> I still think you probably need to reset the DMA if there are transfer > >>>> errors - perhaps you could comment on that. Also there are some comments below. > >>> > >>> With regard to "transfer error", do you mean if > >>> sdhci_external_dma_setup() failed? > >> > >> No, I mean any error interrupt that can leave the DMA uncompleted. For > >> SDHCI, resetting the data circuit cleans that up, but presumably something > >> is needed for external DMA? > > > > Yes, it should need a dmaengine_terminate_all(). > > > > No, dmaengine_terminate_all is deprecated for quite a long time. > Please use dmaengine_terminate_{async, sync}() instead. > > See Documentation/dmaengine/client.txt Ok, thanks for the comments. Chunyan > > > > How about adding that at here (I will wrap it up of course): > > https://elixir.bootlin.com/linux/v4.19.5/source/drivers/mmc/host/sdhci.c#L2553 > > > > Is there somewhere else I'm missing? > > > > Thanks, > > Chunyan > > > > >