Skip to content

Conversation

@iav
Copy link
Contributor

@iav iav commented Dec 24, 2025

use dts from linux upstream

studies with AI agent.
Boot log:

U-Boot TPL 2026.01-rc5_armbian-2026.01-rc5-S0f6f-Ped1b-Hbed3-Vb80f-Bbf55-R448a (Dec 24 2025 - 01:16:37)

yes, only one line.

Summary by CodeRabbit

  • New Features

    • Full Helios64 board support: board init, device tree, and defconfig provide hardware wiring, regulators, and peripherals.
    • Multiple boot/storage options enabled (MMC, SPI flash, USB, network) with board-specific boot targets and updated boot defaults.
    • OTP support: read board serial/revision and auto-populate MAC and board info.
    • Enabled U-Boot Btrfs extension.
  • Bug Fixes

    • Fixed string helper declarations to prevent build-time warnings/errors.
  • Chores

    • Added maintainer entry and packaging/config metadata; minor formatting tweaks.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 24, 2025

📝 Walkthrough

Walkthrough

Adds full U-Boot support for Kobol Helios64: board sources and Make/Kconfig entries, SPI OTP handling, defconfig and device-tree files, board patch overlays, and boot configuration changes (BOOT_SCENARIO/BOOTBRANCH/DDR_BLOB and ROOTFS_TYPE/BOOTFS_TYPE logic).

Changes

Cohort / File(s) Summary
Board config & boot vars
config/boards/helios64.conf, patch/u-boot/v2026.01/0000.patching_config.yaml
Add BOOTBRANCH, BOOTPATCHDIR, DDR_BLOB; switch BOOT_SCENARIObinman-atf-mainline; enable uboot-btrfs; tighten ROOTFS_TYPE regex (excludes btrfs) affecting BOOTFS_TYPE default and BOOTPART_REQUIRED.
U-Boot board overlay mapping
patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
New patching_config.yaml that maps board overlays (defconfig → configs, dt_upstream_rockchip → dts/upstream/..., dt_uboot → arch/arm/dts, board → board/kobol/helios64).
U-Boot small patch & Kconfig/header
patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch, .../1001-helios64-enable-target.patch, .../1002-helios64-config-header.patch, .../board/Kconfig
Add #include <string.h>; introduce TARGET_HELIOS64 and board Kconfig defaults; add include/configs/helios64.h with SDRAM, env (MMC/SPI), SCSI guards and compact BOOT_TARGET_DEVICES.
Build files & maintainer
patch/u-boot/v2026.01/board_helios64/board/Makefile, .../board/MAINTAINERS
Add obj-y := helios64.o sys_otp.o and a HELIOS64 maintainer block.
Board sources
patch/u-boot/v2026.01/board_helios64/board/helios64.c
New board implementation: early/late init, I/O domain & VDD setup, CPUID/MAC handling, boot-target manipulation, LED/status, recovery hooks, last-stage init, checkboard and DT patching.
OTP support
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c, .../sys_otp.h
New SPI-based OTP reader: packed OTP struct, SPI init/read (write-then-read), header+CRC validation, caching, accessors (revision/variant), set_board_info and mac_read_from_otp APIs.
Defconfig
patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
New comprehensive defconfig enabling RK3399, SPL/TPL/BINMAN, drivers, networking, storage, PMIC/regulator settings and many CONFIG_* options.
Device trees
patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi, .../dt_upstream_rockchip/rk3399-kobol-helios64.dts
Add U-Boot DT snippet (aliases, chosen, GPIO hogs, PCIe pins, SPI flash, regulator constraints) and upstream DTS describing regulators, PMIC, ethernet, USB-C, LEDs, clocks, peripherals and pinctrl wiring.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant SPL as SPL / U-Boot
    participant Early as board_early_init_f
    participant Misc as misc_init_r
    participant Reg as Regulators/VDD
    participant OTP as sys_otp (SPI)
    participant DT as ft_board_setup

    SPL->>Early: call board_early_init_f()
    Early->>Early: LED init / basic hw
    SPL->>Misc: call misc_init_r()
    Misc->>Reg: setup_iodomain() / init_vdd_center()
    Misc->>OTP: mac_read_from_otp()
    OTP->>OTP: init SPI, write-then-read, validate header+CRC
    OTP-->>Misc: return MAC, revision, variant
    Misc->>Misc: set CPUID, configure MACs, adjust boot targets
    Misc->>DT: ft_board_setup(blob)
    DT->>DT: patch board revision / CPU ID into device tree
    Misc->>Early: update LED/status
