diff options
| -rw-r--r-- | drivers/dma/at_xdmac.c | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index fa1e2e0da02f..34c004a4b23c 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c @@ -2211,6 +2211,15 @@ static int __maybe_unused atmel_xdmac_resume(struct device *dev)  					return ret;  				at_xdmac_device_resume_internal(atchan);  			} + +			/* +			 * We may resume from a deep sleep state where power +			 * to DMA controller is cut-off. Thus, restore the +			 * suspend state of channels set though dmaengine API. +			 */ +			else if (at_xdmac_chan_is_paused(atchan)) +				at_xdmac_device_pause_set(atxdmac, atchan); +  			at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, atchan->save_cnda);  			at_xdmac_chan_write(atchan, AT_XDMAC_CNDC, atchan->save_cndc);  			at_xdmac_chan_write(atchan, AT_XDMAC_CIE, atchan->save_cim); | 
