On 08/09/2025 18:53, Ferass El Hafidi wrote:
On Mon Sep 8, 2025 at 8:24 AM UTC, Neil Armstrong via groups.io wrote:
On 07/09/2025 16:36, Ferass El Hafidi wrote:
Add initial boilerplate for U-Boot SPL support on Amlogic.

Signed-off-by: Ferass El Hafidi <[email protected]>
---
   arch/arm/include/asm/arch-meson/clock-gx.h |   1 +
   arch/arm/include/asm/arch-meson/gx.h       |  36 ++++
   arch/arm/mach-meson/Kconfig                |  42 ++++-
   arch/arm/mach-meson/Makefile               |   5 +
   arch/arm/mach-meson/board-common.c         |  11 ++
   arch/arm/mach-meson/spl-gx.c               | 278 
+++++++++++++++++++++++++++++
   arch/arm/mach-meson/spl.c                  | 123 +++++++++++++
   7 files changed, 495 insertions(+), 1 deletion(-)

<...>
diff --git a/arch/arm/mach-meson/spl-gx.c b/arch/arm/mach-meson/spl-gx.c
new file mode 100644
index 
0000000000000000000000000000000000000000..65b301bc9ed89b7ca2156b7fa672ed4ef3f8633b
--- /dev/null
+++ b/arch/arm/mach-meson/spl-gx.c
@@ -0,0 +1,278 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Portions Copyright (C) 2015, Amlogic, Inc. All rights reserved.
+ * Copyright (C) 2023, Ferass El Hafidi <[email protected]>
+ */
+#include <hang.h>
+#include <image.h>
+#include <spl.h>
+#include <vsprintf.h>
+#include <asm/io.h>
+#include <asm/arch/boot.h>
+#include <asm/arch/clock-gx.h>
+#include <asm/arch/gx.h>
+#include <linux/delay.h>
+
+/* Meson GX SPL code */
+
+#if CONFIG_IS_ENABLED(FIT_IMAGE_POST_PROCESS)
+#if defined(CONFIG_MESON_GXBB)

I think you should indicate why it's only needed for GXBB


Sure!  I will also explain here to clarify.
Basically this is sending the SCP firmware (aka. bl30/bl301) to the SCP.
Historically (in GXBB) this was done by bl2.bin, but (to save space?) it
was moved to BL31 in GXL:

- 
https://git.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/master/plat/amlogic/gxl/gxl_bl31_setup.c#129

and BL2 would give image info for bl30/bl301 to BL31.  I patched this
upstream so we don't have to do that in SPL:

- 
https://git.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/master/plat/amlogic/gxl/gxl_bl31_setup.c#105

Whether we can move SCP fw loading to BL31 on GXBB is .. an interesting
thing that could be considered.  That way we could possibly also save
some space in U-Boot SPL.


Would be nice, but keep it as-is for now!

+void meson_power_init(void)
+{
+       /* TODO: Support more voltages */
+
+       /* Init PWM B */
+       clrsetbits_32(GX_PWM_MISC_REG_AB, 0x7f << 16, (1 << 23) | (1 << 1));
+
+       /* Set voltage */
+       if (CONFIG_IS_ENABLED(MESON_GX_VCCK_1120MV))
+               writel(0x02001a, GX_PWM_PWM_B);
+       else if (CONFIG_IS_ENABLED(MESON_GX_VCCK_1100MV))
+               writel(0x040018, GX_PWM_PWM_B);
+       else if (CONFIG_IS_ENABLED(MESON_GX_VCCK_1000MV))
+               writel(0x0e000e, GX_PWM_PWM_B);
+
+       if (IS_ENABLED(CONFIG_MESON_GXBB)) {
+               clrbits_32(GX_PIN_MUX_REG7, 1 << 22);
+               clrsetbits_32(GX_PIN_MUX_REG3, 1 << 22, 1 << 21);
+       } else {
+               clrbits_32(GX_PIN_MUX_REG1, 1 << 10);
+               clrsetbits_32(GX_PIN_MUX_REG2, 1 << 5, 1 << 11);
+       }
+
+       /* Init PWM D */
+       clrsetbits_32(GX_PWM_MISC_REG_CD, 0x7f << 16, (1 << 23) | (1 << 1));
+
+       /* Set voltage */
+       if (CONFIG_IS_ENABLED(MESON_GX_VDDEE_1100MV))
+               writel(0x040018, GX_PWM_PWM_B);
+       else if (CONFIG_IS_ENABLED(MESON_GX_VDDEE_1000MV))
+               writel(0x0e000e, GX_PWM_PWM_B);
+
+       if (IS_ENABLED(CONFIG_MESON_GXBB)) {
+               clrbits_32(GX_PIN_MUX_REG7, 1 << 23);
+               setbits_32(GX_PIN_MUX_REG3, 1 << 20);
+       } else {
+               clrbits_32(GX_PIN_MUX_REG1, (1 << 9) | (1 << 11));
+               setbits_32(GX_PIN_MUX_REG2, 1 << 12);
+       }
+}

Seems much of the code is duplicated between GXBB and GXL, so I wonder if it 
would'nt
be cleaner to have spl-gxbb an spl-gxl ?


You mean separate power init functions (meson_power_init_gxbb/gxl)?  Should be 
doable.


I mean even separate files, it would avoid any #ifdef stuff

Neil


<...>

Anyway it's really clean !

Thanks!
Neil


Thank you!


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#2757): https://groups.io/g/u-boot-amlogic/message/2757
Mute This Topic: https://groups.io/mt/115113902/8399868
Group Owner: [email protected]
Unsubscribe: https://groups.io/g/u-boot-amlogic/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to