Loading
sequenceDiagram
    autonumber
    participant Reader as read_otp_data()
    participant SPI as SPI driver
    participant Mem as OTP memory
    participant Validator as header+CRC check
    participant Cache as local cache/state

    Reader->>Cache: check data_valid
    alt cached valid
        Cache-->>Reader: return cached data
    else
        Reader->>SPI: init & claim device
        SPI->>Mem: write-then-read OTP
        Mem-->>SPI: OTP bytes
        SPI-->>Reader: deliver bytes
        Reader->>Validator: validate header & checksum
        Validator-->>Reader: result
        Reader->>Cache: store & mark data_valid
        Reader-->>Reader: expose accessors (variant/revision/MAC)
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • prahal
  • amazingfate
  • SuperKali
  • Tonymac32
  • NicoD-SBC
  • ColorfulRhino

Poem

🐇 I hopped through pads and traced each pin,
OTP secrets tucked neatly within.
Regulators hum and LEDs gleam,
Helios64 wakes from a rabbit's dream.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The PR title is partially related to the changeset but not specific to the main point of the changes. The title mentions only version update but omits critical details: it does not clearly indicate that comprehensive Helios64 board support (entire u-boot directory structure, drivers, config, DTS files) is being added. Consider a more descriptive title reflecting the scope of changes, such as 'Helios64: add comprehensive U-Boot v2026.01-rc5 board support' or similar to better convey that this is a substantial new board enablement, not just a version bump.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added 02 Milestone: First quarter release size/large PR with 250 lines or more Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... labels Dec 24, 2025
@rpardini
Copy link
Member

Hmm. @iav If you suspect RAM init being a problem, and this being rk3399, maybe instead of open-source ATF, keep on using the rk blob? I had very similar troubles on the Tinkerboard2 years ago.

@iav
Copy link
Contributor Author

iav commented Dec 25, 2025

maybe instead of open-source ATF, keep on using the rk blob?

Yes, it is my next step if I finish my current try without success.

@iav
Copy link
Contributor Author

iav commented Dec 25, 2025

something boots. but what exactly is not yet clear.
puttyCOM16.log

@iav iav force-pushed the helios64_uboot_mainline branch from 4bccc4a to fb9402a Compare December 25, 2025 21:37
@iav
Copy link
Contributor Author

iav commented Dec 25, 2025

  • Switched to the binman-atf-mainline scenario with the same rkbin DDR blob
    rk3399_ddr_933MHz_v1.25.bin (TPL blob, as in the old working loader). DRAM init is correct, full
    4 GB visible, Linux boots.
  • U-Boot and DTS updated to v2026.01-rc5. Added MDIO/PHY node and phy-handle in rk3399-kobol-
    helios64.dts, fixing “mdio node is missing”. Disabled i2s2 in the U-Boot DT to avoid rockchip-
    i2s ... Could not register PCM.
  • boot_targets in U-Boot config shortened (mmc1, scsi0, usb0, pxe, dhcp) to avoid env_buf ... too
    small; however, the last built binary still shows the warning (needs rebuild with the shortened
    list or enlarging the buffer).
  • Boot flow: bootstd scans SD (mmc0) and eMMC (mmc1); SD boot works even without mmc0 in
    boot_targets.
  • Other changes: defconfig has CONFIG_ROCKCHIP_EXTERNAL_TPL=y to use the external DDR blob.

Boots.
putty.log

@rpardini
Copy link
Member

Fantastic, congratulations.

@iav iav force-pushed the helios64_uboot_mainline branch 5 times, most recently from c07e9e4 to 008d0b7 Compare December 26, 2025 00:01
  - Switched to the binman-atf-mainline scenario with the same rkbin DDR blob
    rk3399_ddr_933MHz_v1.25.bin (TPL blob, as in the old working loader). DRAM init is correct, full
    4 GB visible, Linux boots.
  - U-Boot and DTS updated to v2026.01-rc5. Added MDIO/PHY node and phy-handle in rk3399-kobol-
    helios64.dts, fixing “mdio node is missing”. Disabled i2s2 in the U-Boot DT to avoid rockchip-
    i2s ... Could not register PCM.
  - boot_targets in U-Boot config shortened (mmc1, scsi0, usb0, pxe, dhcp) to avoid env_buf ... too
    small; however, the last built binary still shows the warning (needs rebuild with the shortened
    list or enlarging the buffer).
  - Boot flow: bootstd scans SD (mmc0) and eMMC (mmc1); SD boot works even without mmc0 in
    boot_targets.
  - Other changes: defconfig has CONFIG_ROCKCHIP_EXTERNAL_TPL=y to use the external DDR blob.

