2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-25 05:34:00 +08:00
linux-next/drivers/dma
Gustavo Pimentel 7e4b8a4fbe dmaengine: Add Synopsys eDMA IP version 0 support
Add support for the eDMA IP version 0 driver for both register maps (legacy
and unroll).

The legacy register mapping was the initial implementation, which consisted
in having all registers belonging to channels multiplexed, which could be
change anytime (which could led a race-condition) by view port register
(access to only one channel available each time).

This register mapping is not very effective and efficient in a multithread
environment, which has led to the development of unroll registers mapping,
which consists of having all channels registers accessible any time by
spreading all channels registers by an offset between them.

This version supports a maximum of 16 independent channels (8 write +
8 read), which can run simultaneously.

Implements a scatter-gather transfer through a linked list, where the size
of linked list depends on the allocated memory divided equally among all
channels.

Each linked list descriptor can transfer from 1 byte to 4 Gbytes and is
alignmented to DWORD.

Both SAR (Source Address Register) and DAR (Destination Address Register)
are alignmented to byte.

Signed-off-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Russell King <rmk+kernel@armlinux.org.uk>
Cc: Joao Pinto <jpinto@synopsys.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2019-06-10 13:10:39 +05:30
..
bestcomm treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
dw Merge branch 'topic/dw' into for-linus 2019-03-12 12:03:47 +05:30
dw-axi-dmac dmaengine: dw-axi-dmac: Fix trivia typo 2019-01-08 22:36:18 +05:30
dw-edma dmaengine: Add Synopsys eDMA IP version 0 support 2019-06-10 13:10:39 +05:30
hsu dmaengine: hsu: remove dma_slave_config direction usage 2018-10-07 19:25:09 +05:30
ioat dmaengine: ioatdma: support latency tolerance report (LTR) for v3.4 2019-02-25 12:18:38 +05:30
ipu treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
mediatek dmaengine: mediatek: Add MediaTek UART APDMA support 2019-06-07 15:36:45 +05:30
ppc4xx dmaengine: ppc4xx: fix off-by-one build failure 2018-10-16 20:08:30 +05:30
qcom dmaengine: qcom_hidma: assign channel cookie correctly 2019-01-20 10:43:34 +05:30
sh dmaengine: sh: usb-dmac: Let the core do the device node validation 2019-05-27 11:23:53 +05:30
ti dmaengine: cppi41: delete channel from pending list when stop channel 2018-12-05 14:01:59 +05:30
xilinx dmaengine: xilinx_dma: Remove set but unused ‘tail_desc’ 2019-05-22 10:45:04 +05:30
acpi-dma.c dmaengine: acpi-dma: align debug message with flow 2016-02-22 09:06:09 +05:30
altera-msgdma.c dmaengine: altera: Use IRQ-safe spinlock calls in the error paths as well 2017-10-20 11:51:10 +05:30
amba-pl08x.c dmaengine: pl08x: be fair when re-assigning physical channel 2019-03-25 21:52:28 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: Remove unnecessary 0x prefixes before %pad 2017-11-08 10:47:04 +05:30
at_hdmac.c dmaengine: at_hdmac: drop useless LIST_HEAD 2019-01-07 09:49:26 +05:30
at_xdmac.c dmaengine: at_xdmac: remove a stray bottom half unlock 2019-05-04 16:11:02 +05:30
bcm2835-dma.c dmaengine updates for v5.2-rc1 2019-05-09 08:51:45 -07:00
bcm-sba-raid.c dmaengine: bcm-sba-raid: Use dev_get_drvdata() 2019-04-29 10:47:15 +05:30
coh901318_lli.c dmaengine: coh901318: use NULL for pointer initialization 2016-09-26 22:28:24 +05:30
coh901318.c dmaengine: coh901318: Remove unused variable 2018-11-26 13:35:52 +05:30
coh901318.h
dma-axi-dmac.c dmaengine: axi-dmac: assign copy_align property 2019-05-27 12:36:08 +05:30
dma-jz4740.c dmaengine: jz4740: remove dma_slave_config direction usage 2018-10-07 19:20:14 +05:30
dma-jz4780.c dmaengine: dma-jz4780: Let the core do the device node validation 2019-05-27 11:23:52 +05:30
dmaengine.c dmaengine: Add matching device node validation in __dma_request_channel() 2019-05-27 11:23:52 +05:30
dmaengine.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dmatest.c dmaengine updates for v5.1-rc1 2019-03-14 09:11:54 -07:00
ep93xx_dma.c dmaengine: ep93xx: fix some typo 2018-11-11 14:56:49 +05:30
fsl_raid.c dmaengine: fsl_raid: make of_device_ids const. 2017-06-29 09:25:28 +05:30
fsl_raid.h
fsl-edma-common.c dmaengine: fsl-edma: dma map slave device address 2019-02-04 12:32:53 +05:30
fsl-edma-common.h dmaengine: fsl-edma: Fix typo in Vybrid name 2019-05-04 15:50:26 +05:30
fsl-edma.c dmaengine: fsl-edma: Adjust indentation 2019-05-04 15:50:26 +05:30
fsl-qdma.c dmaengine: fsl-qdma: Continue to clear register on error 2019-06-04 17:35:05 +05:30
fsldma.c dmaengine: fsldma: Replace DMA_IN/OUT by FSL_DMA_IN/OUT 2019-01-07 09:50:16 +05:30
fsldma.h dmaengine: fsldma: Add 64-bit I/O accessors for powerpc64 2019-02-04 12:56:54 +05:30
idma64.c dmaengine: idma64: Move driver name to the header 2019-04-26 16:55:23 +05:30
idma64.h dmaengine: idma64: Use actual device for DMA transfers 2019-03-21 19:48:26 +05:30
img-mdc-dma.c dmaengine: img-mdc-dma: Use vchan_terminate_vdesc() instead of desc_free 2017-12-04 22:33:51 +05:30
imx-dma.c dmaengine updates for v5.1-rc1 2019-03-14 09:11:54 -07:00
imx-sdma.c dmaengine: imx-sdma: Let the core do the device node validation 2019-05-27 11:23:52 +05:30
iop-adma.c dmaengine: iop-adma: convert callback to helper function 2016-08-08 08:11:39 +05:30
k3dma.c dmaengine: k3dma: Add support for dma-channel-mask 2019-02-04 14:30:57 +05:30
Kconfig dmaengine: Add Synopsys eDMA IP core driver 2019-06-10 13:10:39 +05:30
lpc18xx-dmamux.c
Makefile dmaengine: Add Synopsys eDMA IP core driver 2019-06-10 13:10:39 +05:30
mcf-edma.c dmaengine: fsl-edma: dma map slave device address 2019-02-04 12:32:53 +05:30
mic_x100_dma.c dmaengine: mic_x100_dma: convert to DEFINE_SHOW_ATTRIBUTE 2018-12-17 11:49:41 +05:30
mic_x100_dma.h
mmp_pdma.c dmaengine: mmp_pdma: remove dma_slave_config direction usage 2018-11-05 10:32:46 +05:30
mmp_tdma.c dmaengine: mmp_tdma: Let the core do the device node validation 2019-05-27 11:23:52 +05:30
moxart-dma.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
mpc512x_dma.c Merge branch 'topic/err_reporting' into for-linus 2016-10-03 09:17:33 +05:30
mv_xor_v2.c dmaengine: mv_xor_v2: use {lower,upper}_32_bits to configure HW descriptor address 2018-07-25 17:53:22 +05:30
mv_xor.c Merge branch 'topic/mv' into for-linus 2019-03-12 12:04:16 +05:30
mv_xor.h dmaengine: mv_xor: Add support for scatter-gather DMA mode 2016-11-25 11:16:36 +05:30
mxs-dma.c dmaengine: mxs-dma: Let the core do the device node validation 2019-05-27 11:23:52 +05:30
nbpfaxi.c dmaengine: nbpfaxi: Use dev_get_drvdata() 2019-04-29 10:47:15 +05:30
of-dma.c dmaengine: Add matching device node validation in __dma_request_channel() 2019-05-27 11:23:52 +05:30
owl-dma.c dmaengine: owl: Fix warnings generated during build 2018-10-15 22:39:16 +05:30
pch_dma.c PCI: Move Rohm Vendor ID to generic list 2019-02-01 17:24:52 -06:00
pl330.c dmaengine: pl330: _stop: clear interrupt status 2019-04-26 16:51:37 +05:30
pxa_dma.c dmaengine-4.21-rc1 2019-01-01 15:45:48 -08:00
s3c24xx-dma.c headers: separate linux/mod_devicetable.h from linux/platform_device.h 2018-07-07 17:52:26 +02:00
sa11x0-dma.c dmaengine: sa11x0: drop useless LIST_HEAD 2019-01-07 09:49:26 +05:30
sirf-dma.c dmaengine: sirf-dma: remove unused ‘sdesc’ 2016-12-12 22:25:22 +05:30
sprd-dma.c dmaengine: sprd: Change channel id to slave id for DMA cell specifier 2019-02-25 12:11:19 +05:30
st_fdma.c dmaengine: st_fdma: use struct_size() in kzalloc() 2019-01-07 18:05:22 +05:30
st_fdma.h dmaengine: st_fdma: Add STMicroelectronics FDMA driver header file 2016-10-18 20:12:06 +05:30
ste_dma40_ll.c dmaengine: ste_dma40_ll: make d40_width_to_bits static 2016-06-08 08:59:55 +05:30
ste_dma40_ll.h
ste_dma40.c dmaengine: ste_dma40: remove dma_slave_config direction usage 2018-11-24 20:22:21 +05:30
stm32-dma.c dmaengine: stm32-dma: Fix redundant call to platform_get_irq 2019-05-21 10:09:24 +05:30
stm32-dmamux.c dmaengine: stm32: use to_platform_device() 2019-05-27 12:12:17 +05:30
stm32-mdma.c dmaengine: stm32-mdma: Revert "dmaengine: stm32-mdma: Add a check on read_u32_array" 2019-03-25 21:56:54 +05:30
sun4i-dma.c dmaengine: sun4i: fix invalid argument 2017-04-24 09:50:05 +05:30
sun6i-dma.c dmaengine: sun6i: Add support for H6 DMA 2019-06-04 17:56:59 +05:30
tegra20-apb-dma.c dmaengine: tegra-apb: Error out if DMA_PREP_INTERRUPT flag is unset 2019-06-04 17:45:47 +05:30
tegra210-adma.c dmaengine: tegra210-adma: restore channel status 2019-05-04 16:13:42 +05:30
timb_dma.c dmaengine: timb_dma: Use struct_size() in kzalloc() 2019-01-20 10:50:07 +05:30
TODO
txx9dmac.c drivers: Remove explicit invocations of mmiowb() 2019-04-08 12:01:02 +01:00
txx9dmac.h
uniphier-mdmac.c dmaengine: uniphier-mdmac: add UniPhier MIO DMAC driver 2018-11-24 19:42:59 +05:30
virt-dma.c dmaengine: virt-dma: Add helper to free/reuse a descriptor 2017-12-04 22:33:51 +05:30
virt-dma.h dmaengine: virt-dma: Support for race free transfer termination 2017-12-04 22:33:51 +05:30
xgene-dma.c dmaengine: xgene-dma: fix spelling mistake "descripto" -> "descriptor" 2019-04-26 16:57:15 +05:30
zx_dma.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00