mirror of https://gitee.com/openkylin/linux.git
dma: mv_xor: Flush descriptors before activating a channel
We need to use writel() instead of writel_relaxed() when starting a channel, to ensure all the descriptors have been flushed before the activation. While at it, remove the unneeded read-modify-write and make the code simpler. Cc: <stable@vger.kernel.org> Signed-off-by: Lior Amsalem <alior@marvell.com> Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
d6d211db37
commit
5a9a55bf91
|
@ -191,12 +191,10 @@ static void mv_set_mode(struct mv_xor_chan *chan,
|
||||||
|
|
||||||
static void mv_chan_activate(struct mv_xor_chan *chan)
|
static void mv_chan_activate(struct mv_xor_chan *chan)
|
||||||
{
|
{
|
||||||
u32 activation;
|
|
||||||
|
|
||||||
dev_dbg(mv_chan_to_devp(chan), " activate chan.\n");
|
dev_dbg(mv_chan_to_devp(chan), " activate chan.\n");
|
||||||
activation = readl_relaxed(XOR_ACTIVATION(chan));
|
|
||||||
activation |= 0x1;
|
/* writel ensures all descriptors are flushed before activation */
|
||||||
writel_relaxed(activation, XOR_ACTIVATION(chan));
|
writel(BIT(0), XOR_ACTIVATION(chan));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char mv_chan_is_busy(struct mv_xor_chan *chan)
|
static char mv_chan_is_busy(struct mv_xor_chan *chan)
|
||||||
|
|
Loading…
Reference in New Issue