Boots.
@iav iav force-pushed the helios64_uboot_mainline branch from 008d0b7 to f0708fd Compare December 26, 2025 00:10
@igorpecovnik igorpecovnik marked this pull request as ready for review December 26, 2025 15:03
@igorpecovnik igorpecovnik requested a review from prahal as a code owner December 26, 2025 15:03
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (5)
patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig (1)

81-81: Consider reducing log levels for production builds.

The log levels are currently set to 7 (LOG_DEBUG) for all boot stages (U-Boot, SPL, and TPL). While appropriate for initial bringup and debugging, you may want to reduce these to lower levels (e.g., 4 or 5) in future iterations for production builds to improve boot speed and reduce log noise.

Also applies to: 83-83, 158-158

patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch (1)

57-63: BOOT_TARGET_SCSI macro not used in BOOT_TARGET_DEVICES.

The BOOT_TARGET_SCSI(func) macro is defined at lines 48-51 to conditionally include SCSI based on CONFIG_IS_ENABLED(SCSI), but BOOT_TARGET_DEVICES at lines 58-63 uses func(SCSI, scsi, 0) directly instead of BOOT_TARGET_SCSI(func). This means SCSI will be included in boot targets even when SCSI is disabled.

🔎 Proposed fix
 #undef BOOT_TARGET_DEVICES
 #define BOOT_TARGET_DEVICES(func) \
 	func(MMC, mmc, 1) \
-	func(SCSI, scsi, 0) \
+	BOOT_TARGET_SCSI(func) \
 	func(USB, usb, 0) \
 	func(PXE, pxe, na) \
 	func(DHCP, dhcp, na)
patch/u-boot/v2026.01/board_helios64/board/helios64.c (1)

40-41: Unused variable grf in SPL build.

The grf pointer is defined but never used in board_early_init_f(). Only gpio is used for the LED control.

🔎 Proposed fix
 #ifdef CONFIG_SPL_BUILD
 #define GPIO0_BASE      0xff720000
-#define GRF_BASE		0xff770000
-	struct rk3399_grf_regs * const grf = (void *)GRF_BASE;
 	struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE;
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (2)

57-70: Minor memory leak if SPI initialization fails.

strdup() at line 64 allocates memory that is never freed if _spi_get_bus_and_cs() fails. While minor (runs once at boot), consider freeing on error for correctness.

🔎 Proposed fix
 static int init_system_otp(int bus, int cs)
 {
 	int ret;
 	char name[30], *str;
 	struct udevice *dev;

 	snprintf(name, sizeof(name), "generic_%d:%d", bus, cs);
 	str = strdup(name);
 	if (!str)
 		return -ENOMEM;
 	ret = _spi_get_bus_and_cs(bus, cs, 25000000, CONFIG_DEFAULT_SPI_MODE, "spi_generic_drv",
 				 str, &dev, &slave);
+	if (ret)
+		free(str);
 	return ret;
 }

103-104: Potential strict aliasing and alignment concerns.

Casting otp.serial_num (a u8[6] array) to uint64_t* may cause strict aliasing violations and alignment issues on some architectures. While this works on ARM/RK3399, consider using get_unaligned_le48() or manual byte extraction for portability.

📜 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 8fb61c9 and 1c3baaf.

📒 Files selected for processing (15)
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/board/MAINTAINERS
  • patch/u-boot/v2026.01/board_helios64/board/Makefile
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.h
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
💤 Files with no reviewable changes (1)
  • patch/u-boot/v2026.01/0000.patching_config.yaml
🧰 Additional context used
🧠 Learnings (45)
📓 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: 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: 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: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.
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.
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.
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: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
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.
📚 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/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.h
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 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/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 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/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-12-13T11:45:02.422Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-12-17T15:46:22.709Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 9096
File: patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch:4-5
Timestamp: 2025-12-17T15:46:22.709Z
Learning: In Armbian kernel patches, when patches are renamed or reorganized, the old Subject line may be intentionally preserved in the patch header (as a second Subject line) for archival/historical purposes to document the previous patch name. This is an Armbian-specific practice for tracking patch evolution and should not be flagged as an error when the maintainer has intentionally included it for documentation.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
📚 Learning: 2025-12-13T11:39:08.046Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch
  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-12-17T05:09:02.306Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-17T05:09:02.306Z
