diff --git a/packages/tools/u-boot/package.mk b/packages/tools/u-boot/package.mk index ef1a7382ce..4d12f09ae6 100644 --- a/packages/tools/u-boot/package.mk +++ b/packages/tools/u-boot/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="u-boot" -PKG_VERSION="2024.10" -PKG_SHA256="b28daf4ac17e43156363078bf510297584137f6df50fced9b12df34f61a92fb0" +PKG_VERSION="2025.01" +PKG_SHA256="cdef7d507c93f1bbd9f015ea9bc21fa074268481405501945abc6f854d5b686f" PKG_ARCH="arm aarch64" PKG_LICENSE="GPL" PKG_SITE="https://www.denx.de/wiki/U-Boot" diff --git a/packages/tools/u-boot/patches/0001-libfdt-Fix-build-with-swig-4-3.0.patch b/packages/tools/u-boot/patches/0001-libfdt-Fix-build-with-swig-4-3.0.patch deleted file mode 100644 index b5582d64c7..0000000000 --- a/packages/tools/u-boot/patches/0001-libfdt-Fix-build-with-swig-4-3.0.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 868c1409d2ec75b3d5b6c04eeac0ea3127893b66 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -Date: Sat, 26 Oct 2024 12:27:19 +0000 -Subject: [PATCH] libfdt: Fix build with swig 4.3.0 - -Call SWIG_AppendOutput instead of SWIG_Python_AppendOutput so that -is_void is handled within swig. - -Link: https://github.com/swig/swig/commit/cd39cf132c96a0887be07c826b80804d7677a701 - -Signed-off-by: Rudi Heitbaum ---- - scripts/dtc/pylibfdt/libfdt.i_shipped | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped -index 56cc5d48f4..e4659489a9 100644 ---- a/scripts/dtc/pylibfdt/libfdt.i_shipped -+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped -@@ -1037,7 +1037,7 @@ typedef uint32_t fdt32_t; - fdt_string(fdt1, fdt32_to_cpu($1->nameoff))); - buff = PyByteArray_FromStringAndSize( - (const char *)($1 + 1), fdt32_to_cpu($1->len)); -- resultobj = SWIG_Python_AppendOutput(resultobj, buff); -+ resultobj = SWIG_AppendOutput(resultobj, buff); - } - } - -@@ -1076,7 +1076,7 @@ typedef uint32_t fdt32_t; - - %typemap(argout) int *depth { - PyObject *val = Py_BuildValue("i", *arg$argnum); -- resultobj = SWIG_Python_AppendOutput(resultobj, val); -+ resultobj = SWIG_AppendOutput(resultobj, val); - } - - %apply int *depth { int *depth }; -@@ -1092,7 +1092,7 @@ typedef uint32_t fdt32_t; - if (PyTuple_GET_SIZE(resultobj) == 0) - resultobj = val; - else -- resultobj = SWIG_Python_AppendOutput(resultobj, val); -+ resultobj = SWIG_AppendOutput(resultobj, val); - } - } - --- -2.43.0 - diff --git a/projects/Amlogic/bootloader/mkimage b/projects/Amlogic/bootloader/mkimage index 612666c443..282600bd55 100644 --- a/projects/Amlogic/bootloader/mkimage +++ b/projects/Amlogic/bootloader/mkimage @@ -50,7 +50,7 @@ mkimage_extlinux_fdtdir(){ cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} - FDTDIR /amlogic/ + FDTDIR / APPEND boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} quiet ${EXTRA_CMDLINE} EOF mcopy -s -o "${LE_TMP}/extlinux" :: diff --git a/projects/Amlogic/patches/u-boot/u-boot-0001-LOCAL-configs-meson64-prevent-stdout-stderr-on-video.patch b/projects/Amlogic/patches/u-boot/u-boot-0001-LOCAL-configs-meson64-prevent-stdout-stderr-on-video.patch index 8812a26816..1fd28c687c 100644 --- a/projects/Amlogic/patches/u-boot/u-boot-0001-LOCAL-configs-meson64-prevent-stdout-stderr-on-video.patch +++ b/projects/Amlogic/patches/u-boot/u-boot-0001-LOCAL-configs-meson64-prevent-stdout-stderr-on-video.patch @@ -1,7 +1,7 @@ -From 3f8ffb82b65019d9ee227f15e6a1b8cc7552e448 Mon Sep 17 00:00:00 2001 +From 78eead46137ff5583414211fae5c983026310dda Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Fri, 13 Nov 2020 02:09:36 +0000 -Subject: [PATCH 01/12] LOCAL: configs: meson64: prevent stdout/stderr on +Subject: [PATCH 1/2] LOCAL: configs: meson64: prevent stdout/stderr on videoconsole Several devices have CONFIG_VIDEO enabled which causes stdout/stderr @@ -14,7 +14,7 @@ Signed-off-by: Christian Hewitt 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/configs/meson64.h b/include/configs/meson64.h -index ccb8ea2e716..8b6f8159e78 100644 +index f3275b37a51..72d3caa30be 100644 --- a/include/configs/meson64.h +++ b/include/configs/meson64.h @@ -28,7 +28,7 @@ diff --git a/projects/Amlogic/patches/u-boot/u-boot-0002-LOCAL-board-amlogic-odroid-n2-remove-amlogic-prefix-.patch b/projects/Amlogic/patches/u-boot/u-boot-0002-LOCAL-board-amlogic-odroid-n2-remove-amlogic-prefix-.patch deleted file mode 100644 index 756e4a2b08..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0002-LOCAL-board-amlogic-odroid-n2-remove-amlogic-prefix-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 5270aa7c201493773266854466708a8ffd1f0d74 Mon Sep 17 00:00:00 2001 -From: Christian Hewitt -Date: Tue, 3 Aug 2021 18:42:55 +0000 -Subject: [PATCH 02/12] LOCAL: board: amlogic: odroid-n2: remove /amlogic/ - prefix for dtb path - -Remove the /amlogic/ prefix to align with current LE dtb locations. - -Signed-off-by: Christian Hewitt ---- - board/amlogic/odroid-n2/odroid-n2.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c -index ae953d0e4ba..e98580631ec 100644 ---- a/board/amlogic/odroid-n2/odroid-n2.c -+++ b/board/amlogic/odroid-n2/odroid-n2.c -@@ -62,7 +62,7 @@ static void odroid_set_fdtfile(char *soc, char *variant) - { - char s[128]; - -- snprintf(s, sizeof(s), "amlogic/meson-%s-odroid-%s.dtb", soc, variant); -+ snprintf(s, sizeof(s), "meson-%s-odroid-%s.dtb", soc, variant); - env_set("fdtfile", s); - } - --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0012-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch b/projects/Amlogic/patches/u-boot/u-boot-0002-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch similarity index 90% rename from projects/Amlogic/patches/u-boot/u-boot-0012-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch rename to projects/Amlogic/patches/u-boot/u-boot-0002-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch index 22422870e0..f5c31646b7 100644 --- a/projects/Amlogic/patches/u-boot/u-boot-0012-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch +++ b/projects/Amlogic/patches/u-boot/u-boot-0002-TESTING-test-uart_ao_a_pins-bias-disable-on-Odroid-C.patch @@ -1,7 +1,7 @@ -From ea0cd07c6f4628f2ad5d283a3a634f0691e99ff7 Mon Sep 17 00:00:00 2001 +From 5778cfc64913abc8c80160bb709ec359362fc8ac Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Tue, 8 Oct 2024 06:48:13 +0000 -Subject: [PATCH 12/12] TESTING: test uart_ao_a_pins bias disable on Odroid C2 +Subject: [PATCH 2/2] TESTING: test uart_ao_a_pins bias disable on Odroid C2 and WeTek Hub This appears to resolve the reports of non-booting C2 boards. No feedback diff --git a/projects/Amlogic/patches/u-boot/u-boot-0003-FROMGIT-board-libretech-ac-move-board-support-into-d.patch b/projects/Amlogic/patches/u-boot/u-boot-0003-FROMGIT-board-libretech-ac-move-board-support-into-d.patch deleted file mode 100644 index 4d1a4d8de0..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0003-FROMGIT-board-libretech-ac-move-board-support-into-d.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 17b878fcccac17b59a8abfd7a72f36723bb3fd77 Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Tue, 17 Sep 2024 14:34:45 +0200 -Subject: [PATCH 03/12] FROMGIT: board: libretech-ac: move board support into - dedicated directory - -The libretech-ac aka aml-s805x-ac supports mainline U-boot -from a dedicated SPI flash, move the board support into -a dedicated vendor/board subdirectory in order to support -vendor specific customization. - -It also aligns with the vendor downstream changes. - -Link: https://lore.kernel.org/r/20240917-u-boot-topic-dynamic-uuid-v2-1-416e39c6e271@linaro.org -Signed-off-by: Neil Armstrong ---- - board/amlogic/p212/MAINTAINERS | 2 - - board/libre-computer/aml-s805x-ac/MAINTAINERS | 8 ++++ - board/libre-computer/aml-s805x-ac/Makefile | 6 +++ - .../aml-s805x-ac/aml-s805x-ac.c | 47 +++++++++++++++++++ - configs/libretech-ac_defconfig | 2 + - 5 files changed, 63 insertions(+), 2 deletions(-) - create mode 100644 board/libre-computer/aml-s805x-ac/MAINTAINERS - create mode 100644 board/libre-computer/aml-s805x-ac/Makefile - create mode 100644 board/libre-computer/aml-s805x-ac/aml-s805x-ac.c - -diff --git a/board/amlogic/p212/MAINTAINERS b/board/amlogic/p212/MAINTAINERS -index b2e3205fdf0..e73a4e52c1f 100644 ---- a/board/amlogic/p212/MAINTAINERS -+++ b/board/amlogic/p212/MAINTAINERS -@@ -5,11 +5,9 @@ L: u-boot-amlogic@groups.io - F: board/amlogic/p212/ - F: include/configs/p212.h - F: configs/khadas-vim_defconfig --F: configs/libretech-ac_defconfig - F: configs/libretech-cc_defconfig - F: configs/libretech-cc_v2_defconfig - F: configs/p212_defconfig - F: doc/board/amlogic/p212.rst --F: doc/board/amlogic/libretech-ac.rst - F: doc/board/amlogic/libretech-cc.rst - F: doc/board/amlogic/khadas-vim.rst -diff --git a/board/libre-computer/aml-s805x-ac/MAINTAINERS b/board/libre-computer/aml-s805x-ac/MAINTAINERS -new file mode 100644 -index 00000000000..7cbc08aeb6c ---- /dev/null -+++ b/board/libre-computer/aml-s805x-ac/MAINTAINERS -@@ -0,0 +1,8 @@ -+LIBRE-COMPUTER AML-S805X-AC -+M: Neil Armstrong -+S: Maintained -+L: u-boot-amlogic@groups.io -+F: board/amlogic/aml-s805x-ac/ -+F: include/configs/libretech-ac.h -+F: configs/libretech-ac_defconfig -+F: doc/board/amlogic/libretech-ac.rst -diff --git a/board/libre-computer/aml-s805x-ac/Makefile b/board/libre-computer/aml-s805x-ac/Makefile -new file mode 100644 -index 00000000000..b4367ea522b ---- /dev/null -+++ b/board/libre-computer/aml-s805x-ac/Makefile -@@ -0,0 +1,6 @@ -+# SPDX-License-Identifier: GPL-2.0+ -+# -+# (C) Copyright 2016 BayLibre, SAS -+# Author: Neil Armstrong -+ -+obj-y := aml-s805x-ac.o -diff --git a/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c b/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c -new file mode 100644 -index 00000000000..ae9834c0bf8 ---- /dev/null -+++ b/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c -@@ -0,0 +1,47 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2016 BayLibre, SAS -+ * Author: Neil Armstrong -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define EFUSE_SN_OFFSET 20 -+#define EFUSE_SN_SIZE 16 -+#define EFUSE_MAC_OFFSET 52 -+#define EFUSE_MAC_SIZE 6 -+ -+int misc_init_r(void) -+{ -+ u8 mac_addr[EFUSE_MAC_SIZE + 1]; -+ char serial[EFUSE_SN_SIZE + 1]; -+ ssize_t len; -+ -+ if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { -+ len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, -+ mac_addr, EFUSE_MAC_SIZE); -+ mac_addr[len] = '\0'; -+ if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) -+ eth_env_set_enetaddr("ethaddr", mac_addr); -+ else -+ meson_generate_serial_ethaddr(); -+ } -+ -+ if (!env_get("serial#")) { -+ len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, -+ EFUSE_SN_SIZE); -+ serial[len] = '\0'; -+ if (len == EFUSE_SN_SIZE) -+ env_set("serial#", serial); -+ } -+ -+ return 0; -+} -diff --git a/configs/libretech-ac_defconfig b/configs/libretech-ac_defconfig -index 6ad04570022..11d9795e05d 100644 ---- a/configs/libretech-ac_defconfig -+++ b/configs/libretech-ac_defconfig -@@ -1,5 +1,7 @@ - CONFIG_ARM=y - CONFIG_SYS_CONFIG_NAME="libretech-ac" -+CONFIG_SYS_VENDOR="libre-computer" -+CONFIG_SYS_BOARD="aml-s805x-ac" - CONFIG_ARCH_MESON=y - CONFIG_TEXT_BASE=0x01000000 - CONFIG_NR_DRAM_BANKS=1 --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0004-FROMGIT-board-libre-computer-aml-s805x-cc-Enable-cap.patch b/projects/Amlogic/patches/u-boot/u-boot-0004-FROMGIT-board-libre-computer-aml-s805x-cc-Enable-cap.patch deleted file mode 100644 index c7a8c689de..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0004-FROMGIT-board-libre-computer-aml-s805x-cc-Enable-cap.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 766b23d9252d70c2e193876c7cc8b5cca954cba7 Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Tue, 17 Sep 2024 14:34:46 +0200 -Subject: [PATCH 04/12] FROMGIT: board: libre-computer: aml-s805x-cc: Enable - capsule updates - -Since the aml-s805-cc works well using EFI, and now the capsule updates -backend has been merged, let's enable the missing configs and add -the required structures to support it. - -The GUID is dynamically generated for the board, to get it: -=> efidebug capsule esrt -======================================== -ESRT: fw_resource_count=1 -ESRT: fw_resource_count_max=1 -ESRT: fw_resource_version=1 -[entry 0]============================== -ESRT: fw_class=B8079027-9B2C-57D4-86AA-CC782ADA598C -ESRT: fw_type=unknown -ESRT: fw_version=0 -ESRT: lowest_supported_fw_version=0 -ESRT: capsule_flags=0 -ESRT: last_attempt_version=0 -ESRT: last_attempt_status=success -======================================== - -On the host (with the aml_encrypt_gxl result binary): -$ eficapsule --guid B8079027-9B2C-57D4-86AA-CC782ADA598C -i 1 u-boot.bin u-boot.cap - -On the board (from USB disk containing u-boot.cap at root): -=> load usb 0:1 $kernel_addr_r u-boot.cap -=> efidebug capsule update $kernel_addr_r - -The binary will then be flashed on the SPI. - -Reviewed-by: Ilias Apalodimas -Link: https://lore.kernel.org/r/20240917-u-boot-topic-dynamic-uuid-v2-2-416e39c6e271@linaro.org -Signed-off-by: Neil Armstrong ---- - .../aml-s805x-ac/aml-s805x-ac.c | 24 +++++++++++++++++++ - configs/libretech-ac_defconfig | 6 +++++ - 2 files changed, 30 insertions(+) - -diff --git a/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c b/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c -index ae9834c0bf8..94cf5b4361f 100644 ---- a/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c -+++ b/board/libre-computer/aml-s805x-ac/aml-s805x-ac.c -@@ -8,6 +8,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -19,6 +20,29 @@ - #define EFUSE_MAC_OFFSET 52 - #define EFUSE_MAC_SIZE 6 - -+struct efi_fw_image fw_images[] = { -+ { -+ .fw_name = u"AML_S805X_AC_BOOT", -+ .image_index = 1, -+ }, -+}; -+ -+struct efi_capsule_update_info update_info = { -+ .dfu_string = "sf 0:0=u-boot-bin raw 0 0x10000", -+ .num_images = ARRAY_SIZE(fw_images), -+ .images = fw_images, -+}; -+ -+#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) -+void set_dfu_alt_info(char *interface, char *devstr) -+{ -+ if (strcmp(interface, "ram") == 0) -+ env_set("dfu_alt_info", "fitimage ram 0x08080000 0x4000000"); -+ else if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) -+ env_set("dfu_alt_info", update_info.dfu_string); -+} -+#endif -+ - int misc_init_r(void) - { - u8 mac_addr[EFUSE_MAC_SIZE + 1]; -diff --git a/configs/libretech-ac_defconfig b/configs/libretech-ac_defconfig -index 11d9795e05d..7763a14f203 100644 ---- a/configs/libretech-ac_defconfig -+++ b/configs/libretech-ac_defconfig -@@ -35,6 +35,7 @@ CONFIG_SYS_MAXARGS=32 - # CONFIG_CMD_IMI is not set - CONFIG_CMD_ADC=y - CONFIG_CMD_DFU=y -+CONFIG_CMD_NVEDIT_EFI=y - CONFIG_CMD_GPIO=y - # CONFIG_CMD_LOADS is not set - CONFIG_CMD_MMC=y -@@ -42,6 +43,7 @@ CONFIG_CMD_SF_TEST=y - CONFIG_CMD_SPI=y - CONFIG_CMD_USB=y - CONFIG_CMD_USB_MASS_STORAGE=y -+CONFIG_CMD_EFIDEBUG=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_REGULATOR=y - CONFIG_OF_CONTROL=y -@@ -49,6 +51,8 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_SARADC_MESON=y - CONFIG_DFU_RAM=y -+CONFIG_DFU_SF=y -+CONFIG_SET_DFU_ALT_INFO=y - CONFIG_MMC_MESON_GX=y - CONFIG_MTD=y - CONFIG_DM_MTD=y -@@ -98,3 +102,5 @@ CONFIG_VIDEO_BMP_RLE8=y - CONFIG_BMP_16BPP=y - CONFIG_BMP_24BPP=y - CONFIG_BMP_32BPP=y -+CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y -+CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0005-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch b/projects/Amlogic/patches/u-boot/u-boot-0005-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch deleted file mode 100644 index ec0a35b190..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0005-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch +++ /dev/null @@ -1,337 +0,0 @@ -From b62cecc1151de8e1d5f694d03c00fff67ceee4ec Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Fri, 20 Sep 2024 15:33:33 +0200 -Subject: [PATCH 05/12] FROMGIT: ARM: meson: add support for Libre Computer - aml-a311d-cc - -Add support for the Libre Computer aml-a311d-cc "Alta" board: -https://libre.computer/products/aml-a311d-cc/ - -The Alta board has a Credit Card form factor, similar to the -the prvevious "Le Potato" card, but with the Amlogic A311D SoC, -MIPI DSI and CSI connectors. PoE header and a single USB2 Type-C -connector replacing the microUSB one for power and USB 2.0. - -The board has an embedded SPI NOR flash, and EFI Capsule support -is added. - -The GUID is dynamically generated for the board, to get it: -=> efidebug capsule esrt -======================================== -ESRT: fw_resource_count=1 -ESRT: fw_resource_count_max=1 -ESRT: fw_resource_version=1 -[entry 0]============================== -ESRT: fw_class=17E07D9D-4D91-53F4-8780-1D91F279C1A5 -ESRT: fw_type=unknown -ESRT: fw_version=0 -ESRT: lowest_supported_fw_version=0 -ESRT: capsule_flags=0 -ESRT: last_attempt_version=0 -ESRT: last_attempt_status=success -======================================== - -On the host (with the aml_encrypt_g12a result binary): -$ eficapsule --guid 17E07D9D-4D91-53F4-8780-1D91F279C1A5 -i 1 u-boot.bin u-boot.cap - -On the board (from USB disk containing u-boot.cap at root): -=> load usb 0:1 $kernel_addr_r u-boot.cap -=> efidebug capsule update $kernel_addr_r - -The binary will then be flashed on the SPI. - -Link: https://lore.kernel.org/r/20240920-u-boot-topic-libre-computer-solitude-alta-v1-1-8915b108840b@linaro.org -Signed-off-by: Neil Armstrong ---- - .../meson-g12b-a311d-libretech-cc-u-boot.dtsi | 15 +++ - board/libre-computer/aml-a311d-cc/MAINTAINERS | 7 ++ - board/libre-computer/aml-a311d-cc/Makefile | 6 + - .../aml-a311d-cc/aml-a311d-cc.c | 44 +++++++ - configs/aml-a311d-cc_defconfig | 108 ++++++++++++++++++ - doc/board/amlogic/aml-a311d-cc.rst | 46 ++++++++ - doc/board/amlogic/index.rst | 1 + - 7 files changed, 227 insertions(+) - create mode 100644 arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi - create mode 100644 board/libre-computer/aml-a311d-cc/MAINTAINERS - create mode 100644 board/libre-computer/aml-a311d-cc/Makefile - create mode 100644 board/libre-computer/aml-a311d-cc/aml-a311d-cc.c - create mode 100644 configs/aml-a311d-cc_defconfig - create mode 100644 doc/board/amlogic/aml-a311d-cc.rst - -diff --git a/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi b/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi -new file mode 100644 -index 00000000000..cbada739042 ---- /dev/null -+++ b/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi -@@ -0,0 +1,15 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2023 Neil Armstrong -+ */ -+ -+#include "meson-g12-common-u-boot.dtsi" -+ -+&sd_emmc_c { -+ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_4b_pins>; -+ bus-width = <4>; -+}; -+ -+&spifc { -+ status = "okay"; -+}; -diff --git a/board/libre-computer/aml-a311d-cc/MAINTAINERS b/board/libre-computer/aml-a311d-cc/MAINTAINERS -new file mode 100644 -index 00000000000..b4b77acd23b ---- /dev/null -+++ b/board/libre-computer/aml-a311d-cc/MAINTAINERS -@@ -0,0 +1,7 @@ -+LIBRE-COMPUTER AML-A311D-CC -+M: Neil Armstrong -+S: Maintained -+L: u-boot-amlogic@groups.io -+F: board/amlogic/aml-a311d-cc/ -+F: configs/aml-a311d-cc_defconfig -+F: doc/board/amlogic/aml-a311d-cc.rst -diff --git a/board/libre-computer/aml-a311d-cc/Makefile b/board/libre-computer/aml-a311d-cc/Makefile -new file mode 100644 -index 00000000000..461955def3a ---- /dev/null -+++ b/board/libre-computer/aml-a311d-cc/Makefile -@@ -0,0 +1,6 @@ -+# SPDX-License-Identifier: GPL-2.0+ -+# -+# (C) Copyright 2016 BayLibre, SAS -+# Author: Neil Armstrong -+ -+obj-y := aml-a311d-cc.o -diff --git a/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c b/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c -new file mode 100644 -index 00000000000..e45cfd5d8a3 ---- /dev/null -+++ b/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c -@@ -0,0 +1,44 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2016 BayLibre, SAS -+ * Author: Neil Armstrong -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+struct efi_fw_image fw_images[] = { -+ { -+ .fw_name = u"AML_A311D_CC_BOOT", -+ .image_index = 1, -+ }, -+}; -+ -+struct efi_capsule_update_info update_info = { -+ .dfu_string = "sf 0:0=u-boot-bin raw 0 0x10000", -+ .num_images = ARRAY_SIZE(fw_images), -+ .images = fw_images, -+}; -+ -+ -+#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) -+void set_dfu_alt_info(char *interface, char *devstr) -+{ -+ if (strcmp(interface, "ram") == 0) -+ env_set("dfu_alt_info", "fitimage ram 0x08080000 0x4000000"); -+ else if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) -+ env_set("dfu_alt_info", update_info.dfu_string); -+} -+#endif -+ -+int misc_init_r(void) -+{ -+ meson_generate_serial_ethaddr(); -+ -+ return 0; -+} -diff --git a/configs/aml-a311d-cc_defconfig b/configs/aml-a311d-cc_defconfig -new file mode 100644 -index 00000000000..c8e22200419 ---- /dev/null -+++ b/configs/aml-a311d-cc_defconfig -@@ -0,0 +1,108 @@ -+CONFIG_ARM=y -+CONFIG_SYS_VENDOR="libre-computer" -+CONFIG_SYS_BOARD="aml-a311d-cc" -+CONFIG_ARCH_MESON=y -+CONFIG_TEXT_BASE=0x01000000 -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20000000 -+CONFIG_ENV_SIZE=0x2000 -+CONFIG_ENV_OFFSET=0xFFFF0000 -+CONFIG_ENV_SECT_SIZE=0x10000 -+CONFIG_DM_GPIO=y -+CONFIG_DEFAULT_DEVICE_TREE="amlogic/meson-g12b-a311d-libretech-cc" -+CONFIG_OF_LIBFDT_OVERLAY=y -+CONFIG_DM_RESET=y -+CONFIG_MESON_G12A=y -+CONFIG_DEBUG_UART_BASE=0xff803000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_IDENT_STRING="aml-a311d-cc" -+CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_DEBUG_UART=y -+CONFIG_REMAKE_ELF=y -+CONFIG_FIT=y -+CONFIG_FIT_SIGNATURE=y -+CONFIG_FIT_VERBOSE=y -+CONFIG_LEGACY_IMAGE_FORMAT=y -+CONFIG_OF_BOARD_SETUP=y -+# CONFIG_DISPLAY_CPUINFO is not set -+CONFIG_MISC_INIT_R=y -+CONFIG_SYS_MAXARGS=32 -+# CONFIG_CMD_BDI is not set -+# CONFIG_CMD_IMI is not set -+CONFIG_CMD_DFU=y -+CONFIG_CMD_NVEDIT_EFI=y -+CONFIG_CMD_GPIO=y -+# CONFIG_CMD_LOADS is not set -+CONFIG_CMD_MMC=y -+CONFIG_CMD_SF_TEST=y -+CONFIG_CMD_SPI=y -+CONFIG_CMD_USB=y -+CONFIG_CMD_USB_MASS_STORAGE=y -+CONFIG_CMD_EFIDEBUG=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_REGULATOR=y -+CONFIG_OF_CONTROL=y -+CONFIG_ENV_IS_IN_SPI_FLASH=y -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_ADC=y -+CONFIG_SARADC_MESON=y -+CONFIG_BUTTON=y -+CONFIG_BUTTON_ADC=y -+CONFIG_DFU_RAM=y -+CONFIG_DFU_SF=y -+CONFIG_SET_DFU_ALT_INFO=y -+CONFIG_MMC_MESON_GX=y -+CONFIG_MTD=y -+CONFIG_DM_MTD=y -+CONFIG_DM_SPI_FLASH=y -+CONFIG_SPI_FLASH_GIGADEVICE=y -+CONFIG_SPI_FLASH_SPANSION=y -+CONFIG_PHY_REALTEK=y -+CONFIG_DM_MDIO=y -+CONFIG_DM_MDIO_MUX=y -+CONFIG_ETH_DESIGNWARE_MESON8B=y -+CONFIG_MDIO_MUX_MESON_G12A=y -+CONFIG_MESON_G12A_USB_PHY=y -+CONFIG_PINCTRL=y -+CONFIG_PINCTRL_MESON_G12A=y -+CONFIG_POWER_DOMAIN=y -+CONFIG_MESON_EE_POWER_DOMAIN=y -+CONFIG_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DEBUG_UART_ANNOUNCE=y -+CONFIG_DEBUG_UART_SKIP_INIT=y -+CONFIG_MESON_SERIAL=y -+CONFIG_SPI=y -+CONFIG_DM_SPI=y -+CONFIG_MESON_SPIFC=y -+CONFIG_SYSINFO=y -+CONFIG_SYSINFO_SMBIOS=y -+CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y -+CONFIG_USB_DWC3=y -+# CONFIG_USB_DWC3_GADGET is not set -+CONFIG_USB_DWC3_MESON_G12A=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_GADGET=y -+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e -+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada -+CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y -+CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_VIDEO=y -+# CONFIG_VIDEO_BPP8 is not set -+# CONFIG_VIDEO_BPP16 is not set -+CONFIG_SYS_WHITE_ON_BLACK=y -+CONFIG_VIDEO_MESON=y -+CONFIG_VIDEO_DT_SIMPLEFB=y -+CONFIG_SPLASH_SCREEN=y -+CONFIG_SPLASH_SCREEN_ALIGN=y -+CONFIG_VIDEO_BMP_RLE8=y -+CONFIG_BMP_16BPP=y -+CONFIG_BMP_24BPP=y -+CONFIG_BMP_32BPP=y -+CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y -+CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y -diff --git a/doc/board/amlogic/aml-a311d-cc.rst b/doc/board/amlogic/aml-a311d-cc.rst -new file mode 100644 -index 00000000000..25c1e01906a ---- /dev/null -+++ b/doc/board/amlogic/aml-a311d-cc.rst -@@ -0,0 +1,46 @@ -+.. SPDX-License-Identifier: GPL-2.0+ -+ -+U-Boot for Libre Computer AML-A311D-CC 'Alta' (A311D) -+===================================================== -+ -+AML-A311D-CC is a Single Board Computer manufactured by Libre Computer Technology with -+the following specifications: -+ -+ - Amlogic A311D Arm Cortex-A53 dual-core + Cortex-A73 quad-core SoC -+ - 2 or 4GB LPDDR4 SDRAM -+ - Gigabit Ethernet -+ - HDMI 2.1 display -+ - 40-pin GPIO header -+ - 4 x USB 3.0 Host, 1 x USB 2.0 Type-C -+ - eMMC 5.x SM Interface for Libre Computer Modules -+ - microSD -+ - Infrared receiver -+ -+Schematics are available on the manufacturer website. -+ -+U-Boot Compilation -+------------------ -+ -+.. code-block:: bash -+ -+ $ export CROSS_COMPILE=aarch64-none-elf- -+ $ make aml-a311d-cc_defconfig -+ $ make -+ -+U-Boot Signing with Pre-Built FIP repo -+-------------------------------------- -+ -+.. code-block:: bash -+ -+ $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 -+ $ cd amlogic-boot-fip -+ $ mkdir my-output-dir -+ $ ./build-fip.sh aml-a311d-cc /path/to/u-boot/u-boot.bin my-output-dir -+ -+Then write U-Boot to SD or eMMC with: -+ -+.. code-block:: bash -+ -+ $ DEV=/dev/boot_device -+ $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 -+ $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440 -diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst -index 46f44bf34ec..de91b21f977 100644 ---- a/doc/board/amlogic/index.rst -+++ b/doc/board/amlogic/index.rst -@@ -85,6 +85,7 @@ Board Documentation - .. toctree:: - :maxdepth: 1 - -+ aml-a311d-cc - bananapi-cm4io - bananapi-m2pro - bananapi-m2s --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0006-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch b/projects/Amlogic/patches/u-boot/u-boot-0006-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch deleted file mode 100644 index 240ac95d0b..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0006-FROMGIT-ARM-meson-add-support-for-Libre-Computer-aml.patch +++ /dev/null @@ -1,337 +0,0 @@ -From b2b6496c521a9299aec3e0114595a90894bd1ccd Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Fri, 20 Sep 2024 15:33:34 +0200 -Subject: [PATCH 06/12] FROMGIT: ARM: meson: add support for Libre Computer - aml-s905d3-cc - -Add support for the Libre Computer aml-s905d3-cc "Solitude" board: -https://libre.computer/products/aml-s905d3-cc/ - -The Solitude board has a Credit Card form factor, similar to the -the previous "Le Potato" card, but with the Amlogic A311D SoC, -MIPI DSI and CSI connectors. PoE header and a single USB2 Type-C -connector replacing the microUSB one for power and USB 2.0. - -The board has an embedded SPI NOR flash, and EFI Capsule support -is added. - -The GUID is dynamically generated for the board, to get it: -=> efidebug capsule esrt -======================================== -ESRT: fw_resource_count=1 -ESRT: fw_resource_count_max=1 -ESRT: fw_resource_version=1 -[entry 0]============================== -ESRT: fw_class=4302C3CB-2502-5EFE-87E0-894A8A322893 -ESRT: fw_type=unknown -ESRT: fw_version=0 -ESRT: lowest_supported_fw_version=0 -ESRT: capsule_flags=0 -ESRT: last_attempt_version=0 -ESRT: last_attempt_status=success -======================================== - -On the host (with the aml_encrypt_g12a result binary): -$ eficapsule --guid 4302C3CB-2502-5EFE-87E0-894A8A322893 -i 1 u-boot.bin u-boot.cap - -On the board (from USB disk containing u-boot.cap at root): -=> load usb 0:1 $kernel_addr_r u-boot.cap -=> efidebug capsule update $kernel_addr_r - -The binary will then be flashed on the SPI. - -Link: https://lore.kernel.org/r/20240920-u-boot-topic-libre-computer-solitude-alta-v1-2-8915b108840b@linaro.org -Signed-off-by: Neil Armstrong ---- - .../meson-sm1-s905d3-libretech-cc-u-boot.dtsi | 15 +++ - .../libre-computer/aml-s905d3-cc/MAINTAINERS | 7 ++ - board/libre-computer/aml-s905d3-cc/Makefile | 6 + - .../aml-s905d3-cc/aml-s905d3-cc.c | 44 +++++++ - configs/aml-s905d3-cc_defconfig | 108 ++++++++++++++++++ - doc/board/amlogic/aml-s905d3-cc.rst | 46 ++++++++ - doc/board/amlogic/index.rst | 1 + - 7 files changed, 227 insertions(+) - create mode 100644 arch/arm/dts/meson-sm1-s905d3-libretech-cc-u-boot.dtsi - create mode 100644 board/libre-computer/aml-s905d3-cc/MAINTAINERS - create mode 100644 board/libre-computer/aml-s905d3-cc/Makefile - create mode 100644 board/libre-computer/aml-s905d3-cc/aml-s905d3-cc.c - create mode 100644 configs/aml-s905d3-cc_defconfig - create mode 100644 doc/board/amlogic/aml-s905d3-cc.rst - -diff --git a/arch/arm/dts/meson-sm1-s905d3-libretech-cc-u-boot.dtsi b/arch/arm/dts/meson-sm1-s905d3-libretech-cc-u-boot.dtsi -new file mode 100644 -index 00000000000..1c4f019120f ---- /dev/null -+++ b/arch/arm/dts/meson-sm1-s905d3-libretech-cc-u-boot.dtsi -@@ -0,0 +1,15 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2023 Neil Armstrong -+ */ -+ -+#include "meson-g12-common-u-boot.dtsi" -+ -+&sd_emmc_c { -+ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_4b_pins>, <&emmc_ds_pins>; -+ bus-width = <4>; -+}; -+ -+&spifc { -+ status = "okay"; -+}; -diff --git a/board/libre-computer/aml-s905d3-cc/MAINTAINERS b/board/libre-computer/aml-s905d3-cc/MAINTAINERS -new file mode 100644 -index 00000000000..4b75c815c07 ---- /dev/null -+++ b/board/libre-computer/aml-s905d3-cc/MAINTAINERS -@@ -0,0 +1,7 @@ -+LIBRE-COMPUTER AML-S905D3-CC -+M: Neil Armstrong -+S: Maintained -+L: u-boot-amlogic@groups.io -+F: board/amlogic/aml-s905d3-cc/ -+F: configs/aml-s905d3-cc_defconfig -+F: doc/board/amlogic/aml-s905d3-cc.rst -diff --git a/board/libre-computer/aml-s905d3-cc/Makefile b/board/libre-computer/aml-s905d3-cc/Makefile -new file mode 100644 -index 00000000000..7d2c41e6436 ---- /dev/null -+++ b/board/libre-computer/aml-s905d3-cc/Makefile -@@ -0,0 +1,6 @@ -+# SPDX-License-Identifier: GPL-2.0+ -+# -+# (C) Copyright 2016 BayLibre, SAS -+# Author: Neil Armstrong -+ -+obj-y := aml-s905d3-cc.o -diff --git a/board/libre-computer/aml-s905d3-cc/aml-s905d3-cc.c b/board/libre-computer/aml-s905d3-cc/aml-s905d3-cc.c -new file mode 100644 -index 00000000000..f641db5a494 ---- /dev/null -+++ b/board/libre-computer/aml-s905d3-cc/aml-s905d3-cc.c -@@ -0,0 +1,44 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2016 BayLibre, SAS -+ * Author: Neil Armstrong -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+struct efi_fw_image fw_images[] = { -+ { -+ .fw_name = u"AML_S905D3_CC_BOOT", -+ .image_index = 1, -+ }, -+}; -+ -+struct efi_capsule_update_info update_info = { -+ .dfu_string = "sf 0:0=u-boot-bin raw 0 0x10000", -+ .num_images = ARRAY_SIZE(fw_images), -+ .images = fw_images, -+}; -+ -+ -+#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) -+void set_dfu_alt_info(char *interface, char *devstr) -+{ -+ if (strcmp(interface, "ram") == 0) -+ env_set("dfu_alt_info", "fitimage ram 0x08080000 0x4000000"); -+ else if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) -+ env_set("dfu_alt_info", update_info.dfu_string); -+} -+#endif -+ -+int misc_init_r(void) -+{ -+ meson_generate_serial_ethaddr(); -+ -+ return 0; -+} -diff --git a/configs/aml-s905d3-cc_defconfig b/configs/aml-s905d3-cc_defconfig -new file mode 100644 -index 00000000000..a6e5d584c0a ---- /dev/null -+++ b/configs/aml-s905d3-cc_defconfig -@@ -0,0 +1,108 @@ -+CONFIG_ARM=y -+CONFIG_SYS_VENDOR="libre-computer" -+CONFIG_SYS_BOARD="aml-s905d3-cc" -+CONFIG_ARCH_MESON=y -+CONFIG_TEXT_BASE=0x01000000 -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20000000 -+CONFIG_ENV_SIZE=0x2000 -+CONFIG_ENV_OFFSET=0xFFFF0000 -+CONFIG_ENV_SECT_SIZE=0x10000 -+CONFIG_DM_GPIO=y -+CONFIG_DEFAULT_DEVICE_TREE="amlogic/meson-sm1-s905d3-libretech-cc" -+CONFIG_OF_LIBFDT_OVERLAY=y -+CONFIG_DM_RESET=y -+CONFIG_MESON_G12A=y -+CONFIG_DEBUG_UART_BASE=0xff803000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_IDENT_STRING="aml-s905d3-cc" -+CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_DEBUG_UART=y -+CONFIG_REMAKE_ELF=y -+CONFIG_FIT=y -+CONFIG_FIT_SIGNATURE=y -+CONFIG_FIT_VERBOSE=y -+CONFIG_LEGACY_IMAGE_FORMAT=y -+CONFIG_OF_BOARD_SETUP=y -+# CONFIG_DISPLAY_CPUINFO is not set -+CONFIG_MISC_INIT_R=y -+CONFIG_SYS_MAXARGS=32 -+# CONFIG_CMD_BDI is not set -+# CONFIG_CMD_IMI is not set -+CONFIG_CMD_DFU=y -+CONFIG_CMD_NVEDIT_EFI=y -+CONFIG_CMD_GPIO=y -+# CONFIG_CMD_LOADS is not set -+CONFIG_CMD_MMC=y -+CONFIG_CMD_SF_TEST=y -+CONFIG_CMD_SPI=y -+CONFIG_CMD_USB=y -+CONFIG_CMD_USB_MASS_STORAGE=y -+CONFIG_CMD_EFIDEBUG=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_REGULATOR=y -+CONFIG_OF_CONTROL=y -+CONFIG_ENV_IS_IN_SPI_FLASH=y -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_ADC=y -+CONFIG_SARADC_MESON=y -+CONFIG_BUTTON=y -+CONFIG_BUTTON_ADC=y -+CONFIG_DFU_RAM=y -+CONFIG_DFU_SF=y -+CONFIG_SET_DFU_ALT_INFO=y -+CONFIG_MMC_MESON_GX=y -+CONFIG_MTD=y -+CONFIG_DM_MTD=y -+CONFIG_DM_SPI_FLASH=y -+CONFIG_SPI_FLASH_GIGADEVICE=y -+CONFIG_SPI_FLASH_SPANSION=y -+CONFIG_PHY_REALTEK=y -+CONFIG_DM_MDIO=y -+CONFIG_DM_MDIO_MUX=y -+CONFIG_ETH_DESIGNWARE_MESON8B=y -+CONFIG_MDIO_MUX_MESON_G12A=y -+CONFIG_MESON_G12A_USB_PHY=y -+CONFIG_PINCTRL=y -+CONFIG_PINCTRL_MESON_G12A=y -+CONFIG_POWER_DOMAIN=y -+CONFIG_MESON_EE_POWER_DOMAIN=y -+CONFIG_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DEBUG_UART_ANNOUNCE=y -+CONFIG_DEBUG_UART_SKIP_INIT=y -+CONFIG_MESON_SERIAL=y -+CONFIG_SPI=y -+CONFIG_DM_SPI=y -+CONFIG_MESON_SPIFC=y -+CONFIG_SYSINFO=y -+CONFIG_SYSINFO_SMBIOS=y -+CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y -+CONFIG_USB_DWC3=y -+# CONFIG_USB_DWC3_GADGET is not set -+CONFIG_USB_DWC3_MESON_G12A=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_GADGET=y -+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e -+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada -+CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y -+CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_VIDEO=y -+# CONFIG_VIDEO_BPP8 is not set -+# CONFIG_VIDEO_BPP16 is not set -+CONFIG_SYS_WHITE_ON_BLACK=y -+CONFIG_VIDEO_MESON=y -+CONFIG_VIDEO_DT_SIMPLEFB=y -+CONFIG_SPLASH_SCREEN=y -+CONFIG_SPLASH_SCREEN_ALIGN=y -+CONFIG_VIDEO_BMP_RLE8=y -+CONFIG_BMP_16BPP=y -+CONFIG_BMP_24BPP=y -+CONFIG_BMP_32BPP=y -+CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y -+CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y -diff --git a/doc/board/amlogic/aml-s905d3-cc.rst b/doc/board/amlogic/aml-s905d3-cc.rst -new file mode 100644 -index 00000000000..083a591fc52 ---- /dev/null -+++ b/doc/board/amlogic/aml-s905d3-cc.rst -@@ -0,0 +1,46 @@ -+.. SPDX-License-Identifier: GPL-2.0+ -+ -+U-Boot for Libre Computer AML-S905D3-CC 'Solitude' (S905D3) -+=========================================================== -+ -+AML-S905D3-CC is a Single Board Computer manufactured by Libre Computer Technology with -+the following specifications: -+ -+ - Amlogic S905D3 Cortex-A55 quad-core SoC -+ - 2 or 4GB LPDDR4 SDRAM -+ - Gigabit Ethernet -+ - HDMI 2.1 display -+ - 40-pin GPIO header -+ - 4 x USB 3.0 Host, 1 x USB 2.0 Type-C -+ - eMMC 5.x SM Interface for Libre Computer Modules -+ - microSD -+ - Infrared receiver -+ -+Schematics are available on the manufacturer website. -+ -+U-Boot Compilation -+------------------ -+ -+.. code-block:: bash -+ -+ $ export CROSS_COMPILE=aarch64-none-elf- -+ $ make aml-s905d3-cc_defconfig -+ $ make -+ -+U-Boot Signing with Pre-Built FIP repo -+-------------------------------------- -+ -+.. code-block:: bash -+ -+ $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 -+ $ cd amlogic-boot-fip -+ $ mkdir my-output-dir -+ $ ./build-fip.sh aml-s905d3-cc /path/to/u-boot/u-boot.bin my-output-dir -+ -+Then write U-Boot to SD or eMMC with: -+ -+.. code-block:: bash -+ -+ $ DEV=/dev/boot_device -+ $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 -+ $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440 -diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst -index de91b21f977..dcd935224ac 100644 ---- a/doc/board/amlogic/index.rst -+++ b/doc/board/amlogic/index.rst -@@ -86,6 +86,7 @@ Board Documentation - :maxdepth: 1 - - aml-a311d-cc -+ aml-s905d3-cc - bananapi-cm4io - bananapi-m2pro - bananapi-m2s --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0007-FROMGIT-dts-meson-g12-common-u-boot-do-not-disable-c.patch b/projects/Amlogic/patches/u-boot/u-boot-0007-FROMGIT-dts-meson-g12-common-u-boot-do-not-disable-c.patch deleted file mode 100644 index d8785f8797..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0007-FROMGIT-dts-meson-g12-common-u-boot-do-not-disable-c.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2089ed103a91fa226af44bd6c72a14e7066277aa Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Tue, 8 Oct 2024 18:23:42 +0200 -Subject: [PATCH 07/12] FROMGIT: dts: meson-g12-common-u-boot: do not disable - canvas - -We were disabling canvas, which causes meson vpu probe failure, -just stop and leave canvas alone. - -Fixes: ce9fa7bffc5 ("ARM: dts: meson-g12a: add U-Boot specific DT for graphics") -Signed-off-by: Neil Armstrong ---- - arch/arm/dts/meson-g12-common-u-boot.dtsi | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/arch/arm/dts/meson-g12-common-u-boot.dtsi b/arch/arm/dts/meson-g12-common-u-boot.dtsi -index 8070b62af5b..6629f3256a8 100644 ---- a/arch/arm/dts/meson-g12-common-u-boot.dtsi -+++ b/arch/arm/dts/meson-g12-common-u-boot.dtsi -@@ -17,10 +17,6 @@ - }; - }; - --&canvas { -- status = "disabled"; --}; -- - &vpu { - reg = <0x0 0xff900000 0x0 0x100000>, - <0x0 0xff63c000 0x0 0x1000>, --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0008-FROMGIT-video-meson-dw-hdmi-do-not-fail-probe-if-HDM.patch b/projects/Amlogic/patches/u-boot/u-boot-0008-FROMGIT-video-meson-dw-hdmi-do-not-fail-probe-if-HDM.patch deleted file mode 100644 index 5fbee18f84..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0008-FROMGIT-video-meson-dw-hdmi-do-not-fail-probe-if-HDM.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 3afcf6403a22a276be297d57ed1af9342510ea3b Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Wed, 9 Oct 2024 10:01:56 +0200 -Subject: [PATCH 08/12] FROMGIT: video: meson: dw-hdmi: do not fail probe if - HDMI regulator is already enabled - -If the regulator is already enabled, this happens if the regulator -is set in regulator-always-on, regulator_set_enable() return -EALREADY. - -Ignore the -EALREADY return since it's not an error. - -Suggested-by: Jonas Karlman -Signed-off-by: Neil Armstrong ---- - drivers/video/meson/meson_dw_hdmi.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/video/meson/meson_dw_hdmi.c b/drivers/video/meson/meson_dw_hdmi.c -index 587df7beb9b..1631dc38416 100644 ---- a/drivers/video/meson/meson_dw_hdmi.c -+++ b/drivers/video/meson/meson_dw_hdmi.c -@@ -418,8 +418,8 @@ static int meson_dw_hdmi_probe(struct udevice *dev) - } - - if (!ret) { -- ret = regulator_set_enable(supply, true); -- if (ret) -+ ret = regulator_set_enable_if_allowed(supply, true); -+ if (ret && ret != -ENOSYS) - return ret; - } - #endif --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0009-FROMGIT-clk-meson-gxbb-add-HDMI-clocks.patch b/projects/Amlogic/patches/u-boot/u-boot-0009-FROMGIT-clk-meson-gxbb-add-HDMI-clocks.patch deleted file mode 100644 index 578ee73ffa..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0009-FROMGIT-clk-meson-gxbb-add-HDMI-clocks.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 0af7ea971441f33a16e2b669a43c08878ec9615a Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Wed, 9 Oct 2024 11:15:20 +0200 -Subject: [PATCH 09/12] FROMGIT: clk: meson: gxbb: add HDMI clocks - -Align with g12a driver to handle the CLKID_HDMI, CLKID_HDMI_SEL -and CLKID_HDMI_DIV clocks since they were added to the upstream -GXBB/GXL Devicetree on v6.11 with [1] - -[1] https://lore.kernel.org/all/20240626152733.1350376-1-jbrunet@baylibre.com/ - -Signed-off-by: Neil Armstrong ---- - drivers/clk/meson/gxbb.c | 50 +++++++++++++++++++++++++++++++++++++++- - 1 file changed, 49 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c -index 72ad4fd0e85..51f124869c9 100644 ---- a/drivers/clk/meson/gxbb.c -+++ b/drivers/clk/meson/gxbb.c -@@ -66,6 +66,8 @@ - #define CLKID_VDEC_HEVC_SEL 154 - #define CLKID_VDEC_HEVC_DIV 155 - -+#define CLKID_XTAL 0x10000000 -+ - #define XTAL_RATE 24000000 - - struct meson_clk { -@@ -192,6 +194,7 @@ static struct meson_gate gates[] = { - MESON_GATE(CLKID_VAPB_0, HHI_VAPBCLK_CNTL, 8), - MESON_GATE(CLKID_VAPB_1, HHI_VAPBCLK_CNTL, 24), - MESON_GATE(CLKID_VAPB, HHI_VAPBCLK_CNTL, 30), -+ MESON_GATE(CLKID_HDMI, HHI_HDMI_CLK_CNTL, 8), - }; - - static int meson_set_gate_by_id(struct clk *clk, unsigned long id, bool on) -@@ -267,6 +270,12 @@ static struct parm meson_vapb_1_div_parm = { - - int meson_vapb_1_div_parent = CLKID_VAPB_1_SEL; - -+static struct parm meson_hdmi_div_parm = { -+ HHI_HDMI_CLK_CNTL, 0, 7, -+}; -+ -+int meson_hdmi_div_parent = CLKID_HDMI_SEL; -+ - static ulong meson_div_get_rate(struct clk *clk, unsigned long id) - { - struct meson_clk *priv = dev_get_priv(clk->dev); -@@ -292,6 +301,10 @@ static ulong meson_div_get_rate(struct clk *clk, unsigned long id) - parm = &meson_vapb_1_div_parm; - parent = meson_vapb_1_div_parent; - break; -+ case CLKID_HDMI_DIV: -+ parm = &meson_hdmi_div_parm; -+ parent = meson_hdmi_div_parent; -+ break; - default: - return -ENOENT; - } -@@ -347,6 +360,10 @@ static ulong meson_div_set_rate(struct clk *clk, unsigned long id, ulong rate, - parm = &meson_vapb_1_div_parm; - parent = meson_vapb_1_div_parent; - break; -+ case CLKID_HDMI_DIV: -+ parm = &meson_hdmi_div_parm; -+ parent = meson_hdmi_div_parent; -+ break; - default: - return -ENOENT; - } -@@ -443,6 +460,17 @@ static int meson_vapb_0_1_mux_parents[] = { - CLKID_FCLK_DIV7, - }; - -+static struct parm meson_hdmi_mux_parm = { -+ HHI_HDMI_CLK_CNTL, 9, 2, -+}; -+ -+static int meson_hdmi_mux_parents[] = { -+ CLKID_XTAL, -+ CLKID_FCLK_DIV4, -+ CLKID_FCLK_DIV3, -+ CLKID_FCLK_DIV5, -+}; -+ - static ulong meson_mux_get_parent(struct clk *clk, unsigned long id) - { - struct meson_clk *priv = dev_get_priv(clk->dev); -@@ -475,6 +503,10 @@ static ulong meson_mux_get_parent(struct clk *clk, unsigned long id) - parm = &meson_vapb_1_mux_parm; - parents = meson_vapb_0_1_mux_parents; - break; -+ case CLKID_HDMI_SEL: -+ parm = &meson_hdmi_mux_parm; -+ parents = meson_hdmi_mux_parents; -+ break; - default: - return -ENOENT; - } -@@ -532,6 +564,10 @@ static ulong meson_mux_set_parent(struct clk *clk, unsigned long id, - parm = &meson_vapb_1_mux_parm; - parents = meson_vapb_0_1_mux_parents; - break; -+ case CLKID_HDMI_SEL: -+ parm = &meson_hdmi_mux_parm; -+ parents = meson_hdmi_mux_parents; -+ break; - default: - /* Not a mux */ - return -ENOENT; -@@ -572,7 +608,7 @@ static unsigned long meson_clk81_get_rate(struct clk *clk) - unsigned long parent_rate; - uint reg; - int parents[] = { -- -1, -+ CLKID_XTAL, - -1, - CLKID_FCLK_DIV7, - CLKID_MPLL1, -@@ -727,6 +763,9 @@ static ulong meson_clk_get_rate_by_id(struct clk *clk, unsigned long id) - ulong rate; - - switch (id) { -+ case CLKID_XTAL: -+ rate = XTAL_RATE; -+ break; - case CLKID_FIXED_PLL: - case CLKID_SYS_PLL: - rate = meson_pll_get_rate(clk, id); -@@ -769,10 +808,14 @@ static ulong meson_clk_get_rate_by_id(struct clk *clk, unsigned long id) - case CLKID_VAPB_1: - rate = meson_div_get_rate(clk, CLKID_VAPB_1_DIV); - break; -+ case CLKID_HDMI: -+ rate = meson_div_get_rate(clk, CLKID_HDMI_DIV); -+ break; - case CLKID_VPU_0_DIV: - case CLKID_VPU_1_DIV: - case CLKID_VAPB_0_DIV: - case CLKID_VAPB_1_DIV: -+ case CLKID_HDMI_DIV: - rate = meson_div_get_rate(clk, id); - break; - case CLKID_VPU: -@@ -781,6 +824,7 @@ static ulong meson_clk_get_rate_by_id(struct clk *clk, unsigned long id) - case CLKID_VAPB_SEL: - case CLKID_VAPB_0_SEL: - case CLKID_VAPB_1_SEL: -+ case CLKID_HDMI_SEL: - rate = meson_mux_get_rate(clk, id); - break; - default: -@@ -851,7 +895,11 @@ static ulong meson_clk_set_rate_by_id(struct clk *clk, unsigned long id, - case CLKID_VPU_1_DIV: - case CLKID_VAPB_0_DIV: - case CLKID_VAPB_1_DIV: -+ case CLKID_HDMI_DIV: - return meson_div_set_rate(clk, id, rate, current_rate); -+ case CLKID_HDMI: -+ return meson_clk_set_rate_by_id(clk, CLKID_HDMI_DIV, -+ rate, current_rate); - default: - return -ENOENT; - } --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0010-FROMGIT-power-domain-meson-ee-pwrc-make-sure-to-not-.patch b/projects/Amlogic/patches/u-boot/u-boot-0010-FROMGIT-power-domain-meson-ee-pwrc-make-sure-to-not-.patch deleted file mode 100644 index dd8962b64d..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0010-FROMGIT-power-domain-meson-ee-pwrc-make-sure-to-not-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 1698107823f718396364641b24a2ee9ae5f3c862 Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Wed, 9 Oct 2024 11:15:21 +0200 -Subject: [PATCH 10/12] FROMGIT: power/domain: meson-ee-pwrc: make sure to not - enable a domain twice - -The upstream Device Tree for GXBB/GXL/G12A was updated with VPU domain -shared between the VPU and HDMI node, causing a double enable. - -Simply store the enable state and avoid enabling twice, fixing -HDMI output on all platforms. - -Signed-off-by: Neil Armstrong ---- - drivers/power/domain/meson-ee-pwrc.c | 15 +++++++++++++-- - 1 file changed, 13 insertions(+), 2 deletions(-) - -diff --git a/drivers/power/domain/meson-ee-pwrc.c b/drivers/power/domain/meson-ee-pwrc.c -index 20e9f32b381..4d9f3bba644 100644 ---- a/drivers/power/domain/meson-ee-pwrc.c -+++ b/drivers/power/domain/meson-ee-pwrc.c -@@ -60,6 +60,7 @@ struct meson_ee_pwrc_domain_desc { - unsigned int mem_pd_count; - struct meson_ee_pwrc_mem_domain *mem_pd; - bool (*get_power)(struct power_domain *power_domain); -+ bool enabled; - }; - - struct meson_ee_pwrc_domain_data { -@@ -306,6 +307,8 @@ static int meson_ee_pwrc_off(struct power_domain *power_domain) - clk_disable_bulk(&priv->clks); - } - -+ pwrc_domain->enabled = false; -+ - return 0; - } - -@@ -317,6 +320,9 @@ static int meson_ee_pwrc_on(struct power_domain *power_domain) - - pwrc_domain = &priv->data->domains[power_domain->id]; - -+ if (pwrc_domain->enabled) -+ return 0; -+ - if (pwrc_domain->top_pd) - regmap_update_bits(priv->regmap_ao, - pwrc_domain->top_pd->sleep_reg, -@@ -347,8 +353,13 @@ static int meson_ee_pwrc_on(struct power_domain *power_domain) - return ret; - } - -- if (pwrc_domain->clk_names_count) -- return clk_enable_bulk(&priv->clks); -+ if (pwrc_domain->clk_names_count) { -+ ret = clk_enable_bulk(&priv->clks); -+ if (ret) -+ return ret; -+ } -+ -+ pwrc_domain->enabled = true; - - return 0; - } --- -2.34.1 - diff --git a/projects/Amlogic/patches/u-boot/u-boot-0011-FROMGIT-configs-meson64-Ensure-commands-for-boot-tar.patch b/projects/Amlogic/patches/u-boot/u-boot-0011-FROMGIT-configs-meson64-Ensure-commands-for-boot-tar.patch deleted file mode 100644 index 29491b6cd1..0000000000 --- a/projects/Amlogic/patches/u-boot/u-boot-0011-FROMGIT-configs-meson64-Ensure-commands-for-boot-tar.patch +++ /dev/null @@ -1,79 +0,0 @@ -From b4ca194c66389e2d9f27d3346e93f856aff9120b Mon Sep 17 00:00:00 2001 -From: Callum Parsey -Date: Sat, 12 Oct 2024 08:03:51 +0000 -Subject: [PATCH 11/12] FROMGIT: configs: meson64: Ensure commands for boot - targets are available - -When populating BOOT_TARGET_DEVICES on Amlogic Meson platforms, verify -that the shell commands for accessing the relevant media have been -enabled in the build configuration. - -This was already being done for USB, NVME and SCSI devices, but not -for MMC devices or network boot. This meant that configuring U-Boot -without the networking or MMC subsystems/drivers would cause an error -to be thrown during preprocessing. - -Signed-off-by: Callum Parsey -Reviewed-by: Neil Armstrong -Link: https://lore.kernel.org/r/20241012080340.2596-1-callum@neoninteger.au -Signed-off-by: Neil Armstrong ---- - include/configs/meson64.h | 28 +++++++++++++++++++++++----- - 1 file changed, 23 insertions(+), 5 deletions(-) - -diff --git a/include/configs/meson64.h b/include/configs/meson64.h -index 8b6f8159e78..72d3caa30be 100644 ---- a/include/configs/meson64.h -+++ b/include/configs/meson64.h -@@ -77,6 +77,15 @@ - #define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance) - #endif - -+#ifdef CONFIG_CMD_MMC -+ #define BOOT_TARGET_MMC(func) \ -+ func(MMC, mmc, 0) \ -+ func(MMC, mmc, 1) \ -+ func(MMC, mmc, 2) -+#else -+ #define BOOT_TARGET_MMC(func) -+#endif -+ - #ifdef CONFIG_CMD_USB - #define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) - #else -@@ -95,18 +104,27 @@ - #define BOOT_TARGET_SCSI(func) - #endif - -+#if defined(CONFIG_CMD_DHCP) && defined(CONFIG_CMD_PXE) -+ #define BOOT_TARGET_PXE(func) func(PXE, pxe, na) -+ #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) -+#elif defined(CONFIG_CMD_DHCP) -+ #define BOOT_TARGET_PXE(func) -+ #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) -+#else -+ #define BOOT_TARGET_PXE(func) -+ #define BOOT_TARGET_DHCP(func) -+#endif -+ - #ifndef BOOT_TARGET_DEVICES - #define BOOT_TARGET_DEVICES(func) \ - func(ROMUSB, romusb, na) \ - func(USB_DFU, usbdfu, na) \ -- func(MMC, mmc, 0) \ -- func(MMC, mmc, 1) \ -- func(MMC, mmc, 2) \ -+ BOOT_TARGET_MMC(func) \ - BOOT_TARGET_DEVICES_USB(func) \ - BOOT_TARGET_NVME(func) \ - BOOT_TARGET_SCSI(func) \ -- func(PXE, pxe, na) \ -- func(DHCP, dhcp, na) -+ BOOT_TARGET_PXE(func) \ -+ BOOT_TARGET_DHCP(func) - #endif - - #define BOOTM_SIZE __stringify(0x1700000) --- -2.34.1 -