Skip to content

genio: add alsa-ucm-conf + ucm2 config for working audio in userspace#9235

Merged
igorpecovnik merged 3 commits into
armbian:mainfrom
rpardini:pr/genio-add-alsa-ucm-conf--ucm2-config-for-working-audio-in-userspace
Jan 12, 2026
Merged

genio: add alsa-ucm-conf + ucm2 config for working audio in userspace#9235
igorpecovnik merged 3 commits into
armbian:mainfrom
rpardini:pr/genio-add-alsa-ucm-conf--ucm2-config-for-working-audio-in-userspace

Conversation

@rpardini

@rpardini rpardini commented Jan 12, 2026

Copy link
Copy Markdown
Member

genio: add alsa-ucm-conf + ucm2 config for working audio in userspace

  • 🌱 linux-genio-collabora: built-in boot-essential; add crypto & squashfs stuff
    • modules -> built-in: essential stuff for accessing UFS/eMMC storage, regulators, i2c, spi
    • add in-kernel crypto modules (for wifi) & squashfs compression
    • somehow CONFIG_PCI_MESON was left enabled here, disable
  • 🌿 genio: add alsa-ucm-conf + ucm2 config for working audio in userspace
    • from Collabora's Debian 13 impl
  • 🍃 genio: u-boot: patch: include pxefile_addr_r == scriptaddr at 0x40000000
    • include pxefile_addr_r == scriptaddr at 0x40000000 so PXE works OOB
      • before this, would need to be set in env manually Fixes: 431f53d

Summary by CodeRabbit

Release Notes

  • New Features

    • Added ALSA audio configuration support for Mediatek devices with HDMI and headphone audio routing.
  • Chores

    • Enhanced kernel driver support including I2C, SPI, GPIO, storage, and cryptographic subsystems.
    • Optimized bootloader memory layout for improved kernel loading.

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

… stuff

- modules -> built-in: essential stuff for accessing UFS/eMMC storage, regulators, i2c, spi
- add in-kernel crypto modules (for wifi) & squashfs compression
- somehow `CONFIG_PCI_MESON` was left enabled here, disable
- include pxefile_addr_r == scriptaddr at 0x40000000 so PXE works OOB
  - before this, would need to be set in env manually

Fixes: 431f53d
@coderabbitai

coderabbitai Bot commented Jan 12, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

This PR updates the Genio platform by enabling additional kernel drivers (PCI, NVMe, I2C, SPI, SQUASHFS, crypto), adding ALSA audio configuration functions for Mediatek audio routing, and adjusting U-Boot memory addresses to accommodate larger kernel and initrd images.

Changes

Cohort / File(s) Summary
Kernel Driver Configuration
config/kernel/linux-genio-collabora.config
Multiple driver subsystems transitioned from modular (m) to built-in (y): PCI/NVMe/MD/DM blocks, I2C/SPI/GPIO/Designware, PHY/PCIE, and MTK peripheral drivers. SQUASHFS enabled with multiple decompression algorithms (LZ4, LZO, XZ, ZSTD) and XATTR support. Crypto backends (MD5, SHA1, CMAC, DEFLATE, ZSTD, USER_API_HASH) and Mediatek peripherals (auxADC, RTC MT6397, MFD/regulator/charger) also enabled.
Genio Family Audio Setup
config/sources/families/genio.conf
Two new shell functions added: post_family_config__genio_userspace_audio() registers alsa-ucm-conf as build dependency; pre_customize_image__genio_1200_alsa_ucm_conf() generates Mediatek-specific ALSA UCM configuration files (HiFi.conf and sof-mt8395-evk.conf) with HDMI and headphones routing definitions.
U-Boot Memory Layout
patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
Adjusts bootloader memory addresses: pxefile_addr_r set to 0x40000000, fdt_addr_r moved from 0x44000000 to 0x56000000, kernel_addr_r set to 0x40000000, and ramdisk_addr_r set to 0x64000000 to support larger kernel and initrd images.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • igorpecovnik
  • HeyMeco
  • paolosabatino

Poem