Learning: In the Armbian build system, kernel patches (e.g., in patch/kernel/archive/sunxi-6.18/patches.armbian/) contain device tree overlays and other code that have existed for years and are maintained/ported across kernel versions. When reviewing PRs that modify these patch files, focus on the actual changes being made (e.g., Makefile fixes, new additions) rather than reviewing the entire existing content within the patch as if it were new code. The patch file contents are existing, stable code unless explicitly modified in the PR diff.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-07-23T07:30:52.265Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
📚 Learning: 2025-09-14T11:37:35.089Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:65-72
Timestamp: 2025-09-14T11:37:35.089Z
Learning: In the Armbian build system, patch directories referenced in BOOTPATCHDIR and KERNELPATCHDIR configurations can be non-existent without causing build failures. Empty patch directories are also ignored by git, so missing patch directories should not be flagged as errors during code review.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
📚 Learning: 2025-12-19T13:56:45.124Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/board/MAINTAINERS
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 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/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/board/MAINTAINERS
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.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/board_helios64/0000.patching_config.yaml
  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/board/MAINTAINERS
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-06-25T03:40:52.109Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:40:52.109Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, when KERNELSOURCE is not explicitly declared in a case branch, the system falls back to a default KERNELSOURCE value, so missing KERNELSOURCE declarations are not critical issues.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 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/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files (regardless of file extension), the standard pattern is to have only one line as a comment describing the board hardware specifications. This single-line description typically includes the SoC model, core count, RAM options, and key features like connectivity options, storage interfaces, and special features. The file extensions indicate board support status: .conf (standard support), .csc (community supported), .eos (end of support), .tvb (tvbox), .wip (work in progress).

Applied to files:

  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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/helios64.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/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 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:

  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/1002-helios64-config-header.patch
  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/board/helios64.c
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-08-03T15:21:20.148Z
Learnt from: pyavitz
Repo: armbian/build PR: 8455
File: config/sources/families/sun50iw1.conf:19-24
Timestamp: 2025-08-03T15:21:20.148Z
Learning: In the Armbian build system, when copying firmware files during family_tweaks_s(), use /lib/firmware/updates/ instead of /lib/firmware/ to avoid conflicts with the Armbian firmware package. The /lib/firmware/updates directory takes precedence in Linux firmware loading hierarchy and is the proper location for user-installed firmware files.

Applied to files:

  • config/boards/helios64.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/helios64.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/helios64.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/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 Learning: 2025-09-18T03:36:17.862Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8537
File: config/boards/qcom-robotics-rb5.conf:1-1
Timestamp: 2025-09-18T03:36:17.862Z
Learning: In Armbian board configuration files, .wip and .conf extensions require BOARD_MAINTAINER to be present and contain at least one maintainer. If no maintainer is present, the board support rules state it does not qualify for standard support and must be moved to community support (.csc extension). This is documented at https://docs.armbian.com/User-Guide_Board-Support-Rules/

Applied to files:

  • config/boards/helios64.conf
  • patch/u-boot/v2026.01/board_helios64/board/MAINTAINERS
📚 Learning: 2025-08-30T06:56:33.372Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.

Applied to files:

  • config/boards/helios64.conf
📚 Learning: 2025-09-01T06:11:43.476Z
Learnt from: wei633
Repo: armbian/build PR: 8557
File: config/bootscripts/boot-xpressreal-t3.cmd:0-0
Timestamp: 2025-09-01T06:11:43.476Z
Learning: In Armbian boot scripts without initramfs support, UUID= and LABEL= style device paths cannot be used for rootdev as they require initramfs to resolve during boot. Only direct device paths (/dev/mmcblkXpY) or PARTUUID= references (which U-Boot can resolve) will work.

Applied to files:

  • config/boards/helios64.conf
📚 Learning: 2025-06-12T21:03:39.686Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:148-161
Timestamp: 2025-06-12T21:03:39.686Z
Learning: In Armbian U-Boot bootscripts, the `${cpu}` environment variable is always pre-set by U-Boot (or defaults to a valid value), so additional guards against it being unset are unnecessary.

Applied to files:

  • config/boards/helios64.conf
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.

Applied to files:

  • config/boards/helios64.conf
📚 Learning: 2025-09-27T21:47:58.020Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 Learning: 2025-09-27T21:50:15.915Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 Learning: 2025-09-27T21:49:55.796Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 Learning: 2025-10-26T12:56:29.185Z
Learnt from: rpardini
Repo: armbian/build PR: 8820
File: config/sources/families/include/meson64_common.inc:51-53
Timestamp: 2025-10-26T12:56:29.185Z
Learning: In the Armbian build framework, scripts/config correctly handles kernel configuration option names both with and without the CONFIG_ prefix, so opts_m+=("CONFIG_RTL8822CS") and opts_m+=("RTL8822CS") are both valid and will work correctly.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/board/Kconfig
📚 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/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 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/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-12-23T04:44:25.212Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 9067
File: patch/kernel/archive/rockchip64-6.19/dt/rk3399-orangepi-4-lts.dts:869-875
Timestamp: 2025-12-23T04:44:25.212Z
Learning: During code reviews of device tree changes (any .dts file), verify node properties against the official kernel device tree binding documentation (*.yaml) rather than relying solely on patterns observed in existing DTS files. This helps catch copy-paste or drift errors and ensures properties align with authoritative bindings for each device node type.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts
📚 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 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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-07-27T15:53:30.629Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-10-22T07:51:53.015Z
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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
  • patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-08-11T22:00:13.411Z
