Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96874b9a authored by Joel Fernandes's avatar Joel Fernandes Committed by Vinod Koul
Browse files

ARM: edma: Add function to manually trigger an EDMA channel



Manual trigger for events missed as a result of splitting a
scatter gather list and DMA'ing it in batches. Add a helper
function to trigger a channel incase any such events are missed.

Signed-off-by: default avatarJoel Fernandes <joelf@ti.com>
Acked-by: default avatarSekhar Nori <nsekhar@ti.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 53407062
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -1235,6 +1235,23 @@ void edma_resume(unsigned channel)
}
EXPORT_SYMBOL(edma_resume);

int edma_trigger_channel(unsigned channel)
{
	unsigned ctlr;
	unsigned int mask;

	ctlr = EDMA_CTLR(channel);
	channel = EDMA_CHAN_SLOT(channel);
	mask = BIT(channel & 0x1f);

	edma_shadow0_write_array(ctlr, SH_ESR, (channel >> 5), mask);

	pr_debug("EDMA: ESR%d %08x\n", (channel >> 5),
		 edma_shadow0_read_array(ctlr, SH_ESR, (channel >> 5)));
	return 0;
}
EXPORT_SYMBOL(edma_trigger_channel);

/**
 * edma_start - start dma on a channel
 * @channel: channel being activated
+2 −0
Original line number Diff line number Diff line
@@ -180,4 +180,6 @@ struct edma_soc_info {
	const s16	(*xbar_chans)[2];
};

int edma_trigger_channel(unsigned);

#endif