Commit f95f3b53 authored by Pandith N's avatar Pandith N Committed by Vinod Koul
Browse files

dmaengine: dw-axi-dmac: support parallel memory <--> peripheral transfers



Added support for multiple DMA_MEM_TO_DEV, DMA_DEV_TO_MEM transfers in
parallel. This is required for peripherals using DMA for transmit and
receive operations at the same time. APB slot number needs to be
programmed in channel hardware handshaking interface

Signed-off-by: default avatarPandith N <pandith.n@intel.com>
Tested-by: default avatarPan Kris <kris.pan@intel.com>
Link: https://lore.kernel.org/r/20210802055454.15192-3-pandith.n@intel.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 32286e27
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -363,12 +363,16 @@ static void axi_chan_block_xfer_start(struct axi_dma_chan *chan,
			DWAXIDMAC_TT_FC_MEM_TO_PER_DST :
			DWAXIDMAC_TT_FC_MEM_TO_PER_DMAC)
			<< CH_CFG_H_TT_FC_POS;
		if (chan->chip->apb_regs)
			reg |= (chan->id << CH_CFG_H_DST_PER_POS);
		break;
	case DMA_DEV_TO_MEM:
		reg |= (chan->config.device_fc ?
			DWAXIDMAC_TT_FC_PER_TO_MEM_SRC :
			DWAXIDMAC_TT_FC_PER_TO_MEM_DMAC)
			<< CH_CFG_H_TT_FC_POS;
		if (chan->chip->apb_regs)
			reg |= (chan->id << CH_CFG_H_SRC_PER_POS);
		break;
	default:
		break;
+2 −0
Original line number Diff line number Diff line
@@ -258,6 +258,8 @@ enum {

/* CH_CFG_H */
#define CH_CFG_H_PRIORITY_POS		17
#define CH_CFG_H_DST_PER_POS		12
#define CH_CFG_H_SRC_PER_POS		7
#define CH_CFG_H_HS_SEL_DST_POS		4
#define CH_CFG_H_HS_SEL_SRC_POS		3
enum {