Learnt from: rafayahmed317
Repo: armbian/build PR: 8484
File: config/kernel/linux-rk35xx-vendor.config:904-906
Timestamp: 2025-08-11T22:00:13.411Z
Learning: In the linux-rk35xx-vendor kernel, the LTE driver options (CONFIG_LTE, CONFIG_LTE_RM310, CONFIG_LTE_EM05) are defined as boolean in drivers/net/lte/Kconfig and cannot be built as modules - they must be either built-in (=y) or disabled.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
🧬 Code graph analysis (2)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.h (1)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (5)
  • read_otp_data (127-179)
  • set_board_info (207-221)
  • get_revision (181-190)
  • get_variant (192-205)
  • mac_read_from_otp (223-249)
patch/u-boot/v2026.01/board_helios64/board/helios64.c (1)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (5)
  • read_otp_data (127-179)
  • set_board_info (207-221)
  • mac_read_from_otp (223-249)
  • get_revision (181-190)
  • get_variant (192-205)
🪛 checkmake (0.2.2)
patch/u-boot/v2026.01/board_helios64/board/Makefile

[warning] 1-1: Missing required phony target "all"

(minphony)


[warning] 1-1: Missing required phony target "clean"

(minphony)


[warning] 1-1: Missing required phony target "test"

(minphony)

🪛 Cppcheck (2.19.0)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c

[error] 248-248: Uninitialized variable

(uninitvar)

🔇 Additional comments (20)
patch/u-boot/v2026.01/board_helios64/1000-exception-include-string.patch (2)

1-11: Patch header format looks good.

The patch metadata follows standard Git format-patch conventions. The placeholder From/Date/commit hash values are acceptable for local Armbian patches, and the Subject/commit message clearly describe the fix.


13-25: Patch is correct; part of new board_helios64 support in v2026.01.

The addition of #include <string.h> to include/exception.h is the minimal and correct fix for implicit string function declarations. This is new support for helios64 board in v2026.01 (not ported from earlier versions), so upstream status verification is optional and does not block this change.

patch/u-boot/v2026.01/board_helios64/board/Makefile (1)

1-5: LGTM - Static analysis warnings are false positives.

The checkmake warnings about missing phony targets ("all", "clean", "test") can be safely ignored. This is a standard U-Boot board Makefile pattern that's included by the larger U-Boot build system, which provides these targets at the top level.

patch/u-boot/v2026.01/board_helios64/1001-helios64-enable-target.patch (2)

21-27: LGTM - Clean Kconfig integration.

The TARGET_HELIOS64 config option is well-defined with appropriate help text describing the board's key features.


35-35: LGTM - Proper Kconfig sourcing.

The board-specific Kconfig is correctly sourced, following the standard U-Boot pattern for board integration.

config/boards/helios64.conf (3)

7-10: LGTM - Boot configuration aligns with PR objectives.

The changes correctly implement the switch to binman-atf-mainline scenario with the external DDR blob (rk3399_ddr_933MHz_v1.25.bin) as documented in the PR objectives. The dedicated BOOTPATCHDIR follows the pattern previously suggested by rpardini.


20-20: LGTM - btrfs support enabled.

This aligns with the commit message "enable btrfs support in uBoot."


22-22: LGTM - ROOTFS_TYPE conditional narrowed.

The condition now explicitly excludes btrfs (since U-Boot can handle it directly) while still requiring a separate boot partition for f2fs, nilfs2, nfs, and xfs.

patch/u-boot/v2026.01/board_helios64/0000.patching_config.yaml (1)

1-9: LGTM - Well-structured patching configuration.

The overlay directory mappings correctly organize board-specific patches, keeping them self-contained as requested in previous review feedback.

patch/u-boot/v2026.01/board_helios64/board/sys_otp.h (1)

1-10: LGTM - Clean OTP API interface.

The header provides a well-defined interface for OTP operations, with proper include guards and function declarations that align with the implementation.

patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig (1)

40-40: LGTM - External TPL correctly enabled.

This setting aligns with the PR objectives to use the external rkbin DDR blob (rk3399_ddr_933MHz_v1.25.bin).

patch/u-boot/v2026.01/board_helios64/board/Kconfig (1)

1-24: LGTM - Standard board Kconfig structure.

The Kconfig entries follow U-Boot conventions and set appropriate defaults for board identification and environment storage. The conditional ENV settings for SPI flash are correctly structured.

