Skip to content

Conversation

@HackingGate
Copy link
Contributor

@HackingGate HackingGate commented Sep 22, 2025

Description

This PR adds support for kernel edge to the Ariaboard Photonicat 2 board based on the Rockchip RK3576 SoC.

Device info:
https://photonicat.com/

Partially based on:
https://github.com/photonicat/rockchip_rk3576_linux_mainline/tree/e093bde29cffcdc4af4b6b5c0052ffd1d90e273c
https://github.com/photonicat/photonicat_openwrt/blob/2b275f9d2420f97d88443562712d14f5b0173980/target/linux/rockchip/patches-6.12/998-add-photonicat-usb-watchdog-driver.patch
And patches for rk3576 from mailing list.

How Has This Been Tested?

  • Successfully built photonicat2 on edge branch against 6.18
  • Successfully flashed trixie image on Photonicat2's eMMC
  • Device booted
  • HDMI video output worked
  • USB HID worked
  • Ethernet connection worked
  • Wi-Fi connection worked (both onboard Wi-Fi AIC8800 on USB and M.2 Wi-Fi QCNFA765 on PCI)
  • Onboard USB hub worked (onboard Wi-Fi AIC8800 and M.2 GSM modem recognized)
  • Mini LCD screen (tested with photonicat2_mini_display)
  • photonicat-pm power manager driver worked (can check battery status, control fan, do graceful shutdown)
  • aic8800 driver worked for onboard Wi-Fi
  • Onboard USB hub enumeration fixed with a watchdog driver

Logs:

Known Issues:

  • Mini LCD screen can't change its brightness, drivers not yet ready. fixed by patching rk3576
  • HDMI worked on a previous commit of the PR, didn't investigate deeply, kernel regression?
  • PCI Wi-Fi card may disappear from nmcli after reboot.

Checklist:

Please delete options that are not relevant.

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Summary by CodeRabbit

  • New Features
    • Photonicat2 board support (device tree, display, power rails, boot/partition defaults).
    • New Photonicat power-management and USB watchdog drivers for improved hardware control and reliability.
    • Rockchip PWM v4 and MFPWM support and USB3 orientation handling for better peripheral control.
    • SD/MMC v2 tuning and always-on power-domain support for improved storage and power behavior.
    • Cellular modem integration enabled with required user-space packages added.
  • Documentation
    • Added PWM v4 device-tree binding documentation.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 22, 2025

Walkthrough

Adds a new Photonicat2 board CSC, RK3576 device tree and Makefile entry, kernel defconfig updates, multiple RK3576-targeted kernel patches (new staging drivers, PWM/MFPWM subsystem, platform fixes), and a board hook that appends cellular modem packages during image builds.

Changes

