Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

patches: add patch to fix TP-Link WDR3600/4300 reboots #360

Merged
merged 1 commit into from
Jan 11, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions patches/ath79-read-back-reset-register.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
From a43a4fc3ac297d2dcd2623d65a45707028ebebc0 Mon Sep 17 00:00:00 2001
From: Grische <[email protected]>
Date: Thu, 11 Jan 2024 17:54:47 +0100
Subject: [PATCH] ath79: read back reset register

---
.../0016-ath79-read-back-reset-register.patch | 64 +++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 patches/openwrt/0016-ath79-read-back-reset-register.patch

diff --git a/patches/openwrt/0016-ath79-read-back-reset-register.patch b/patches/openwrt/0016-ath79-read-back-reset-register.patch
new file mode 100644
index 00000000..bd0b17a0
--- /dev/null
+++ b/patches/openwrt/0016-ath79-read-back-reset-register.patch
@@ -0,0 +1,64 @@
+From a08553b3b36cc309d3f112208f8451ad85d240eb Mon Sep 17 00:00:00 2001
+From: David Bauer <[email protected]>
+Date: Thu, 11 Jan 2024 13:05:39 +0100
+Subject: [PATCH] ath79: read back reset register
+
+Read back the reset register in order to flush the cache. This fixes
+spurious reboot hangs on TP-Link TL-WDR3600 and TL-WDR4300 with Zentel
+DRAM chips.
+
+This issue was fixed in the past, but switching to the reset-driver
+specific implementation removed the cache barrier which was previously
+implicitly added by reading back the register in question.
+
+Link: freifunk-gluon/gluon#2904
+Link: openwrt#13043
+Link: https://dev.archive.openwrt.org/ticket/17839
+Link: f8a7bfe1cb2c ("MIPS: ath79: fix system restart")
+
+Signed-off-by: David Bauer <[email protected]>
+(cherry picked from commit 2fe8ecd880396b5ae25fe9583aaa1d71be0b8468)
+---
+ ...reset-ath79-read-back-reset-register.patch | 33 +++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+ create mode 100644 target/linux/ath79/patches-5.10/100-reset-ath79-read-back-reset-register.patch
+
+diff --git a/target/linux/ath79/patches-5.10/100-reset-ath79-read-back-reset-register.patch b/target/linux/ath79/patches-5.10/100-reset-ath79-read-back-reset-register.patch
+new file mode 100644
+index 0000000000000..8e66fa8b6e7ca
+--- /dev/null
++++ b/target/linux/ath79/patches-5.10/100-reset-ath79-read-back-reset-register.patch
+@@ -0,0 +1,33 @@
++From 5d25f925d3f72ceadf922f946d5422ad77fbfc20 Mon Sep 17 00:00:00 2001
++From: David Bauer <[email protected]>
++Date: Thu, 11 Jan 2024 13:01:18 +0100
++Subject: [PATCH] reset: ath79: read back reset register
++
++Read back the reset register in order to flush the cache. This fixes
++spurious reboot hangs on TP-Link TL-WDR3600 and TL-WDR4300 with Zentel
++DRAM chips.
++
++This issue was fixed in the past, but switching to the reset-driver
++specific implementation removed the old fix.
++
++Link: https://github.com/freifunk-gluon/gluon/issues/2904
++Link: https://github.com/openwrt/openwrt/issues/13043
++Link: https://dev.archive.openwrt.org/ticket/17839
++Link: f8a7bfe1cb2c ("MIPS: ath79: fix system restart")
++
++Signed-off-by: David Bauer <[email protected]>
++---
++ drivers/reset/reset-ath79.c | 2 ++
++ 1 file changed, 2 insertions(+)
++
++--- a/drivers/reset/reset-ath79.c
+++++ b/drivers/reset/reset-ath79.c
++@@ -37,6 +37,8 @@ static int ath79_reset_update(struct res
++ else
++ val &= ~BIT(id);
++ writel(val, ath79_reset->base);
+++ /* Flush cache */
+++ readl(ath79_reset->base);
++ spin_unlock_irqrestore(&ath79_reset->lock, flags);
++
++ return 0;
--
2.34.1