patch/u-boot/v2026.01/board_helios64/dt_upstream_rockchip/rk3399-kobol-helios64.dts (3)

1-28: LGTM - Well-structured device tree with proper licensing and board identification.

The DTS file properly defines the Kobol Helios64 board with correct SPDX license, copyright, compatible string, and aliases. The structure follows standard Rockchip RK3399 DTS conventions.


796-799: i2s2 disabled to avoid boot errors - aligns with PR objectives.

Disabling i2s2 prevents the rockchip-i2s PCM registration errors mentioned in the PR discussion. This is appropriate for U-Boot DT where audio functionality isn't needed.


469-494: MDIO node and phy-handle addition fixes ethernet initialization.

The addition of the mdio child node with rgmii_phy and the phy-handle = <&rgmii_phy> reference addresses the "mdio node is missing" error mentioned in the PR. The PHY configuration with internal delay settings follows RK3399 RGMII conventions.

patch/u-boot/v2026.01/board_helios64/board/helios64.c (1)

116-178: LGTM - Boot target swapping logic is well-implemented.

The setup_boottargets() function correctly swaps mmc0/mmc1 when booting from SD card, while preserving any user-customized environment. The implementation follows established patterns from other Rockchip boards.

patch/u-boot/v2026.01/board_helios64/dt_uboot/rk3399-kobol-helios64-u-boot.dtsi (3)

1-24: LGTM - Proper U-Boot DT overlay structure.

The file correctly includes the base U-Boot and SDRAM configuration, defines appropriate boot order with SPI flash priority, and sets early console parameters. The SPL payload offset at 512KB aligns with typical Rockchip boot layout.


26-84: GPIO hogs properly configured for board hardware control.

The GPIO hog definitions correctly set up:

  • USB mux control (HS select and OE)
  • Flash write-protect signals
  • Auto-on enable signals for power sequencing
  • Board revision ID inputs

These align with the board initialization code in helios64.c that looks up these hogs by name.


116-124: Regulator init values set for stable RK3399 operation.

The vdd_center at 950mV and vdd_log at 930mV are appropriate for RK3399 stability. These values complement the init_vdd_center() function in helios64.c.

patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (1)

127-179: LGTM - OTP read flow with proper validation.

The read_otp_data() function correctly implements caching (has_been_read), SPI bus handling, CRC validation, and error paths. The security register read command (0x48) follows standard SPI NOR OTP conventions.

iav and others added 2 commits December 26, 2025 19:28
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (1)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (1)

207-221: Consider using memcpy to avoid unaligned access.

Lines 217-218 cast a u8[] array to uint64_t* for reading the serial number. This type punning can cause undefined behavior or bus errors on strict-alignment architectures (some ARM variants). While this is legacy code being ported, consider using memcpy to a local uint64_t variable to ensure safe access.

🔎 Safer approach using memcpy
 void set_board_info(void)
 {
 	char env_str[13];
+	uint64_t serial;
 
 	if (!is_data_valid())
 		return;
 
 	snprintf(env_str, sizeof(env_str), "%i.%i", (otp.revision & 0xf0) >> 4, otp.revision & 0x0f);
 	env_set("board_rev", env_str);
 
-	sprintf(env_str, "%012llx", *((uint64_t*) otp.serial_num) &
-		0xFFFFFFFFFFFF);
+	memcpy(&serial, otp.serial_num, sizeof(otp.serial_num));
+	sprintf(env_str, "%012llx", serial & 0xFFFFFFFFFFFF);
 
 	env_set("serial#", env_str);
 }

Based on learnings: When porting U-Boot patches, maintaining consistency with existing code is prioritized. This suggestion can be deferred if you prefer to maintain bug-for-bug compatibility with the legacy implementation.

📜 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 1d66679 and dda4e77.

📒 Files selected for processing (1)
  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