🐰 Thump-thump! Drivers bloom from modular dreams,
ALSA whispers through Mediatek's streams,
Memory dances to addresses new,
Kernels grow tall—watch Genio breakthrough! 🎵

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title directly matches the main objective of adding alsa-ucm-conf and ucm2 configuration for audio, which is a primary component of the changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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/medium PR with more then 50 and less then 250 lines Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... labels Jan 12, 2026
@rpardini rpardini marked this pull request as ready for review January 12, 2026 16:42

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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)
config/sources/families/genio.conf (1)

291-295: Consider adding a board guard for Genio 1200-specific UCM configuration.

The function name suggests it's specific to Genio 1200, but it runs for all boards in the genio family. While the presence of unused UCM files won't break other boards, you may want to guard this:

♻️ Optional: Add board check
 function pre_customize_image__genio_1200_alsa_ucm_conf() {
+	# Only apply to boards using MT8395/Genio 1200 SoC
+	[[ "${BOARD}" != "radxa-nio-12l" ]] && return 0
+
 	display_alert "Add alsa-ucm-conf for Mediatek" "genio :: ${BOARD}" "info"
📜 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 b954ad8 and 4ad31a2.

📒 Files selected for processing (3)
  • config/kernel/linux-genio-collabora.config
  • config/sources/families/genio.conf
  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
🧰 Additional context used
🧠 Learnings (38)
📓 Common learnings
Learnt from: rpardini
Repo: armbian/build PR: 9159
File: patch/u-boot/u-boot-genio/0026-dts-configs-add-Grinn-GenioSBC-510.patch:161-161
Timestamp: 2026-01-03T20:46:29.189Z
Learning: For the Armbian genio family (config/sources/families/genio.conf and patch/u-boot/u-boot-genio/), when reviewing PRs that include vendor U-Boot patches from Collabora, avoid flagging potential issues in board configurations that are out of scope for the PR's primary focus (e.g., don't flag Genio 510/700 board issues when the PR is focused on radxa-nio-12l/Genio 1200). The maintainer prioritizes keeping vendor patches close to upstream for easier re-copying and maintenance, even if secondary board configs have potential mismatches.
<!-- </add_learning>
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: 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: 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.
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: 2026-01-03T20:46:29.189Z
Learnt from: rpardini
Repo: armbian/build PR: 9159
File: patch/u-boot/u-boot-genio/0026-dts-configs-add-Grinn-GenioSBC-510.patch:161-161
Timestamp: 2026-01-03T20:46:29.189Z
Learning: For the Armbian genio family (config/sources/families/genio.conf and patch/u-boot/u-boot-genio/), when reviewing PRs that include vendor U-Boot patches from Collabora, avoid flagging potential issues in board configurations that are out of scope for the PR's primary focus (e.g., don't flag Genio 510/700 board issues when the PR is focused on radxa-nio-12l/Genio 1200). The maintainer prioritizes keeping vendor patches close to upstream for easier re-copying and maintenance, even if secondary board configs have potential mismatches.
<!-- </add_learning>

Applied to files:

  • config/sources/families/genio.conf
  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/sources/families/genio.conf
  • config/kernel/linux-genio-collabora.config
  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-12-12T23:09:56.813Z
Learnt from: tabrisnet
Repo: armbian/build PR: 9058
File: config/sources/families/spacemit.conf:39-45
Timestamp: 2025-12-12T23:09:56.813Z
Learning: In Armbian build configs for vendor kernel sources, prefer the following branch naming conventions: use 'vendor' or 'vendor-rt' for stable vendor releases, and 'vendor-edge' for bleeding-edge/pre-release vendor versions. The 'edge' naming without the 'vendor-' prefix is reserved for mainline kernel branches. Apply this pattern to family config files under config/sources/families (e.g., spacemit.conf) to ensure consistent vendor kernel sourcing naming across the repository.

Applied to files:

  • config/sources/families/genio.conf
📚 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:

  • config/kernel/linux-genio-collabora.config
📚 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:

  • config/kernel/linux-genio-collabora.config
  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-09-22T21:52:01.225Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-201
Timestamp: 2025-09-22T21:52:01.225Z
Learning: The kernel_config_set_m function in lib/functions/compilation/armbian-kernel.sh preserves existing 'y' (built-in) settings and only sets options to 'm' (module) when they are not already built-in, achieving "prefer modules but allow built-ins" behavior.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 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:

  • config/kernel/linux-genio-collabora.config
📚 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:

  • config/kernel/linux-genio-collabora.config
