[PATCH RFC u-boot-mvebu] arm: kirkwood: Move internal registers in arch_very_early_init() function
Stefan Roese
sr at denx.de
Fri Mar 24 15:42:19 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>
Applied to u-boot-marvell/next
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