🧰 Additional context used
🧠 Learnings (14)
📓 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: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.
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.
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: 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: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.
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: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.
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.
📚 Learning: 2025-12-13T11:39:08.046Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 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/board_helios64/board/sys_otp.c
📚 Learning: 2025-12-13T11:45:02.422Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 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/board_helios64/board/sys_otp.c
📚 Learning: 2025-12-19T13:56:45.124Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 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/board_helios64/board/sys_otp.c
📚 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 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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 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/board_helios64/board/sys_otp.c
📚 Learning: 2025-09-25T18:37:00.330Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 Learning: 2025-12-17T05:09:02.306Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-17T05:09:02.306Z
Learning: In the Armbian build system, kernel patches (e.g., in patch/kernel/archive/sunxi-6.18/patches.armbian/) contain device tree overlays and other code that have existed for years and are maintained/ported across kernel versions. When reviewing PRs that modify these patch files, focus on the actual changes being made (e.g., Makefile fixes, new additions) rather than reviewing the entire existing content within the patch as if it were new code. The patch file contents are existing, stable code unless explicitly modified in the PR diff.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 Learning: 2025-11-11T20:56:20.303Z
Learnt from: glneo
Repo: armbian/build PR: 8913
File: config/sources/families/include/k3_common.inc:57-60
Timestamp: 2025-11-11T20:56:20.303Z
Learning: In config/sources/families/include/k3_common.inc, the OP-TEE build command at line 59 should be updated in a future PR to explicitly set CROSS_COMPILE64=aarch64-linux-gnu- and CROSS_COMPILE32=arm-linux-gnueabihf- instead of relying on OP-TEE's internal defaults, for better clarity and maintainability. User glneo agreed to address this in a separate PR.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 Learning: 2025-12-17T15:46:22.709Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 9096
File: patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch:4-5
Timestamp: 2025-12-17T15:46:22.709Z
Learning: In Armbian kernel patches, when patches are renamed or reorganized, the old Subject line may be intentionally preserved in the patch header (as a second Subject line) for archival/historical purposes to document the previous patch name. This is an Armbian-specific practice for tracking patch evolution and should not be flagged as an error when the maintainer has intentionally included it for documentation.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
📚 Learning: 2025-11-06T15:36:04.682Z
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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/board/sys_otp.c
🔇 Additional comments (1)
patch/u-boot/v2026.01/board_helios64/board/sys_otp.c (1)

223-248: Uninitialized variable fix confirmed.

The previously flagged uninitialized ret variable issue has been properly addressed. The function now correctly returns 0 on the success path (line 247) and -1 on error (line 228).

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (1)
patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig (1)

87-90: Consider increasing CONFIG_ENV_SIZE to resolve env_buf warning.

The PR comments mention that an "env_buf-too-small" warning persists despite shortening boot_targets. This typically indicates the default environment exceeds the allocated buffer size. Consider explicitly adding:

CONFIG_ENV_SIZE=0x10000

to the defconfig (default is usually 0x8000). This will provide more space for environment variables and should resolve the warning without requiring further reduction of boot_targets.

📜 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.

📥 Commits

Reviewing files that changed from the base of the PR and between dda4e77 and ccf18bc.

📒 Files selected for processing (1)
  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
🧰 Additional context used
🧠 Learnings (17)
📓 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: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.
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: 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.
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.
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: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.
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: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
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.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8417
File: config/boards/orangepi5pro.csc:57-58
Timestamp: 2025-07-23T07:30:52.265Z
Learning: In the Armbian build system, BOOTPATCHDIR can contain board-specific subdirectories (e.g., board_orangepi5pro) for applying patches to specific boards only. The framework automatically checks if such board-specific subdirectories exist for the board being built and applies those patches accordingly.
Learnt from: pyavitz
Repo: armbian/build PR: 8481
File: config/kernel/linux-spacemit-edge.config:492-494
Timestamp: 2025-08-11T12:39:22.861Z
Learning: The SpacemiT platform requires esos.elf firmware to be embedded in the kernel image for boot. The Armbian build system handles this by copying esos.elf from $SRC/packages/blobs/riscv64/spacemit/ to ${kernel_work_dir}/firmware/ via the custom_kernel_config__spacemit_k1_firmware() function in config/sources/families/spacemit.conf, ensuring CONFIG_EXTRA_FIRMWARE="esos.elf" can successfully embed it during kernel build.
📚 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/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-12-13T11:39:08.046Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:28-67
Timestamp: 2025-12-13T11:39:08.046Z
Learning: In the Armbian build system for SpacemiT U-Boot patches (patch/u-boot/legacy/u-boot-spacemit-k1/), alignment with mainline U-Boot behavior is prioritized. For example, in boot mode handling, leaving devnum unchanged in the default case (when devtype is cleared) follows mainline conventions rather than explicitly clearing it to handle edge cases.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-12-19T13:56:45.124Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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 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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-12-13T11:45:02.422Z
Learnt from: pyavitz
Repo: armbian/build PR: 9058
File: patch/u-boot/legacy/u-boot-spacemit-k1/003-SpacemiT-K1X-Fixups.patch:17-25
Timestamp: 2025-12-13T11:45:02.422Z
Learning: In the SpacemiT U-Boot patches for Armbian (patch/u-boot/legacy/u-boot-spacemit-k1/), the environment variable `devnum` is set to the device name string (e.g., "mmc", "nvme") rather than a numeric index, and `distro_bootpart` holds the partition number. This implementation aligns with mainline U-Boot conventions for the SpacemiT platform and has been verified to work correctly by the maintainer.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-07-27T15:53:30.629Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-10-22T07:51:53.015Z
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.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 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:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-10-26T12:56:29.185Z
Learnt from: rpardini
Repo: armbian/build PR: 8820
File: config/sources/families/include/meson64_common.inc:51-53
Timestamp: 2025-10-26T12:56:29.185Z
Learning: In the Armbian build framework, scripts/config correctly handles kernel configuration option names both with and without the CONFIG_ prefix, so opts_m+=("CONFIG_RTL8822CS") and opts_m+=("RTL8822CS") are both valid and will work correctly.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
📚 Learning: 2025-08-11T22:00:13.411Z
Learnt from: rafayahmed317
Repo: armbian/build PR: 8484
File: config/kernel/linux-rk35xx-vendor.config:904-906
Timestamp: 2025-08-11T22:00:13.411Z
Learning: In the linux-rk35xx-vendor kernel, the LTE driver options (CONFIG_LTE, CONFIG_LTE_RM310, CONFIG_LTE_EM05) are defined as boolean in drivers/net/lte/Kconfig and cannot be built as modules - they must be either built-in (=y) or disabled.

