Skip to content

Commit 99df7c5

Browse files
rpardiniigorpecovnik
authored andcommitted
mekotronics-r58x-4g: mainline u-boot v2026.01; mainline 6.19 kernel (edge)
- rockchip64-6.19: mainline kernel (edge/6.19): - most stuff works, incl 4G modem, NPU, RS-485, RS-232, HDMI-RX - except: - type-c (fusb302, I've no schematics nor will to reverse) - DisplayPort (I don't have test hardware) - Analog Audio (ditto) - keep vendor u-boot for vendor branch - mainline u-boot v2026.01: - same DT as edge kernel, save for NPU nodes - boot order: NVMe -> SATA -> USB -> eMMC -> Ethernet/PXE - stable MAC addresses for GMAC0/1 via DT aliases (confirm with logging patch)
1 parent 2681a3a commit 99df7c5

5 files changed

Lines changed: 1422 additions & 6 deletions

File tree

config/boards/mekotronics-r58x-4g.csc

Lines changed: 90 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,94 @@ declare -g BOARD_NAME="Mekotronics R58X-4G"
33
declare -g BOARD_VENDOR="mekotronics"
44
declare -g BOARDFAMILY="rockchip-rk3588"
55
declare -g BOARD_MAINTAINER=""
6-
declare -g KERNEL_TARGET="vendor"
7-
declare -g BOOTCONFIG="mekotronics_r58x-rk3588_defconfig" # vendor u-boot; with NVMe and a DTS
8-
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v12-linux.dtb" # Specific to this board
9-
declare -g UEFI_EDK2_BOARD_ID="r58x" # This _only_ used for uefi-edk2-rk3588 extension
6+
declare -g KERNEL_TARGET="edge,vendor"
7+
declare -g BOOT_FDT_FILE="rockchip/rk3588-blueberry-edge-v12-linux.dtb" # same name for mainline and vendor
8+
declare -g DISPLAY_MANAGER="wayland"
9+
declare -g ASOUND_STATE="asound.state.rk3588hd"
10+
declare -g BOOT_SOC="rk3588"
11+
declare -g IMAGE_PARTITION_TABLE="gpt"
12+
# Does not have a UEFI_EDK2_BOARD_ID
1013