Cohort / File(s) Summary
Board CSC
config/boards/photonicat2.csc
New board configuration exposing BOARD_NAME, BOARDFAMILY, BOOT_SOC, BOOTCONFIG, KERNEL_TARGET, FULL_DESKTOP, BOOT_FDT_FILE, BOOT_SCENARIO, IMAGE_PARTITION_TABLE, BOARD_FIRMWARE_INSTALL, ENABLE_EXTENSIONS, AIC8800_TYPE and a post-family hook post_family_config__photonicat2_modem_packages that appends modem packages (modemmanager, libqmi-utils, libmbim-utils, usb-modeswitch, libxml2-utils).
Kernel defconfig
config/kernel/linux-rockchip64-edge.config
Edge defconfig updates: enable QRTR/MHI/MHI_BUS, make STMMAC builtin and add STMMAC_PLATFORM, enable ROCKCHIP_MFPWM, PWM_ROCKCHIP_V4, QCOM_QMI_HELPERS, USB CDC/NCM/SUBSET/WDM/WWAN paths, PHOTONICAT_PM and PHOTONICAT_USB_WDT, SERIAL_DEV_CTRL_TTYPORT, and related symbols.
Device tree & DTB build
patch/kernel/.../dt/rk3576-photonicat2.dts, patch/kernel/.../board-photonicat2.patch
New RK3576 Photonicat2 DTS describing model/compatible, chosen/stdout, regulators, battery, backlight, PCIe/USB topology, rfkill nodes, pcat-usb-wdt, pinctrl, clocks and many peripheral nodes; Makefile entry added to include rk3576-photonicat2.dtb in DTB build.
Staging drivers (photonicat)
patch/kernel/.../board-photonicat2-add-photonicat-pm-driver.patch, patch/kernel/.../board-photonicat2-add-photonicat-usb-watchdog.patch
New drivers under drivers/staging: photonicat-pm (serdev-based power manager integrating power-supply/RTC/hwmon/misc, watchdog, sysfs ctl and probe/worker/timer logic) and photonicat-usb-watchdog (USB notifier + GPIO reset + watchdog_device + periodic monitor). Kconfig/Makefile and module metadata included.
PWM / MFPWM subsystem
include/soc/rockchip/mfpwm.h, drivers/soc/rockchip/mfpwm.c, drivers/pwm/pwm-rockchip-v4.c, Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml, drivers/pwm/Kconfig, drivers/pwm/Makefile
Adds Rockchip MFPWM core (public header, exported APIs mfpwm_acquire, mfpwm_release, mfpwm_remove_func), RK3576 PWMv4 driver, Kconfig/Makefile updates, and DTS binding YAML.
RK3576 platform fixes & helpers
patch/kernel/.../rk3576-0001-*.patch, ...-0002-*.patch, ...-0003-*.patch, ...-0005-*.patch, ...-0006-*.patch
Multiple RK3576-targeted patches: set GPIO direction before requesting IRQ; add DW MMC v2 tuning support and rockchip,use-v2-tuning DT property; introduce always_on flag for power domains; add FIELD_PREP_HI16_WE helpers in include/linux/bitfield.h; add USB3 controller reset/reinit on orientation switch for USB DP PHY.
DTB build inclusion (redundant listing)
patch/kernel/.../board-photonicat2.patch
Adds rk3576-photonicat2.dtb to RK3576 DTB build list.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Builder
  participant CSC as Board CSC
  participant Defcfg as linux-rockchip64-edge.config
  participant PatchSet as Kernel patchset
  participant DTS as rk3576-photonicat2.dts
  participant Drivers as Kernel drivers (staging, mfpwm, pwm)
  participant HW as Hardware (SerDev, USB, GPIO, PWM)

  Builder->>CSC: read board config & run post-family hook
  CSC->>Defcfg: influence kernel config (enable options)
  Builder->>PatchSet: apply RK3576 patches (drivers, fixes)
  Builder->>DTS: compile device tree blob
  Builder->>Drivers: build staging drivers, mfpwm, pwm modules
  Note right of Drivers: modules register drivers at boot
  Drivers->>HW: open serdev, monitor USB, control GPIO/PWM
  HW-->>Drivers: events (serial frames, USB add/remove, orientation)
  Drivers->>HW: watchdog resets, power-management commands
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~150 minutes

  • Files/areas needing focused review:
    • staging photonicat-pm driver: serdev framing/CRC, threading/timers, power-supply/RTC/hwmon registration, shutdown/restart hooks, misc device buffer handling.
    • photonicat USB watchdog: USB notifier correctness, watchdog_device lifecycle, GPIO reset timing and timer/work race conditions.
    • MFPWM public API and pwm-rockchip-v4: exported symbols, concurrency/resource management, clock/enable sequencing.
    • RK3576 DTS: pinctrl, regulator, clock and rfkill bindings for correctness and duplicates.
    • Kernel config changes: QRTR/MHI and WWAN-related symbols that affect subsystem builds.

Possibly related PRs

Suggested labels

Framework

Suggested reviewers

  • rpardini
  • paolosabatino
  • krachlatte
  • prahal
  • pyavitz
  • igorpecovnik
  • clee
  • chainsx

Poem

"I nibbled code beneath the moonlit trace,
A board and drivers found their place.
DTS and PWM in a joyful hop,
Watchdogs, serdev — then builds won’t stop.
— a happy rabbit, solder on my face 🐇"

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: adding support for the Ariaboard Photonicat 2 board to the Rockchip edge kernel, which aligns with the extensive changes across board configuration, kernel patches, and device tree files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions bot added size/large PR with 250 lines or more 11 Milestone: Fourth quarter release labels Sep 22, 2025
@github-actions
Copy link
Contributor