Applied to files:

  • patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig
🔇 Additional comments (5)
patch/u-boot/v2026.01/board_helios64/defconfig/helios64-rk3399_defconfig (5)

40-45: LGTM: External TPL and BINMAN configuration matches PR objectives.

The CONFIG_ROCKCHIP_EXTERNAL_TPL=y setting correctly enables use of the external DDR blob (rk3399_ddr_933MHz_v1.25.bin), which resolved the DRAM initialization issues mentioned in the PR comments. The BINMAN configuration aligns with the binman-atf-mainline scenario.


81-81: LGTM: Loglevel configuration matches commit message.

The loglevel is consistently set to 5 (NOTICE) across all boot stages (main U-Boot, SPL, and TPL), matching the commit message objective to "reduce loglevel on defconfig to 5."

Also applies to: 83-83, 158-158


137-137: Verify the high baud rate is intentional and functional.

The console baud rate is set to 1500000 (1.5 Mbps), which is approximately 13× higher than the standard 115200. While the PR boot logs suggest this is working, please confirm:

  1. This high baud rate is intentional and provides the desired benefit (faster console output).
  2. The serial adapter/connection used for console access reliably supports 1.5 Mbps.
  3. No data loss or corruption occurs during heavy console output (e.g., kernel boot messages).

1-158: Overall defconfig structure is well-configured for Helios64.

The defconfig provides comprehensive board support with appropriate settings for:

  • RK3399 platform (ARM64, skip lowlevel init, correct memory map)
  • Storage (MMC, SCSI/AHCI, SPI flash)
  • Networking (GMAC with RGMII, USB Ethernet, RTL8152)
  • USB (XHCI, EHCI, DWC3, gadget mode)
  • Power management (RK8XX PMIC, FAN53555, regulators)
  • Debug features (extensive commands, GPIO, I2C, SPI tools)

The configuration aligns with PR objectives and PR boot logs confirm successful operation.


85-86: No issues found. The CONFIG_OF_UPSTREAM=y configuration is properly set with the upstream DTS file (rk3399-kobol-helios64.dts) present in the dt_upstream_rockchip directory, and U-Boot board-specific modifications are correctly applied via the dt_uboot overlay file. The CONFIG_OF_SPL_REMOVE_PROPS configuration matches the established pattern used across similar Rockchip boards in the codebase and matches the historical Helios64 configuration from previous U-Boot versions.

@iav
Copy link
Contributor Author

iav commented Dec 28, 2025

Consider increasing CONFIG_ENV_SIZE to resolve env_buf warning

I run a build with CONFIG_ENV_SIZE=0x10000 added, but warning aarch64-linux-gnu-ld: invalid length for memory region .sram still present.

@iav
Copy link
Contributor Author

iav commented Dec 28, 2025

A question about

#define BOOT_TARGET_DEVICES(func) \
+	func(MMC, mmc, 1) \
+	func(SCSI, scsi, 0) \
+	func(USB, usb, 0) \
+	func(PXE, pxe, na) \
+	func(DHCP, dhcp, na)

are scsi boot possible on a Helios64 at all? Can there be a bootable scsi target? Or, maybe, that string means something special, and required?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

02 Milestone: First quarter release Hardware Hardware related like kernel, U-Boot, ... Needs review Seeking for review Patches Patches related to kernel, U-Boot, ... size/large PR with 250 lines or more

Development

Successfully merging this pull request may close these issues.

2 participants