11-
# Source vendor-specific configuration
12-
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"
14+
if [[ "${BRANCH}" == "vendor" || "${BRANCH}" == "legacy" ]]; then
15+
display_alert "$BOARD" "vendor/legacy configuration applied for $BOARD / $BRANCH" "info"
16+
declare -g BOOTCONFIG="mekotronics_r58x-rk3588_defconfig" # vendor u-boot; with NVMe and a DTS
17+
# Source shared vendor configuration; it does BOOT_SCENARIO="spl-blobs" & hciattach - common to all vendor-kernel Meko's
18+
source "${SRC}/config/sources/vendors/mekotronics/mekotronics-rk3588.conf.sh"
19+
return 0 # this returns early so below code is only for current/edge branches
20+
fi
21+
22+
# For current/edge branches:
23+
display_alert "$BOARD" "applying mainline configuration for $BOARD / $BRANCH" "info"
24+
declare -g BOOT_SCENARIO="tpl-blob-atf-mainline" # Mainline ATF
25+
26+
function post_family_config__mekor58x_4g_use_mainline_uboot() {
27+
display_alert "$BOARD" "mainline u-boot overrides for $BOARD / $BRANCH" "info"
28+
29+
declare -g BOOTCONFIG="mekotronics-r58x-4g-rk3588_defconfig" # mainline
30+
declare -g BOOTDELAY=1
31+
declare -g BOOTSOURCE="https://github.com/u-boot/u-boot.git"
32+
declare -g BOOTBRANCH="tag:v2026.01"
33+
declare -g BOOTPATCHDIR="v2026.01"
34+
declare -g BOOTDIR="u-boot-${BOARD}"
35+
36+
declare -g UBOOT_TARGET_MAP="BL31=bl31.elf ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB};;u-boot-rockchip.bin"
37+
unset uboot_custom_postprocess write_uboot_platform write_uboot_platform_mtd
38+
39+
function write_uboot_platform() {
40+
dd "if=$1/u-boot-rockchip.bin" "of=$2" bs=32k seek=1 conv=notrunc status=none
41+
}
42+
43+
declare -g PLYMOUTH="no" # Disable plymouth as that only causes more confusion
44+
}
45+
46+
# "rockchip-common: boot NVMe, SATA, USB, then eMMC last before PXE"
47+
# include/configs/rockchip-common.h
48+
# On the meko r58-r58x_4g: mmc0 is eMMC; there is no SDcard reader
49+
# Enumerating usb is pretty slow so do it after nvme
50+
function pre_config_uboot_target__mekor58x_4g_patch_rockchip_common_boot_order() {
51+
declare -a rockchip_uboot_targets=("nvme" "scsi" "usb" "mmc0" "pxe" "dhcp" "spi") # for future make-this-generic delight
52+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: adjust boot order to '${rockchip_uboot_targets[*]}'" "info"
53+
sed -i -e "s/#define BOOT_TARGETS.*/#define BOOT_TARGETS \"${rockchip_uboot_targets[*]}\"/" include/configs/rockchip-common.h
54+
regular_git diff -u include/configs/rockchip-common.h || true
55+
}
56+
57+
function post_config_uboot_target__extra_configs_for_mekor58x_4g_mainline_environment_in_spi() {
58+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable board-specific configs" "info"
59+
run_host_command_logged scripts/config --enable CONFIG_CMD_MISC
60+
61+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable preboot & flash user LED in preboot" "info"
62+
run_host_command_logged scripts/config --enable CONFIG_USE_PREBOOT
63+
run_host_command_logged scripts/config --set-str CONFIG_PREBOOT "'led 4G on; sleep 0.1; led LAN on; sleep 0.1; led PWR on; sleep 0.1; led 4G off; sleep 0.1; led LAN off; sleep 0.1;'" # double quotes required due to run_host_command_logged's quirks
64+
65+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable EFI debugging commands" "info"
66+
run_host_command_logged scripts/config --enable CMD_EFIDEBUG
67+
run_host_command_logged scripts/config --enable CMD_NVEDIT_EFI
68+
69+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable more filesystems support" "info"
70+
run_host_command_logged scripts/config --enable CONFIG_CMD_BTRFS
71+
72+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable more compression support" "info"
73+
run_host_command_logged scripts/config --enable CONFIG_LZO
74+
run_host_command_logged scripts/config --enable CONFIG_BZIP2
75+
run_host_command_logged scripts/config --enable CONFIG_ZSTD
76+
77+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable gpio LED support" "info"
78+
run_host_command_logged scripts/config --enable CONFIG_LED
79+
run_host_command_logged scripts/config --enable CONFIG_LED_GPIO
80+
81+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable networking cmds" "info"
82+
run_host_command_logged scripts/config --enable CONFIG_CMD_NFS
83+
run_host_command_logged scripts/config --enable CONFIG_CMD_WGET
84+
run_host_command_logged scripts/config --enable CONFIG_CMD_DNS
85+
run_host_command_logged scripts/config --enable CONFIG_PROT_TCP
86+
run_host_command_logged scripts/config --enable CONFIG_PROT_TCP_SACK
87+
88+
# UMS, RockUSB, gadget stuff
89+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable UMS/RockUSB gadget" "info"
90+
declare -a enable_configs=("CONFIG_CMD_USB_MASS_STORAGE" "CONFIG_USB_GADGET" "USB_GADGET_DOWNLOAD" "CONFIG_USB_FUNCTION_ROCKUSB" "CONFIG_USB_FUNCTION_ACM" "CONFIG_CMD_ROCKUSB" "CONFIG_CMD_USB_MASS_STORAGE")
91+
for config in "${enable_configs[@]}"; do
92+
run_host_command_logged scripts/config --enable "${config}"
93+
done
94+
# Auto-enabled by the above, force off...
95+
run_host_command_logged scripts/config --disable USB_FUNCTION_FASTBOOT
96+
}
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Ricardo Pardini <ricardo@pardini.net>
3+
Date: Mon, 12 Jan 2026 18:26:25 +0100
4+
Subject: fdt_fixup_ethernet: add logs
5+
6+
---
7+
boot/fdt_support.c | 57 +++++++---
8+
boot/image-fdt.c | 25 ++++
9+
2 files changed, 67 insertions(+), 15 deletions(-)
10+
11+
diff --git a/boot/fdt_support.c b/boot/fdt_support.c
12+
index 111111111111..222222222222 100644
13+
--- a/boot/fdt_support.c
14+
+++ b/boot/fdt_support.c
15+
@@ -630,29 +630,34 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size)
16+
return fdt_fixup_memory_banks(blob, &start, &size, 1);
17+
}
18+
19+
+#warning "Compiling fdt_fixup_ethernet() for MAC debugging."
20+
void fdt_fixup_ethernet(void *fdt)
21+
{
22+
+ log_info("[fdt_fixup_ethernet] called\n");
23+
int i = 0, j, prop;
24+
char *tmp, *end;
25+
char mac[16];
26+
const char *path;
27+
unsigned char mac_addr[ARP_HLEN];
28+
int offset;
29+
+ int total_aliases = 0, total_attempted = 0, total_skipped = 0, total_patched = 0;
30+
#ifdef FDT_SEQ_MACADDR_FROM_ENV
31+
int nodeoff;
32+
const struct fdt_property *fdt_prop;
33+
#endif
34+
35+
- if (fdt_path_offset(fdt, "/aliases") < 0)
36+
+ int aliases_off = fdt_path_offset(fdt, "/aliases");
37+
+ if (aliases_off < 0) {
38+
+ log_info("[fdt_fixup_ethernet] /aliases node not found\n");
39+
return;
40+
+ }
41+
42+
/* Cycle through all aliases */
43+
for (prop = 0; ; prop++) {
44+
const char *name;
45+
46+
/* FDT might have been edited, recompute the offset */
47+
- offset = fdt_first_property_offset(fdt,
48+
- fdt_path_offset(fdt, "/aliases"));
49+
+ offset = fdt_first_property_offset(fdt, aliases_off);
50+
/* Select property number 'prop' */
51+
for (j = 0; j < prop; j++)
52+
offset = fdt_next_property_offset(fdt, offset);
53+
@@ -660,7 +665,10 @@ void fdt_fixup_ethernet(void *fdt)
54+
if (offset < 0)
55+
break;
56+
57+
+ total_aliases++;
58+
path = fdt_getprop_by_offset(fdt, offset, &name, NULL);
59+
+ log_info("[fdt_fixup_ethernet] alias #%d: name='%s', path='%s'\n", prop, name, path ? path : "<null>");
60+
+
61+
if (!strncmp(name, "ethernet", 8)) {
62+
/* Treat plain "ethernet" same as "ethernet0". */
63+
if (!strcmp(name, "ethernet")
64+
@@ -679,33 +687,52 @@ void fdt_fixup_ethernet(void *fdt)
65+
else
66+
sprintf(mac, "eth%daddr", i);
67+
} else {
68+
+ log_info("[fdt_fixup_ethernet] Skipping alias '%s' (invalid index)\n", name);
69+
+ total_skipped++;
70+
continue;
71+
}
72+
#ifdef FDT_SEQ_MACADDR_FROM_ENV
73+
nodeoff = fdt_path_offset(fdt, path);
74+
- fdt_prop = fdt_get_property(fdt, nodeoff, "status",
75+
- NULL);
76+
- if (fdt_prop && !strcmp(fdt_prop->data, "disabled"))
77+
+ fdt_prop = fdt_get_property(fdt, nodeoff, "status", NULL);
78+
+ if (fdt_prop && !strcmp(fdt_prop->data, "disabled")) {
79+
+ log_info("[fdt_fixup_ethernet] Node '%s' is disabled, skipping\n", path);
80+
+ total_skipped++;
81+
continue;
82+
+ }
83+
i++;
84+
#endif
85+
+ total_attempted++;
86+
tmp = env_get(mac);
87+
- if (!tmp)
88+
+ log_info("[fdt_fixup_ethernet] env var for alias '%s' is '%s', value='%s'\n", name, mac, tmp ? tmp : "<not set>");
89+
+ if (!tmp) {
90+
+ log_info("[fdt_fixup_ethernet] env var '%s' not set, skipping\n", mac);
91+
+ total_skipped++;
92+
continue;
93+
-
94+
+ }
95+
+ int nodeoff = fdt_path_offset(fdt, path);
96+
+ if (nodeoff < 0) {
97+
+ log_info("[fdt_fixup_ethernet] Node path '%s' not found, skipping\n", path);
98+
+ total_skipped++;
99+
+ continue;
100+
+ }
101+
+ const struct fdt_property *status_prop = fdt_get_property(fdt, nodeoff, "status", NULL);
102+
+ if (status_prop && strcmp((const char *)status_prop->data, "okay")) {
103+
+ log_info("[fdt_fixup_ethernet] Node '%s' status is '%s', skipping\n", path, (const char *)status_prop->data);
104+
+ total_skipped++;
105+
+ continue;
106+
+ }
107+
for (j = 0; j < 6; j++) {
108+
- mac_addr[j] = tmp ?
109+
- hextoul(tmp, &end) : 0;
110+
+ mac_addr[j] = tmp ? hextoul(tmp, &end) : 0;
111+
if (tmp)
112+
tmp = (*end) ? end + 1 : end;
113+
}
114+
-
115+
- do_fixup_by_path(fdt, path, "mac-address",
116+
- &mac_addr, 6, 0);
117+
- do_fixup_by_path(fdt, path, "local-mac-address",
118+
- &mac_addr, 6, 1);
119+
+ log_info("[fdt_fixup_ethernet] Patching node '%s' (offset %d) with MAC %02x:%02x:%02x:%02x:%02x:%02x\n", path, nodeoff, mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
120+
+ do_fixup_by_path(fdt, path, "mac-address", &mac_addr, 6, 0);
121+
+ do_fixup_by_path(fdt, path, "local-mac-address", &mac_addr, 6, 1);
122+
+ total_patched++;
123+
}
124+
}
125+
+ log_info("[fdt_fixup_ethernet] SUMMARY: aliases found=%d, attempted=%d, skipped=%d, patched=%d\n", total_aliases, total_attempted, total_skipped, total_patched);
126+
}
127+
128+
int fdt_record_loadable(void *blob, u32 index, const char *name,
129+
diff --git a/boot/image-fdt.c b/boot/image-fdt.c
130+
index 111111111111..222222222222 100644
131+
--- a/boot/image-fdt.c
132+
+++ b/boot/image-fdt.c
133+
@@ -1,3 +1,4 @@
134+
+#warning "Building image-fdt.c: fdt fixup call chain instrumented for MAC debugging."
135+
// SPDX-License-Identifier: GPL-2.0+
136+
/*
137+
* Copyright (c) 2013, Google Inc.
138+
@@ -578,13 +579,31 @@ __weak int ft_verify_fdt(void *fdt)
139+
return 1;
140+
}
141+
142+
+#warning "Compiling arch_fixup_fdt() weak stub for MAC debugging."
143+
__weak int arch_fixup_fdt(void *blob)
144+
{
145+
+ log_info("[arch_fixup_fdt] called (weak stub)\n");
146+
return 0;
147+
}
148+
149+
+#warning "Compiling ft_board_setup() weak stub for MAC debugging."
150+
+__weak int ft_board_setup(void *blob, struct bd_info *bd)
151+
+{
152+
+ log_info("[ft_board_setup] called (weak stub)\n");
153+
+ return 0;
154+
+}
155+
+
156+
+#warning "Compiling ft_system_setup() weak stub for MAC debugging."
157+
+__weak int ft_system_setup(void *blob, struct bd_info *bd)
158+
+{
159+
+ log_info("[ft_system_setup] called (weak stub)\n");
160+
+ return 0;
161+
+}
162+
+
163+
+#warning "Compiling image_setup_libfdt()"
164+
int image_setup_libfdt(struct bootm_headers *images, void *blob, bool lmb)
165+
{
166+
+ log_info("[image_setup_libfdt] called\n");
167+
ulong *initrd_start = &images->initrd_start;
168+
ulong *initrd_end = &images->initrd_end;
169+
bool skip_board_fixup = false;
170+
@@ -632,6 +651,8 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob, bool lmb)
171+
strlen(images->fit_uname_cfg) + 1, 1);
172+
173+
/* Update ethernet nodes */
174+
+ #warning "Compiling fdt_fixup_ethernet() call site in image_setup_libfdt()"
175+
+ log_info("[image_setup_libfdt] calling fdt_fixup_ethernet\n");
176+
fdt_fixup_ethernet(blob);
177+
#if IS_ENABLED(CONFIG_CMD_PSTORE)
178+
/* Append PStore configuration */
179+
@@ -645,6 +666,8 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob, bool lmb)
180+
}
181+
182+
if (IS_ENABLED(CONFIG_OF_BOARD_SETUP) && !skip_board_fixup) {
183+
+ #warning "Compiling ft_board_setup() call site in image_setup_libfdt()"
184+
+ log_info("[image_setup_libfdt] calling ft_board_setup\n");
185+
fdt_ret = ft_board_setup(blob, gd->bd);
186+
if (fdt_ret) {
187+
printf("ERROR: board-specific fdt fixup failed: %s\n",
188+
@@ -652,7 +675,9 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob, bool lmb)
189+
goto err;
190+
}
191+
}
192+
+ #warning "Compiling ft_system_setup() call site in image_setup_libfdt()"
193+
if (IS_ENABLED(CONFIG_OF_SYSTEM_SETUP)) {
194+
+ log_info("[image_setup_libfdt] calling ft_system_setup\n");
195+
fdt_ret = ft_system_setup(blob, gd->bd);
196+
if (fdt_ret) {
197+
printf("ERROR: system-specific fdt fixup failed: %s\n",
198+
--
199+
Armbian
200+
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
CONFIG_ARM=y
2+
CONFIG_SKIP_LOWLEVEL_INIT=y
3+
CONFIG_SYS_HAS_NONCACHED_MEMORY=y
4+
CONFIG_COUNTER_FREQUENCY=24000000
5+
CONFIG_ARCH_ROCKCHIP=y
6+
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3588-blueberry-edge-v12-linux"
7+
CONFIG_ROCKCHIP_RK3588=y
8+
CONFIG_SPL_SERIAL=y
9+
CONFIG_TARGET_ROCK5B_RK3588=y
10+
CONFIG_SYS_LOAD_ADDR=0xc00800
11+
CONFIG_DEBUG_UART_BASE=0xFEB50000
12+
CONFIG_DEBUG_UART_CLOCK=24000000
13+
CONFIG_PCI=y
14+
CONFIG_DEBUG_UART=y
15+
CONFIG_AHCI=y
16+
CONFIG_FIT=y
17+
CONFIG_FIT_VERBOSE=y
18+
CONFIG_SPL_FIT_SIGNATURE=y
19+
CONFIG_SPL_LOAD_FIT=y
20+
CONFIG_LEGACY_IMAGE_FORMAT=y
21+
CONFIG_OF_BOARD_SETUP=y
22+
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-blueberry-edge-v12-linux.dtb"
23+
# CONFIG_DISPLAY_CPUINFO is not set
24+
CONFIG_DISPLAY_BOARDINFO_LATE=y
25+
CONFIG_SPL_MAX_SIZE=0x40000
26+
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
27+
CONFIG_SPL_ATF=y
28+
CONFIG_CMD_GPIO=y
29+
CONFIG_CMD_GPT=y
30+
CONFIG_CMD_I2C=y
31+
CONFIG_CMD_MMC=y
32+
CONFIG_CMD_PCI=y
33+
CONFIG_CMD_USB=y
34+
CONFIG_CMD_ROCKUSB=y
35+
CONFIG_CMD_USB_MASS_STORAGE=y
36+
# CONFIG_CMD_SETEXPR is not set
37+
CONFIG_CMD_REGULATOR=y
38+
# CONFIG_SPL_DOS_PARTITION is not set
39+
CONFIG_SPL_OF_CONTROL=y
40+
CONFIG_OF_LIVE=y
41+
CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
42+
CONFIG_SPL_DM_SEQ_ALIAS=y
43+
CONFIG_SPL_REGMAP=y
44+
CONFIG_SPL_SYSCON=y
45+
CONFIG_AHCI_PCI=y
46+
CONFIG_DWC_AHCI=y
47+
CONFIG_SPL_CLK=y
48+
# CONFIG_USB_FUNCTION_FASTBOOT is not set
49+
CONFIG_ROCKCHIP_GPIO=y
50+
CONFIG_SYS_I2C_ROCKCHIP=y
51+
CONFIG_LED=y
52+
CONFIG_LED_GPIO=y
53+
CONFIG_MISC=y
54+
CONFIG_SUPPORT_EMMC_RPMB=y
55+
CONFIG_MMC_DW=y
56+
CONFIG_MMC_DW_ROCKCHIP=y
57+
CONFIG_MMC_SDHCI=y
58+
CONFIG_MMC_SDHCI_SDMA=y
59+
CONFIG_MMC_SDHCI_ROCKCHIP=y
60+
CONFIG_PHY_REALTEK=y
61+
CONFIG_DWC_ETH_QOS=y
62+
CONFIG_DWC_ETH_QOS_ROCKCHIP=y
63+
CONFIG_NVME_PCI=y
64+
CONFIG_PCIE_DW_ROCKCHIP=y
65+
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
66+
CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
67+
CONFIG_PHY_ROCKCHIP_USBDP=y
68+
CONFIG_SPL_PINCTRL=y
69+
CONFIG_PWM_ROCKCHIP=y
70+
CONFIG_SPL_RAM=y
71+
CONFIG_SCSI=y
72+
CONFIG_BAUDRATE=1500000
73+
CONFIG_DEBUG_UART_SHIFT=2
74+
CONFIG_SYS_NS16550_MEM32=y
75+
CONFIG_SYSRESET=y
76+
CONFIG_USB=y
77+
CONFIG_USB_XHCI_HCD=y
78+
CONFIG_USB_EHCI_HCD=y
79+
CONFIG_USB_EHCI_GENERIC=y
80+
CONFIG_USB_OHCI_HCD=y
81+
CONFIG_USB_OHCI_GENERIC=y
82+
CONFIG_USB_DWC3=y
83+
CONFIG_USB_DWC3_GENERIC=y
84+
CONFIG_SPL_USB_DWC3_GENERIC=y
85+
CONFIG_USB_HOST_ETHER=y
86+
CONFIG_USB_ETHER_ASIX=y
87+
CONFIG_USB_ETHER_ASIX88179=y
88+
CONFIG_USB_ETHER_LAN75XX=y
89+
CONFIG_USB_ETHER_LAN78XX=y
90+
CONFIG_USB_ETHER_MCS7830=y
91+
CONFIG_USB_ETHER_RTL8152=y
92+
CONFIG_USB_ETHER_SMSC95XX=y
93+
CONFIG_USB_GADGET=y
94+
CONFIG_USB_GADGET_DOWNLOAD=y
95+
CONFIG_USB_FUNCTION_ROCKUSB=y
96+
CONFIG_ERRNO_STR=y

0 commit comments

Comments
 (0)