dmaengine: dw-edma: Add support for native HDMA
authorCai Huoqing <cai.huoqing@linux.dev>
Sat, 20 May 2023 05:08:51 +0000 (13:08 +0800)
committerVinod Koul <vkoul@kernel.org>
Wed, 24 May 2023 06:50:45 +0000 (12:20 +0530)
commite74c39573d35e9ac441090ff8183aa3dc2540649
tree910f57d5b6f1d7b61baa3fb5672efd27125db077
parentf9c3403f1fabf6b21dad67a2a0641ea18a48de21
dmaengine: dw-edma: Add support for native HDMA

Add support for HDMA NATIVE, as long the IP design has set
the compatible register map parameter-HDMA_NATIVE,
which allows compatibility for native HDMA register configuration.

The HDMA Hyper-DMA IP is an enhancement of the eDMA embedded-DMA IP.
And the native HDMA registers are different from eDMA, so this patch
add support for HDMA NATIVE mode.

HDMA write and read channels operate independently to maximize
the performance of the HDMA read and write data transfer over
the link When you configure the HDMA with multiple read channels,
then it uses a round robin (RR) arbitration scheme to select
the next read channel to be serviced.The same applies when you
have multiple write channels.

The native HDMA driver also supports a maximum of 16 independent
channels (8 write + 8 read), which can run simultaneously.
Both SAR (Source Address Register) and DAR (Destination Address Register)
are aligned to byte.

Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tested-by: Serge Semin <fancer.lancer@gmail.com>
Link: https://lore.kernel.org/r/20230520050854.73160-4-cai.huoqing@linux.dev
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dw-edma/Makefile
drivers/dma/dw-edma/dw-edma-core.c
drivers/dma/dw-edma/dw-hdma-v0-core.c [new file with mode: 0644]
drivers/dma/dw-edma/dw-hdma-v0-core.h [new file with mode: 0644]
drivers/dma/dw-edma/dw-hdma-v0-regs.h [new file with mode: 0644]
include/linux/dma/edma.h