All of lore.kernel.org
 help / color / mirror / Atom feed
From: Claudiu Beznea <claudiu.beznea@microchip.com>
To: <ludovic.desroches@microchip.com>, <tudor.ambarus@linaro.org>,
	<vkoul@kernel.org>, <nicolas.ferre@microchip.com>
Cc: <linux-arm-kernel@lists.infradead.org>,
	<dmaengine@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Claudiu Beznea <claudiu.beznea@microchip.com>
Subject: [PATCH 4/7] dmaengine: at_xdmac: restore the content of grws register
Date: Tue, 14 Feb 2023 17:18:24 +0200	[thread overview]
Message-ID: <20230214151827.1050280-5-claudiu.beznea@microchip.com> (raw)
In-Reply-To: <20230214151827.1050280-1-claudiu.beznea@microchip.com>

In case the system suspends to a deep sleep state where power to DMA
controller is cut-off we need to restore the content of GRWS register.
This is a write only register and writing bit X tells the controller
to suspend read and write requests for channel X. Thus set GRWS before
restoring the content of GE (Global Enable) regiter.

Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
 drivers/dma/at_xdmac.c | 9 +++++++++
 1 file changed, 9 insertions(+)

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);
-- 
2.34.1


WARNING: multiple messages have this Message-ID (diff)
From: Claudiu Beznea <claudiu.beznea@microchip.com>
To: <ludovic.desroches@microchip.com>, <tudor.ambarus@linaro.org>,
	<vkoul@kernel.org>, <nicolas.ferre@microchip.com>
Cc: <linux-arm-kernel@lists.infradead.org>,
	<dmaengine@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Claudiu Beznea <claudiu.beznea@microchip.com>
Subject: [PATCH 4/7] dmaengine: at_xdmac: restore the content of grws register
Date: Tue, 14 Feb 2023 17:18:24 +0200	[thread overview]
Message-ID: <20230214151827.1050280-5-claudiu.beznea@microchip.com> (raw)
In-Reply-To: <20230214151827.1050280-1-claudiu.beznea@microchip.com>

In case the system suspends to a deep sleep state where power to DMA
controller is cut-off we need to restore the content of GRWS register.
This is a write only register and writing bit X tells the controller
to suspend read and write requests for channel X. Thus set GRWS before
restoring the content of GE (Global Enable) regiter.

Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
 drivers/dma/at_xdmac.c | 9 +++++++++
 1 file changed, 9 insertions(+)

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);
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-02-14 15:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-14 15:18 [PATCH 0/7] dmaengine: at_xdmac: fixes for suspend/resume Claudiu Beznea
2023-02-14 15:18 ` Claudiu Beznea
2023-02-14 15:18 ` [PATCH 1/7] dmaengine: at_xdmac: disable/enable clock directly on suspend/resume Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-02-14 15:18 ` [PATCH 2/7] dmaengine: at_xdmac: fix imbalanced runtime PM reference counter Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-02-14 15:18 ` [PATCH 3/7] dmaengine: at_xdmac: do not resume channels paused by consumers Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-02-14 15:18 ` Claudiu Beznea [this message]
2023-02-14 15:18   ` [PATCH 4/7] dmaengine: at_xdmac: restore the content of grws register Claudiu Beznea
2023-02-14 15:18 ` [PATCH 5/7] dmaengine: at_xdmac: do not enable all cyclic channels Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-02-14 15:18 ` [PATCH 6/7] dmaengine: at_xdmac: add a warning message regarding for unpaused channels Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-02-14 15:18 ` [PATCH 7/7] dmaengine: at_xdmac: align declaration of ret with the rest of variables Claudiu Beznea
2023-02-14 15:18   ` Claudiu Beznea
2023-04-12 17:47 ` [PATCH 0/7] dmaengine: at_xdmac: fixes for suspend/resume Vinod Koul
2023-04-12 17:47   ` Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230214151827.1050280-5-claudiu.beznea@microchip.com \
    --to=claudiu.beznea@microchip.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ludovic.desroches@microchip.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=tudor.ambarus@linaro.org \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.