📚 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:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-09-22T21:52:01.225Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-201
Timestamp: 2025-09-22T21:52:01.225Z
Learning: In lib/functions/compilation/armbian-kernel.sh, the kernel_config_modifying_hashes array is not universally required for all kernel configuration functions - some functions like armbian_kernel_config__netkit() operate without it, and adding entries with '=m' would be incorrect when the actual result might be '=y' for options already built-in.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-10-23T19:48:42.980Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-sm8250-edge.config:498-501
Timestamp: 2025-10-23T19:48:42.980Z
Learning: For Armbian EDGE kernel configs, CONFIG_ATH12K=m alone is sufficient for PCI-based Wi-Fi 7 devices (e.g., WCN785x/QCN9274). A separate CONFIG_ATH12K_PCI option is not required, as confirmed by maintainer testing.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-10-23T19:50:25.841Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-rockchip-edge.config:730-733
Timestamp: 2025-10-23T19:50:25.841Z
Learning: For ATH12K wireless driver configuration: only CONFIG_ATH12K=m needs to be explicitly set in kernel config files. The kernel build system automatically selects CONFIG_ATH12K_PCI when both CONFIG_ATH12K and CONFIG_PCI are enabled. This pattern is consistent across all Armbian edge kernel configs. CONFIG_ATH12K_PCI does not need to be explicitly added to config files.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-09-14T06:19:06.828Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/kernel/linux-rockchip-vendor.config:0-0
Timestamp: 2025-09-14T06:19:06.828Z
Learning: CONFIG_ZSWAP has an implicit kernel-level dependency on CONFIG_SWAP, so when CONFIG_ZSWAP=y is set in Armbian overlay configs, CONFIG_SWAP gets automatically enabled during kernel build configuration processing, even if not explicitly specified in the overlay file.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-07-26T11:14:41.697Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:82-83
Timestamp: 2025-07-26T11:14:41.697Z
Learning: In Linux kernel 6.13 and later, CONFIG_ZBUD was deprecated and is scheduled for removal in kernel 6.15. The zbud compressed page allocator was found to consume more memory than alternatives like zsmalloc. Therefore, CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD becomes obsolete in current kernels, and make defconfig will auto-correct by removing such deprecated options. This demonstrates how kernel defconfigs can be backwards compatible but not forward compatible.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 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/kernel/linux-genio-collabora.config
📚 Learning: 2025-07-26T11:17:56.870Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:1058-1061
Timestamp: 2025-07-26T11:17:56.870Z
Learning: I2C_DESIGNWARE_SLAVE is a bool configuration option in Linux kernel Kconfig, not tristate. This means it can only be set to 'y' (enabled) or 'n' (disabled), never 'm' (module). When enabled, the slave functionality is compiled into the I2C_DESIGNWARE_CORE driver, regardless of whether the core driver is built-in or as a module.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 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:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2025-10-11T19:52:54.648Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8746
File: config/kernel/linux-filogic-edge.config:344-470
Timestamp: 2025-10-11T19:52:54.648Z
Learning: The chainsx/linux-filogic kernel (legacy branch) for BPI-R4 uses out-of-tree proprietary drivers (CONFIG_NET_DSA_AN8855, CONFIG_AIROHA_EN8801SC_PHY, CONFIG_AIR_AN8855_PHY, CONFIG_MDIO_AN8855, CONFIG_MFD_AIROHA_AN8855). The frank-w/BPI-Router-Linux kernel (current and edge branches) uses mainline kernel drivers instead: CONFIG_NET_DSA_MT7530 for the DSA switch and CONFIG_MEDIATEK_2P5GE_PHY for PHY support. These provide equivalent functionality for BPI-R4 networking.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 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/kernel/linux-genio-collabora.config
📚 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 Linux kernel configuration for the Armbian build system, when CONFIG_EXT2_FS and CONFIG_EXT3_FS are both set to =y (built-in), CONFIG_EXT4_FS is automatically enabled/hard-coded and does not need to be explicitly specified in the configuration file. This dependency relationship means that EXT4 support is implicitly included when EXT2 and EXT3 are built into the kernel.

Applied to files:

  • config/kernel/linux-genio-collabora.config