Hey @HackingGate! 👋

Thanks for submitting your first pull request to the Armbian project — we're excited to have you contributing! 🧡
Your effort doesn’t just improve Armbian — it benefits the entire community of users and developers.

If you'd like to stay informed about project updates or collaborate more closely with the team,
you can optionally share some personal contact preferences at armbian.com/update-data.
This helps us keep in touch without relying solely on GitHub notifications.

Also, don’t forget to ⭐ star the repo if you haven’t already — and welcome aboard! 🚀

@github-actions github-actions bot added Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... labels Sep 22, 2025
@EvilOlaf
Copy link
Member

EvilOlaf commented Sep 23, 2025

afaik rk35xx is only relevant for vendor kernel. current and edge were merged into rockchip64 family already. You should try to get it into there. Otherwise confusion will increase. rockchip64_common is inherent from rk35xx.
https://github.com/armbian/build/blob/main/config/sources/families/include/rockchip64_common.inc

@igorpecovnik igorpecovnik added Work in progress Unfinished / work in progress and removed Needs review Seeking for review labels Sep 23, 2025
@github-actions github-actions bot added the Needs review Seeking for review label Sep 27, 2025
@@ -0,0 +1,7779 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 6.12.28 Kernel Configuration
Copy link
Member

Choose a reason for hiding this comment

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

Linux 6.12 defgconfig for uboot? is this correct?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, I have dropped the corresponding commit.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have dropped current in favor of edge for now, too many patch work required on 6.12.

@HackingGate HackingGate changed the title WIP: Add Board: Ariaboard Photonicat 2 WIP: rockchip: Add Ariaboard Photonicat 2 support to edge kernel Sep 28, 2025
CONFIG_SMSC911X=y
CONFIG_STMMAC_ETH=m
CONFIG_STMMAC_ETH=y
CONFIG_STMMAC_PLATFORM=y
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Required to enable Ethernet on photonicat2.

Copy link
Member

@EvilOlaf EvilOlaf Sep 30, 2025

Choose a reason for hiding this comment

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

Hm I don't recall but isn't there a function to alter specific kernel configurations at board level? This way it won't affect other boards. If doing so is a good idea is a different question.

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think so, since kernels are per family not per board. We only have one rockchip64 kernel build for all boards in that family.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have migrated kernel config change to board level only on aae135b.

Copy link
Member

Choose a reason for hiding this comment

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

specific kernel configurations at board level?

Kernel config per board will lead into inconsistent kernel compilation. We can't have different config within one kernel family.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Kernel config per board will lead into inconsistent kernel compilation. We can't have different config within one kernel family.

Updated.

@github-actions github-actions bot added the Framework Framework components label Oct 8, 2025
@HackingGate HackingGate force-pushed the add-photonicat2 branch 5 times, most recently from 4d8c1cf to 3de6a4c Compare October 25, 2025 18:25
@HackingGate HackingGate removed the Framework Framework components label Oct 25, 2025
@HackingGate HackingGate changed the title WIP: rockchip: Add Ariaboard Photonicat 2 support to edge kernel rockchip: Add Ariaboard Photonicat 2 support to edge kernel Oct 25, 2025
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: 1

📜 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 848113e and eba9a2d.

