dmaengine: at_xdmac: fix imbalanced runtime PM reference counter
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Tue, 14 Feb 2023 15:18:22 +0000 (17:18 +0200)
committerVinod Koul <vkoul@kernel.org>
Wed, 12 Apr 2023 17:48:44 +0000 (23:18 +0530)
commite53957e1ec5196671e49a48f90a5c9555153189a
treea823ad07ace04ac1a9dbeaef91e4f07e385037a6
parent2de5ddb5e68c94b781b3789bca1ce52000d7d0e0
dmaengine: at_xdmac: fix imbalanced runtime PM reference counter

In case there are channels not paused during suspend (which on AT91 case
is valid for serial driver when no_console_suspend boot argument is used)
the at_xdmac_runtime_suspend_descriptors() was called more than
one time due to at_xdmac_off(). To fix this add a new argument to
at_xdmac_off() to specify if runtime PM reference counter needs to be
decremented for queued active descriptors. Along with it moved the
at_xdmac_runtime_suspend_descriptors() call under at_xdmac_chan_is_paused()
check on suspend path as for the rest of channels the suspend is delayed
by atmel_xdmac_prepare() in case channel is enabled. Same approach has
been applied on resume path.

Fixes: 650b0e990cbd ("dmaengine: at_xdmac: add runtime pm support")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Link: https://lore.kernel.org/r/20230214151827.1050280-3-claudiu.beznea@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/at_xdmac.c