+++ /dev/null
-From 9c89b352c8be3ef15f6564fa22c8091ff6564708 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 24 Nov 2023 10:50:56 +0200
-Subject: bus: ti-sysc: Flush posted write only after srst_udelay
-
-From: Tony Lindgren <tony@atomide.com>
-
-[ Upstream commit f71f6ff8c1f682a1cae4e8d7bdeed9d7f76b8f75 ]
-
-Commit 34539b442b3b ("bus: ti-sysc: Flush posted write on enable before
-reset") caused a regression reproducable on omap4 duovero where the ISS
-target module can produce interconnect errors on boot. Turns out the
-registers are not accessible until after a delay for devices needing
-a ti,sysc-delay-us value.
-
-Let's fix this by flushing the posted write only after the reset delay.
-We do flushing also for ti,sysc-delay-us using devices as that should
-trigger an interconnect error if the delay is not properly configured.
-
-Let's also add some comments while at it.
-
-Fixes: 34539b442b3b ("bus: ti-sysc: Flush posted write on enable before reset")
-Cc: stable@vger.kernel.org
-Signed-off-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/bus/ti-sysc.c | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
-index 8d82752c54d40..8ad389ebd77a9 100644
---- a/drivers/bus/ti-sysc.c
-+++ b/drivers/bus/ti-sysc.c
-@@ -1837,13 +1837,23 @@ static int sysc_reset(struct sysc *ddata)
- sysc_val = sysc_read_sysconfig(ddata);
- sysc_val |= sysc_mask;
- sysc_write(ddata, sysc_offset, sysc_val);
-- /* Flush posted write */
-+
-+ /*
-+ * Some devices need a delay before reading registers
-+ * after reset. Presumably a srst_udelay is not needed
-+ * for devices that use a rstctrl register reset.
-+ */
-+ if (ddata->cfg.srst_udelay)
-+ fsleep(ddata->cfg.srst_udelay);
-+
-+ /*
-+ * Flush posted write. For devices needing srst_udelay
-+ * this should trigger an interconnect error if the
-+ * srst_udelay value is needed but not configured.
-+ */
- sysc_val = sysc_read_sysconfig(ddata);
- }
-
-- if (ddata->cfg.srst_udelay)
-- fsleep(ddata->cfg.srst_udelay);
--
- if (ddata->post_reset_quirk)
- ddata->post_reset_quirk(ddata);
-
---
-2.43.0
-
+++ /dev/null
-From 0c277cf05ad4849a9e162f58788607f0787f24d9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 21 Aug 2023 16:24:18 +0200
-Subject: bus: ti-sysc: Use fsleep() instead of usleep_range() in sysc_reset()
-
-From: Julien Panis <jpanis@baylibre.com>
-
-[ Upstream commit d929b2b7464f95ec01e47f560b1e687482ba8929 ]
-
-The am335x-evm started producing boot errors because of subtle timing
-changes:
-
-Unhandled fault: external abort on non-linefetch (0x1008) at 0xf03c1010
-...
-sysc_reset from sysc_probe+0xf60/0x1514
-sysc_probe from platform_probe+0x5c/0xbc
-...
-
-The fix consists in using the appropriate sleep function in sysc reset.
-For flexible sleeping, fsleep is recommended. Here, sysc delay parameter
-can take any value in [0 - 255] us range. As a result, fsleep() should
-be used, calling udelay() for a sysc delay lower than 10 us.
-
-Signed-off-by: Julien Panis <jpanis@baylibre.com>
-Fixes: e709ed70d122 ("bus: ti-sysc: Fix missing reset delay handling")
-Message-ID: <20230821-fix-ti-sysc-reset-v1-1-5a0a5d8fae55@baylibre.com>
-Signed-off-by: Tony Lindgren <tony@atomide.com>
-Stable-dep-of: f71f6ff8c1f6 ("bus: ti-sysc: Flush posted write only after srst_udelay")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/bus/ti-sysc.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
-index 70339f73181ea..8d82752c54d40 100644
---- a/drivers/bus/ti-sysc.c
-+++ b/drivers/bus/ti-sysc.c
-@@ -1842,8 +1842,7 @@ static int sysc_reset(struct sysc *ddata)
- }
-
- if (ddata->cfg.srst_udelay)
-- usleep_range(ddata->cfg.srst_udelay,
-- ddata->cfg.srst_udelay * 2);
-+ fsleep(ddata->cfg.srst_udelay);
-
- if (ddata->post_reset_quirk)
- ddata->post_reset_quirk(ddata);
---
-2.43.0
-