📚 Learning: 2026-01-03T20:46:24.423Z
Learnt from: rpardini
Repo: armbian/build PR: 9159
File: patch/u-boot/u-boot-genio/0026-dts-configs-add-Grinn-GenioSBC-510.patch:161-161
Timestamp: 2026-01-03T20:46:24.423Z
Learning: Guideline: When reviewing PRs in the Armbian genio family (especially patches under patch/u-boot/u-boot-genio/, such as the given 0026-dts-configs-add-Grinn-GenioSBC-510.patch) that include vendor U-Boot changes from Collabora, do not flag board configuration issues that are outside the PR’s primary focus. Prioritize keeping vendor patches close to upstream for easier re-copying and maintenance, even if secondary Genio board configs show potential mismatches. applies specifically to armbian/build context and related genio configurations.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-05-07T20:49:40.969Z
Learnt from: djurny
Repo: armbian/build PR: 8166
File: config/bootscripts/boot-mvebu.cmd:38-50
Timestamp: 2025-05-07T20:49:40.969Z
Learning: The 4KB (0x1000) boundary used for device tree size calculations in U-Boot scripts is specific to how the `fdt resize` command works internally and should remain hardcoded rather than being tied to adjustable alignment variables.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-06-12T21:14:36.024Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:38-44
Timestamp: 2025-06-12T21:14:36.024Z
Learning: In config/bootscripts/boot-sunxi.cmd the unconditional "+1" increment in func_align_addr_next (when align_overlap_oboe_avoidance="on") is intentional. It compensates for a known off-by-one error in U-Boot where the end address is calculated as start+size instead of start+size-1, so the extra page prevents overlap. This behavior should not be “optimized away”.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-09-12T15:46:16.772Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/bootscripts/boot-rk3506.cmd:46-47
Timestamp: 2025-09-12T15:46:16.772Z
Learning: In Armbian boot scripts, uInitrd is always packaged by the build system, so unconditional loading of uInitrd without existence checks is acceptable and won't cause boot failures.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-06-04T23:45:38.860Z
Learnt from: djurny
Repo: armbian/build PR: 8272
File: config/bootscripts/boot-mvebu.cmd:182-186
Timestamp: 2025-06-04T23:45:38.860Z
Learning: In config/bootscripts/boot-mvebu.cmd, the `fdtfile` variable is mandatory for booting and is pre-set by U-Boot, but can be overridden via armbianEnv.txt. If `fdtfile` is empty, the subsequent device tree file search logic will eventually fail and trigger the critical error "Cannot find DT!" with proper error handling.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-09-10T01:24:50.833Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-09-10T01:24:50.833Z
Learning: In Armbian's kernel configuration, both kernel_config_set_string CONFIG_LOCALVERSION '""' and kernel_config_set_string CONFIG_LOCALVERSION "" produce identical results in the final .config file (CONFIG_LOCALVERSION=""). The scripts/config tool handles quoting appropriately regardless of input format.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 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/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2025-06-12T21:08:11.318Z
Learnt from: djurny
Repo: armbian/build PR: 8287
File: config/bootscripts/boot-sunxi.cmd:13-23
Timestamp: 2025-06-12T21:08:11.318Z
Learning: In config/bootscripts/boot-sunxi.cmd the variable name `align_overlap_oboe_avoidance` intentionally uses the acronym “OBOE” (Off-By-One Error); it is not a typo and should not be renamed.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
📚 Learning: 2026-01-10T04:28:58.758Z
Learnt from: kasimling
Repo: armbian/build PR: 9177
File: patch/kernel/archive/rockchip64-6.18/rk3588-1212-arm64-dts-Automatic-fan-speed-and-USB-3.0-Type-A-por.patch:37-41
Timestamp: 2026-01-10T04:28:58.758Z
Learning: When reviewing Linux kernel device-tree bindings involving thermal cooling devices, THERMAL_NO_LIMIT can be used for both min_state (lower) and max_state (upper). If used as lower/min_state, the framework converts it to 0; if used as upper/max_state, it converts to the cooling device's max_state. Verify patch entries like: cooling-device = <&fan THERMAL_NO_LIMIT 1> are valid and correctly reflect the intended bounds. Ensure consistent interpretation of NO_LIMIT in both min and max contexts and that the resulting values align with the device's actual limits.

Applied to files:

  • patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch
