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: Joel Fernandes <joelf@ti.com> Acked-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
534070622d
commit
96874b9a24
|
@ -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
|
||||
|
|
|
@ -180,4 +180,6 @@ struct edma_soc_info {
|
|||
const s16 (*xbar_chans)[2];
|
||||
};
|
||||
|
||||
int edma_trigger_channel(unsigned);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue