From 9d83271d3f06495658eefb715d77a33e7f825e86 Mon Sep 17 00:00:00 2001 From: Grische <2787581+grische@users.noreply.github.com> Date: Thu, 11 Jan 2024 17:56:29 +0100 Subject: [PATCH] patches: add patch to fix WDR3600/4300 reboots --- patches/ath79-read-back-reset-register.patch | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 patches/ath79-read-back-reset-register.patch diff --git a/patches/ath79-read-back-reset-register.patch b/patches/ath79-read-back-reset-register.patch new file mode 100644 index 00000000..d468c89b --- /dev/null +++ b/patches/ath79-read-back-reset-register.patch @@ -0,0 +1,83 @@ +From a43a4fc3ac297d2dcd2623d65a45707028ebebc0 Mon Sep 17 00:00:00 2001 +From: Grische <2787581+grische@users.noreply.github.com> +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 ++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 ++(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 +++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 +++--- +++ 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 +