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

Commit ea8538a0 authored by Sonic Zhang's avatar Sonic Zhang Committed by Mike Frysinger
Browse files

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: default avatarSonic Zhang <sonic.zhang@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 9b9bfded
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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)