mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-17 22:41:25 +00:00
Blackfin: add SSYNC to set_dma_sg() for descriptor fetching
Make sure the internal core buffers are flushed before telling the DMA engine to fetch the descriptor structure so that it gets the right values. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
9b9bfded62
commit
ea8538a039
@ -206,10 +206,16 @@ static inline unsigned long get_dma_curr_addr(unsigned int channel)
|
||||
|
||||
static inline void set_dma_sg(unsigned int channel, struct dmasg *sg, int ndsize)
|
||||
{
|
||||
/* Make sure the internal data buffers in the core are drained
|
||||
* so that the DMA descriptors are completely written when the
|
||||
* DMA engine goes to fetch them below.
|
||||
*/
|
||||
SSYNC();
|
||||
|
||||
dma_ch[channel].regs->next_desc_ptr = sg;
|
||||
dma_ch[channel].regs->cfg =
|
||||
(dma_ch[channel].regs->cfg & ~(0xf << 8)) |
|
||||
((ndsize & 0xf) << 8);
|
||||
dma_ch[channel].regs->next_desc_ptr = sg;
|
||||
}
|
||||
|
||||
static inline int dma_channel_active(unsigned int channel)
|
||||
|
Loading…
Reference in New Issue
Block a user