All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] mfd: madera: Allow more time for hardware reset
@ 2020-01-06 10:28 Charles Keepax
  2020-01-06 10:28 ` [PATCH 2/2] mfd: madera: Wait for boot done before accessing any other registers Charles Keepax
  2020-01-07 14:27 ` [PATCH 1/2] mfd: madera: Allow more time for hardware reset Lee Jones
  0 siblings, 2 replies; 10+ messages in thread
From: Charles Keepax @ 2020-01-06 10:28 UTC (permalink / raw)
  To: lee.jones; +Cc: linux-kernel, patches

Both manual and power on resets have a brief period where the chip will
not be accessible immediately afterwards. Extend the time allowed for
this from a minimum of 1mS to 2mS based on newer evaluation of the
hardware and ensure this reset happens in all reset conditions. Whilst
making the change also remove the redundant NULL checks in the reset
functions as the GPIO functions already check for this.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 drivers/mfd/madera-core.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/mfd/madera-core.c b/drivers/mfd/madera-core.c
index a8cfadc1fc01e..f41ce408259fb 100644
--- a/drivers/mfd/madera-core.c
+++ b/drivers/mfd/madera-core.c
@@ -238,6 +238,11 @@ static int madera_wait_for_boot(struct madera *madera)
 	return ret;
 }
 
+static inline void madera_reset_delay(void)
+{
+	usleep_range(2000, 3000);
+}
+
 static int madera_soft_reset(struct madera *madera)
 {
 	int ret;
@@ -249,16 +254,13 @@ static int madera_soft_reset(struct madera *madera)
 	}
 
 	/* Allow time for internal clocks to startup after reset */
-	usleep_range(1000, 2000);
+	madera_reset_delay();
 
 	return 0;
 }
 
 static void madera_enable_hard_reset(struct madera *madera)
 {
-	if (!madera->pdata.reset)
-		return;
-
 	/*
 	 * There are many existing out-of-tree users of these codecs that we
 	 * can't break so preserve the expected behaviour of setting the line
@@ -269,11 +271,9 @@ static void madera_enable_hard_reset(struct madera *madera)
 
 static void madera_disable_hard_reset(struct madera *madera)
 {
-	if (!madera->pdata.reset)
-		return;
-
 	gpiod_set_raw_value_cansleep(madera->pdata.reset, 1);
-	usleep_range(1000, 2000);
+
+	madera_reset_delay();
 }
 
 static int __maybe_unused madera_runtime_resume(struct device *dev)
@@ -292,6 +292,8 @@ static int __maybe_unused madera_runtime_resume(struct device *dev)
 	regcache_cache_only(madera->regmap, false);
 	regcache_cache_only(madera->regmap_32bit, false);
 
+	madera_reset_delay();
+
 	ret = madera_wait_for_boot(madera);
 	if (ret)
 		goto err;
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-01-16 13:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-06 10:28 [PATCH 1/2] mfd: madera: Allow more time for hardware reset Charles Keepax
2020-01-06 10:28 ` [PATCH 2/2] mfd: madera: Wait for boot done before accessing any other registers Charles Keepax
2020-01-07 14:29   ` Lee Jones
2020-01-08  8:42     ` Charles Keepax
2020-01-13 10:44       ` Lee Jones
2020-01-13 17:02         ` Charles Keepax
2020-01-16 13:21   ` Lee Jones
2020-01-07 14:27 ` [PATCH 1/2] mfd: madera: Allow more time for hardware reset Lee Jones
2020-01-08  8:46   ` Charles Keepax
2020-01-13 10:41     ` Lee Jones

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.