📒 Files selected for processing (2)
  • config/boards/photonicat2.csc (1 hunks)
  • config/kernel/linux-rockchip64-edge.config (12 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • config/boards/photonicat2.csc
🧰 Additional context used
🧠 Learnings (34)
📓 Common learnings
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: 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.
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.
📚 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-rockchip64-edge.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-rockchip64-edge.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/kernel/linux-rockchip64-edge.config
📚 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:

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

  • config/kernel/linux-rockchip64-edge.config
📚 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 KERNEL_CONFIGURE=yes switch is deprecated. The recommended approach for kernel configuration is now to use the `kernel-config` build command, which provides a more structured way to configure kernel options.

Applied to files:

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

  • config/kernel/linux-rockchip64-edge.config
📚 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/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-09-14T06:10:25.610Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:10:25.610Z
Learning: In the Armbian build system, rk32xx and rk33xx Rockchip SoCs no longer have BSP-based (vendor) kernel branches. The rk3506 is the first 32-bit Rockchip SoC to use the vendor branch in the current codebase.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-11-10T23:44:53.363Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-11-10T23:44:53.363Z
Learning: For the RV1106 family in Armbian (config/sources/families/rockchip-rv1106.conf), udev.children-max=1 is set in the kernel boot parameters to prevent early-boot OOM errors. The RV1106 has a single-core CPU, so parallelism in udev child processes provides no practical benefit. Testing higher values is impractical due to the difficulty of monitoring at this early boot stage.

Applied to files:

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

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

  • config/kernel/linux-rockchip64-edge.config
📚 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/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this 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-rockchip64-edge.config
📚 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:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-10-03T11:42:46.660Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:96-169
Timestamp: 2025-10-03T11:42:46.660Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), deletion of kernel config files does not need to be handled. The workflow intentionally only captures ACMR (added/copied/modified/renamed) changes and does not need to propagate deletions to the aggregator.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-09-10T03:00:06.658Z
Learnt from: wei633
Repo: armbian/build PR: 8590
File: packages/bsp/xpressreal-t3/load-rtk-modules.sh:12-13
Timestamp: 2025-09-10T03:00:06.658Z
Learning: When analyzing kernel modules for embedded platforms, always check the target platform's kernel version and source repository as specified in the board/family configuration files, rather than assuming or checking the host system's kernel version.

Applied to files:

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

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-07-26T10:43:10.130Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:1058-1061
Timestamp: 2025-07-26T10:43:10.130Z
Learning: When reviewing kernel configuration files, it's important to verify the actual Kconfig dependencies in the source code rather than making assumptions about configuration validity, especially for complex subsystems like I2C drivers where the dependency relationships may be more nuanced than initially apparent.

Applied to files:

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

  • config/kernel/linux-rockchip64-edge.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-rockchip64-edge.config
📚 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-rockchip64-edge.config
📚 Learning: 2025-07-27T15:56:34.414Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:438-439
Timestamp: 2025-07-27T15:56:34.414Z
Learning: CONFIG_NET_SCH_DEFAULT is a boolean kernel configuration option (=y or =n) that enables/disables the ability to override the default network queueing discipline at runtime. When set to 'y', it allows setting the actual qdisc name via /proc/sys/net/core/default_qdisc at runtime, not in the kernel config file itself.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
🔇 Additional comments (11)
config/kernel/linux-rockchip64-edge.config (11)

875-878: Verify STMMAC Ethernet driver configuration changes.

Lines 875–878 upgrade Synopsys DWC MAC (STMMAC) Ethernet driver from module (=m) to built-in (=y) for the platform-specific variant, and disable self-tests and PCI support. Confirm this aligns with Photonicat2 hardware:

  • CONFIG_STMMAC_ETH=y: built-in Synopsys MAC driver
  • CONFIG_STMMAC_PLATFORM=y: platform integration (matches RK3576 SoC integration)
  • Disabling STMMAC_SELFTESTS and STMMAC_PCI is appropriate for a SoC build without PCI Ethernet.

This appears correct for RK3576 mainline Ethernet support.


979-992: USB network CDC and modem support added—confirm necessity.

New USB network device modules enable CDC NCM (Network Control Model), CDC SUBSET, and related modem infrastructure (USB_WDM, USB_SERIAL_WWAN) for Photonicat2 modem/cellular connectivity.

Based on PR objectives mentioning "onboard USB hub enumeration fixed with a watchdog driver" and modem packages appended to images, this appears to support an onboard or attached GSM modem. Verify these options are required for the GSM modem referenced in the PR.

Confirm the onboard or external GSM modem on Photonicat2 requires these USB network and WWAN drivers. If the modem is standard-compliant, this configuration is appropriate.


1030-1031: ATH11K debug and tracing disabled—confirm intent.

