[PATCH RFC u-boot-mvebu] arm: kirkwood: Move internal registers in arch_very_early_init() function

Stefan Roese sr at denx.de
Thu Mar 16 10:04:44 CET 2023


On 3/11/23 11:57, Pali Rohár 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 <pali at kernel.org>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
> Hello! Please test this RFC patch on more Kirkwood boards if there is
> any issue with it.
> ---
>   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)

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list