--- /dev/null +++ b/sysutils/u-boot-nanopc-t4-friendlyelec/Makefile @@ -0,0 +1,270 @@ +# $FreeBS$ +# +# Someone with more ports clue can try to mangle this into the right +# u-boot-master settings. Meanwhile I am using c&p. +# + +M_FILESDIR= ${.CURDIR}/../u-boot-master/files/ +EXTRA_PATCHES?= ${M_FILESDIR} + +UBOOT_VERSION= 715e7a9 # 2017.09 +MODEL= nanopc-t4-friendlyelec +BOARD_CONFIG= nanopc-t4-rk3399_defconfig +FAMILY= rk3399 + + + +PORTNAME= uboot-rockchip +PORTVERSION= ${UBOOT_VERSION} +CATEGORIES= sysutils +PKGNAMESUFFIX?= -${MODEL} + +USE_GITHUB= yes +GH_ACCOUNT= friendlyarm +GH_PROJECT= rkbin:rkbin +GH_TAGNAME= friendlyelec:rkbin + + +MAINTAINER?= devnull@FreeBSD.org +COMMENT= Cross-build das u-boot for model ${MODEL} + +LICENSE= GPLv2 + +BUILD_DEPENDS+= gsed:textproc/gsed \ + swig:devel/swig \ + dtc>=1.4.1:sysutils/dtc \ + mkimage:sysutils/u-boot-tools \ + ${PYTHON_PKGNAMEPREFIX}setuptools-pkg>=0:devel/py-setuptools-pkg@${PY_FLAVOR} +BUILD_DEPENDS+= ${COMPILER}:devel/${COMPILER} + +USES= bison gmake python:3.7+,build shebangfix tar:bz2 +BINARY_ALIAS= bison=${LOCALBASE}/bin/bison dtc=${LOCALBASE}/bin/dtc sed=gsed python3=${PYTHON_CMD} + +SHEBANG_FILES= tools/binman/binman arch/arm/mach-rockchip/make_fit_atf.py +SSP_UNSAFE= yes +UBOOT_DIR= share/u-boot/${PORTNAME}${PKGNAMESUFFIX} +INST= ${PREFIX}/${UBOOT_DIR} +DESCR?= ${.CURDIR}/pkg-descr + +#MAKE_ARGS+= V=1 CROSS_COMPILE=${CROSS_COMPILE} PYTHON=${PYTHON_CMD} ${ARCHFLAGS} +MAKE_ARGS+= V=1 + +NO_ARCH= yes + +# Use upstreamed patches not yet mainlined +PATCH_DIST_STRIP= -p1 +PATCH_SITES+= https://patchwork.ozlabs.org/patch/ + +# Sanity checks +.if !defined(MODEL) && !defined(BOARD_CONFIG) && !defined(FAMILY) +MODEL= NONE +IGNORE= is a metaport; there is nothing to build +.else +.if !defined(MODEL) +IGNORE+= MODEL is not defined +.endif +.if !defined(BOARD_CONFIG) +IGNORE+= BOARD_CONFIG is not defined +.endif +.if !defined(FAMILY) +IGNORE+= FAMILY is not defined +.endif +.endif + +# Overrides for OMAP family +UBOOT_PLIST_OMAP=u-boot.img MLO +UBOOT_METADATA_OMAP_FILES= ${UBOOT_PLIST_OMAP} +UBOOT_METADATA_OMAP_METHOD= file + +# Overrides for ALLWINNER family +UBOOT_PLIST_ALLWINNER=u-boot-sunxi-with-spl.bin +UBOOT_METADATA_ALLWINNER_FILES= ${UBOOT_PLIST_ALLWINNER} +UBOOT_METADATA_ALLWINNER_METHOD= raw +UBOOT_METADATA_ALLWINNER_RAW_OFFSET= 8 +UBOOT_METADATA_ALLWINNER_RAW_BS= 1k + +# Overrides for ALLWINNER64 family +UBOOT_PLIST_ALLWINNER64=${UBOOT_PLIST_ALLWINNER} +UBOOT_ARCH_ALLWINNER64=aarch64 +UBOOT_METADATA_ALLWINNER64_FILES= ${UBOOT_PLIST_ALLWINNER64} +UBOOT_METADATA_ALLWINNER64_METHOD= raw +UBOOT_METADATA_ALLWINNER64_RAW_OFFSET= 1 +UBOOT_METADATA_ALLWINNER64_RAW_BS= 128k + +# Overrides for Zynq 7000 family +UBOOT_PLIST_ZYNQ_7000=u-boot.img boot.bin uEnv.txt +UBOOT_MOVE_ZYNQ_7000=${WRKSRC}/spl/boot.bin ${.CURDIR}/files/uEnv.txt + +# Overrides for RPI family +UBOOT_PLIST_RPI= u-boot.bin +UBOOT_METADATA_RPI_FILES= ${UBOOT_PLIST_RPI} +UBOOT_METADATA_RPI_METHOD= file + +# Overrides for IMX6 family +UBOOT_METADATA_IMX6_FILES= u-boot.imx +UBOOT_METADATA_IMX6_METHOD= raw +UBOOT_METADATA_IMX6_RAW_OFFSET= 2 +UBOOT_METADATA_IMX6_RAW_BS= 512 + +# Override for RK3328 family +UBOOT_PLIST_RK3328= idbloader.img u-boot.itb +UBOOT_ARCH_RK3328= aarch64 + +# Override for RK3399 family +.if defined(FAMILY) && ${FAMILY} == rk3399 && defined(MODEL) && ${MODEL} == nanopc-t4-friendlyelec +UBOOT_PLIST_RK3399= idbloader.img uboot.img trust.img +.else +UBOOT_PLIST_RK3399= idbloader.img u-boot.itb +.endif +UBOOT_ARCH_RK3399= aarch64 + +# Override for ARMADA38X family +UBOOT_PLIST_ARMADA38X= u-boot-spl.kwb +UBOOT_METADATA_ARMADA38X_FILES= ${UBOOT_PLIST_ARMADA38X} +UBOOT_METADATA_ARMADA38X_METHOD= raw +UBOOT_METADATA_ARMADA38X_RAW_OFFSET= 1 +UBOOT_METADATA_ARMADA38X_RAW_BS= 512 + +# Override for ARMADA8040 family +UBOOT_PLIST_ARMADA8040= u-boot.bin +UBOOT_ARCH_ARMADA8040= aarch64 + +# Override for QEMU family +UBOOT_PLIST_QEMU= u-boot.bin + +# Uboot variables +.if !defined(UBOOT_VERSION) && defined(UBOOT_VERSION_${FAMILY:tu}) +UBOOT_VERSION=${UBOOT_VERSION_${FAMILY:tu}} +.endif +UBOOT_VERSION?= 2021.04 + +# If a slave port defines a PORTREVISION use it +.if defined(U_BOOT_SLAVE_PORTREVISION_${UBOOT_VERSION}) +PORTREVISION= ${U_BOOT_SLAVE_PORTREVISION_${UBOOT_VERSION}} +.endif + +.if !defined(UBOOT_PLIST) && defined(UBOOT_PLIST_${FAMILY:tu}) +UBOOT_PLIST=${UBOOT_PLIST_${FAMILY:tu}} +.endif +UBOOT_PLIST?=u-boot.img + +.if !defined(UBOOT_ARCH) && defined(UBOOT_ARCH_${FAMILY:tu}) +UBOOT_ARCH=${UBOOT_ARCH_${FAMILY:tu}} +.endif +UBOOT_ARCH?= arm + +.if ${UBOOT_ARCH} == arm +CROSS_COMPILE=arm-none-eabi- +ARCHFLAGS=ARCH=${UBOOT_ARCH} +UBOOT_PLIST+= boot.scr +.elif ${UBOOT_ARCH} == aarch64 +CROSS_COMPILE=aarch64-none-elf- +ARCHFLAGS=ARCH=arm +.elif ${UBOOT_ARCH} == riscv64 +CROSS_COMPILE=riscv64-none-elf- +ARCHFLAGS=ARCH=riscv +.else +# Best guess for other architectures +CROSS_COMPILE=${UBOOT_ARCH}-none-elf- +ARCHFLAGS=ARCH=${UBOOT_ARCH} +.endif +COMPILER?=${CROSS_COMPILE}gcc + +.if !defined(UBOOT_MOVE) && defined(UBOOT_MOVE_${FAMILY:tu}) +UBOOT_MOVE=${UBOOT_MOVE_${FAMILY:tu}} +.endif + +# Per family dependancies +.if defined(FAMILY) && ${FAMILY} == allwinner64 +.if defined(SUBFAMILY) && ${SUBFAMILY} == h6 +BUILD_DEPENDS+= ${LOCALBASE}/share/atf-sun50i_h6/bl31.bin:sysutils/atf-sun50i_h6 +MAKE_ENV+= BL31=${LOCALBASE}/share/atf-sun50i_h6/bl31.bin +.else +BUILD_DEPENDS+= ${LOCALBASE}/share/atf-sun50i_a64/bl31.bin:sysutils/atf-sun50i_a64 +MAKE_ENV+= BL31=${LOCALBASE}/share/atf-sun50i_a64/bl31.bin +.endif +.endif + +.if defined(FAMILY) && ${FAMILY} == rk3328 +BUILD_DEPENDS+= ${LOCALBASE}/share/atf-rk3328/bl31.elf:sysutils/atf-rk3328 \ + ${PYTHON_PKGNAMEPREFIX}pyelftools>0:devel/py-pyelftools@${PY_FLAVOR} +MAKE_ENV+= BL31=${LOCALBASE}/share/atf-rk3328/bl31.elf +.endif + +.if defined(FAMILY) && ${FAMILY} == rk3399 && defined(MODEL) && ${MODEL} == nanopc-t4-friendlyelec +BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}pyelftools>0:devel/py-pyelftools@${PY_FLAVOR} +.elif defined(FAMILY) && ${FAMILY} == rk3399 +BUILD_DEPENDS+= ${LOCALBASE}/share/atf-rk3399/bl31.elf:sysutils/atf-rk3399 \ + ${PYTHON_PKGNAMEPREFIX}pyelftools>0:devel/py-pyelftools@${PY_FLAVOR} +MAKE_ENV+= BL31=${LOCALBASE}/share/atf-rk3399/bl31.elf +.endif + +# Each u-boot family has different files to include, bring them in. +.for i in ${UBOOT_PLIST} +PLIST_FILES+= ${UBOOT_DIR}/${i} +.endfor +PLIST_FILES+= ${UBOOT_DIR}/README + +.if defined(PLIST_EXTRAS) +.for i in ${PLIST_EXTRAS} +PLIST_FILES+= ${UBOOT_DIR}/${i} +.endfor +.endif + +.if !defined(NO_METADATA) +.if defined(UBOOT_METADATA_${FAMILY:tu}_METHOD) +METADATA_METHOD=${UBOOT_METADATA_${FAMILY:tu}_METHOD} +METADATA_FILES=${UBOOT_METADATA_${FAMILY:tu}_FILES} +PLIST_FILES+= ${UBOOT_DIR}/metadata +UBOOT_PLIST+= metadata +.if ${METADATA_METHOD} == "raw" +METADATA_OFFSET=${UBOOT_METADATA_${FAMILY:tu}_RAW_OFFSET} +METADATA_BS=${UBOOT_METADATA_${FAMILY:tu}_RAW_BS} +.elif ${METADATA_METHOD} == "file" +.else +.error "Unsupported METADATA_METHOD" +.endif +.endif +.endif + +post-extract: + mv -i ${WRKDIR}/rkbin-friendlyelec ${WRKDIR}/rkbin + +post-patch: + @${REINPLACE_CMD} -e "s|make|${MAKE_CMD}|" ${WRKSRC}/scripts/kconfig/merge_config.sh + ${CP} ${M_FILESDIR}/boot.cmd ${WRKSRC}/ +.if defined(METADATA_METHOD) + @echo "METHOD=uboot-${METADATA_METHOD}" > ${WRKSRC}/metadata + @echo "FILES=\"${METADATA_FILES}\"" >> ${WRKSRC}/metadata +.if ${METADATA_METHOD} == "raw" + @echo "OFFSET=${METADATA_OFFSET}" >> ${WRKSRC}/metadata + @echo "BS=${METADATA_BS}" >> ${WRKSRC}/metadata +.elif ${METADATA_METHOD} == "file" +.endif +.endif + +.if ${UBOOT_ARCH} == arm && !defined(CONFIG_FRAGMENT) +# For armv6/v7 we want CONFIG_API +# Use a KConfig fragment for that +FRAGMENT_NAME= FreeBSD_Fragment +CONFIG_FRAGMENT= ${M_FILESDIR}/${FRAGMENT_NAME} +.endif + +# +# And this is where I am too lazy to replicate the make.sh +# + +do-configure: + ${DO_NADA} + +ALL_TARGET= nanopi4 +DO_MAKE_BUILD= env -i PATH="${PATH}" ./make.sh + +do-install: + ${MKDIR} ${STAGEDIR}/${INST} +.for i in ${UBOOT_PLIST} + ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}/${INST} +.endfor + ${INSTALL_DATA} ${DESCR} ${STAGEDIR}/${INST}/README + +.include --- /dev/null +++ b/sysutils/u-boot-nanopc-t4-friendlyelec/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1621516662 +SHA256 (friendlyarm-uboot-rockchip-715e7a9_GH0.tar.gz) = d73633f4de1e502b17766a9bb6f0abe8a8d2804047c28f0b7efe715556fa3498 +SIZE (friendlyarm-uboot-rockchip-715e7a9_GH0.tar.gz) = 16481309 +SHA256 (friendlyarm-rkbin-friendlyelec_GH0.tar.gz) = fcfb1246537529f139572659ebf473b246c50f11e78257878b752356866d130a +SIZE (friendlyarm-rkbin-friendlyelec_GH0.tar.gz) = 12581814 --- /dev/null +++ b/sysutils/u-boot-nanopc-t4-friendlyelec/files/patch-build-t4.diff @@ -0,0 +1,764 @@ +diff -upr uboot-rockchip/Makefile uboot-rockchip.this-works-for-me/Makefile +--- Makefile.orig 2021-05-18 07:09:57.530309000 +0000 ++++ Makefile 2021-05-16 20:26:02.365328000 +0000 +@@ -251,7 +251,7 @@ export KCONFIG_CONFIG + + # SHELL used by kbuild + CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ +- else if [ -x /bin/bash ]; then echo /bin/bash; \ ++ else if [ -x /usr/local/bin/bash ]; then echo /usr/local/bin/bash; \ + else echo sh; fi ; fi) + + HOSTCC = cc +diff -upr uboot-rockchip/arch/arm/dts/Makefile uboot-rockchip.this-works-for-me/arch/arm/dts/Makefile +--- arch/arm/dts/Makefile.orig 2021-05-18 07:09:57.578863000 +0000 ++++ arch/arm/dts/Makefile 2021-05-16 20:49:21.649428000 +0000 +@@ -28,6 +28,14 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \ + exynos5422-odroidxu3.dtb + dtb-$(CONFIG_EXYNOS7420) += exynos7420-espresso7420.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += \ ++ rk3399-evb.dtb \ ++ rk3399-firefly.dtb \ ++ rk3399-puma-ddr1333.dtb \ ++ rk3399-puma-ddr1600.dtb \ ++ rk3399-puma-ddr1866.dtb \ ++ rk3399-nanopi4.dtb ++ ++disabled-FOO= \ + rk3036-sdk.dtb \ + rk3066a-mk808.dtb \ + rk3126-evb.dtb \ +@@ -52,12 +60,6 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \ + rk3368-sheep.dtb \ + rk3368-geekbox.dtb \ + rk3368-px5-evb.dtb \ +- rk3399-evb.dtb \ +- rk3399-firefly.dtb \ +- rk3399-puma-ddr1333.dtb \ +- rk3399-puma-ddr1600.dtb \ +- rk3399-puma-ddr1866.dtb \ +- rk3399-nanopi4.dtb \ + rv1108-evb.dtb + dtb-$(CONFIG_ARCH_MESON) += \ + meson-gxbb-odroidc2.dtb +diff -upr uboot-rockchip/arch/arm/mach-rockchip/boot_rkimg.c uboot-rockchip.this-works-for-me/arch/arm/mach-rockchip/boot_rkimg.c +--- arch/arm/mach-rockchip/boot_rkimg.c.orig 2021-05-18 07:09:57.870669000 +0000 ++++ arch/arm/mach-rockchip/boot_rkimg.c 2021-05-18 06:47:19.528484000 +0000 +@@ -446,8 +446,6 @@ static int rockchip_read_distro_dtb(void *fdt_addr) + char devnum_part[12]; + char fdt_hex_str[19]; + char *fs_argv[5]; +- int size; +- int ret; + + if (!rockchip_get_bootdev() || !fdt_addr) + return -ENODEV; +@@ -516,7 +514,7 @@ int rockchip_read_dtb_file(void *fdt_addr) + } + #endif + if (ret) { +- printf("Failed to load DTB\n"); ++ printf("Failed to load DTB: %d\n", ret); + return ret; + } + +diff -upr uboot-rockchip/arch/arm/mach-rockchip/fit.c uboot-rockchip.this-works-for-me/arch/arm/mach-rockchip/fit.c +--- arch/arm/mach-rockchip/fit.c.orig 2021-05-18 07:09:57.872486000 +0000 ++++ arch/arm/mach-rockchip/fit.c 2021-05-17 17:02:18.256666000 +0000 +@@ -437,7 +437,7 @@ int rockchip_read_fit_dtb(void *fdt_addr, char **hash, + + ret = part_get_info_by_name(dev_desc, part_name, &part); + if (ret < 0) { +- FIT_I("No %s partition\n", part_name); ++ FIT_I("No %s partition: %d\n", part_name, ret); + return ret; + } + +diff -upr uboot-rockchip/board/rockchip/nanopi4/board.c uboot-rockchip.this-works-for-me/board/rockchip/nanopi4/board.c +--- board/rockchip/nanopi4/board.c.orig 2021-05-18 07:09:58.412022000 +0000 ++++ board/rockchip/nanopi4/board.c 2021-05-17 15:02:44.338282000 +0000 +@@ -344,7 +344,12 @@ void set_dtb_name(void) + #endif + + snprintf(info, ARRAY_SIZE(info), ++#if 0 + "rk3399-nanopi4-rev%02x.dtb", get_board_rev()); ++#else ++ "rk3399-nanopc-t4.dtb"); ++ env_set("fdtfile", info); ++#endif + env_set("dtb_name", info); + } + +diff -upr uboot-rockchip/configs/nanopi4_defconfig uboot-rockchip.this-works-for-me/configs/nanopi4_defconfig +--- configs/nanopi4_defconfig.orig 2021-05-18 07:09:58.670987000 +0000 ++++ configs/nanopi4_defconfig 2021-05-18 06:51:25.139867000 +0000 +@@ -1,5 +1,8 @@ + CONFIG_ARM=y + CONFIG_ARCH_ROCKCHIP=y ++CONFIG_SMBIOS_MANUFACTURER="FriendlyElec" ++CONFIG_SMBIOS_PRODUCT_NAME="NanoPC-T4" ++CONFIG_SYS_CONFIG_NAME="nanopc-t4" + CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_SYS_MALLOC_F_LEN=0x4000 +@@ -11,11 +14,18 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3399-nanopi4" + CONFIG_DEBUG_UART=y + CONFIG_FIT=y + CONFIG_SPL_LOAD_FIT=y +-CONFIG_BOOTDELAY=1 +-CONFIG_SYS_CONSOLE_INFO_QUIET=y ++CONFIG_DISPLAY_BOARDINFO=y ++CONFIG_REVISION_TAG=y ++CONFIG_BOOTDELAY=3 ++#CONFIG_ROCKCHIP_FIT_IMAGE=y ++#CONFIG_ROCKCHIP_UIMAGE=y ++CONFIG_ROCKCHIP_EARLY_DISTRO_DTB=y ++CONFIG_ROCKCHIP_EARLY_DISTRO_DTB_PATH="/dtb/rockchip/rk3399-nanopc-t4.dtb" ++#CONFIG_ROCKCHIP_RESOURCE_IMAGE=y ++#CONFIG_SYS_CONSOLE_INFO_QUIET=y + # CONFIG_DISPLAY_CPUINFO is not set +-CONFIG_ANDROID_BOOTLOADER=y +-CONFIG_ANDROID_AVB=y ++CONFIG_ANDROID_BOOTLOADER=n ++CONFIG_ANDROID_AVB=n + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + # CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set + CONFIG_SPL_STACK_R=y +@@ -25,13 +35,14 @@ CONFIG_SPL_CRYPTO_SUPPORT=y + CONFIG_SPL_HASH_SUPPORT=y + CONFIG_SPL_ATF=y + CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y +-CONFIG_FASTBOOT_BUF_ADDR=0x00800800 +-CONFIG_FASTBOOT_BUF_SIZE=0x04000000 +-CONFIG_FASTBOOT_FLASH=y +-CONFIG_FASTBOOT_FLASH_MMC_DEV=0 ++CONFIG_ANDROID_BOOT_IMAGE=n ++#CONFIG_FASTBOOT_BUF_ADDR=0x00800800 ++#CONFIG_FASTBOOT_BUF_SIZE=0x04000000 ++#CONFIG_FASTBOOT_FLASH=y ++#CONFIG_FASTBOOT_FLASH_MMC_DEV=0 + CONFIG_CMD_BOOTZ=y + # CONFIG_CMD_BOOTEFI_HELLO_COMPILE is not set +-CONFIG_CMD_DTIMG=y ++#CONFIG_CMD_DTIMG=y + # CONFIG_CMD_ELF is not set + # CONFIG_CMD_IMI is not set + # CONFIG_CMD_IMLS is not set +@@ -43,7 +54,7 @@ CONFIG_CMD_DTIMG=y + CONFIG_CMD_GPT=y + # CONFIG_CMD_LOADB is not set + # CONFIG_CMD_LOADS is not set +-CONFIG_CMD_BOOT_ANDROID=y ++CONFIG_CMD_BOOT_ANDROID=n + CONFIG_CMD_BOOT_ROCKCHIP=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y +@@ -51,6 +62,13 @@ CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_ITEST is not set + # CONFIG_CMD_SETEXPR is not set + # CONFIG_CMD_MISC is not set ++CONFIG_CMD_SAVEENV=y ++CONFIG_ENV_IS_NOWHERE=n ++CONFIG_ENV_IS_IN_FAT=y ++#CONFIG_ENV_IS_IN_MMC=y ++CONFIG_ENV_FAT_INTERFACE="mmc" ++CONFIG_ENV_FAT_DEVICE_AND_PART="1:1" ++CONFIG_ENV_FAT_FILE="uboot.env" + # CONFIG_SPL_DOS_PARTITION is not set + # CONFIG_ISO_PARTITION is not set + CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 +@@ -58,6 +76,7 @@ CONFIG_RKPARM_PARTITION=y + CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_LIVE=y + CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_NET_RANDOM_ETHADDR=y + # CONFIG_NET_TFTP_VARS is not set + CONFIG_REGMAP=y + CONFIG_SPL_REGMAP=y +@@ -133,11 +152,11 @@ CONFIG_USE_TINY_PRINTF=y + CONFIG_LIB_RAND=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +-CONFIG_AVB_LIBAVB=y +-CONFIG_AVB_LIBAVB_AB=y +-CONFIG_AVB_LIBAVB_ATX=y +-CONFIG_AVB_LIBAVB_USER=y +-CONFIG_RK_AVB_LIBAVB_USER=y ++#CONFIG_AVB_LIBAVB=y ++#CONFIG_AVB_LIBAVB_AB=y ++#CONFIG_AVB_LIBAVB_ATX=y ++#CONFIG_AVB_LIBAVB_USER=y ++#CONFIG_RK_AVB_LIBAVB_USER=y + CONFIG_OPTEE_CLIENT=y + CONFIG_OPTEE_V1=y + CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y +diff -upr uboot-rockchip/include/config_distro_bootcmd.h uboot-rockchip.this-works-for-me/include/config_distro_bootcmd.h +--- include/config_distro_bootcmd.h.orig 2021-05-18 07:09:59.247560000 +0000 ++++ include/config_distro_bootcmd.h 2021-05-17 13:02:07.234804000 +0000 +@@ -124,7 +124,7 @@ + "load ${devtype} ${devnum}:${distro_bootpart} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + \ +- "efi_dtb_prefixes=/ /dtb/ /dtb/current/\0" \ ++ "efi_dtb_prefixes=/ /dtb/ /dtb/current/ /dtb/rockchip/\0" \ + "scan_dev_for_efi=" \ + "setenv efi_fdtfile ${fdtfile}; " \ + BOOTENV_EFI_SET_FDTFILE_FALLBACK \ +diff -upr uboot-rockchip/include/configs/nanopi4.h uboot-rockchip.this-works-for-me/include/configs/nanopi4.h +--- include/configs/nanopi4.h.orig 2021-05-18 07:09:59.309355000 +0000 ++++ include/configs/nanopi4.h 2021-05-17 15:46:05.780420000 +0000 +@@ -34,7 +34,7 @@ + + /* Monitor Command Prompt */ + #undef CONFIG_SYS_PROMPT +-#define CONFIG_SYS_PROMPT "nanopi4# " ++#define CONFIG_SYS_PROMPT "U-Boot# " + + /*--------------------------------------------------------------- + * ENV settings +diff -upr uboot-rockchip/include/configs/rk3399_common.h uboot-rockchip.this-works-for-me/include/configs/rk3399_common.h +--- include/configs/rk3399_common.h.orig 2021-05-18 07:09:59.322891000 +0000 ++++ include/configs/rk3399_common.h 2021-05-17 16:34:08.190665000 +0000 +@@ -61,8 +61,12 @@ + "kernel_addr_r=0x00280000\0" \ + "ramdisk_addr_r=0x0a200000\0" + ++#define ENV_ETHACT_SETTINGS \ ++ "ethact=ethernet@fe300000\0" ++ + #include + #define CONFIG_EXTRA_ENV_SETTINGS \ ++ ENV_ETHACT_SETTINGS \ + ENV_MEM_LAYOUT_SETTINGS \ + "partitions=" PARTS_DEFAULT \ + ROCKCHIP_DEVICE_SETTINGS \ +diff -upr uboot-rockchip/make.sh uboot-rockchip.this-works-for-me/make.sh +--- make.sh.orig 2021-05-18 07:09:59.513696000 +0000 ++++ make.sh 2021-05-17 17:28:54.866848000 +0000 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/local/bin/bash + # + # Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd + # +@@ -6,7 +6,9 @@ + # + + set -e +-JOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` ++#set -x ++#JOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` ++JOB=`sysctl -n hw.ncpu` + SUPPORT_LIST=`ls configs/*[r,p][x,v,k][0-9][0-9]*_defconfig` + + # @LOADER: map to $RKCHIP_LOADER for loader ini +@@ -64,17 +66,25 @@ CHIP_TPL_MAGIC_TABLE=( + RKBIN_TOOLS=../rkbin/tools + + # User's GCC toolchain and relative path +-ADDR2LINE_ARM32=arm-linux-gnueabihf-addr2line +-ADDR2LINE_ARM64=aarch64-linux-gnu-addr2line +-OBJ_ARM32=arm-linux-gnueabihf-objdump +-OBJ_ARM64=aarch64-linux-gnu-objdump +-GCC_ARM32=arm-linux-gnueabihf- +-GCC_ARM64=aarch64-linux-gnu- +-TOOLCHAIN_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin +-TOOLCHAIN_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin ++#ADDR2LINE_ARM32=arm-linux-gnueabihf-addr2line ++#ADDR2LINE_ARM64=aarch64-linux-gnu-addr2line ++ADDR2LINE_ARM32=arm-none-eabi-addr2line ++ADDR2LINE_ARM64=aarch64-none-elf-addr2line ++#OBJ_ARM32=arm-linux-gnueabihf-objdump ++#OBJ_ARM64=aarch64-linux-gnu-objdump ++OBJ_ARM32=arm-none-eabi-objdump ++OBJ_ARM64=aarch64-none-elf-objdump ++#GCC_ARM32=arm-linux-gnueabihf- ++#GCC_ARM64=aarch64-linux-gnu- ++GCC_ARM32=arm-none-eabi- ++GCC_ARM64=aarch64-none-elf- ++#TOOLCHAIN_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin ++#TOOLCHAIN_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin ++TOOLCHAIN_ARM32=/usr/local/bin ++TOOLCHAIN_ARM64=/usr/local/bin + + ########################################### User not touch ############################################# +-RKTOOLS=./tools ++RKTOOLS=`pwd`/tools + + # Declare global INI file searching index name for every chip, update in select_chip_info() + RKCHIP="-" +@@ -217,7 +227,7 @@ function process_args() + shift ${NUM} + continue + # FUNC address +- elif [ -z $(echo $1 | sed 's/[0-9,a-f,A-F,x,X,-]//g') ]; then ++ elif [ -z $(echo $1 | gsed 's/[0-9,a-f,A-F,x,X,-]//g') ]; then + ARG_FUNCADDR=$1 + # xxx_defconfig + else +@@ -227,8 +237,8 @@ function process_args() + echo "ERROR: No configs/${ARG_BOARD}_defconfig" + exit 1 + else +- echo "make for ${ARG_BOARD}_defconfig by -j${JOB}" +- make ${ARG_BOARD}_defconfig ++ echo "gmake for ${ARG_BOARD}_defconfig by -j${JOB}" ++ gmake ${ARG_BOARD}_defconfig + fi + fi + shift 1 +@@ -355,7 +365,7 @@ function sub_commands() + ;; + + env) +- make CROSS_COMPILE=${TOOLCHAIN_GCC} envtools ++ gmake CROSS_COMPILE=${TOOLCHAIN_GCC} envtools + exit 0 + ;; + +@@ -368,13 +378,13 @@ function sub_commands() + FUNCADDR=${ARG_FUNCADDR} + RELOC_OFF=${FUNCADDR#*-} + FUNCADDR=${FUNCADDR%-*} +- if [ -z $(echo ${FUNCADDR} | sed 's/[0-9,a-f,A-F,x,X,-]//g') ] && [ ${FUNCADDR} ]; then ++ if [ -z $(echo ${FUNCADDR} | gsed 's/[0-9,a-f,A-F,x,X,-]//g') ] && [ ${FUNCADDR} ]; then + # With prefix: '0x' or '0X' +- if [ `echo ${FUNCADDR} | sed -n "/0[x,X]/p" | wc -l` -ne 0 ]; then ++ if [ `echo ${FUNCADDR} | gsed -n "/0[x,X]/p" | wc -l` -ne 0 ]; then + FUNCADDR=`echo ${FUNCADDR} | awk '{ print strtonum($0) }'` + FUNCADDR=`echo "obase=16;${FUNCADDR}"|bc |tr '[A-Z]' '[a-z]'` + fi +- if [ `echo ${RELOC_OFF} | sed -n "/0[x,X]/p" | wc -l` -ne 0 ] && [ ${RELOC_OFF} ]; then ++ if [ `echo ${RELOC_OFF} | gsed -n "/0[x,X]/p" | wc -l` -ne 0 ] && [ ${RELOC_OFF} ]; then + RELOC_OFF=`echo ${RELOC_OFF} | awk '{ print strtonum($0) }'` + RELOC_OFF=`echo "obase=16;${RELOC_OFF}"|bc |tr '[A-Z]' '[a-z]'` + fi +@@ -389,7 +399,7 @@ function sub_commands() + fi + + echo +- sed -n "/${FUNCADDR}/p" ${sym} ++ gsed -n "/${FUNCADDR}/p" ${sym} + ${TOOLCHAIN_ADDR2LINE} -e ${elf} ${FUNCADDR} + exit 0 + fi +@@ -539,13 +549,13 @@ function pack_uboot_image() + fi + + # Pack +- uboot_load_addr=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" include/autoconf.mk|tr -d '\r'` ++ uboot_load_addr=`gsed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" include/autoconf.mk|tr -d '\r'` + if [ -z ${uboot_load_addr} ]; then + echo "ERROR: No CONFIG_SYS_TEXT_BASE for u-boot"; + exit 1 + fi + ${RKTOOLS}/loaderimage --pack --uboot u-boot.bin uboot.img ${uboot_load_addr} ${PLATFORM_UBOOT_SIZE} +- rm u-boot.img u-boot-dtb.img -rf ++ rm -f u-boot.img u-boot-dtb.img + echo "pack uboot okay! Input: u-boot.bin" + } + +@@ -558,13 +568,13 @@ function pack_uboot_itb_image() + fi + + if [ "${ARM64_TRUSTZONE}" == "y" ]; then +- bl31=`sed -n '/_bl31_/s/PATH=//p' ${ini} |tr -d '\r'` ++ bl31=`gsed -n '/_bl31_/s/PATH=//p' ${ini} |tr -d '\r'` + cp ${RKBIN}/${bl31} bl31.elf +- make CROSS_COMPILE=${TOOLCHAIN_GCC} u-boot.itb ++ gmake CROSS_COMPILE=${TOOLCHAIN_GCC} u-boot.itb + echo "pack u-boot.itb okay! Input: ${ini}" + else +- tos_image=`sed -n "/TOS=/s/TOS=//p" ${ini} |tr -d '\r'` +- tosta_image=`sed -n "/TOSTA=/s/TOSTA=//p" ${ini} |tr -d '\r'` ++ tos_image=`gsed -n "/TOS=/s/TOS=//p" ${ini} |tr -d '\r'` ++ tosta_image=`gsed -n "/TOSTA=/s/TOSTA=//p" ${ini} |tr -d '\r'` + if [ ${tosta_image} ]; then + cp ${RKBIN}/${tosta_image} tee.bin + elif [ ${tos_image} ]; then +@@ -574,7 +584,7 @@ function pack_uboot_itb_image() + exit 1 + fi + +- tee_offset=`sed -n "/ADDR=/s/ADDR=//p" ${ini} |tr -d '\r'` ++ tee_offset=`gsed -n "/ADDR=/s/ADDR=//p" ${ini} |tr -d '\r'` + if [ "${tee_offset}" == "" ]; then + tee_offset=0x8400000 + fi +@@ -586,12 +596,13 @@ function pack_uboot_itb_image() + cp ${RKBIN}/${mcu_image} mcu.bin + fi + +- SPL_FIT_SOURCE=`sed -n "/CONFIG_SPL_FIT_SOURCE=/s/CONFIG_SPL_FIT_SOURCE=//p" .config | tr -d '""'` ++ SPL_FIT_SOURCE=`gsed -n "/CONFIG_SPL_FIT_SOURCE=/s/CONFIG_SPL_FIT_SOURCE=//p" .config | tr -d '""'` + if [ ! -z ${SPL_FIT_SOURCE} ]; then + cp ${SPL_FIT_SOURCE} u-boot.its + else +- SPL_FIT_GENERATOR=`sed -n "/CONFIG_SPL_FIT_GENERATOR=/s/CONFIG_SPL_FIT_GENERATOR=//p" .config | tr -d '""'` +- ${SPL_FIT_GENERATOR} ${tee_offset} ${mcu_offset} > u-boot.its ++ SPL_FIT_GENERATOR=`gsed -n "/CONFIG_SPL_FIT_GENERATOR=/s/CONFIG_SPL_FIT_GENERATOR=//p" .config | tr -d '""'` ++ #${SPL_FIT_GENERATOR} ${tee_offset} ${mcu_offset} > u-boot.its ++ ${SPL_FIT_GENERATOR} ${tee_offset} ${mcu_offset} arch/arm/dts/rk3399-nanopi4.dtb > u-boot.its + fi + ./tools/mkimage -f u-boot.its -E u-boot.itb + echo "pack u-boot.itb okay! Input: ${ini}" +@@ -620,39 +631,39 @@ function pack_spl_loader_image() + done + + if [ -z ${header} ]; then +- header=`sed -n '/NAME=/s/NAME=//p' ${ini}` ++ header=`gsed -n '/NAME=/s/NAME=//p' ${ini}` + fi + + # Prepare files +- rm ${tmpdir} -rf && mkdir ${tmpdir} -p ++ rm -rf ${tmpdir} && mkdir ${tmpdir} -p + cp spl/u-boot-spl.bin ${tmpdir}/ && cp ${ini} ${tmpini} + + if [ "${mode}" == "tpl-spl" ]; then # pack tpl+spl + label="TPL+SPL" + cp tpl/u-boot-tpl.bin ${tmpdir}/ + dd if=${tmpdir}/u-boot-tpl.bin of=${tmpdir}/tpl.bin bs=1 skip=4 +- sed -i "1s/^/${header:0:4}/" ${tmpdir}/tpl.bin +- sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/" ${tmpini} +- sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/" ${tmpini} +- sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${tmpini} ++ gsed -i "1s/^/${header:0:4}/" ${tmpdir}/tpl.bin ++ gsed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/" ${tmpini} ++ gsed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/" ${tmpini} ++ gsed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${tmpini} + elif [ "${mode}" == "tpl" ]; then # pack tpl + label="TPL" + cp tpl/u-boot-tpl.bin ${tmpdir}/ + dd if=${tmpdir}/u-boot-tpl.bin of=${tmpdir}/tpl.bin bs=1 skip=4 +- sed -i "1s/^/${header:0:4}/" ${tmpdir}/tpl.bin +- sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/" ${tmpini} +- sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/" ${tmpini} ++ gsed -i "1s/^/${header:0:4}/" ${tmpdir}/tpl.bin ++ gsed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/" ${tmpini} ++ gsed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/" ${tmpini} + else + label="SPL" +- sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${tmpini} ++ gsed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${tmpini} + fi + + # Pack + cd ${RKBIN} + ${RKTOOLS}/boot_merger ${tmpini} + +- rm ${tmpdir} -rf && cd - +- rm *_loader_*.bin -rf && mv ${RKBIN}/*_loader_*.bin ./ ++ rm -rf ${tmpdir} && cd - ++ rm -rf *_loader_*.bin && mv ${RKBIN}/*_loader_*.bin ./ + filename=`basename *_loader_*.bin` + if [[ ${filename} != *spl* ]]; then + rename 's/loader_/spl_loader_/' *_loader_*.bin +@@ -668,10 +679,10 @@ function pack_loader_image() + return + fi + +- rm *_loader_*.bin -rf ++ rm -rf *_loader_*.bin + numline=`cat ${ini} | wc -l` + if [ ${numline} -eq 1 ]; then +- image=`sed -n "/PATH=/p" ${ini} | tr -d '\r' | cut -d '=' -f 2` ++ image=`gsed -n "/PATH=/p" ${ini} | tr -d '\r' | cut -d '=' -f 2` + cp ${RKBIN}/${image} ./ + else + cd ${RKBIN} +@@ -686,19 +697,19 @@ function pack_loader_image() + function pack_arm32_trust_image() + { + ini=$1 +- tos_image=`sed -n "/TOS=/s/TOS=//p" ${ini} |tr -d '\r'` +- tosta_image=`sed -n "/TOSTA=/s/TOSTA=//p" ${ini} |tr -d '\r'` +- tee_output=`sed -n "/OUTPUT=/s/OUTPUT=//p" ${ini} |tr -d '\r'` ++ tos_image=`gsed -n "/TOS=/s/TOS=//p" ${ini} |tr -d '\r'` ++ tosta_image=`gsed -n "/TOSTA=/s/TOSTA=//p" ${ini} |tr -d '\r'` ++ tee_output=`gsed -n "/OUTPUT=/s/OUTPUT=//p" ${ini} |tr -d '\r'` + if [ "${tee_output}" == "" ]; then + tee_output="./trust.img" + fi +- tee_offset=`sed -n "/ADDR=/s/ADDR=//p" ${ini} |tr -d '\r'` ++ tee_offset=`gsed -n "/ADDR=/s/ADDR=//p" ${ini} |tr -d '\r'` + if [ "${tee_offset}" == "" ]; then + tee_offset=0x8400000 + fi + + # OP-TEE is 132M(0x8400000) offset from DRAM base. +- dram_base=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" include/autoconf.mk|tr -d '\r'` ++ dram_base=`gsed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" include/autoconf.mk|tr -d '\r'` + tee_load_addr=$((dram_base+tee_offset)) + tee_load_addr=$(echo "obase=16;${tee_load_addr}"|bc) # Convert Dec to Hex + +@@ -728,7 +739,7 @@ function pack_trust_image() + return + fi + +- rm trust*.img -rf ++ rm -rf trust*.img + ini=${INI_TRUST} + if [ ! -f ${INI_TRUST} ]; then + echo "pack trust failed! Can't find: ${INI_TRUST}" +@@ -737,7 +748,7 @@ function pack_trust_image() + + numline=`cat ${ini} | wc -l` + if [ ${numline} -eq 1 ]; then +- image=`sed -n "/PATH=/p" ${ini} | tr -d '\r' | cut -d '=' -f 2` ++ image=`gsed -n "/PATH=/p" ${ini} | tr -d '\r' | cut -d '=' -f 2` + cp ${RKBIN}/${image} ./trust.img + echo "pack trust okay! Input: ${ini}" + return; +@@ -753,14 +764,14 @@ function pack_trust_image() + function pack_fit_image() + { + if [ "${ARG_NO_UBOOT}" == "y" ]; then +- rm u-boot-nodtb.bin u-boot.dtb -rf ++ rm -f u-boot-nodtb.bin u-boot.dtb + touch u-boot-nodtb.bin u-boot.dtb + fi + + if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then + ./scripts/fit-mkimg.sh --uboot-itb --boot-itb ${ARG_LIST_FIT} + else +- rm uboot.img trust*.img -rf ++ rm -f uboot.img trust*.img + ./scripts/fit-mkimg.sh --uboot-itb --no-vboot --no-rebuild ${ARG_LIST_FIT} + echo "pack uboot.img okay! Input: ${INI_TRUST}" + fi +@@ -781,7 +792,7 @@ function pack_images() + + function clean_files() + { +- rm spl/u-boot-spl.dtb tpl/u-boot-tpl.dtb u-boot.dtb -rf ++ rm -f spl/u-boot-spl.dtb tpl/u-boot-tpl.dtb u-boot.dtb + } + + function finish() +@@ -790,7 +801,7 @@ function finish() + if [ "${ARG_BOARD}" == "" ]; then + echo "Platform ${RKCHIP_LABEL} is build OK, with exist .config" + else +- echo "Platform ${RKCHIP_LABEL} is build OK, with new .config(make ${ARG_BOARD}_defconfig)" ++ echo "Platform ${RKCHIP_LABEL} is build OK, with new .config(gmake ${ARG_BOARD}_defconfig)" + fi + } + +@@ -803,7 +814,11 @@ select_ini_file + handle_args_late + sub_commands + clean_files +-make CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} ++gmake CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} + pack_images + finish ++ ++./tools/mkimage -n rk3399 -T rksd -d /root/rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img ++cat /root/rkbin/bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.img ++ + +diff -upr uboot-rockchip/net/eth-uclass.c uboot-rockchip.this-works-for-me/net/eth-uclass.c +--- net/eth-uclass.c.orig 2021-05-18 07:09:59.515757000 +0000 ++++ net/eth-uclass.c 2021-05-17 16:36:08.649866000 +0000 +@@ -263,7 +263,7 @@ int eth_init(void) + if (!current) { + current = eth_get_dev(); + if (!current) { +- printf("No ethernet found.\n"); ++ printf("No ethernet found..\n"); + return -ENODEV; + } + } +@@ -399,7 +399,7 @@ int eth_initialize(void) + */ + uclass_first_device(UCLASS_ETH, &dev); + if (!dev) { +- printf("No ethernet found.\n"); ++ printf("%s: No ethernet found.\n", __func__); + bootstage_error(BOOTSTAGE_ID_NET_ETH_START); + } else { + char *ethprime = env_get("ethprime"); +diff -upr uboot-rockchip/scripts/build-whitelist.sh uboot-rockchip.this-works-for-me/scripts/build-whitelist.sh +--- scripts/build-whitelist.sh.orig 2021-05-18 07:09:59.528188000 +0000 ++++ scripts/build-whitelist.sh 2021-05-16 21:00:52.555902000 +0000 +@@ -24,21 +24,21 @@ export LC_ALL=C LC_COLLATE=C + # Kconfig and defconfig files. + # + ( +-git grep CONFIG_SYS_EXTRA_OPTIONS |sed -n \ ++git grep CONFIG_SYS_EXTRA_OPTIONS |gsed -n \ + 's/.*CONFIG_SYS_EXTRA_OPTIONS="\(.*\)"/\1/ p' \ + | tr , '\n' \ +- | sed 's/ *\([A-Za-z0-9_]*\).*/CONFIG_\1/' ++ | gsed 's/ *\([A-Za-z0-9_]*\).*/CONFIG_\1/' + + git grep CONFIG_ | \ + egrep -vi "(Kconfig:|defconfig:|README|\.py|\.pl:)" \ + | tr ' \t' '\n\n' \ +- | sed -n 's/^\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' ++ | gsed -n 's/^\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' + ) \ + |sort |uniq >scripts/config_whitelist.txt.tmp1; + + # Finally, we need a list of the valid Kconfig options to exclude these from + # the whitelist. +-cat `find . -name "Kconfig*"` |sed -n \ ++cat `find . -name "Kconfig*"` |gsed -n \ + -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ + -e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ + |sort |uniq >scripts/config_whitelist.txt.tmp2 +diff -upr uboot-rockchip/scripts/check-config.sh uboot-rockchip.this-works-for-me/scripts/check-config.sh +--- scripts/check-config.sh.orig 2021-05-18 07:09:59.528293000 +0000 ++++ scripts/check-config.sh 2021-05-16 21:00:32.905820000 +0000 +@@ -27,12 +27,12 @@ new_adhoc="${path}.adhoc" + export LC_ALL=C + export LC_COLLATE=C + +-cat ${path} |sed -n 's/^#define \(CONFIG_[A-Za-z0-9_]*\).*/\1/p' |sort |uniq \ ++cat ${path} |gsed -n 's/^#define \(CONFIG_[A-Za-z0-9_]*\).*/\1/p' |sort |uniq \ + >${configs} + + comm -23 ${configs} ${whitelist} > ${suspects} + +-cat `find ${srctree} -name "Kconfig*"` |sed -n \ ++cat `find ${srctree} -name "Kconfig*"` |gsed -n \ + -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ + -e 's/^\s*menuconfig \([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ + |sort |uniq > ${ok} +diff -upr uboot-rockchip/scripts/fit-mkimg.sh uboot-rockchip.this-works-for-me/scripts/fit-mkimg.sh +--- scripts/fit-mkimg.sh.orig 2021-05-18 07:09:59.544406000 +0000 ++++ scripts/fit-mkimg.sh 2021-05-16 20:14:38.167821000 +0000 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/local/bin/bash + # + # Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd + # +diff -upr uboot-rockchip/scripts/fit-resign.sh uboot-rockchip.this-works-for-me/scripts/fit-resign.sh +--- scripts/fit-resign.sh.orig 2021-05-18 07:09:59.544512000 +0000 ++++ scripts/fit-resign.sh 2021-05-16 20:14:43.645367000 +0000 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/local/bin/bash + # + # Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd + # +diff -upr uboot-rockchip/scripts/fit-unpack.sh uboot-rockchip.this-works-for-me/scripts/fit-unpack.sh +--- scripts/fit-unpack.sh.orig 2021-05-18 07:09:59.544614000 +0000 ++++ scripts/fit-unpack.sh 2021-05-16 20:14:49.519291000 +0000 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/local/bin/bash + # + # Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd + # +diff -upr uboot-rockchip/scripts/rkpatch.sh uboot-rockchip.this-works-for-me/scripts/rkpatch.sh +--- scripts/rkpatch.sh.orig 2021-05-18 07:09:59.557044000 +0000 ++++ scripts/rkpatch.sh 2021-05-16 21:00:15.428525000 +0000 +@@ -33,74 +33,74 @@ case $1 in + && echo " CONFIG_ROCKCHIP_CRASH_DUMP" + ;; + 1) +- sed -i 's/\/printf/g' lib/initcall.c +- sed -i 's/ifdef DEBUG/if 1/g' lib/initcall.c ++ gsed -i 's/\/printf/g' lib/initcall.c ++ gsed -i 's/ifdef DEBUG/if 1/g' lib/initcall.c + echo "DEBUG [1]: lib/initcall.c debug() -> printf()" + ;; + 2) +- sed -i 's/\/printf/g' ./common/board_f.c +- sed -i 's/\/printf/g' ./common/board_r.c ++ gsed -i 's/\/printf/g' ./common/board_f.c ++ gsed -i 's/\/printf/g' ./common/board_r.c + echo "DEBUG [2]: common/board_r.c and common/board_f.c debug() -> printf()" + ;; + 3) +- sed -i '$i \#define DEBUG\' include/configs/rockchip-common.h ++ gsed -i '$i \#define DEBUG\' include/configs/rockchip-common.h + echo "DEBUG [3]: global #define DEBUG" + ;; + 4) +- sed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config ++ gsed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config + echo "DEBUG [4]: CONFIG_ROCKCHIP_DEBUGGER is enabled" + ;; + 5) +- sed -i 's/\# CONFIG_ROCKCHIP_CRC is not set/CONFIG_ROCKCHIP_CRC=y/g' .config ++ gsed -i 's/\# CONFIG_ROCKCHIP_CRC is not set/CONFIG_ROCKCHIP_CRC=y/g' .config + echo "DEBUG [5]: CONFIG_ROCKCHIP_CRC is enabled" + ;; + 6) +- sed -i 's/\# CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP is not set/CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP=y/g' .config ++ gsed -i 's/\# CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP is not set/CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP=y/g' .config + echo "DEBUG [6]: CONFIG_BOOTSTAGE_PRINTF_TIMESTAMP is enabled" + ;; + 7) +- sed -i 's/\# CONFIG_ROCKCHIP_CRASH_DUMP is not set/CONFIG_ROCKCHIP_CRASH_DUMP=y/g' .config ++ gsed -i 's/\# CONFIG_ROCKCHIP_CRASH_DUMP is not set/CONFIG_ROCKCHIP_CRASH_DUMP=y/g' .config + echo "DEBUG [7]: CONFIG_ROCKCHIP_CRASH_DUMP is enabled" + ;; + 8) +- sed -i 's/^CONFIG_BOOTDELAY=0/CONFIG_BOOTDELAY=5/g' .config ++ gsed -i 's/^CONFIG_BOOTDELAY=0/CONFIG_BOOTDELAY=5/g' .config + echo "DEBUG [8]: CONFIG_BOOTDELAY is 5s" + ;; + 9) +- sed -i '/save_boot_params_ret:/a\ldr r0, =CONFIG_DEBUG_UART_BASE\nmov r1, #100\nloop:\nmov r2, #0x55\nstr r2, [r0]\nsub r1, r1, #1\ncmp r1, #0\nbne loop\ndsb' \ ++ gsed -i '/save_boot_params_ret:/a\ldr r0, =CONFIG_DEBUG_UART_BASE\nmov r1, #100\nloop:\nmov r2, #0x55\nstr r2, [r0]\nsub r1, r1, #1\ncmp r1, #0\nbne loop\ndsb' \ + ./arch/arm/cpu/armv7/start.S + echo "DEBUG [9]: armv7 start.S entry warning 'UUUU...'" + ;; + 10) +- sed -i '/save_boot_params_ret:/a\ldr x0, =CONFIG_DEBUG_UART_BASE\nmov x1, #100\nloop:\nmov x2, #0x55\nstr x2, [x0]\nsub x1, x1, #1\ncmp x1, #0\nb.ne loop\ndsb sy' \ ++ gsed -i '/save_boot_params_ret:/a\ldr x0, =CONFIG_DEBUG_UART_BASE\nmov x1, #100\nloop:\nmov x2, #0x55\nstr x2, [x0]\nsub x1, x1, #1\ncmp x1, #0\nb.ne loop\ndsb sy' \ + ./arch/arm/cpu/armv8/start.S + echo "DEBUG [10]: armv8 start.S entry warning 'UUUU...'" + ;; + 11) +- sed -i 's/\/printf/g' common/fdt_support.c +- sed -i 's/\/printf/g' common/image-fdt.c +- sed -i 's/\/printf/g' common/image.c +- sed -i 's/\/printf/g' arch/arm/lib/bootm.c +- sed -i 's/\/printf/g' common/bootm.c +- sed -i 's/\/printf/g' common/image.c +- sed -i 's/\/printf/g' common/image-android.c +- sed -i 's/\/printf/g' common/android_bootloader.c ++ gsed -i 's/\/printf/g' common/fdt_support.c ++ gsed -i 's/\/printf/g' common/image-fdt.c ++ gsed -i 's/\/printf/g' common/image.c ++ gsed -i 's/\/printf/g' arch/arm/lib/bootm.c ++ gsed -i 's/\/printf/g' common/bootm.c ++ gsed -i 's/\/printf/g' common/image.c ++ gsed -i 's/\/printf/g' common/image-android.c ++ gsed -i 's/\/printf/g' common/android_bootloader.c + echo "DEBUG [11]: firmware bootflow debug() -> printf()" + ;; + 12) +- sed -i '$a\CONFIG_BOOTSTAGE=y\' .config +- sed -i '$a\CONFIG_BOOTSTAGE_REPORT=y\' .config +- sed -i '$a\CONFIG_CMD_BOOTSTAGE=y\' .config ++ gsed -i '$a\CONFIG_BOOTSTAGE=y\' .config ++ gsed -i '$a\CONFIG_BOOTSTAGE_REPORT=y\' .config ++ gsed -i '$a\CONFIG_CMD_BOOTSTAGE=y\' .config + echo "DEBUG [12]: bootstage timing report" + ;; + 13) +- sed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config +- sed -i '/br x4/i\b .' arch/arm/cpu/armv8/transition.S +- sed -i 's/announce_and_cleanup(fake);/if (0)announce_and_cleanup(fake);/g' arch/arm/lib/bootm.c +- sed -i '/announce_and_cleanup(fake)/a\enable_interrupts()\;' arch/arm/lib/bootm.c +- sed -i '/kernel_entry(0, machid, r2)/i\printf("#### Jump to kernel!!")\;' arch/arm/lib/bootm.c +- sed -i '/kernel_entry(0, machid, r2)/i\__asm("b .")\;' arch/arm/lib/bootm.c +- sed -i 's/\/printf/g' arch/arm/lib/bootm.c ++ gsed -i 's/\# CONFIG_ROCKCHIP_DEBUGGER is not set/CONFIG_ROCKCHIP_DEBUGGER=y/g' .config ++ gsed -i '/br x4/i\b .' arch/arm/cpu/armv8/transition.S ++ gsed -i 's/announce_and_cleanup(fake);/if (0)announce_and_cleanup(fake);/g' arch/arm/lib/bootm.c ++ gsed -i '/announce_and_cleanup(fake)/a\enable_interrupts()\;' arch/arm/lib/bootm.c ++ gsed -i '/kernel_entry(0, machid, r2)/i\printf("#### Jump to kernel!!")\;' arch/arm/lib/bootm.c ++ gsed -i '/kernel_entry(0, machid, r2)/i\__asm("b .")\;' arch/arm/lib/bootm.c ++ gsed -i 's/\/printf/g' arch/arm/lib/bootm.c + echo "DEBUG [13]: starting kernel halt dump" + ;; + *) --- /dev/null +++ b/sysutils/u-boot-nanopc-t4-friendlyelec/files/patch-dtc.diff @@ -0,0 +1,16 @@ +--- scripts/dtc/dtc-parser.tab.c_shipped.orig 2021-05-18 07:17:41.463147000 +0000 ++++ scripts/dtc/dtc-parser.tab.c_shipped 2021-05-18 07:18:40.730220000 +0000 +@@ -1202,11 +1202,13 @@ int yychar; + /* The semantic value of the lookahead symbol. */ + YYSTYPE yylval; + /* Location data for the lookahead symbol. */ ++#if 0 + YYLTYPE yylloc + # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + = { 1, 1, 1, 1 } + # endif + ; ++#endif + /* Number of syntax errors so far. */ + int yynerrs; + --- /dev/null +++ b/sysutils/u-boot-nanopc-t4-friendlyelec/pkg-descr @@ -0,0 +1,7 @@ +U-Boot loader and related files for the NanoPC-T4 (friendlyarm repo): + +dd if=/usr/local/share/u-boot/u-boot-nanopc-t4/idbloader.img of=/path/to/sdcarddevice seek=64 bs=512 conv=sync +dd if=/usr/local/share/u-boot/u-boot-nanopc-t4/trust.img of=/path/to/sdcarddevice seek=24576 bs=512 conv=sync +dd if=/usr/local/share/u-boot/u-boot-nanopc-t4/uboot.img of=/path/to/sdcarddevice seek=16384 bs=512 conv=sync + +WWW: https://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4#Compile_U-boot_v2017.09_for_FriendlyCore-focal