Lines 1030–1031 explicitly disable CONFIG_ATH11K_DEBUG and CONFIG_ATH11K_TRACING. This is normal for production kernels to reduce verbosity and logging overhead. If Photonicat2 includes an ATH11K Wi‑Fi adapter (e.g., QCN9074 or similar), disabling debug/tracing is appropriate for edge kernels.

No action needed unless debugging is required; this follows standard practice.


1307-1307: SERIAL_DEV_CTRL_TTYPORT enables serial device character device support.

Line 1307 enables CONFIG_SERIAL_DEV_CTRL_TTYPORT=y, which provides character device access to serial devices via /dev/ttyport. This is infrastructure for devices communicating over serial protocols and may support the Photonicat2 PM (power management) or LCD display subsystems. Appropriate for comprehensive serial device support.


2452-2452: USB_WDM (Wireless Device Management) enabled—confirm modem support.

Line 2452 enables CONFIG_USB_WDM=m for USB Wireless Device Management. This module provides a character device interface for modem or cellular management. Aligns with WWAN/GSM modem support referenced in PR objectives and USB_SERIAL_WWAN changes.

Verify USB_WDM is required for the GSM modem integration on Photonicat2.


2528-2528: USB_SERIAL_WWAN (Wireless Wide Area Network) enables WWAN devices.

Line 2528 sets CONFIG_USB_SERIAL_WWAN=m, providing USB serial support for WWAN (cellular/modem) devices. Directly supports Photonicat2 modem functionality referenced in PR testing summary.


2826-2827: Photonicat2-specific drivers correctly enabled—addresses prior feedback.

Lines 2826–2827 enable Photonicat-specific drivers:

  • CONFIG_PHOTONICAT_PM=y: Photonicat power management driver (battery status, fan control, graceful shutdown)
  • CONFIG_PHOTONICAT_USB_WDT=m: USB watchdog driver for onboard hub enumeration fix

These match PR testing results showing successful photonicat-pm and watchdog functionality. Correct settings restore the drivers that were inadvertently disabled during migration, as flagged in prior reviews.


2853-2853: QCOM_QMI_HELPERS enables Qualcomm message routing infrastructure.

Line 2853 adds CONFIG_QCOM_QMI_HELPERS=m. QMI (Qualcomm Message Interface) helpers provide foundational support for Qualcomm wireless/modem communication. This is likely infrastructure for ATH12K or cellular modem drivers and aligns with QRTR, MHI_BUS, and USB_WDM additions for comprehensive WWAN support.


2855-2855: ROCKCHIP_MFPWM (Multi-Function PWM) enabled—confirms prior fix.

Line 2855 enables CONFIG_ROCKCHIP_MFPWM=y. This RK3576-specific PWM infrastructure subsystem was properly restored after prior migration issues. Supports the PWM_ROCKCHIP_V4 driver (line 3096) and likely the fan control component of photonicat-pm.


3096-3096: PWM_ROCKCHIP_V4 enabled—dependency satisfied with MFPWM.

Line 3096 enables CONFIG_PWM_ROCKCHIP_V4=y. This RK3576 PWM v4 driver depends on the MFPWM infrastructure (line 2855, also enabled). The dependency is satisfied, addressing the prior critical conflict flag. This driver likely manages PWM-controlled fan and backlight features for Photonicat2.


636-637: MHI_BUS infrastructure enabled for Modem Host Interface routing.

