diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2022-03-04 09:39:04 +0100 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2022-03-11 08:02:30 +0100 |
commit | 0d45e1ea96ef29649f080c54f99fb1c80482421b (patch) | |
tree | d91126810da398affb0cc9e4e73ad2af769dfaf0 /package | |
parent | 25d1c85d1ad3bf48832634c6a37e981a4572a569 (diff) | |
download | upstream-0d45e1ea96ef29649f080c54f99fb1c80482421b.tar.gz upstream-0d45e1ea96ef29649f080c54f99fb1c80482421b.tar.bz2 upstream-0d45e1ea96ef29649f080c54f99fb1c80482421b.zip |
uboot-bcm4908: add package with BCM4908 U-Boot
New BCM4908 devices come with U-Boot instead of CFE. Firmwares for such
devices has to include U-Boot.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'package')
4 files changed, 181 insertions, 0 deletions
diff --git a/package/boot/uboot-bcm4908/Makefile b/package/boot/uboot-bcm4908/Makefile new file mode 100644 index 0000000000..489b4d69bf --- /dev/null +++ b/package/boot/uboot-bcm4908/Makefile @@ -0,0 +1,48 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_RELEASE:=$(AUTORELEASE) + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://git.openwrt.org/project/bcm63xx/u-boot.git +PKG_SOURCE_DATE:=2022-03-03 +PKG_SOURCE_VERSION:=92e9eca819c9c898d9d2010e1a217726c42c8c47 +PKG_MIRROR_HASH:=11c37fe4c18d55e799153600d1cfd8ee9ca7da8326d0024c1d825f4a327c5f0d + +include $(INCLUDE_DIR)/u-boot.mk +include $(INCLUDE_DIR)/package.mk + +define U-Boot/Default + BUILD_TARGET:=bcm4908 + UBOOT_IMAGE:=u-boot-nodtb.bin + DEFAULT:=y +endef + +define U-Boot/bcm4908 + NAME:=Broadcom's BCM4908 + UBOOT_CONFIG:=bcm94908 +endef + +UBOOT_TARGETS := \ + bcm4908 + +define Build/Prepare + $(call Build/Prepare/Default) + mkdir -p $(PKG_BUILD_DIR)/include/generated/ + ( cd $(PKG_BUILD_DIR)/board/broadcom/bcmbca/httpd/html/ && \ + xxd -i index.html > ../../../../../include/generated/index.h && \ + xxd -i flashing.html > ../../../../../include/generated/flashing.h && \ + xxd -i fail.html > ../../../../../include/generated/fail.h && \ + xxd -i 404.html > ../../../../../include/generated/404.h ) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR_IMAGE)/u-boot + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/u-boot/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/u-boot.dtb $(STAGING_DIR_IMAGE)/u-boot/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/arch/arm/dts/*.dtb $(STAGING_DIR_IMAGE)/u-boot/ +endef + +$(eval $(call BuildPackage/U-Boot)) diff --git a/package/boot/uboot-bcm4908/patches/100-check-config-allow-to-complete-build-even-with-ad-ho.patch b/package/boot/uboot-bcm4908/patches/100-check-config-allow-to-complete-build-even-with-ad-ho.patch new file mode 100644 index 0000000000..44aa4c17e6 --- /dev/null +++ b/package/boot/uboot-bcm4908/patches/100-check-config-allow-to-complete-build-even-with-ad-ho.patch @@ -0,0 +1,40 @@ +From: Masahiro Yamada <yamada.masahiro@socionext.com> +Date: Mon, 26 Sep 2016 13:05:02 +0900 +Subject: [PATCH] check-config: allow to complete build even with ad-hoc CONFIG + options + +Currently, the check-config.sh terminates the build when unknown +ad-hoc options are detected. I think it is too much because we may +want to patch config headers locally in a build/deployment project. + +So, let's relax check-config.sh to just warn even if it detects +options that are not in the whitelist. Instead, this check can be +done at the end of build, along with other checks. It will catch +more attention. + +Even with this change, the Buildman tool catches new warnings, +so Tom can give NACK to new ad-hoc options. + +Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> +--- + scripts/check-config.sh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/scripts/check-config.sh ++++ b/scripts/check-config.sh +@@ -50,14 +50,13 @@ cat `find ${srctree} -name "Kconfig*"` |sed -n \ + |sort |uniq > ${ok} + comm -23 ${suspects} ${ok} >${new_adhoc} + if [ -s ${new_adhoc} ]; then +- echo >&2 "Error: You must add new CONFIG options using Kconfig" ++ echo >&2 "Warning: You must add new CONFIG options using Kconfig" + echo >&2 "The following new ad-hoc CONFIG options were detected:" + cat >&2 ${new_adhoc} + echo >&2 + echo >&2 "Please add these via Kconfig instead. Find a suitable Kconfig" + echo >&2 "file and add a 'config' or 'menuconfig' option." + # Don't delete the temporary files in case they are useful +- exit 1 + else + rm ${suspects} ${ok} ${new_adhoc} + fi diff --git a/package/boot/uboot-bcm4908/patches/200-configs-bcm94908-unset-CONFIG_SPL.patch b/package/boot/uboot-bcm4908/patches/200-configs-bcm94908-unset-CONFIG_SPL.patch new file mode 100644 index 0000000000..26189bc571 --- /dev/null +++ b/package/boot/uboot-bcm4908/patches/200-configs-bcm94908-unset-CONFIG_SPL.patch @@ -0,0 +1,38 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> +Date: Fri, 4 Mar 2022 09:21:32 +0100 +Subject: [PATCH] configs: bcm94908: unset CONFIG_SPL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Compiling SPL is always tricky as it needs to fit limited resources. +Fortunately in most cases there is no need to replace SPL or TPL while +flashing a new firmware. + +Compiling SPL for BCM4908 seems to fail with non-Broadcom toolchain: +aarch64-openwrt-linux-musl-ld.bfd: u-boot-spl section `.u_boot_list' will not fit in region `.sram' +aarch64-openwrt-linux-musl-ld.bfd: section .bss VMA [00000000822b9000,00000000822b93ef] overlaps section .u_boot_list VMA [00000000822b8f60,00000000822b9a87] +aarch64-openwrt-linux-musl-ld.bfd: region `.sram' overflowed by 2696 bytes + +It also requires hashtable.h which has to be generated using some +Broadcom's custom perl script that isn't integrated as this point. + +For now just disable SPL and use only last-stage U-Boot that must be +shipped with every firmware. + +Signed-off-by: Rafał Miłecki <rafal@milecki.pl> +--- + configs/bcm94908_defconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/configs/bcm94908_defconfig ++++ b/configs/bcm94908_defconfig +@@ -21,7 +21,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y + CONFIG_TPL_LIBCOMMON_SUPPORT=y + CONFIG_TPL_LIBGENERIC_SUPPORT=y + CONFIG_NR_DRAM_BANKS=1 +-CONFIG_SPL=y ++# CONFIG_SPL is not set + CONFIG_SPL_LIBDISK_SUPPORT=y + CONFIG_ENV_VARS_UBOOT_CONFIG=y + CONFIG_TPL_SYS_MALLOC_F_LEN=0x11000 diff --git a/package/boot/uboot-bcm4908/patches/201-Assume-TPL-support-for-ATF-when-compiling-U-Boot-wit.patch b/package/boot/uboot-bcm4908/patches/201-Assume-TPL-support-for-ATF-when-compiling-U-Boot-wit.patch new file mode 100644 index 0000000000..1e59705ac0 --- /dev/null +++ b/package/boot/uboot-bcm4908/patches/201-Assume-TPL-support-for-ATF-when-compiling-U-Boot-wit.patch @@ -0,0 +1,55 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> +Date: Fri, 4 Mar 2022 09:23:34 +0100 +Subject: [PATCH] Assume TPL support for ATF when compiling U-Boot without TPL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Broadcom's U-Boot behaviour depends on compilation time check whether +TPL was compiled with or without ATF support. There is no proper runtime +check. + +When compiling just U-Boot (without SPL & TPL) there is no way to tell +if it's going to work with TPL with or without ATF support. + +Modify code to blindly assume ATF support in TPL in such cases. It seems +to be always true for Broadcom and we need some assumption as we don't +deal with compiling SPL or TPL. + +Signed-off-by: Rafał Miłecki <rafal@milecki.pl> +--- + arch/arm/mach-bcmbca/bcm4908/cpu.c | 2 +- + board/broadcom/bcmbca/board.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +--- a/arch/arm/mach-bcmbca/bcm4908/cpu.c ++++ b/arch/arm/mach-bcmbca/bcm4908/cpu.c +@@ -138,7 +138,7 @@ int get_nr_cpus() + return nr_cpus; + } + +-#if !defined(CONFIG_TPL_ATF) ++#if defined(CONFIG_TPL) && !defined(CONFIG_TPL_ATF) + void boot_secondary_cpu(unsigned long vector) + { + uint32_t cpu, nr_cpus = QUAD_CPUS; +--- a/board/broadcom/bcmbca/board.c ++++ b/board/broadcom/bcmbca/board.c +@@ -103,7 +103,7 @@ void board_spinor_init(void) + + int board_init(void) + { +-#if !defined(CONFIG_TPL_ATF) ++#if defined(CONFIG_TPL) && !defined(CONFIG_TPL_ATF) + unsigned long vector; + #endif + board_sdk_init_e(); +@@ -121,7 +121,7 @@ int board_init(void) + printf("$Uboot: "BUILD_TAG" $\n"); + #endif + +-#if !defined(CONFIG_TPL_ATF) ++#if defined(CONFIG_TPL) && !defined(CONFIG_TPL_ATF) + #if defined(CONFIG_ARM64) + vector = (unsigned long)&_start; + #else |