🔇 Additional comments (12)
patch/u-boot/u-boot-genio/3306-GENIO-mt8195-fdt_addr_r-kernel_addr_r-ramdisk_addr_r-for-large-kernels-initrds.patch (2)

23-31: Memory address sharing between scriptaddr, pxefile_addr_r, and kernel_addr_r is intentional.

The three addresses (scriptaddr, pxefile_addr_r, kernel_addr_r) all point to 0x40000000. This is a valid U-Boot pattern where:

  • The boot script is loaded and executed first
  • PXE config file uses the same location (as per PR description for OOB PXE support)
  • Kernel then overwrites this address after script execution completes

The new memory layout provides adequate spacing for large kernels/initrds:

  • 0x40000000: script/pxefile/kernel
  • 0x44c00000: fdtoverlay (unchanged)
  • 0x56000000: fdt (moved from 0x44000000)
  • 0x64000000: ramdisk (moved from 0x49000000)

40-47: LGTM - Consistent changes in SPI_FLASH-enabled branch.

The same address modifications are correctly applied to both conditional branches, maintaining consistency across configurations.

config/sources/families/genio.conf (2)

286-288: LGTM - Package dependency for userspace audio.

The function correctly adds the alsa-ucm-conf package dependency using the standard Armbian helper function.


296-374: LGTM - UCM configuration files are correctly structured.

The ALSA UCM2 configuration follows standard conventions:

  • Heredoc with single-quoted delimiter correctly preserves ${CardId} as UCM syntax
  • File hierarchy follows UCM2 layout (MediaTek/sof-mt8395-evk/)
  • Symlink in conf.d/ enables automatic card matching
  • BootSequence initializes audio routing for HDMI, headphones, and ADC paths
config/kernel/linux-genio-collabora.config (8)

361-363: LGTM - Block device drivers enabled as built-in.

NBD and NVMe as built-in support boot scenarios where these storage types need early availability.


386-387: LGTM - MD/DM subsystem enabled as built-in.

Device mapper support as built-in enables early dm-verity, dm-crypt, or LVM scenarios during boot.


551-566: LGTM - I2C and SPI drivers enabled as built-in.

These bus drivers (Cadence I2C, GPIO I2C, Designware SPI, MTK NOR, SPIDEV) as built-in provide early access to peripherals needed during boot, such as PMIC communication and flash storage.


959-960: LGTM - UFS platform drivers enabled as built-in.

SCSI_UFS_CDNS_PLATFORM and SCSI_UFS_MEDIATEK as built-in are essential for boot from UFS storage on Genio platforms.


1157-1162: LGTM - SQUASHFS decompression backends enabled.

Enabling LZ4, LZO, XZ, and ZSTD decompressors for SQUASHFS provides flexibility for various rootfs compression formats. XATTR support allows extended attributes on squashfs.


1180-1189: LGTM - Crypto modules enabled as built-in.

These crypto algorithms (DES, CMAC, MD5, SHA1, DEFLATE, ZSTD) and user API interfaces are required for Wi-Fi firmware loading and squashfs compression support as noted in the PR description.


595-644: LGTM - MFD, charger, and power sequencing drivers enabled.

The MFD (Multi-Function Device) drivers and associated subsystems provide essential platform support for PMICs and power management on Genio boards. Notable additions include MT6360 charger and various MFD controllers needed for proper hardware initialization.


1076-1078: LGTM - Mediatek-specific peripheral drivers enabled as built-in.

The AUXADC (MT6359, MT6360, MT6577), RTC (MT6397), and PCIe PHY drivers are correctly enabled as built-in for Mediatek platform support, ensuring these essential peripherals are available early in the boot process.

Also applies to: 1000-1000, 1105-1105

@github-actions github-actions Bot added the Ready to merge Reviewed, tested and ready for merge label Jan 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ This PR has been reviewed and approved — all set for merge!

@github-actions github-actions Bot removed the Needs review Seeking for review label Jan 12, 2026
@igorpecovnik igorpecovnik merged commit f9a1e52 into armbian:main Jan 12, 2026
1 check passed
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, ... Patches Patches related to kernel, U-Boot, ... Ready to merge Reviewed, tested and ready for merge size/medium PR with more then 50 and less then 250 lines

Development

Successfully merging this pull request may close these issues.

3 participants