Lines 636–637 add CONFIG_MHI_BUS=y and disable debug output (# CONFIG_MHI_BUS_DEBUG is not set). MHI is Qualcomm's transport layer for modems and wireless devices. Enabling this as built-in ensures modem/WWAN drivers (USB_WDM, USB_SERIAL_WWAN, QCOM_QMI_HELPERS) have transport infrastructure available. Appropriate for comprehensive modem support.

Comment on lines 517 to 519
CONFIG_QRTR_MHI=m
CONFIG_QRTR=y
CONFIG_QRTR_TUN=m
CONFIG_QRTR_MHI=y
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Duplicate and conflicting CONFIG_QRTR_MHI entries.

The configuration file contains two entries for CONFIG_QRTR_MHI with conflicting values:

  • Line 517: CONFIG_QRTR_MHI=m (unchanged)
  • Line 520: CONFIG_QRTR_MHI=y (new)

Only one entry per config option is allowed. Remove the duplicate at line 517 or consolidate to a single value. For MHI-based QRTR (Qualcomm Message Router over Modem Host Interface), the value should consistently be either =m (module) or =y (built-in), not both.

-CONFIG_QRTR_MHI=m
 CONFIG_QRTR=y
 CONFIG_QRTR_TUN=m
-CONFIG_QRTR_MHI=y
+CONFIG_QRTR_MHI=y
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
CONFIG_QRTR_MHI=m
CONFIG_QRTR=y
CONFIG_QRTR_TUN=m
CONFIG_QRTR_MHI=y
CONFIG_QRTR=y
CONFIG_QRTR_TUN=m
CONFIG_QRTR_MHI=y
🤖 Prompt for AI Agents
In config/kernel/linux-rockchip64-edge.config around lines 517–520 there are
duplicate conflicting entries for CONFIG_QRTR_MHI (one set to =m at line 517 and
another to =y at line 520); keep a single canonical line with the desired
setting (either CONFIG_QRTR_MHI=m or CONFIG_QRTR_MHI=y), remove the other
duplicate, and ensure no other occurrences exist elsewhere in the file so the
config contains exactly one definition for CONFIG_QRTR_MHI.

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)
config/kernel/linux-rockchip64-edge.config (1)

2825-2826: Consider making board-specific drivers modules or disabled by default.

CONFIG_PHOTONICAT_PM=y builds the Photonicat PM driver into the kernel for all rockchip64-edge boards, while CONFIG_PHOTONICAT_USB_WDT=m keeps the USB watchdog as a module. Since these are Photonicat-specific drivers in a family-wide kernel config, consider:

  1. Preferred: Set both to =m (modules) so they're available but only loaded on Photonicat2 hardware:

    CONFIG_PHOTONICAT_PM=m
    CONFIG_PHOTONICAT_USB_WDT=m
    
  2. Alternative: If these drivers cause issues on non-Photonicat boards, set both to =n and enable them via patches or family config hooks specific to boards that need them.

Per learnings, kernel configuration cannot be modified per-board in Armbian—it's family-wide. Board-specific drivers in family configs should typically be modules to avoid bloating the kernel for boards that don't use them.

Based on learnings

📜 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 eba9a2d and 1d1caf7.

📒 Files selected for processing (2)
  • config/boards/photonicat2.csc (1 hunks)
  • config/kernel/linux-rockchip64-edge.config (12 hunks)
🧰 Additional context used
🧠 Learnings (48)
📓 Common learnings
Learnt from: HackingGate
Repo: armbian/build PR: 8665
File: config/boards/photonicat2.csc:4-4
Timestamp: 2025-10-26T10:41:35.118Z
Learning: In the Armbian build system, rk3576 boards consistently use BOARDFAMILY="rk35xx" for both vendor and edge kernel targets. The rk35xx family configuration sources rockchip64_common.inc, which provides edge and current kernel branch definitions, making these branches available even though they're not defined directly in rk35xx.conf.
Learnt from: 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.
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.
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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/photonicat2.csc
📚 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/photonicat2.csc
📚 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/photonicat2.csc
📚 Learning: 2025-09-12T21:44:09.061Z
Learnt from: Grippy98
Repo: armbian/build PR: 8624
File: config/boards/sk-am62p.conf:8-8
Timestamp: 2025-09-12T21:44:09.061Z
Learning: For TI K3 family boards in Armbian, BOOT_FDT_FILE uses .dts extension (not .dtb) as the standard convention. The build system handles this correctly by automatically compiling .dts to .dtb during kernel build and using the BOOT_FDT_FILE value directly in bootloader configurations.

Applied to files:

  • config/boards/photonicat2.csc
📚 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: The .wip file extension in Armbian board configuration files indicates "Work in progress" status.

Applied to files:

  • config/boards/photonicat2.csc
📚 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:

  • config/boards/photonicat2.csc
