Hi Pali, On Sat, Mar 11, 2023 at 2:57 AM Pali Rohár <[email protected]> wrote: > > Same change as was done for mvebu in commit 5bb2c550b11e ("arm: mvebu: Move > internal registers in arch_very_early_init() function") but for kirkwood. > > Signed-off-by: Pali Rohár <[email protected]> > --- > Hello! Please test this RFC patch on more Kirkwood boards if there is > any issue with it.
I've run a regression test with this patch (Debug UART is not enabled). And everything was OK. No change in behavior. However, when I turned on Debug UART on the nsa310s (88F6702) board, and ran with kwboot, it froze right away upon starting. Unrelated to this patch, I believe DEBUG_UART has been broken for Kirkwood lately, perhaps sometime late December to present, but I did not have time to track it down. Here is the last thread that I had Debug UART working on the Pogo V4 (88F6192): https://lists.denx.de/pipermail/u-boot/2022-December/502605.html For reference, here is my local patch to configure the NSA310S, in addition to this patch. diff --git a/configs/nsa310s_defconfig b/configs/nsa310s_defconfig index 76839e62dd..4bef35d576 100644 --- a/configs/nsa310s_defconfig +++ b/configs/nsa310s_defconfig @@ -15,8 +15,11 @@ CONFIG_ENV_SIZE=0x20000 CONFIG_ENV_OFFSET=0xE0000 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-nsa310s" CONFIG_SYS_PROMPT="NSA310s> " +CONFIG_DEBUG_UART_BASE=0xf1012000 +CONFIG_DEBUG_UART_CLOCK=250000000 CONFIG_IDENT_STRING="\nZyXEL NSA310S/320S 1/2-Bay Power Media Server" CONFIG_SYS_LOAD_ADDR=0x800000 +CONFIG_DEBUG_UART=y CONFIG_DISTRO_DEFAULTS=y CONFIG_BOOTDELAY=3 CONFIG_USE_PREBOOT=y @@ -50,6 +53,7 @@ CONFIG_MTD_RAW_NAND=y CONFIG_PHY_MARVELL=y CONFIG_MVGBE=y CONFIG_MII=y +CONFIG_DEBUG_UART_ANNOUNCE=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_UBIFS_SILENCE_MSG=y diff --git a/arch/arm/dts/kirkwood-nsa310s.dts b/arch/arm/dts/kirkwood-nsa310s.dts index 09ee76c2a2..2df45aa6da 100644 --- a/arch/arm/dts/kirkwood-nsa310s.dts +++ b/arch/arm/dts/kirkwood-nsa310s.dts @@ -22,6 +22,10 @@ reg = <0x00000000 0x10000000>; }; + aliases { + serial0 = &uart0; + }; + chosen { bootargs = "console=ttyS0,115200"; stdout-path = &uart0; @@ -317,3 +321,8 @@ &pcie0 { status = "okay"; }; + +&uart0 { + status = "okay"; + u-boot,dm-pre-reloc; +}; If anybody is available to test this patch with Debug UART enabled, it would be great. I'll wait a few days and if there is no suggestion, I would do a bisect from Dec 19th. Thanks, Tony > --- > arch/arm/mach-kirkwood/Kconfig | 2 ++ > arch/arm/mach-kirkwood/Makefile | 1 + > arch/arm/mach-kirkwood/cpu.c | 3 --- > arch/arm/mach-kirkwood/lowlevel.S | 12 ++++++++++++ > 4 files changed, 15 insertions(+), 3 deletions(-) > create mode 100644 arch/arm/mach-kirkwood/lowlevel.S > > diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig > index c8a193dd4cdf..ba39e9ae416e 100644 > --- a/arch/arm/mach-kirkwood/Kconfig > +++ b/arch/arm/mach-kirkwood/Kconfig > @@ -5,9 +5,11 @@ config FEROCEON_88FR131 > > config KW88F6192 > bool > + select ARCH_VERY_EARLY_INIT > > config KW88F6281 > bool > + select ARCH_VERY_EARLY_INIT > > config SHEEVA_88SV131 > bool > diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile > index 3b2eef8d5419..0fb5a2326f5f 100644 > --- a/arch/arm/mach-kirkwood/Makefile > +++ b/arch/arm/mach-kirkwood/Makefile > @@ -6,6 +6,7 @@ > > obj-y = cpu.o > obj-y += cache.o > +obj-y += lowlevel.o > obj-y += mpp.o > > # cpu.o and cache.o contain CP15 instructions which cannot be run in > diff --git a/arch/arm/mach-kirkwood/cpu.c b/arch/arm/mach-kirkwood/cpu.c > index df3e8f11782a..2b493b36c20d 100644 > --- a/arch/arm/mach-kirkwood/cpu.c > +++ b/arch/arm/mach-kirkwood/cpu.c > @@ -189,9 +189,6 @@ int arch_cpu_init(void) > struct kwcpu_registers *cpureg = > (struct kwcpu_registers *)KW_CPU_REG_BASE; > > - /* Linux expects the internal registers to be at 0xf1000000 */ > - writel(KW_REGS_PHY_BASE, KW_OFFSET_REG); > - > /* Enable and invalidate L2 cache in write through mode */ > writel(readl(&cpureg->l2_cfg) | 0x18, &cpureg->l2_cfg); > invalidate_l2_cache(); > diff --git a/arch/arm/mach-kirkwood/lowlevel.S > b/arch/arm/mach-kirkwood/lowlevel.S > new file mode 100644 > index 000000000000..3b339f97f056 > --- /dev/null > +++ b/arch/arm/mach-kirkwood/lowlevel.S > @@ -0,0 +1,12 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > + > +#include <config.h> > +#include <linux/linkage.h> > + > +ENTRY(arch_very_early_init) > + /* Move internal registers from KW_OFFSET_REG to KW_REGS_PHY_BASE */ > + ldr r0, =KW_REGS_PHY_BASE > + ldr r1, =KW_OFFSET_REG > + str r0, [r1] > + bx lr > +ENDPROC(arch_very_early_init) > -- > 2.20.1 >

