aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/platform/vimc/vimc-streamer.c
diff options
context:
space:
mode:
authorAmelie Delaunay <[email protected]>2020-01-29 16:36:27 +0100
committerVinod Koul <[email protected]>2020-02-25 11:15:05 +0530
commit409ffc4d990c157f876f105d06e11c1f21444cb7 (patch)
tree97c70db56329ad0ff7d6bc176f909a953963c5d5 /drivers/media/platform/vimc/vimc-streamer.c
parent32ce108833a8424c686d9f82db231a6039290d41 (diff)
dmaengine: stm32-dma: fix sleeping function called from invalid context
This patch fixes BUG: sleeping function called from invalid context in stm32_dma_disable_chan function. The goal of this function is to force channel disable if it has not been disabled by hardware. This consists in clearing STM32_DMA_SCR_EN bit and read it as 0 to ensure the channel is well disabled and the last transfer is over. In previous implementation, the waiting loop was based on a do...while (1) with a call to cond_resched to give the scheduler a chance to run a higher priority process. But in some conditions, stm32_dma_disable_chan can be called while preemption is disabled, on a stm32_dma_stop call for example. So cond_resched must not be used. To avoid this, use readl_relaxed_poll_timeout_atomic to poll STM32_DMA_SCR_EN bit cleared. Signed-off-by: Amelie Delaunay <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
Diffstat (limited to 'drivers/media/platform/vimc/vimc-streamer.c')
0 files changed, 0 insertions, 0 deletions