📚 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/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-09-14T06:10:25.610Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8619
File: config/sources/families/rockchip.conf:64-70
Timestamp: 2025-09-14T06:10:25.610Z
Learning: In the Armbian build system, rk32xx and rk33xx Rockchip SoCs no longer have BSP-based (vendor) kernel branches. The rk3506 is the first 32-bit Rockchip SoC to use the vendor branch in the current codebase.

Applied to files:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-07-21T04:12:02.439Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-07-21T04:12:02.439Z
Learning: In the Armbian build system, for recurring maintenance tasks like kernel version bumping, TODO comments should use generic version formats (e.g., "MAJOR.MINOR-rc1") rather than specific version numbers (e.g., "6.17-rc1") to avoid the need for frequent comment updates that would create unnecessary maintenance overhead.

Applied to files:

  • config/boards/photonicat2.csc
📚 Learning: 2025-11-10T23:44:53.363Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-11-10T23:44:53.363Z
Learning: For the RV1106 family in Armbian (config/sources/families/rockchip-rv1106.conf), udev.children-max=1 is set in the kernel boot parameters to prevent early-boot OOM errors. The RV1106 has a single-core CPU, so parallelism in udev child processes provides no practical benefit. Testing higher values is impractical due to the difficulty of monitoring at this early boot stage.

Applied to files:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.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/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.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/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-11-13T14:50:44.662Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8925
File: lib/functions/host/docker.sh:141-141
Timestamp: 2025-11-13T14:50:44.662Z
Learning: In the Armbian build system, certain boards have U-Boot that doesn't build correctly on ubuntu:noble but works on ubuntu:jammy. For these boards, DOCKER_ARMBIAN_BASE_IMAGE can be set to "ubuntu:jammy" via an extension file loaded before docker_cli_prepare() runs, allowing legacy toolchains to work while the community works on proper fixes with limited resources.

Applied to files:

  • config/boards/photonicat2.csc
📚 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/photonicat2.csc
📚 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:

  • config/boards/photonicat2.csc
