-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
rk3576: nanopi-r76s: add mainline u-boot and fix USB3.0 host #8997
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rk3576: nanopi-r76s: add mainline u-boot and fix USB3.0 host #8997
Conversation
- Add mainline U-Boot support for edge branch (v2026.01-rc2) - Add U-Boot defconfig patch for nanopi-r76s - Fix USB3.0 Type-A host port configuration in DTS - Enable USB OTG0 controller in host mode with power GPIO control - Set KERNEL_TEST_TARGET to edge
WalkthroughAdded NanoPi R76S support for Kernel Edge with mainline U-Boot integration. Changes include board configuration with kernel test target, dynamic U-Boot switching logic, boot target patching for RK3576, USB OTG mode adjustment in kernel device tree, and new U-Boot support files (device tree stub, defconfig, and full device tree source). Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Tip 📝 Customizable high-level summaries are now available in beta!You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Build Log: https://paste.armbian.de/ovuwufikox |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
config/boards/nanopi-r76s.conf (1)
15-15: Minor: Inconsistent function naming convention.The existing function
post_family_tweaks__nanopi-r76s_naming_audiosuses a hyphen in the board name, while the new functions use underscores (nanopi_r76s). While both are valid Bash function names, consistent naming improves maintainability.Consider renaming for consistency if the build system doesn't rely on the hyphenated form:
-function post_family_tweaks__nanopi-r76s_naming_audios() { +function post_family_tweaks__nanopi_r76s_naming_audios() {
🧹 Nitpick comments (1)
patch/u-boot/v2026.01/add-nanopi-r76s-support.patch (1)
156-181: Consider addingpinctrl-namesproperty to LED nodes.The LED nodes have
pinctrl-0defined but lack the correspondingpinctrl-names = "default";property. While the kernel typically defaults to "default" when there's a single pinctrl state, explicitly declaring it improves clarity and follows device tree conventions.sys_led: led-0 { color = <LED_COLOR_ID_RED>; function = LED_FUNCTION_HEARTBEAT; gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; + pinctrl-names = "default"; pinctrl-0 = <&sys_led_pin>; }; lan_led: led-1 { color = <LED_COLOR_ID_GREEN>; function = LED_FUNCTION_STATUS; gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; pinctrl-0 = <&lan_led_pin>; }; wan_led: led-2 { color = <LED_COLOR_ID_GREEN>; function = LED_FUNCTION_STATUS; gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; pinctrl-0 = <&wan_led_pin>; };
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
config/boards/nanopi-r76s.conf(2 hunks)patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dts(3 hunks)patch/u-boot/v2026.01/add-nanopi-r76s-support.patch(1 hunks)
🧰 Additional context used
🧠 Learnings (22)
📓 Common learnings
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:222-230
Timestamp: 2025-09-14T06:32:29.806Z
Learning: In the Armbian build system, the write_uboot_platform() function implementations follow different patterns across Rockchip family files. The newer standard (used in rockchip64_common.inc and rk3506) includes 'status=none' parameter in dd commands, while older implementations (rk3288, rk322x) use an older pattern without this parameter. The rk3506 implementation correctly follows the current Rockchip family standard.
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:10:25.610Z
Learning: In the Armbian build system, rk32xx and rk33xx Rockchip SoCs no longer have BSP-based (vendor) kernel branches. The rk3506 is the first 32-bit Rockchip SoC to use the vendor branch in the current codebase.
Learnt from: rpardini
Repo: armbian/build PR: 8879
File: config/sources/families/uefi-x86.conf:0-0
Timestamp: 2025-11-06T15:36:04.682Z
Learning: As of PR #8879, the uefi-x86 family in the Armbian build system now includes kernel patches for the first time. The current and edge branches for uefi-x86 are specifically configured for Apple T2-based x86 machines, including T2-specific patches from the linux-t2 project and custom kernel configuration options for Apple hardware drivers.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Learnt from: SuperKali
Repo: armbian/build PR: 8936
File: patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dts:800-802
Timestamp: 2025-11-15T14:33:30.654Z
Learning: In RK3576 device tree files (like rk3576-nanopi-r76s.dts), the serial0 alias is already defined in the upstream kernel's rk3576.dtsi base file, so board-specific DTS files do not need to redeclare it when enabling &uart0 for serial console.
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/kernel/linux-filogic-edge.config:344-470
Timestamp: 2025-10-11T19:52:54.648Z
Learning: The chainsx/linux-filogic kernel (legacy branch) for BPI-R4 uses out-of-tree proprietary drivers (CONFIG_NET_DSA_AN8855, CONFIG_AIROHA_EN8801SC_PHY, CONFIG_AIR_AN8855_PHY, CONFIG_MDIO_AN8855, CONFIG_MFD_AIROHA_AN8855). The frank-w/BPI-Router-Linux kernel (current and edge branches) uses mainline kernel drivers instead: CONFIG_NET_DSA_MT7530 for the DSA switch and CONFIG_MEDIATEK_2P5GE_PHY for PHY support. These provide equivalent functionality for BPI-R4 networking.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:51:53.015Z
Learning: In Armbian's wireless driver configuration, CONFIG_RK_WIFI_DEVICE_* options are Rockchip-specific device registration settings, while CONFIG_WLAN_UWE* are the actual cross-platform driver modules for UWE5622 wireless chips. The UWE5622 chip (manufactured by Unisoc/Spreadtrum) is used on multiple Allwinner boards including Orange Pi Zero 2/2W/3 and Orange Pi 3 LTS, so CONFIG_WLAN_UWE5621/5622 along with Unisoc infrastructure options (CONFIG_SPARD_WLAN_SUPPORT, CONFIG_SC23XX, CONFIG_UNISOC_WIFI_PS, CONFIG_WCN_BSP_DRIVER_BUILDIN) are correct in sunxi64 kernel configs.
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Learnt from: SuperKali
Repo: armbian/build PR: 8608
File: lib/functions/compilation/patch/drivers_network.sh:361-363
Timestamp: 2025-09-11T06:06:52.328Z
Learning: For the RTW88 SDIO RF path detection fix patch (004-rtw88-sdio-rf-path-detection-fix.patch), SuperKali prefers using exact version matching (eq 6.1 || eq 6.16) rather than range checks, as the patch has only been tested on those specific kernel versions and may be mainstreamed soon.
📚 Learning: 2025-11-15T14:33:30.654Z
Learnt from: SuperKali
Repo: armbian/build PR: 8936
File: patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dts:800-802
Timestamp: 2025-11-15T14:33:30.654Z
Learning: In RK3576 device tree files (like rk3576-nanopi-r76s.dts), the serial0 alias is already defined in the upstream kernel's rk3576.dtsi base file, so board-specific DTS files do not need to redeclare it when enabling &uart0 for serial console.
Applied to files:
patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dtspatch/u-boot/v2026.01/add-nanopi-r76s-support.patch
📚 Learning: 2025-11-08T06:39:24.527Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8886
File: patch/kernel/rk35xx-vendor-6.1/dt/rk3528-nanopi-rev01.dts:9-9
Timestamp: 2025-11-08T06:39:24.527Z
Learning: In Armbian's Rockchip vendor kernel branches (rk35xx-vendor), device tree files may not require the same headers as mainline Linux. For example, input key definitions like KEY_BACK and KEY_VOLUMEUP may be handled differently in BSP kernels and don't necessarily need explicit includes like <dt-bindings/input/input.h> that would be required in mainline kernel device trees.
Applied to files:
patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dts
📚 Learning: 2025-09-14T06:32:29.806Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:222-230
Timestamp: 2025-09-14T06:32:29.806Z
Learning: In the Armbian build system, the write_uboot_platform() function implementations follow different patterns across Rockchip family files. The newer standard (used in rockchip64_common.inc and rk3506) includes 'status=none' parameter in dd commands, while older implementations (rk3288, rk322x) use an older pattern without this parameter. The rk3506 implementation correctly follows the current Rockchip family standard.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patchconfig/boards/nanopi-r76s.conf
📚 Learning: 2025-11-20T18:20:11.985Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8968
File: patch/u-boot/u-boot-sunxi/arm64-dts-sun50i-h6-orangepi.dtsi-Rollback-r_rsb-to-r_i2c.patch:36-36
Timestamp: 2025-11-20T18:20:11.985Z
Learning: The rewrite-patches tool (REWRITE_PATCHES=yes) in the Armbian build system can inadvertently introduce semantic changes when the u-boot/kernel git base revision differs from expected state. The tool applies patches, commits them, and re-exports them using git format-patch, which can cause the re-exported patch to reflect the base revision's state rather than preserving the original patch intent. This is particularly problematic for device tree changes like interrupt specifications. The tool currently lacks validation mechanisms to detect such semantic drift, and affected patches must be manually corrected after rewriting.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patchconfig/boards/nanopi-r76s.conf
📚 Learning: 2025-03-31T22:20:41.849Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:73-75
Timestamp: 2025-03-31T22:20:41.849Z
Learning: When porting patches between U-Boot versions (like from 2025.01 to 2025.04), rpardini prefers to maintain patches as-is rather than introducing refactoring changes, even when potential improvements are identified. This approach prioritizes consistency and reduces the risk of introducing new issues.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patch
📚 Learning: 2025-07-25T03:51:50.830Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patchconfig/boards/nanopi-r76s.conf
📚 Learning: 2025-03-31T22:20:48.475Z
Learnt from: rpardini
Repo: armbian/build PR: 8044
File: patch/u-boot/v2025.04/cmd-fileenv-read-string-from-file-into-env.patch:76-86
Timestamp: 2025-03-31T22:20:48.475Z
Learning: For the Armbian build project, maintaining consistency with existing patches across U-Boot versions (such as between 2025.01 and 2025.04) is prioritized over refactoring individual patches for code improvements.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patchconfig/boards/nanopi-r76s.conf
📚 Learning: 2025-10-26T10:41:35.118Z
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Applied to files:
patch/u-boot/v2026.01/add-nanopi-r76s-support.patchconfig/boards/nanopi-r76s.conf
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-09-12T19:28:38.491Z
Learnt from: Grippy98
Repo: armbian/build PR: 8622
File: config/sources/families/k3.conf:66-66
Timestamp: 2025-09-12T19:28:38.491Z
Learning: In the Armbian k3 family build system (config/sources/families/k3.conf), builds do not fail when TIBOOT3_BOOTCONFIG is unset, even though tiboot3.bin is still listed in UBOOT_TARGET_MAP. The gating mechanism in pre_config_uboot_target__build_first_stage function works as intended to conditionally build/copy tiboot3.bin only when TIBOOT3_BOOTCONFIG is defined.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-11-10T22:05:40.490Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8913
File: config/sources/families/k3-beagle.conf:16-16
Timestamp: 2025-11-10T22:05:40.490Z
Learning: In the Armbian build system, kernel branches using non-mainline/vendor forks (like BeagleBoard's linux repository) should be named "vendor" or "vendor-rt" rather than "current" or "edge". The "current" and "edge" naming is reserved for mainline kernel branches. This affects both the case statement in family config files (e.g., `vendor | vendor-rt)` instead of `current | current-rt)`) and the corresponding KERNEL_TARGET declarations in board config files.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-09-14T06:29:18.958Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:29:18.958Z
Learning: In the Armbian build system, vendor branch configurations in family files are designed to be shared across multiple SoCs within the same family that use the same vendor kernel tree. For example, rk35xx and rockchip-rk3588 families both use identical vendor branch settings (same KERNELSOURCE, KERNELBRANCH, and KERNELPATCHDIR), demonstrating that vendor branches are intentionally generic rather than SoC-specific.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-07-17T04:12:33.125Z
Learnt from: pyavitz
Repo: armbian/build PR: 8388
File: config/boards/kickpik2b.conf:1-14
Timestamp: 2025-07-17T04:12:33.125Z
Learning: In the Armbian build system, board configuration files (*.conf) follow a project standard of not including shebang lines, even though they contain bash code and are sourced by the build system. This is an established Armbian convention that individual contributors are expected to follow, and changes to this standard would require broader project maintainer approval.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-10-14T05:08:11.785Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8754
File: config/boards/bestv-r3300-l.csc:14-16
Timestamp: 2025-10-14T05:08:11.785Z
Learning: In the Armbian build system, BOOTBRANCH_BOARD is a valid framework variable used as a fallback when BOOTBRANCH is unset. The framework checks BOOTBRANCH_BOARD before applying the default bootloader branch value (see config/sources/common.conf). Board configuration files can use BOOTBRANCH_BOARD to specify the bootloader branch.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-08-21T08:10:25.459Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/nanopiduo2.csc:12-12
Timestamp: 2025-08-21T08:10:25.459Z
Learning: KERNEL_TARGET and KERNEL_TEST_TARGET in Armbian build system do not have enforced validation relationships. KERNEL_TARGET is used for interactive menu ordering and branch validation, while KERNEL_TEST_TARGET is used for build list generation and recorded in /etc/armbian-release. No existing codebase validation enforces that KERNEL_TEST_TARGET values must be present in KERNEL_TARGET.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-10-13T02:26:18.249Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/sources/families/filogic.conf:61-68
Timestamp: 2025-10-13T02:26:18.249Z
Learning: In the Armbian build system, the "edge" kernel branch is intended to be bleeding-edge and experimental. It does not require hardware testing or stability verification before merging, as it's expected to contain potentially unstable or untested code for early adopters and developers.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the modern recommended approach for kernel configuration is to use the kernel-config command via "./compile.sh BOARD=boardname BRANCH=branchname kernel-config" instead of the deprecated KERNEL_CONFIGURE=yes flag. This provides a two-step workflow: configure using menuconfig, then build, with better transparency and control over configuration changes.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-11-10T23:44:53.363Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-11-10T23:44:53.363Z
Learning: For the RV1106 family in Armbian (config/sources/families/rockchip-rv1106.conf), udev.children-max=1 is set in the kernel boot parameters to prevent early-boot OOM errors. The RV1106 has a single-core CPU, so parallelism in udev child processes provides no practical benefit. Testing higher values is impractical due to the difficulty of monitoring at this early boot stage.
Applied to files:
config/boards/nanopi-r76s.conf
📚 Learning: 2025-09-07T17:39:32.272Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8586
File: config/boards/nanopi-r76s.conf:15-21
Timestamp: 2025-09-07T17:39:32.272Z
Learning: In the Armbian build system, the variables $BOARD and $SDCARD are always set by the build framework, so guard checks for these variables are unnecessary in board configuration files and hook functions.
Applied to files:
config/boards/nanopi-r76s.conf
🔇 Additional comments (10)
patch/u-boot/v2026.01/add-nanopi-r76s-support.patch (5)
31-37: LGTM! U-Boot DTSI properly extends base and configures LED state.The inclusion of
rk3576-u-boot.dtsiand settingsys_leddefault-state to "on" for boot indication is appropriate.
44-104: LGTM! Defconfig properly enables required features for NanoPi R76S.The configuration correctly enables:
- RK3576-specific options
- PCIe for RTL8125 2.5GbE NICs
- USB3 with DWC3 and associated PHYs
- RK806 PMIC support
- GPIO LEDs
The 1500000 baud rate matches the DTS
stdout-path.
934-951: LGTM! USB3.0 Type-A host port configuration correctly implemented.The configuration properly addresses the USB3.0 fix mentioned in the PR:
dr_mode = "host"correctly sets the DRD controller to host-only modephy-supply = <&vcc5v0_usb_otg0>references the GPIO-controlled regulator (lines 268-279)This aligns with the PR objective of fixing the USB3.0 Type-A host port.
765-802: LGTM! PCIe configuration for dual RTL8125 2.5GbE NICs.The configuration correctly sets up both PCIe controllers with proper reset GPIOs and PHY references. The placeholder MAC addresses (
00 00 00 00 00 00) are standard and will be overwritten at runtime from U-Boot or EEPROM.
374-730: LGTM! RK806 PMIC configuration with comprehensive regulator definitions.The PMIC setup is thorough with:
- Proper power supply chains from
vcc_5v0_sys- Complete regulator definitions for all power domains (CPU, GPU, DDR, logic, I/O)
- Correct suspend state configurations
- DVS pin function definitions for power management
config/boards/nanopi-r76s.conf (3)
6-6: LGTM! KERNEL_TEST_TARGET appropriately set for edge branch testing.This enables CI testing for the edge kernel branch which is the target for mainline U-Boot support.
47-58: LGTM! Boot order patching prioritizes SD card for development/recovery.The SD-first boot order (
mmc0 mmc1 nvme...) is appropriate for the NanoPi R76S where mmc0 is the SD card slot. This enables easier development and recovery workflows.The use of
regular_git diffwith|| trueensures the build doesn't fail if there are no changes to display.
23-45: LGTM! Verification confirms proper blob variable configuration.The verification shows that
BL31_BLOBandDDR_BLOBare correctly defined for RK3576 at lines 148-149 inconfig/sources/families/include/rockchip64_common.inc:
DDR_BLOB="rk35/rk3576_ddr_lp4_2112MHz_lp5_2736MHz_v1.08.bin"(pinned to v1.08)BL31_BLOB="rk35/rk3576_bl31_v1.20.elf"The nanopi-r76s board correctly inherits these definitions through the rk35xx family configuration.
patch/kernel/archive/rockchip64-6.18/dt/rk3576-nanopi-r76s.dts (2)
156-167: USB OTG0 VBUS regulator wiring matches RK3576 patterns
vcc5v0_usb_otg0is hooked up as expected for an OTG0 Type‑A VBUS switch: 5 V fixed regulator, GPIO0_PD1 drive viausb_otg0_pwrenpinctrl, andvin-supplyfrom the main 5 V rail. This aligns with how upstream RK3576 boards model OTG0/Type‑C VBUS regulators and should work fine for a GPIO‑controlled host port. (lists.infradead.org)
821-838: DRD0 forced host mode plus PHY VBUS supply is appropriate for Type‑A hostSwitching
&usb_drd0_dwc3todr_mode = "host"(and droppingextcon) matches a dedicated USB3.0 Type‑A host port, and tying&u2phy0_otg’sphy-supplytovcc5v0_usb_otg0follows Rockchip’s recommended pattern for GPIO‑controlled VBUS on RK3576. This will intentionally disable OTG/device use on this port, which is fine if the hardware is host‑only as described. (lists.infradead.org)
|
✅ This PR has been reviewed and approved — all set for merge! |
* live_main_upstream/main: (227 commits) rockchip64: rewrite patches rockchip64: remove upstreamed fixes Change mainline to rc7, manually fix meson64 patch `Automatic` board configs status synchronise KERNEL_TEST_TARGET is just override. We won't both targets, so we have both. rk3576: nanopi-r76s: add mainline u-boot and fix USB3.0 host (armbian#8997) Rock-5B-Plus: Use upstream device-tree name Radxa E54c: change board support status `Automatic` board configs status synchronise `Automatic` board configs status synchronise build(deps): bump tj-actions/changed-files bananapi-r4 bpi-r4 board config - no video output build(deps): bump actions/checkout from 5 to 6 Radxa Rock 2A and F: promote boards to standard support config: drop questing and resolute symlinks for package definitions Drop Thunderbolt in desktop packages, but enable in minimal, arch amd64 only Update radxa-e52c.conf boards / Helios4: reorder some lines in the config file boards / Helios4: Fix: libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND boards / Helios4: fix 0002 patch after bump U-Boot v2025.10 boards / Helios4: rebase previous u-boot patchset to v2025.10 boards / Helios4: reenable Armbian patchset boards / Helios4: drop obsolete patches and those not applicable to helios4 boards / Helios4: rename some patches in preparation for rebase boards / Helios4: enable SATA u-boot artifact boards / Helios4: switch U-Boot to mainline 2025.10 radxa-rock-4d: Move to standard support (armbian#8981) Sync support status to match with /download Rock5B+: Udev rule for Radxa Display 8HD sunxi64: Enable KVM virtualization support for current kernel Discord x86: add external sources `Automatic` board configs status synchronise rock-5b: u-boot: edge: bump to v2026.01-rc2; use mainline ATF; bootorder; fancy u-boot Desktop (mainly Gnome ) - add additional packages, small fixes and improvements lib / main-config.sh: enable APA extension for questing and resolute builds. Closes: armbian#8966 ti: configs: boards: Add BOOT_SOC variable ti: configs: boards: Add AM62L EVM (tmds62levm) board support Rock5B-Plus and Rock5T: Use upstream u-boot (armbian#8918) youyeetoo-r1: enable OUT1/OUT2 switches for es8323 headphone output on vendor kernel (armbian#8963) Fixing updating submodule Powere management - make it conditional, enable on UEFI targets, else disabled `Automatic` board configs status synchronise uefi: x86: current (6.12) and edge (6.18): add Apple T2 patches Add watchdog package into image, hardware watchdog works Allow Helios64 to do separate /boot partition only if root placed on fs than unbootable for device u-boot: prepare v2026.01 patch directory Move gxlimg to board level and some clean rockchip: cleanup and rewrite patches for `edge` rockchip: cleanup and rewrite patches for `current` nanopct6(-lts): u-boot: bump to v2026.01-rc2 odroidhc4: u-boot: bump to v2026.01-rc2 cm3588-nas: u-boot: bump to v2026.01-rc2, enable BTRFS support cm3588-nas: u-boot: fix `led-1` to `green` for preboot blinking khadas-vim3l: u-boot: bump to v2026.01-rc2, enable BTRFS and more nanopi-r6c: u-boot: bump to v2026.01-rc2; enable BTRFS support uefi-loong64-6.18: rewrite patches against v6.18-rc6, no changes mainline-kernel: bump 6.18 to v6.18-rc6 jsoninfo: introduce `inventory-artifacts` cli artifact-kernel: include LINUXCONFIG and ARMBIAN_KERNEL_DEB_NAME in artifact_input_variables config/templates: introduce targets-all-kernels.yaml for optimized kernel inventory-ing Upgrade Allwinner CURRENT kernels to latest Generic bootscript template Enable bootscript templating `Automatic` board configs status synchronise BeagleBoard and Description Updates ti: configs: family: k3: Update vendor-edge to pull latest TI PSDK tag ti: configs: family: k3: Update to bootable Processor SDK release tag ti: configs: family: k3: Add upstream edge branch ti: configs: family: k3: Change current/edge to vendor/vendor-edge sm8250 current: Add support to load QUP SE Firmware via Linux subsystem `Automatic` board configs status synchronise extensions: gxlimg: Update repo URL nanopi-m6: drop vendor uboot nanopi-r6s: remove old legacy uboot files && update mainline uboot sm8250 current: Select all USB CAN adapters under the CAN USB interfaces menu as M sm8250 current: Select all USB network adapters under the USB_NET_DRIVERS menu as M tools: Bump `BATCAT_VERSION` from 0.25.0 to 0.26.0 `Automatic` board configs status synchronise Add Ubuntu 25.10 / 26.04 questing and resolute as csc build target, demote Bookworm to csc Related to armbian/documentation#842, update extensions/gen-sample-extension-docs.sh to reference the opt-out docs for hooks rockchip: rk3576: Fix serial console to use UART0 (ttyS0) (armbian#8936) Drop patches that has been upstreamed - rockchip and sm8550 orangepi5: drop vendor uboot MOTD: deterministic spacing, tidy and compact output Bugfix: quotes were downloading to wrong location maint: cleanup board config files (armbian#8929) Use next patch version when using main action script Helios64: workaround fancontrol /dev restriction vs Helios64 udev /dev symlinks Add type of bootable fs for ODroid-N2 Preserve timestamps when copying log files Rockchip64: enable Qcom ath12 (wifi 7) support UFS: Fix CI behavior (armbian#8924) UFS: Fix ci config generation (armbian#8923) First login: create docker group and add normal user to it (armbian#8920) Framework: copy user provided first boot config at build time `Automatic` board configs status synchronise k3-beagle: Add config for BeagleBoard.org Linux and U-Boot k3: Factor out all K3 common configuration into k3_common.inc k3: Use CORESDK_TAG for setting ATFBRANCH beagley-ai: Switch current branch to 6.12 Beagle kernel ... Signed-off-by: Jonas Wood <[email protected]>
* live_main_upstream/main: (227 commits) rockchip64: rewrite patches rockchip64: remove upstreamed fixes Change mainline to rc7, manually fix meson64 patch `Automatic` board configs status synchronise KERNEL_TEST_TARGET is just override. We won't both targets, so we have both. rk3576: nanopi-r76s: add mainline u-boot and fix USB3.0 host (armbian#8997) Rock-5B-Plus: Use upstream device-tree name Radxa E54c: change board support status `Automatic` board configs status synchronise `Automatic` board configs status synchronise build(deps): bump tj-actions/changed-files bananapi-r4 bpi-r4 board config - no video output build(deps): bump actions/checkout from 5 to 6 Radxa Rock 2A and F: promote boards to standard support config: drop questing and resolute symlinks for package definitions Drop Thunderbolt in desktop packages, but enable in minimal, arch amd64 only Update radxa-e52c.conf boards / Helios4: reorder some lines in the config file boards / Helios4: Fix: libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND boards / Helios4: fix 0002 patch after bump U-Boot v2025.10 boards / Helios4: rebase previous u-boot patchset to v2025.10 boards / Helios4: reenable Armbian patchset boards / Helios4: drop obsolete patches and those not applicable to helios4 boards / Helios4: rename some patches in preparation for rebase boards / Helios4: enable SATA u-boot artifact boards / Helios4: switch U-Boot to mainline 2025.10 radxa-rock-4d: Move to standard support (armbian#8981) Sync support status to match with /download Rock5B+: Udev rule for Radxa Display 8HD sunxi64: Enable KVM virtualization support for current kernel Discord x86: add external sources `Automatic` board configs status synchronise rock-5b: u-boot: edge: bump to v2026.01-rc2; use mainline ATF; bootorder; fancy u-boot Desktop (mainly Gnome ) - add additional packages, small fixes and improvements lib / main-config.sh: enable APA extension for questing and resolute builds. Closes: armbian#8966 ti: configs: boards: Add BOOT_SOC variable ti: configs: boards: Add AM62L EVM (tmds62levm) board support Rock5B-Plus and Rock5T: Use upstream u-boot (armbian#8918) youyeetoo-r1: enable OUT1/OUT2 switches for es8323 headphone output on vendor kernel (armbian#8963) Fixing updating submodule Powere management - make it conditional, enable on UEFI targets, else disabled `Automatic` board configs status synchronise uefi: x86: current (6.12) and edge (6.18): add Apple T2 patches Add watchdog package into image, hardware watchdog works Allow Helios64 to do separate /boot partition only if root placed on fs than unbootable for device u-boot: prepare v2026.01 patch directory Move gxlimg to board level and some clean rockchip: cleanup and rewrite patches for `edge` rockchip: cleanup and rewrite patches for `current` nanopct6(-lts): u-boot: bump to v2026.01-rc2 odroidhc4: u-boot: bump to v2026.01-rc2 cm3588-nas: u-boot: bump to v2026.01-rc2, enable BTRFS support cm3588-nas: u-boot: fix `led-1` to `green` for preboot blinking khadas-vim3l: u-boot: bump to v2026.01-rc2, enable BTRFS and more nanopi-r6c: u-boot: bump to v2026.01-rc2; enable BTRFS support uefi-loong64-6.18: rewrite patches against v6.18-rc6, no changes mainline-kernel: bump 6.18 to v6.18-rc6 jsoninfo: introduce `inventory-artifacts` cli artifact-kernel: include LINUXCONFIG and ARMBIAN_KERNEL_DEB_NAME in artifact_input_variables config/templates: introduce targets-all-kernels.yaml for optimized kernel inventory-ing Upgrade Allwinner CURRENT kernels to latest Generic bootscript template Enable bootscript templating `Automatic` board configs status synchronise BeagleBoard and Description Updates ti: configs: family: k3: Update vendor-edge to pull latest TI PSDK tag ti: configs: family: k3: Update to bootable Processor SDK release tag ti: configs: family: k3: Add upstream edge branch ti: configs: family: k3: Change current/edge to vendor/vendor-edge sm8250 current: Add support to load QUP SE Firmware via Linux subsystem `Automatic` board configs status synchronise extensions: gxlimg: Update repo URL nanopi-m6: drop vendor uboot nanopi-r6s: remove old legacy uboot files && update mainline uboot sm8250 current: Select all USB CAN adapters under the CAN USB interfaces menu as M sm8250 current: Select all USB network adapters under the USB_NET_DRIVERS menu as M tools: Bump `BATCAT_VERSION` from 0.25.0 to 0.26.0 `Automatic` board configs status synchronise Add Ubuntu 25.10 / 26.04 questing and resolute as csc build target, demote Bookworm to csc Related to armbian/documentation#842, update extensions/gen-sample-extension-docs.sh to reference the opt-out docs for hooks rockchip: rk3576: Fix serial console to use UART0 (ttyS0) (armbian#8936) Drop patches that has been upstreamed - rockchip and sm8550 orangepi5: drop vendor uboot MOTD: deterministic spacing, tidy and compact output Bugfix: quotes were downloading to wrong location maint: cleanup board config files (armbian#8929) Use next patch version when using main action script Helios64: workaround fancontrol /dev restriction vs Helios64 udev /dev symlinks Add type of bootable fs for ODroid-N2 Preserve timestamps when copying log files Rockchip64: enable Qcom ath12 (wifi 7) support UFS: Fix CI behavior (armbian#8924) UFS: Fix ci config generation (armbian#8923) First login: create docker group and add normal user to it (armbian#8920) Framework: copy user provided first boot config at build time `Automatic` board configs status synchronise k3-beagle: Add config for BeagleBoard.org Linux and U-Boot k3: Factor out all K3 common configuration into k3_common.inc k3: Use CORESDK_TAG for setting ATFBRANCH beagley-ai: Switch current branch to 6.12 Beagle kernel ... Signed-off-by: Jonas Wood <[email protected]>
* live_main_upstream/main: (227 commits) rockchip64: rewrite patches rockchip64: remove upstreamed fixes Change mainline to rc7, manually fix meson64 patch `Automatic` board configs status synchronise KERNEL_TEST_TARGET is just override. We won't both targets, so we have both. rk3576: nanopi-r76s: add mainline u-boot and fix USB3.0 host (armbian#8997) Rock-5B-Plus: Use upstream device-tree name Radxa E54c: change board support status `Automatic` board configs status synchronise `Automatic` board configs status synchronise build(deps): bump tj-actions/changed-files bananapi-r4 bpi-r4 board config - no video output build(deps): bump actions/checkout from 5 to 6 Radxa Rock 2A and F: promote boards to standard support config: drop questing and resolute symlinks for package definitions Drop Thunderbolt in desktop packages, but enable in minimal, arch amd64 only Update radxa-e52c.conf boards / Helios4: reorder some lines in the config file boards / Helios4: Fix: libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND boards / Helios4: fix 0002 patch after bump U-Boot v2025.10 boards / Helios4: rebase previous u-boot patchset to v2025.10 boards / Helios4: reenable Armbian patchset boards / Helios4: drop obsolete patches and those not applicable to helios4 boards / Helios4: rename some patches in preparation for rebase boards / Helios4: enable SATA u-boot artifact boards / Helios4: switch U-Boot to mainline 2025.10 radxa-rock-4d: Move to standard support (armbian#8981) Sync support status to match with /download Rock5B+: Udev rule for Radxa Display 8HD sunxi64: Enable KVM virtualization support for current kernel Discord x86: add external sources `Automatic` board configs status synchronise rock-5b: u-boot: edge: bump to v2026.01-rc2; use mainline ATF; bootorder; fancy u-boot Desktop (mainly Gnome ) - add additional packages, small fixes and improvements lib / main-config.sh: enable APA extension for questing and resolute builds. Closes: armbian#8966 ti: configs: boards: Add BOOT_SOC variable ti: configs: boards: Add AM62L EVM (tmds62levm) board support Rock5B-Plus and Rock5T: Use upstream u-boot (armbian#8918) youyeetoo-r1: enable OUT1/OUT2 switches for es8323 headphone output on vendor kernel (armbian#8963) Fixing updating submodule Powere management - make it conditional, enable on UEFI targets, else disabled `Automatic` board configs status synchronise uefi: x86: current (6.12) and edge (6.18): add Apple T2 patches Add watchdog package into image, hardware watchdog works Allow Helios64 to do separate /boot partition only if root placed on fs than unbootable for device u-boot: prepare v2026.01 patch directory Move gxlimg to board level and some clean rockchip: cleanup and rewrite patches for `edge` rockchip: cleanup and rewrite patches for `current` nanopct6(-lts): u-boot: bump to v2026.01-rc2 odroidhc4: u-boot: bump to v2026.01-rc2 cm3588-nas: u-boot: bump to v2026.01-rc2, enable BTRFS support cm3588-nas: u-boot: fix `led-1` to `green` for preboot blinking khadas-vim3l: u-boot: bump to v2026.01-rc2, enable BTRFS and more nanopi-r6c: u-boot: bump to v2026.01-rc2; enable BTRFS support uefi-loong64-6.18: rewrite patches against v6.18-rc6, no changes mainline-kernel: bump 6.18 to v6.18-rc6 jsoninfo: introduce `inventory-artifacts` cli artifact-kernel: include LINUXCONFIG and ARMBIAN_KERNEL_DEB_NAME in artifact_input_variables config/templates: introduce targets-all-kernels.yaml for optimized kernel inventory-ing Upgrade Allwinner CURRENT kernels to latest Generic bootscript template Enable bootscript templating `Automatic` board configs status synchronise BeagleBoard and Description Updates ti: configs: family: k3: Update vendor-edge to pull latest TI PSDK tag ti: configs: family: k3: Update to bootable Processor SDK release tag ti: configs: family: k3: Add upstream edge branch ti: configs: family: k3: Change current/edge to vendor/vendor-edge sm8250 current: Add support to load QUP SE Firmware via Linux subsystem `Automatic` board configs status synchronise extensions: gxlimg: Update repo URL nanopi-m6: drop vendor uboot nanopi-r6s: remove old legacy uboot files && update mainline uboot sm8250 current: Select all USB CAN adapters under the CAN USB interfaces menu as M sm8250 current: Select all USB network adapters under the USB_NET_DRIVERS menu as M tools: Bump `BATCAT_VERSION` from 0.25.0 to 0.26.0 `Automatic` board configs status synchronise Add Ubuntu 25.10 / 26.04 questing and resolute as csc build target, demote Bookworm to csc Related to armbian/documentation#842, update extensions/gen-sample-extension-docs.sh to reference the opt-out docs for hooks rockchip: rk3576: Fix serial console to use UART0 (ttyS0) (armbian#8936) Drop patches that has been upstreamed - rockchip and sm8550 orangepi5: drop vendor uboot MOTD: deterministic spacing, tidy and compact output Bugfix: quotes were downloading to wrong location maint: cleanup board config files (armbian#8929) Use next patch version when using main action script Helios64: workaround fancontrol /dev restriction vs Helios64 udev /dev symlinks Add type of bootable fs for ODroid-N2 Preserve timestamps when copying log files Rockchip64: enable Qcom ath12 (wifi 7) support UFS: Fix CI behavior (armbian#8924) UFS: Fix ci config generation (armbian#8923) First login: create docker group and add normal user to it (armbian#8920) Framework: copy user provided first boot config at build time `Automatic` board configs status synchronise k3-beagle: Add config for BeagleBoard.org Linux and U-Boot k3: Factor out all K3 common configuration into k3_common.inc k3: Use CORESDK_TAG for setting ATFBRANCH beagley-ai: Switch current branch to 6.12 Beagle kernel ... Signed-off-by: Jonas Wood <[email protected]>
Description
Add mainline U-Boot support for NanoPi R76S (RK3576) and fix USB3.0 Type-A host port that was not working.
The USB fix includes:
Jira reference number AR-2782
How Has This Been Tested?
Checklist: