Re: [PATCH 1/9] arm64: meson: Add s4 SoC support

Neil Armstrong <[email protected]>
Newsgroups org.u-boot-project.lists.u-boot,io.groups.u-boot-amlogic
Organization Linaro
Message-ID <[email protected]>
On 8/17/26 19:15, Sean Anderson wrote:
> Add support for amlogic s4 (S805X2/S905W2/S905Y4) SoCs. These are very
> similar to other recent SoCs, with the exception of a workaround for
> some BL2 (mis)behavior.
> 
> Signed-off-by: Sean Anderson <[email protected]>
> ---
> 
>   arch/arm/include/asm/arch-meson/boot0.h | 14 +++++++
>   arch/arm/mach-meson/Kconfig             |  7 ++++
>   arch/arm/mach-meson/Makefile            |  1 +
>   arch/arm/mach-meson/board-s4.c          | 50 +++++++++++++++++++++++++
>   4 files changed, 72 insertions(+)
>   create mode 100644 arch/arm/include/asm/arch-meson/boot0.h
>   create mode 100644 arch/arm/mach-meson/board-s4.c
> 
> diff --git a/arch/arm/include/asm/arch-meson/boot0.h b/arch/arm/include/asm/arch-meson/boot0.h
> new file mode 100644
> index 00000000000..7338171be15
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-meson/boot0.h
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright (C) 2026 Brivo Systems LLC
> + */
> +b reset
> +#if IS_ENABLED(CONFIG_MESON_S4)
> +/*
> + * BL2 copies some keys to the start of DRAM, clobbering anything in the first
> + * 2k aside from the initial instruction. I measured the actual data clobbered
> + * as 1076 bytes, but I suspect the amount depends on the configuration, so
> + * just go with what amlogic does.
> + */
> +.skip 2048
> +#endif

How different is this boot0 with the one posted for T7 at [1] ?

https://lore.kernel.org/all/[email protected]/

> diff --git a/arch/arm/mach-meson/Kconfig b/arch/arm/mach-meson/Kconfig
> index c687ef822a2..91d1e8342e0 100644
> --- a/arch/arm/mach-meson/Kconfig
> +++ b/arch/arm/mach-meson/Kconfig
> @@ -67,6 +67,13 @@ config MESON_A1
>   	help
>   	  Select this if your SoC is an A113L
>   
> +config MESON_S4
> +	bool "S4"
> +	select MESON64_COMMON
> +	select ENABLE_ARM_SOC_BOOT0_HOOK
> +	help
> +	  Select this if your SoC is an S905Y4/S905W2/S805X2
> +
>   endchoice
>   
>   config SYS_SOC
> diff --git a/arch/arm/mach-meson/Makefile b/arch/arm/mach-meson/Makefile
> index 08a24d4b24f..2157c35c2d5 100644
> --- a/arch/arm/mach-meson/Makefile
> +++ b/arch/arm/mach-meson/Makefile
> @@ -17,3 +17,4 @@ endif
>   obj-$(CONFIG_MESON_AXG) += board-axg.o
>   obj-$(CONFIG_MESON_G12A) += board-g12a.o
>   obj-$(CONFIG_MESON_A1) += board-a1.o
> +obj-$(CONFIG_MESON_S4) += board-s4.o
> diff --git a/arch/arm/mach-meson/board-s4.c b/arch/arm/mach-meson/board-s4.c
> new file mode 100644
> index 00000000000..7d0bea9924f
> --- /dev/null
> +++ b/arch/arm/mach-meson/board-s4.c
> @@ -0,0 +1,50 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2023 SberDevices, Inc.
> + */
> +
> +#include <asm/armv8/mmu.h>
> +#include <asm/io.h>
> +#include <linux/compiler.h>
> +#include <linux/errno.h>
> +
> +void meson_init_reserved_memory(__maybe_unused void *fdt)
> +{
> +}

No reserved memory at all on S4 ?

> +
> +int meson_get_boot_device(void)
> +{
> +	return -ENOSYS;
> +}
> +
> +static struct mm_region s4_mem_map[] = {
> +	{
> +		.virt = 0x00000000UL,
> +		.phys = 0x00000000UL,
> +		.size = 0x80000000UL,
> +		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
> +			PTE_BLOCK_INNER_SHARE
> +	}, {
> +		.virt = 0x80000000UL,
> +		.phys = 0x80000000UL,
> +		.size = 0x7FE00000UL,
> +		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
> +			PTE_BLOCK_NON_SHARE |
> +			PTE_BLOCK_PXN | PTE_BLOCK_UXN
> +	}, {
> +		/*
> +		 * This mem region contains in/out shared memory with bl31,
> +		 * hence it's marked as NORMAL memory type
> +		 */
> +		.virt = 0xFFE00000UL,
> +		.phys = 0xFFE00000UL,
> +		.size = 0x00200000UL,
> +		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
> +			PTE_BLOCK_INNER_SHARE
> +	}, {
> +		/* List terminator */
> +		0,
> +	}
> +};
> +
> +struct mm_region *mem_map = s4_mem_map;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.