📚 Learning: 2025-06-25T03:42:09.086Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 8330
File: config/sources/families/sun55iw3.conf:32-36
Timestamp: 2025-06-25T03:42:09.086Z
Learning: In Armbian build system configuration files like config/sources/families/*.conf, KERNELSOURCE is explicitly declared when using unofficial or 3rd party kernel repositories (like the "dev" branch using https://github.com/apritzel/linux), but can be omitted when using the standard mainline kernel (like the "edge" branch) since it will fall back to the default mainline source.

Applied to files:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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:

  • config/boards/photonicat2.csc
📚 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:

  • config/boards/photonicat2.csc
📚 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:

  • config/boards/photonicat2.csc
📚 Learning: 2025-10-03T11:42:46.660Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:96-169
Timestamp: 2025-10-03T11:42:46.660Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), deletion of kernel config files does not need to be handled. The workflow intentionally only captures ACMR (added/copied/modified/renamed) changes and does not need to propagate deletions to the aggregator.

Applied to files:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-08-11T12:39:22.861Z
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.

Applied to files:

  • config/boards/photonicat2.csc
📚 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:

  • config/boards/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.config
📚 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/photonicat2.csc
  • config/kernel/linux-rockchip64-edge.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-rockchip64-edge.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-rockchip64-edge.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-rockchip64-edge.config
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this 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-rockchip64-edge.config
📚 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:

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

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

  • config/kernel/linux-rockchip64-edge.config
📚 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 KERNEL_CONFIGURE=yes switch is deprecated. The recommended approach for kernel configuration is now to use the `kernel-config` build command, which provides a more structured way to configure kernel options.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-08-21T08:10:59.502Z
Learnt from: leggewie
Repo: armbian/build PR: 8524
File: config/boards/orangepi2.csc:6-6
Timestamp: 2025-08-21T08:10:59.502Z
Learning: Not all Armbian boards support all kernel versions (legacy, current, edge). Some boards may only support specific kernel versions due to hardware limitations or lack of mainline support, which is why their KERNEL_TARGET contains only the supported options (e.g., just "legacy").

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-09-10T03:00:06.658Z
Learnt from: wei633
Repo: armbian/build PR: 8590
File: packages/bsp/xpressreal-t3/load-rtk-modules.sh:12-13
Timestamp: 2025-09-10T03:00:06.658Z
Learning: When analyzing kernel modules for embedded platforms, always check the target platform's kernel version and source repository as specified in the board/family configuration files, rather than assuming or checking the host system's kernel version.

Applied to files:

  • config/kernel/linux-rockchip64-edge.config
📚 Learning: 2025-07-26T10:43:10.130Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:1058-1061
Timestamp: 2025-07-26T10:43:10.130Z
Learning: When reviewing kernel configuration files, it's important to verify the actual Kconfig dependencies in the source code rather than making assumptions about configuration validity, especially for complex subsystems like I2C drivers where the dependency relationships may be more nuanced than initially apparent.

Applied to files:

  • config/kernel/linux-rockchip64-edge.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-rockchip64-edge.config
📚 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-rockchip64-edge.config
📚 Learning: 2025-07-27T15:56:34.414Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:438-439
Timestamp: 2025-07-27T15:56:34.414Z
Learning: CONFIG_NET_SCH_DEFAULT is a boolean kernel configuration option (=y or =n) that enables/disables the ability to override the default network queueing discipline at runtime. When set to 'y', it allows setting the actual qdisc name via /proc/sys/net/core/default_qdisc at runtime, not in the kernel config file itself.

Applied to files:

  • config/kernel/linux-rockchip64-edge.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-rockchip64-edge.config
🔇 Additional comments (2)
config/kernel/linux-rockchip64-edge.config (2)

874-877: STMMAC Ethernet driver changes align with PR objectives.

The changes enable the STMMAC Ethernet driver as built-in (CONFIG_STMMAC_ETH=y, CONFIG_STMMAC_PLATFORM=y), which is required for Ethernet functionality on the Photonicat2 as documented in PR objectives. The STMMAC driver is used by multiple Rockchip SoCs, so enabling it family-wide is appropriate.


517-519: Cellular modem support properly enabled.

The added configurations enable comprehensive cellular modem support across the rockchip64-edge family:

  • QRTR (Qualcomm Router) subsystem for modem communication
  • MHI bus support for PCIe-based modems
  • USB CDC NCM and WWAN serial drivers
  • QMI helpers for Qualcomm modems

These are generic subsystem drivers appropriate for family-wide enablement and align with the PR objectives for Photonicat2 cellular modem support via the modem packages added in the board configuration.

Also applies to: 635-636, 978-978, 990-991, 1306-1306, 2451-2451, 2527-2527, 2852-2852

@HeyMeco
Copy link
Collaborator

HeyMeco commented Nov 19, 2025

Imo this PR has been too ambiguous. With the few things I looked over this feels more like a vendor kernel that starts off edge. How about you keep the introduction of this hardware simpler and move everything that’s Photonicat to an extension if possible? Else the vendor might have deviated too much with custom power management solutions etc. that it would rather be its own family on armbian if you want to maintain it

@HackingGate HackingGate added the Work in progress Unfinished / work in progress label Nov 20, 2025
@HackingGate
Copy link
Contributor Author

Else the vendor might have deviated too much with custom power management solutions etc.

For the device specific drivers, I will try to take a look into kernel module tools like DKMS, and even take a taste in Rust for Linux.
For general patches, I will try to watch upstream support of rk3576 and general rockchip to see how patches in mailing lists are being reviewed to be adapted in existing codebase.
In spare time, with learning by doing. Could take a very long time, so I added WIP label back, hope by the time I look back into the PR things will get easier if more patches get accepted by upstream, or I became better to be able to propose or comment on mailing lists.

How about you keep the introduction of this hardware simpler and move everything that’s Photonicat to an extension if possible?

Hmm, could have created a separate PR for now, that only introduces dts, u-boot, csc, and linux-rockchip64-edge.config etc, with no kernel patches at all. And introduce DKMS specifically for photonicat divers in the second PR, gradually?

@igorpecovnik igorpecovnik removed the 11 Milestone: Fourth quarter release label Nov 22, 2025
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 Work in progress Unfinished / work in progress

Development

Successfully merging this pull request may close these issues.

5 participants