On Mon, Feb 13, 2017 at 03:30:19PM +0900, Jiada Wang wrote:by calling sdma_disable_channel(chan) here, sdma driver clears
I got the information from NXP (freescale) R&D team,+static int sdma_disable_channel_with_delay(struct dma_chan *chan)
+{
+ sdma_disable_channel(chan);
+ mdelay(1);
what is the gaurantee that 1ms is fine? Shouldn't you poll the bit to see
channel is disabled properly..
according to them, by write '1' to SDMA_H_STATSTOP, only disables
the related sdma channel (so poll HE bit will indicates the channel
has been disabled),
but it cannot ensure SDMA core stop to access modules' FIFO,
SDMA core may still is running, this is a bug in HW.
Okay b ut you are not doing the HE bit here..??
I will update my patch to add comments once all concerns are addressed.
regarding if the '1ms' is enough to ensure SDMA core has stopped,
NXP R&D team mentioned:
"we should add some delay of one BD SDMA cost time after disable the
channel bit, the maximum is 1ms"
so I assume 1ms should work for all cases
At least please document this in changelog and comments in code.