Hi Lizhi,
Maybe -EBUSY in this case?@@ -376,6 +378,8 @@ static int xdma_xfer_start(struct xdma_chan *xchan)If stop_requested is true, it should not start another transfer. So I would suggest to add
return ret;
> xchan->busy = true;
+ xchan->stop_requested = false;
+ reinit_completion(&xchan->last_interrupt);
if (xchan->stop_requested)
return -ENODEV;
I thought synchronize() was mandatory in-between. If that's not the
case then indeed we need to block or error-out if a new transfer
gets started.
at the beginning of xdma_xfer_start().Thanks,
xdma_xfer_start() is protected by chan lock.
> return 0;
}
Miquèl