mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
c8ebae3703
Based on a patch from Linus Walleij. Add dmaengine based support for DMA to the MMCI driver, using the Primecell DMA engine interface. The changes over Linus' driver are: - rename txsize_threshold to dmasize_threshold, as this reflects the purpose more. - use 'mmci_dma_' as the function prefix rather than 'dma_mmci_'. - clean up requesting of dma channels. - don't release a single channel twice when it's shared between tx and rx. - get rid of 'dma_enable' bool - instead check whether the channel is NULL. - detect incomplete DMA at the end of a transfer. Some DMA controllers (eg, PL08x) are unable to be configured for scatter DMA and also listen to all four DMA request signals [BREQ,SREQ,LBREQ,LSREQ] from the MMCI. They can do one or other but not both. As MMCI uses LBREQ/LSREQ for the final burst/words, PL08x does not transfer the last few words. - map and unmap DMA buffers using the DMA engine struct device, not the MMCI struct device - the DMA engine is doing the DMA transfer, not us. - avoid double-unmapping of the DMA buffers on MMCI data errors. - don't check for negative values from the dmaengine tx submission function - Dan says this must never fail. - use new dmaengine helper functions rather than using the ugly function pointers directly. - allow DMA code to be fully optimized away using dma_inprogress() which is defined to constant 0 if DMA engine support is disabled. - request maximum segment size from the DMA engine struct device and set this appropriately. - removed checking of buffer alignment - the DMA engine should deal with its own restrictions on buffer alignment, not the individual DMA engine users. - removed setting DMAREQCTL - this confuses some DMA controllers as it causes LBREQ to be asserted for the last seven transfers, rather than six SREQ and one LSREQ. - removed burst setting - the DMA controller should not burst past the transfer size required to complete the DMA operation. Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
||
---|---|---|
.. | ||
at91_mci.c | ||
atmel-mci-regs.h | ||
atmel-mci.c | ||
au1xmmc.c | ||
bfin_sdh.c | ||
cb710-mmc.c | ||
cb710-mmc.h | ||
davinci_mmc.c | ||
dw_mmc.c | ||
dw_mmc.h | ||
imxmmc.c | ||
imxmmc.h | ||
jz4740_mmc.c | ||
Kconfig | ||
Makefile | ||
mmc_spi.c | ||
mmci.c | ||
mmci.h | ||
msm_sdcc.c | ||
msm_sdcc.h | ||
mvsdio.c | ||
mvsdio.h | ||
mxcmmc.c | ||
of_mmc_spi.c | ||
omap_hsmmc.c | ||
omap.c | ||
pxamci.c | ||
pxamci.h | ||
s3cmci.c | ||
s3cmci.h | ||
sdhci-cns3xxx.c | ||
sdhci-dove.c | ||
sdhci-esdhc-imx.c | ||
sdhci-esdhc.h | ||
sdhci-of-core.c | ||
sdhci-of-esdhc.c | ||
sdhci-of-hlwd.c | ||
sdhci-of.h | ||
sdhci-pci.c | ||
sdhci-pltfm.c | ||
sdhci-pltfm.h | ||
sdhci-pxa.c | ||
sdhci-s3c.c | ||
sdhci-spear.c | ||
sdhci-tegra.c | ||
sdhci.c | ||
sdhci.h | ||
sdricoh_cs.c | ||
sh_mmcif.c | ||
tifm_sd.c | ||
tmio_mmc.c | ||
ushc.c | ||
via-sdmmc.c | ||
wbsd.c | ||
wbsd.h |