dmaengine: imx-sdma: only restart cyclic channel when enabled

An interrupt for a channel might be pending even after struct
dma_device::device_terminate_all has been called. In that case the
recently introduced warning message "restart cyclic channel..." triggers
and the channel will be restarted. This is not desired as the channel
has just been stopped. Only restart the channel when we still have a
descriptor set for it (which will be set to NULL in
sdma_terminate_all()).

Fixes: 5b215c28b9235 ("dmaengine: imx-sdma: restart cyclic channel if needed")
Cc: stable@vger.kernel.org
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20220617115042.4004062-1-s.hauer@pengutronix.de
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by Sascha Hauer and committed by Vinod Koul 09f7b80f 49db68d4

+1 -1
+1 -1
drivers/dma/imx-sdma.c
··· 891 891 * SDMA stops cyclic channel when DMA request triggers a channel and no SDMA 892 892 * owned buffer is available (i.e. BD_DONE was set too late). 893 893 */ 894 - if (!is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) { 894 + if (sdmac->desc && !is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) { 895 895 dev_warn(sdmac->sdma->dev, "restart cyclic channel %d\n", sdmac->channel); 896 896 sdma_enable_channel(sdmac->sdma, sdmac->channel); 897 897 }