mekotronics: refactor vendor conf/hooks; vendor uboot with new patches; new blobs

- meko: don't use Radxa's Rock-5A u-boot anymore, switch to rockchip vendor next-dev branch
- meko: my own (horrible) patches for MAC address stability / defconfig
- meko: cherry picked a few patches for getting rid of BL32/read Bl31 from env and other fixes from Radxa
- meko: add OTP node to 3588 dtsi (so we don't need kern-dtb in ITS for working OTP)
- meko: refactor common code across 3 (soon to be 4) board files into vendor conf and hooks
- meko: bump DDR/BL31 blobs for all Meko boards
This commit is contained in:
Ricardo Pardini 2023-06-29 13:41:23 +02:00 committed by Igor
parent e3726f2fff
commit ea30a06236
13 changed files with 688 additions and 485 deletions

View File

@ -3,20 +3,7 @@ declare -g BOARD_NAME="Mekotronics R58 MiniPC"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g KERNEL_TARGET="legacy"
declare -g IMAGE_PARTITION_TABLE="gpt"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-minipc-linux.dtb" # Specific to this board
declare -g BOOT_SCENARIO="spl-blobs" # so we don't depend on defconfig naming convention
declare -g BOOTCONFIG="mekotronics-r58-rk3588_defconfig" # patched-in in BOOTPATCHDIR, set below.
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS6 bcm43xx 1500000" # For the bluetooth-hciattach extension
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
# post_family_config which only runs when branch is legacy. a shortcut, to avoid if's. you're welcome.
function post_family_config_branch_legacy__uboot_mekotronics() {
display_alert "$BOARD" "Configuring Mekotronics R58 ($BOARD) u-boot" "info"
declare -g BOOTSOURCE='https://github.com/radxa/u-boot.git'
declare -g BOOTBRANCH='branch:stable-5.10-rock5'
declare -g OVERLAY_PREFIX='rockchip-rk3588'
declare -g BOOTDIR="u-boot-${BOARD}" # do not share u-boot directory
declare -g BOOTDELAY=1 # build injects this into u-boot config. we can then get into UMS mode and avoid the whole rockusb/rkdeveloptool thing
}
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

View File

@ -1,22 +1,9 @@
# Rockchip RK3588 SoC octa core 4-16GB SoC 2x1GBe eMMC USB3 NVMe SATA 4G WiFi/BT HDMI DP HDMI-In RS232 RS485
declare -g BOARD_NAME="Mekotronics R58X-4G"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g BOARD_MAINTAINER="monkaBlyat rpardini"
declare -g KERNEL_TARGET="legacy"
declare -g IMAGE_PARTITION_TABLE="gpt"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v12-linux.dtb" # Specific to this board
declare -g BOOT_SCENARIO="spl-blobs" # so we don't depend on defconfig naming convention
declare -g BOOTCONFIG="mekotronics-r58-rk3588_defconfig" # patched-in in BOOTPATCHDIR, set below.
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS6 bcm43xx 1500000" # For the bluetooth-hciattach extension
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
# post_family_config which only runs when branch is legacy. a shortcut, to avoid if's. you're welcome.
function post_family_config_branch_legacy__uboot_mekotronics() {
display_alert "$BOARD" "Configuring Mekotronics R58 ($BOARD) u-boot" "info"
declare -g BOOTSOURCE='https://github.com/radxa/u-boot.git'
declare -g BOOTBRANCH='branch:stable-5.10-rock5'
declare -g OVERLAY_PREFIX='rockchip-rk3588'
declare -g BOOTDIR="u-boot-${BOARD}" # do not share u-boot directory
declare -g BOOTDELAY=1 # build injects this into u-boot config. we can then get into UMS mode and avoid the whole rockusb/rkdeveloptool thing
}
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

View File

@ -1,22 +1,9 @@
# Rockchip RK3588 SoC octa core 4-16GB SoC 2x1GBe eMMC USB3 NVMe SATA WiFi/BT HDMI DP HDMI-In RS232 RS485
declare -g BOARD_NAME="Mekotronics R58X-4G"
declare -g BOARD_NAME="Mekotronics R58X"
declare -g BOARDFAMILY="rockchip-rk3588"
declare -g BOARD_MAINTAINER="monkaBlyat"
declare -g KERNEL_TARGET="legacy"
declare -g IMAGE_PARTITION_TABLE="gpt"
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v10-linux.dtb" # Specific to this board
declare -g BOOT_SCENARIO="spl-blobs" # so we don't depend on defconfig naming convention
declare -g BOOTCONFIG="mekotronics-r58-rk3588_defconfig" # patched-in in BOOTPATCHDIR, set below.
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS6 bcm43xx 1500000" # For the bluetooth-hciattach extension
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
# post_family_config which only runs when branch is legacy. a shortcut, to avoid if's. you're welcome.
function post_family_config_branch_legacy__uboot_mekotronics() {
display_alert "$BOARD" "Configuring Mekotronics R58 ($BOARD) u-boot" "info"
declare -g BOOTSOURCE='https://github.com/radxa/u-boot.git'
declare -g BOOTBRANCH='branch:stable-5.10-rock5'
declare -g OVERLAY_PREFIX='rockchip-rk3588'
declare -g BOOTDIR="u-boot-${BOARD}" # do not share u-boot directory
declare -g BOOTDELAY=1 # build injects this into u-boot config. we can then get into UMS mode and avoid the whole rockusb/rkdeveloptool thing
}
# Source vendor-specific configuration
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"

View File

@ -0,0 +1,22 @@
#
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2023 Ricardo Pardini <ricardo@pardini.net>
# This file is a part of the Armbian Build Framework https://github.com/armbian/build/
# This file is SOURCED by the Mekotronics board files, and thus has the same restrictions as board files.
# Especifically, the family code (rockchip64_common) will both require and override a bunch of stuff.
# We use hooks (post_family_config, etc) to be able to both reuse code and force certain values.
display_alert "shared vendor code" "Mekotronics (RK3588) config" "info"
# enable shared hooks (could be made into an extension)
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.hooks.sh"
# hciattach
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS6 bcm43xx 1500000" # For the bluetooth-hciattach extension
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
# board-like config
declare -g BOOT_SCENARIO="spl-blobs" # so we don't depend on defconfig naming convention
declare -g BOOT_SOC="rk3588" # so we don't depend on defconfig naming convention
declare -g BOOTCONFIG="rk3588_meko_defconfig" # generic ebv plus distro dtb hacks
declare -g IMAGE_PARTITION_TABLE="gpt"

View File

@ -0,0 +1,27 @@
#
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2023 Ricardo Pardini <ricardo@pardini.net>
# This file is a part of the Armbian Build Framework https://github.com/armbian/build/
#
# Newer, tested-to-work rkbins.
function post_family_config__blobs_mekotronics() {
display_alert "$BOARD" "Configuring Mekotronics ($BOARD) blobs" "info"
declare -g DDR_BLOB='rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.11.bin'
declare -g BL31_BLOB='rk35/rk3588_bl31_v1.38.elf'
}
# Vendor u-boot, standard rockchip, plus patches.
function post_family_config__uboot_mekotronics() {
display_alert "$BOARD" "Configuring Mekotronics R58 ($BOARD) u-boot" "info"
declare -g BOOTSOURCE='https://github.com/rockchip-linux/u-boot.git'
#declare -g BOOTBRANCH='branch:next-dev' # disabled, using specific commit below to avoid breakage in the future
declare -g BOOTBRANCH="commit:cc781e0266d589b937b5af9e4850fb1e7222f0f1" # specific commit in next-dev branch; tested to work
declare -g BOOTDIR="u-boot-meko-rk3588" # do not share u-boot directory
declare -g BOOTPATCHDIR="legacy/u-boot-meko-rk3588" # Few patches in there; MAC address & defconfig
declare -g OVERLAY_PREFIX='rockchip-rk3588'
declare -g BOOTDELAY=1 # build injects this into u-boot config. we can then get into UMS mode and avoid the whole rockusb/rkdeveloptool thing
}

View File

@ -0,0 +1,29 @@
From ec54def825a3d1a7aab5f5086167d0b1308476a5 Mon Sep 17 00:00:00 2001
From: Stephen Chen <stephen@radxa.com>
Date: Thu, 13 Apr 2023 11:19:49 +0800
Subject: [PATCH 1000/1006] rockchip: dts: rk3588: enable otp
Signed-off-by: Stephen Chen <stephen@radxa.com>
---
arch/arm/dts/rk3588-u-boot.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/dts/rk3588-u-boot.dtsi b/arch/arm/dts/rk3588-u-boot.dtsi
index d0b82f64b7..837d5be90b 100644
--- a/arch/arm/dts/rk3588-u-boot.dtsi
+++ b/arch/arm/dts/rk3588-u-boot.dtsi
@@ -24,6 +24,11 @@
};
};
+&otp {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
&firmware {
u-boot,dm-spl;
};
--
2.40.1

View File

@ -0,0 +1,158 @@
From 3d009929b5a9ef15f598a216fe9a7453f39c5ca3 Mon Sep 17 00:00:00 2001
From: Ricardo Pardini <ricardo@pardini.net>
Date: Fri, 30 Jun 2023 14:53:49 +0200
Subject: [PATCH 1001/1006] mach-rockchip/board.c: find serial# first, then
ethaddr; add a lot of debugging
---
arch/arm/mach-rockchip/board.c | 39 ++++++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index 9ffb017dd8..8797ad3436 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -110,14 +110,23 @@ static int rockchip_set_ethaddr(void)
u8 ethaddr[ARP_HLEN * MAX_ETHERNET] = {0};
int i, ret = -EINVAL;
+ printf("%s: starting ethernet MAC set\n", __func__);
+
#ifdef CONFIG_ROCKCHIP_VENDOR_PARTITION
+ printf("%s: going for vendor_storage_read\n", __func__);
ret = vendor_storage_read(LAN_MAC_ID, ethaddr, sizeof(ethaddr));
+ printf("%s: vendor_storage_read returned %d\n", __func__, ret);
+
#endif
for (i = 0; i < MAX_ETHERNET; i++) {
+ printf("%s: looping... %d and ret %d\n", __func__, i, ret);
if (ret <= 0 || !is_valid_ethaddr(&ethaddr[i * ARP_HLEN])) {
if (!randomed) {
net_random_ethaddr(&ethaddr[i * ARP_HLEN]);
randomed = true;
+ printf
+ ("%s: looping... generated RANDOMED... %d and ret %d\n",
+ __func__, i, ret);
} else {
if (i > 0) {
memcpy(&ethaddr[i * ARP_HLEN],
@@ -128,6 +137,7 @@ static int rockchip_set_ethaddr(void)
}
}
+ printf("%s: setting need_write true\n", __func__);
need_write = true;
}
@@ -137,14 +147,18 @@ static int rockchip_set_ethaddr(void)
memcpy(mac, "ethaddr", sizeof("ethaddr"));
else
sprintf(mac, "eth%daddr", i);
+ printf("%s: setting in env\n", __func__);
env_set(mac, buf);
}
}
#ifdef CONFIG_ROCKCHIP_VENDOR_PARTITION
if (need_write) {
+ printf("%s: gonna do vendor_storage_write\n", __func__);
ret = vendor_storage_write(LAN_MAC_ID,
ethaddr, sizeof(ethaddr));
+ printf("%s: did vendor_storage_write returned %d\n", __func__,
+ ret);
if (ret < 0)
printf("%s: vendor_storage_write failed %d\n",
__func__, ret);
@@ -162,6 +176,7 @@ static int rockchip_set_serialno(void)
char serialno_str[VENDOR_SN_MAX];
int ret = 0, i;
u64 serialno;
+ printf("%s: starting serial number code\n", __func__);
/* Read serial number from vendor storage part */
memset(serialno_str, 0, VENDOR_SN_MAX);
@@ -171,6 +186,7 @@ static int rockchip_set_serialno(void)
ret = vendor_storage_read(SN_ID, serialno_str, (VENDOR_SN_MAX-1));
if (ret > 0) {
+ printf("%s: got serial from vendor_storage_read\n", __func__);
j = strlen(serialno_str);
for (i = 0; i < j; i++) {
if ((serialno_str[i] >= 'a' && serialno_str[i] <= 'z') ||
@@ -185,11 +201,16 @@ static int rockchip_set_serialno(void)
if (i > 0) {
serialno_str[i + 1] = 0x0;
env_set("serial#", serialno_str);
+ printf("%s: set in the env from vendor_storage_read\n",
+ __func__);
}
}
#endif
if (!env_get("serial#")) {
+ printf("%s: serial NOT in the env\n", __func__);
+
#if defined(CONFIG_ROCKCHIP_EFUSE) || defined(CONFIG_ROCKCHIP_OTP)
+ printf("%s: serial gonna try in OTP\n", __func__);
struct udevice *dev;
/* retrieve the device */
@@ -203,10 +224,13 @@ static int rockchip_set_serialno(void)
&dev);
if (ret) {
- printf("%s: could not find efuse/otp device\n", __func__);
+ printf("%s: could not find efuse/otp device\n",
+ __func__);
return ret;
}
+ printf("%s: serial gonna try read fuses\n", __func__);
+
/* read the cpu_id range from the efuses */
ret = misc_read(dev, CPUID_OFF, &cpuid, sizeof(cpuid));
if (ret) {
@@ -214,12 +238,18 @@ static int rockchip_set_serialno(void)
__func__, ret);
return ret;
}
+ printf("%s: serial read fuse looks like worked\n", __func__);
+
#else
+ printf("%s: serial generate RANDOM\n", __func__);
/* generate random cpuid */
for (i = 0; i < CPUID_LEN; i++)
cpuid[i] = (u8)(rand());
#endif
/* Generate the serial number based on CPU ID */
+ printf
+ ("%s: serial Generate the serial number based on CPU ID\n",
+ __func__);
for (i = 0; i < 8; i++) {
low[i] = cpuid[1 + (i << 1)];
high[i] = cpuid[i << 1];
@@ -230,6 +260,7 @@ static int rockchip_set_serialno(void)
snprintf(serialno_str, sizeof(serialno_str), "%llx", serialno);
env_set("serial#", serialno_str);
+ printf("%s: stored serial num in env\n", __func__);
}
return ret;
@@ -447,11 +478,11 @@ static void scan_run_cmd(void)
int board_late_init(void)
{
-#ifdef CONFIG_ROCKCHIP_SET_ETHADDR
- rockchip_set_ethaddr();
-#endif
#ifdef CONFIG_ROCKCHIP_SET_SN
rockchip_set_serialno();
+#endif
+#ifdef CONFIG_ROCKCHIP_SET_ETHADDR
+ rockchip_set_ethaddr();
#endif
setup_download_mode();
scan_run_cmd();
--
2.40.1

View File

@ -0,0 +1,69 @@
From fdd68a2b06862cd2229d77e463eb10a7ecef26db Mon Sep 17 00:00:00 2001
From: Ricardo Pardini <ricardo@pardini.net>
Date: Fri, 30 Jun 2023 17:30:37 +0200
Subject: [PATCH 1002/1006] use serial# as base for MAC address
---
arch/arm/mach-rockchip/board.c | 35 ++++++++++++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index 8797ad3436..6c8d96a60e 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -109,8 +109,31 @@ static int rockchip_set_ethaddr(void)
char buf[ARP_HLEN_ASCII + 1], mac[16];
u8 ethaddr[ARP_HLEN * MAX_ETHERNET] = {0};
int i, ret = -EINVAL;
+ u8 serial_checksum[ARP_HLEN] = {0};
printf("%s: starting ethernet MAC set\n", __func__);
+
+ char *serial;
+ serial = env_get("serial#");
+ if (serial) {
+ printf("%s: serial# for eth base is %s\n", __func__, serial);
+ // checksum the serial# and obtain 6 bytes from it (ARP_HLEN)
+ // Initialize checksum bytes to zero
+ for (int i = 0; i < 6; i++) {
+ serial_checksum[i] = 0;
+ }
+ // Iterate over each character in the serial array
+ for (int i = 0; serial[i] != '\0'; i++) {
+ printf("%s: checksumming serial digit %d\n", __func__, i);
+ int index = i % 6; // Calculate the appropriate index in the checksum array
+ serial_checksum[index] ^= serial[i]; // Perform XOR operation
+ }
+ serial_checksum[0] &= 0xfe; /* clear multicast bit */
+ serial_checksum[0] |= 0x02; /* set local assignment bit (IEEE802) */
+ } else {
+ printf("%s: serial# for eth base not available\n", __func__);
+ }
+
#ifdef CONFIG_ROCKCHIP_VENDOR_PARTITION
printf("%s: going for vendor_storage_read\n", __func__);
@@ -122,10 +145,18 @@ static int rockchip_set_ethaddr(void)
printf("%s: looping... %d and ret %d\n", __func__, i, ret);
if (ret <= 0 || !is_valid_ethaddr(&ethaddr[i * ARP_HLEN])) {
if (!randomed) {
- net_random_ethaddr(&ethaddr[i * ARP_HLEN]);
+ if (serial) {
+ // copy the checksum bytes into the ethaddr array
+ printf("%s: using SERIAL as base for MAC\n", __func__);
+ memcpy(&ethaddr[i * ARP_HLEN], serial_checksum, ARP_HLEN);
+ printf("%s: used SERIAL as base for MAC\n", __func__);
+ } else {
+ printf("%s: generating RANDOM MAC\n", __func__);
+ net_random_ethaddr(&ethaddr[i * ARP_HLEN]);
+ }
randomed = true;
printf
- ("%s: looping... generated RANDOMED... %d and ret %d\n",
+ ("%s: looping... generated SERIAL or RANDOMED... %d and ret %d\n",
__func__, i, ret);
} else {
if (i > 0) {
--
2.40.1

View File

@ -0,0 +1,26 @@
From 4442082c4c37f397a94c5c11d012d9e3d540720b Mon Sep 17 00:00:00 2001
From: Ricardo Pardini <ricardo@pardini.net>
Date: Fri, 30 Jun 2023 00:02:51 +0200
Subject: [PATCH 1003/1006] cmd: source: fix the error that the command source
failed to execute
---
cmd/source.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmd/source.c b/cmd/source.c
index 6b1c8b744b..cf820c072a 100644
--- a/cmd/source.c
+++ b/cmd/source.c
@@ -87,7 +87,7 @@ source (ulong addr, const char *fit_uname)
* past the zero-terminated sequence of image lengths to get
* to the actual image data
*/
- while (*data++ != IMAGE_PARAM_INVAL);
+ while (*data++);
break;
#endif
#if defined(CONFIG_FIT)
--
2.40.1

View File

@ -0,0 +1,26 @@
From 7699c93604c388431b4a227fffa348c997fb529c Mon Sep 17 00:00:00 2001
From: Stephen Chen <stephen@radxa.com>
Date: Tue, 21 Mar 2023 16:09:11 +0800
Subject: [PATCH 1004/1006] rockchip: disable gen_bl32_node
Signed-off-by: Stephen Chen <stephen@radxa.com>
---
arch/arm/mach-rockchip/make_fit_atf.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/make_fit_atf.sh b/arch/arm/mach-rockchip/make_fit_atf.sh
index 32ef33b8b0..045273e3bd 100755
--- a/arch/arm/mach-rockchip/make_fit_atf.sh
+++ b/arch/arm/mach-rockchip/make_fit_atf.sh
@@ -10,7 +10,7 @@ source ./${srctree}/arch/arm/mach-rockchip/fit_nodes.sh
gen_header
gen_uboot_node
gen_bl31_node
-gen_bl32_node
+#gen_bl32_node
gen_mcu_node
gen_loadable_node
gen_kfdt_node
--
2.40.1

View File

@ -0,0 +1,66 @@
From 601defb9d43e770ae7b6cfd833dc3e8ea6318ffe Mon Sep 17 00:00:00 2001
From: Stephen Chen <stephen@radxa.com>
Date: Tue, 21 Mar 2023 16:11:34 +0800
Subject: [PATCH 1005/1006] rockchip: allow passing of BL31 location via
variable
Source link: https://github.com/piter75/armbian-build/blob/rock-3a-bring-up/patch/u-boot/u-boot-rk356x/general-configurable-bl31-path.patch
Signed-off-by: Stephen Chen <stephen@radxa.com>
---
arch/arm/mach-rockchip/decode_bl31.py | 12 +++++++++++-
arch/arm/mach-rockchip/make_fit_atf.py | 13 ++++++++++++-
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-rockchip/decode_bl31.py b/arch/arm/mach-rockchip/decode_bl31.py
index 301bd15375..42fa32d23d 100755
--- a/arch/arm/mach-rockchip/decode_bl31.py
+++ b/arch/arm/mach-rockchip/decode_bl31.py
@@ -41,7 +41,17 @@ def generate_atf_binary(bl31_file_name):
atf.write(data)
def main():
- bl31_elf="./bl31.elf"
+ if "BL31" in os.environ:
+ bl31_elf=os.getenv("BL31");
+ elif os.path.isfile("./bl31.elf"):
+ bl31_elf = "./bl31.elf"
+ else:
+ os.system("echo 'int main(){}' > bl31.c")
+ os.system("${CROSS_COMPILE}gcc -c bl31.c -o bl31.elf")
+ bl31_elf = "./bl31.elf"
+ logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
+ logging.warning(' BL31 file bl31.elf NOT found, resulting binary is non-functional')
+ logging.warning(' Please read Building section in doc/README.rockchip')
generate_atf_binary(bl31_elf);
if __name__ == "__main__":
diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py
index 27b6ef7597..fac8d6f121 100755
--- a/arch/arm/mach-rockchip/make_fit_atf.py
+++ b/arch/arm/mach-rockchip/make_fit_atf.py
@@ -212,9 +212,20 @@ def get_bl31_segments_info(bl31_file_name):
def main():
uboot_elf="./u-boot"
- bl31_elf="./bl31.elf"
FIT_ITS=sys.stdout
+ if "BL31" in os.environ:
+ bl31_elf=os.getenv("BL31");
+ elif os.path.isfile("./bl31.elf"):
+ bl31_elf = "./bl31.elf"
+ else:
+ os.system("echo 'int main(){}' > bl31.c")
+ os.system("${CROSS_COMPILE}gcc -c bl31.c -o bl31.elf")
+ bl31_elf = "./bl31.elf"
+ logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
+ logging.warning(' BL31 file bl31.elf NOT found, resulting binary is non-functional')
+ logging.warning(' Please read Building section in doc/README.rockchip')
+
opts, args = getopt.getopt(sys.argv[1:], "o:u:b:h")
for opt, val in opts:
if opt == "-o":
--
2.40.1

View File

@ -0,0 +1,257 @@
From 2c0f21e19f5dde73530853c11c2ae8d1f7fe36a0 Mon Sep 17 00:00:00 2001
From: Ricardo Pardini <ricardo@pardini.net>
Date: Sat, 1 Jul 2023 10:49:27 +0200
Subject: [PATCH 1006/1006] rk3588_meko_defconfig - evb sans optee
---
configs/rk3588_meko_defconfig | 238 ++++++++++++++++++++++++++++++++++
1 file changed, 238 insertions(+)
create mode 100644 configs/rk3588_meko_defconfig
diff --git a/configs/rk3588_meko_defconfig b/configs/rk3588_meko_defconfig
new file mode 100644
index 0000000000..73104bb182
--- /dev/null
+++ b/configs/rk3588_meko_defconfig
@@ -0,0 +1,238 @@
+CONFIG_ARM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x80000
+CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.sh"
+CONFIG_ROCKCHIP_RK3588=y
+CONFIG_ROCKCHIP_FIT_IMAGE=y
+CONFIG_ROCKCHIP_HWID_DTB=y
+CONFIG_ROCKCHIP_VENDOR_PARTITION=y
+CONFIG_USING_KERNEL_DTB_V2=y
+CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y
+CONFIG_ROCKCHIP_NEW_IDB=y
+CONFIG_PSTORE=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_TARGET_EVB_RK3588=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3588-evb"
+CONFIG_DEBUG_UART=y
+CONFIG_LOCALVERSION="-armbian"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_FIT=y
+CONFIG_FIT_IMAGE_POST_PROCESS=y
+CONFIG_FIT_HW_CRYPTO=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
+CONFIG_SPL_FIT_HW_CRYPTO=y
+# CONFIG_SPL_SYS_DCACHE_OFF is not set
+CONFIG_BOOTDELAY=1
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_LOG=y
+CONFIG_SPL_LOG=y
+CONFIG_LOG_MAX_LEVEL=7
+CONFIG_SPL_LOG_MAX_LEVEL=6
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_ANDROID_BOOTLOADER=y
+CONFIG_ANDROID_AVB=y
+CONFIG_ANDROID_BOOT_IMAGE_HASH=y
+CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x1
+CONFIG_SPL_MMC_WRITE=y
+CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_ATF=y
+CONFIG_SPL_AB=y
+CONFIG_FASTBOOT_BUF_ADDR=0xc00800
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_FLASH_MMC_DEV=0
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_DTIMG=y
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_IMI is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_LZMADEC is not set
+# CONFIG_CMD_UNZIP is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_CMD_GPT=y
+# CONFIG_CMD_LOADB is not set
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_BOOT_ANDROID=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+# CONFIG_CMD_ITEST is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_TFTP_BOOTM=y
+CONFIG_CMD_TFTP_FLASH=y
+# CONFIG_CMD_MISC is not set
+CONFIG_CMD_MTD_BLK=y
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_ISO_PARTITION is not set
+CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_SPL_DTB_MINIMUM=y
+CONFIG_OF_LIVE=y
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+CONFIG_OF_U_BOOT_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+# CONFIG_NET_TFTP_VARS is not set
+CONFIG_REGMAP=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_SPL_SYSCON=y
+# CONFIG_SARADC_ROCKCHIP is not set
+CONFIG_SARADC_ROCKCHIP_V2=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_SCMI=y
+CONFIG_SPL_CLK_SCMI=y
+CONFIG_DM_CRYPTO=y
+CONFIG_SPL_DM_CRYPTO=y
+CONFIG_ROCKCHIP_CRYPTO_V2=y
+CONFIG_SPL_ROCKCHIP_CRYPTO_V2=y
+CONFIG_DM_RNG=y
+CONFIG_RNG_ROCKCHIP=y
+CONFIG_SCMI_FIRMWARE=y
+CONFIG_SPL_SCMI_FIRMWARE=y
+CONFIG_GPIO_HOG=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_ROCKCHIP_GPIO_V2=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_I2C_MUX=y
+CONFIG_DM_KEY=y
+CONFIG_RK8XX_PWRKEY=y
+CONFIG_ADC_KEY=y
+CONFIG_MISC=y
+CONFIG_SPL_MISC=y
+CONFIG_MISC_DECOMPRESS=y
+CONFIG_SPL_MISC_DECOMPRESS=y
+CONFIG_ROCKCHIP_OTP=y
+CONFIG_ROCKCHIP_HW_DECOMPRESS=y
+CONFIG_SPL_ROCKCHIP_HW_DECOMPRESS=y
+CONFIG_SPL_ROCKCHIP_SECURE_OTP=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_MTD=y
+CONFIG_MTD_BLK=y
+CONFIG_MTD_DEVICE=y
+CONFIG_NAND=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_SPEED=80000000
+CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_FLASH_XMC=y
+CONFIG_SPI_FLASH_XTX=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_DM_ETH=y
+CONFIG_DM_ETH_PHY=y
+CONFIG_DWC_ETH_QOS=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=y
+CONFIG_PHY_ROCKCHIP_USBDP=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_DM_FUEL_GAUGE=y
+CONFIG_POWER_FG_CW201X=y
+CONFIG_POWER_FG_CW221X=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_SPI_RK8XX=y
+CONFIG_DM_POWER_DELIVERY=y
+CONFIG_TYPEC_TCPM=y
+CONFIG_TYPEC_TCPCI=y
+CONFIG_TYPEC_HUSB311=y
+CONFIG_TYPEC_FUSB302=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_REGULATOR_RK860X=y
+CONFIG_REGULATOR_RK806=y
+CONFIG_CHARGER_BQ25700=y
+CONFIG_CHARGER_BQ25890=y
+CONFIG_CHARGER_SC8551=y
+CONFIG_CHARGER_SGM41542=y
+CONFIG_DM_CHARGE_DISPLAY=y
+CONFIG_CHARGE_ANIMATION=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_RAM=y
+CONFIG_SPL_RAM=y
+CONFIG_TPL_RAM=y
+CONFIG_DM_RAMDISK=y
+CONFIG_RAMDISK_RO=y
+CONFIG_DM_RESET=y
+CONFIG_SPL_DM_RESET=y
+CONFIG_SPL_RESET_ROCKCHIP=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_BASE=0xFEB50000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_ROCKCHIP_SPI=y
+CONFIG_ROCKCHIP_SFC=y
+CONFIG_SYSRESET=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GADGET=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="Rockchip"
+CONFIG_USB_GADGET_VENDOR_NUM=0x2207
+CONFIG_USB_GADGET_PRODUCT_NUM=0x350a
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_DM_VIDEO=y
+CONFIG_DISPLAY=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_MAXIM_MAX96745=y
+CONFIG_DRM_MAXIM_MAX96755F=y
+CONFIG_DRM_PANEL_ROHM_BU18RL82=y
+CONFIG_DRM_PANEL_MAXIM_MAX96752F=y
+CONFIG_DRM_ROHM_BU18XL82=y
+CONFIG_DRM_ROCKCHIP_DW_HDMI_QP=y
+CONFIG_DRM_ROCKCHIP_DW_MIPI_DSI2=y
+CONFIG_DRM_ROCKCHIP_DW_DP=y
+CONFIG_DRM_ROCKCHIP_ANALOGIX_DP=y
+CONFIG_DRM_ROCKCHIP_SAMSUNG_MIPI_DCPHY=y
+CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI=y
+CONFIG_USE_TINY_PRINTF=y
+CONFIG_LIB_RAND=y
+CONFIG_SPL_TINY_MEMSET=y
+CONFIG_RSA=y
+CONFIG_SPL_RSA=y
+CONFIG_RSA_N_SIZE=0x200
+CONFIG_RSA_E_SIZE=0x10
+CONFIG_RSA_C_SIZE=0x20
+CONFIG_XBC=y
+CONFIG_LZ4=y
+CONFIG_LZMA=y
+# CONFIG_EFI_LOADER is not set
+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
--
2.40.1

View File

@ -1,438 +0,0 @@
Subject: [PATCH] Hijack Rock-5A into mekotronics-r58-rk3588_defconfig; hijack DTS too
---
Index: arch/arm/dts/rk3588-mekotronics-r58.dts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/arch/arm/dts/rk3588-mekotronics-r58.dts b/arch/arm/dts/rk3588-mekotronics-r58.dts
new file mode 100644
--- /dev/null (revision 7ca1a89443112ff2ac11cee1356d6f8fde296897)
+++ b/arch/arm/dts/rk3588-mekotronics-r58.dts (revision 7ca1a89443112ff2ac11cee1356d6f8fde296897)
@@ -0,0 +1,193 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd
+ *
+ */
+
+/dts-v1/;
+#include "rk3588.dtsi"
+#include "rk3588-u-boot.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Mekotronics R58";
+ compatible = "radxa,rock-5a", "rockchip,rk3588";
+
+ vcc12v_dcin: vcc12v-dcin {
+ u-boot,dm-pre-reloc;
+ compatible = "regulator-fixed";
+ regulator-name = "vcc12v_dcin";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ };
+
+ vcc5v0_sys: vcc5v0-sys {
+ u-boot,dm-pre-reloc;
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc12v_dcin>;
+ };
+
+ vcc_5v0: vcc-5v0 {
+ u-boot,dm-pre-reloc;
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_5v0";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ enable-active-high;
+ gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc_5v0_en>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vcc5v0_host: vcc5v0-host-regulator {
+ u-boot,dm-pre-reloc;
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_host";
+ regulator-boot-on;
+ regulator-always-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ enable-active-high;
+ gpio = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc5v0_host_en>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ led_sys: led-sys {
+ u-boot,dm-pre-reloc;
+ compatible = "regulator-fixed";
+ regulator-name = "led_sys";
+ enable-active-high;
+ gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; // Turn on user led
+ regulator-boot-on;
+ regulator-always-on;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 1>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+ u-boot,dm-pre-reloc;
+ status = "okay";
+
+ volumeup-key {
+ u-boot,dm-pre-reloc;
+ linux,code = <KEY_VOLUMEUP>;
+ label = "volume up";
+ press-threshold-microvolt = <1750>;
+ };
+ };
+};
+
+&usb_host0_ehci {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&usb_host0_ohci {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&usb2phy2_grf {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&u2phy2 {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&u2phy2_host {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&usb_host1_ehci {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&usb_host1_ohci {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&usb2phy3_grf {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&u2phy3 {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&u2phy3_host {
+ status = "okay";
+ u-boot,dm-pre-reloc;
+};
+
+&sfc {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&fspim0_pins>;
+};
+
+&spi_nor {
+ status = "disabled";
+};
+
+&pinctrl {
+
+ /delete-node/ fspi;
+ fspi {
+ u-boot,dm-spl;
+ fspim0_pins: fspim0-pins {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* fspi_clk_m0 */
+ <2 RK_PA0 2 &pcfg_pull_none>,
+ /* fspi_cs0n_m0 */
+ <2 RK_PD6 2 &pcfg_pull_none>,
+ /* fspi_d0_m0 */
+ <2 RK_PD0 2 &pcfg_pull_none>,
+ /* fspi_d1_m0 */
+ <2 RK_PD1 2 &pcfg_pull_none>,
+ /* fspi_d2_m0 */
+ <2 RK_PD2 2 &pcfg_pull_none>,
+ /* fspi_d3_m0 */
+ <2 RK_PD3 2 &pcfg_pull_none>;
+ };
+ };
+
+ usb {
+ u-boot,dm-pre-reloc;
+ vcc5v0_host_en: vcc5v0-host-en {
+ u-boot,dm-pre-reloc;
+ rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ power {
+ u-boot,dm-spl;
+ vcc_5v0_en: vcc-5v0-en {
+ u-boot,dm-spl;
+ rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+};
Index: configs/mekotronics-r58-rk3588_defconfig
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/configs/mekotronics-r58-rk3588_defconfig b/configs/mekotronics-r58-rk3588_defconfig
new file mode 100644
--- /dev/null (revision 7ca1a89443112ff2ac11cee1356d6f8fde296897)
+++ b/configs/mekotronics-r58-rk3588_defconfig (revision 7ca1a89443112ff2ac11cee1356d6f8fde296897)
@@ -0,0 +1,223 @@
+CONFIG_ARM=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x80000
+CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.sh"
+CONFIG_ROCKCHIP_RK3588=y
+CONFIG_ROCKCHIP_USB_BOOT=y
+CONFIG_ROCKCHIP_FIT_IMAGE=y
+CONFIG_ROCKCHIP_HWID_DTB=y
+CONFIG_ROCKCHIP_VENDOR_PARTITION=y
+CONFIG_USING_KERNEL_DTB_V2=y
+CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y
+CONFIG_ROCKCHIP_NEW_IDB=y
+CONFIG_LOADER_INI="RK3588MINIALL.ini"
+CONFIG_TRUST_INI="RK3588TRUST.ini"
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_TARGET_EVB_RK3588=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3588-mekotronics-r58"
+CONFIG_DEBUG_UART=y
+CONFIG_LOCALVERSION="-armbian"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_FIT=y
+CONFIG_FIT_IMAGE_POST_PROCESS=y
+CONFIG_FIT_HW_CRYPTO=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
+CONFIG_SPL_FIT_HW_CRYPTO=y
+# CONFIG_SPL_SYS_DCACHE_OFF is not set
+CONFIG_BOOTDELAY=1
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_ANDROID_BOOTLOADER=y
+CONFIG_ANDROID_AVB=y
+CONFIG_ANDROID_BOOT_IMAGE_HASH=y
+CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x1
+CONFIG_SPL_MMC_WRITE=y
+CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_ATF=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_PROMPT="Mekotronics: Autoboot in %d seconds - press SHIFT-M...\n"
+CONFIG_AUTOBOOT_STOP_STR="M"
+CONFIG_AUTOBOOT_KEYED_CTRLC=y
+CONFIG_FASTBOOT_BUF_ADDR=0xc00800
+CONFIG_FASTBOOT_BUF_SIZE=0x04000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_FLASH_MMC_DEV=0
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_DTIMG=y
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_IMI is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_LZMADEC is not set
+# CONFIG_CMD_UNZIP is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_CMD_GPT=y
+# CONFIG_CMD_LOADB is not set
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_BOOT_ANDROID=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+# CONFIG_CMD_ITEST is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_TFTP_BOOTM=y
+CONFIG_CMD_TFTP_FLASH=y
+# CONFIG_CMD_MISC is not set
+CONFIG_CMD_MTD_BLK=y
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_ISO_PARTITION is not set
+CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_SPL_DTB_MINIMUM=y
+CONFIG_OF_LIVE=y
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+# CONFIG_NET_TFTP_VARS is not set
+CONFIG_REGMAP=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_SPL_SYSCON=y
+# CONFIG_SARADC_ROCKCHIP is not set
+CONFIG_SARADC_ROCKCHIP_V2=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_SCMI=y
+CONFIG_SPL_CLK_SCMI=y
+CONFIG_DM_CRYPTO=y
+CONFIG_SPL_DM_CRYPTO=y
+CONFIG_ROCKCHIP_CRYPTO_V2=y
+CONFIG_SPL_ROCKCHIP_CRYPTO_V2=y
+CONFIG_DM_RNG=y
+CONFIG_RNG_ROCKCHIP=y
+CONFIG_SCMI_FIRMWARE=y
+CONFIG_SPL_SCMI_FIRMWARE=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_ROCKCHIP_GPIO_V2=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_DM_KEY=y
+CONFIG_ADC_KEY=y
+CONFIG_MISC=y
+CONFIG_SPL_MISC=y
+CONFIG_MISC_DECOMPRESS=y
+CONFIG_SPL_MISC_DECOMPRESS=y
+CONFIG_ROCKCHIP_OTP=y
+CONFIG_ROCKCHIP_HW_DECOMPRESS=y
+CONFIG_SPL_ROCKCHIP_HW_DECOMPRESS=y
+CONFIG_SPL_ROCKCHIP_SECURE_OTP=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_MTD=y
+CONFIG_MTD_BLK=y
+CONFIG_MTD_DEVICE=y
+CONFIG_NAND=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_SPEED=80000000
+CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_FLASH_XMC=y
+CONFIG_SPI_FLASH_XTX=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_DM_ETH=y
+CONFIG_DM_ETH_PHY=y
+CONFIG_DWC_ETH_QOS=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_NVME=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_DM_PCI_COMPAT=y
+CONFIG_PCIE_DW_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=y
+CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_SPI_RK8XX=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_REGULATOR_RK860X=y
+CONFIG_REGULATOR_RK806=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_RAM=y
+CONFIG_SPL_RAM=y
+CONFIG_TPL_RAM=y
+CONFIG_ROCKCHIP_SDRAM_COMMON=y
+CONFIG_ROCKCHIP_TPL_INIT_DRAM_TYPE=0
+CONFIG_DM_RESET=y
+CONFIG_SPL_DM_RESET=y
+CONFIG_SPL_RESET_ROCKCHIP=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_BASE=0xFEB50000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_ROCKCHIP_SPI=y
+CONFIG_ROCKCHIP_SFC=y
+CONFIG_SYSRESET=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GADGET=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="Rockchip"
+CONFIG_USB_GADGET_VENDOR_NUM=0x2207
+CONFIG_USB_GADGET_PRODUCT_NUM=0x350a
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_DM_VIDEO=y
+CONFIG_DISPLAY=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_ROCKCHIP_DW_MIPI_DSI2=y
+CONFIG_DRM_ROCKCHIP_ANALOGIX_DP=y
+CONFIG_DRM_ROCKCHIP_SAMSUNG_MIPI_DCPHY=y
+CONFIG_USE_TINY_PRINTF=y
+CONFIG_LIB_RAND=y
+CONFIG_SPL_TINY_MEMSET=y
+CONFIG_RSA=y
+CONFIG_SPL_RSA=y
+CONFIG_RSA_N_SIZE=0x200
+CONFIG_RSA_E_SIZE=0x10
+CONFIG_RSA_C_SIZE=0x20
+CONFIG_LZ4=y
+CONFIG_ERRNO_STR=y
+# CONFIG_EFI_LOADER is not set
+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_V2=y
+CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y