qrb2210: switch edge kernel to mainline linux v7.0#9710
qrb2210: switch edge kernel to mainline linux v7.0#9710SuperKali merged 2 commits intoarmbian:mainfrom
Conversation
The Arduino UNO Q device tree (qrb2210-arduino-imola.dts) was upstreamed in Linux 7.0, so edge can drop the Arduino fork.
📝 WalkthroughWalkthroughEdge branch kernel reference switched from a branch ref to a tag, KERNEL_GIT_CACHE_TTL=120 added, and kernel source assignment removed; large kernel changes add Type‑C support for ANX7625, many DTS/ASoC/audio and DRM panel additions, device‑tree binding updates, Waveshare GPIO/bridge driver, and assorted helper/module metadata. Changes
Sequence Diagram(s)sequenceDiagram
participant ANX as ANX7625 driver
participant I2C as I2C/OCM
participant TypeC as Type‑C core
participant User as System (DP/HPD/Audio)
ANX->>I2C: probe / init (register IRQs, runtime PM)
ANX->>TypeC: register typec_port (if CONFIG_TYPEC)
I2C-->>ANX: interrupt (interface/status bits)
ANX->>ANX: anx7625_intr_status() parse bits
ANX->>TypeC: update orientation / data_role / power_role / vconn (when port present)
ANX->>I2C: send OCM message for data‑role swap (message TX flow)
ANX->>User: trigger DP HPD handling when HPD bit set
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
config/sources/families/qrb2210.conf (1)
63-64: Optional: TTL of 120s is unusually aggressive for an immutable tag ref.
KERNELBRANCH='tag:v7.0'points to an immutable tag, so aggressively re-fetching every 2 minutes adds little value (the tag won't move) while increasing load on the mirrors. The inline comment ("high-traffic repo") also reads a bit ambiguous — if the intent is "this repo is heavily mirrored / frequently updated so keep the cache fresh", that mainly matters for moving refs (branches/HEAD), not for a pinned tag. Consider either dropping the override to use the default TTL or bumping it significantly (e.g. once per day) now that the ref is a tag.♻️ Suggested tweak
- declare -g KERNELBRANCH='tag:v7.0' - declare -g -i KERNEL_GIT_CACHE_TTL=120 # 2 minutes; this is a high-traffic repo + declare -g KERNELBRANCH='tag:v7.0' + # Tag is immutable; no need for an aggressive cache TTL override here.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@config/sources/families/qrb2210.conf` around lines 63 - 64, KERNELBRANCH is set to an immutable tag ('tag:v7.0') but KERNEL_GIT_CACHE_TTL is only 120s; update the config so you don't aggressively re-fetch an immutable ref—either remove the KERNEL_GIT_CACHE_TTL override to use the default or increase it to a much longer interval (e.g., 24h) in the same block where KERNELBRANCH and KERNEL_GIT_CACHE_TTL are declared so the tag-based ref no longer forces frequent mirror hits.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@config/sources/families/qrb2210.conf`:
- Around line 63-64: KERNELBRANCH is set to an immutable tag ('tag:v7.0') but
KERNEL_GIT_CACHE_TTL is only 120s; update the config so you don't aggressively
re-fetch an immutable ref—either remove the KERNEL_GIT_CACHE_TTL override to use
the default or increase it to a much longer interval (e.g., 24h) in the same
block where KERNELBRANCH and KERNEL_GIT_CACHE_TTL are declared so the tag-based
ref no longer forces frequent mirror hits.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: c2c8dc64-e498-4b65-bfa3-3e1b83849441
📒 Files selected for processing (1)
config/sources/families/qrb2210.conf
Woth pulling and adding to patches? This can take some time before it gets to the mainline. |
Right now, the board boots up without any problems—it works fine anyway. What would you like to do? |
Just an idea to add patches / commits that are not mainlined yet. Up to you. |
Adds features not yet upstream: audio (pm4125, LPASS Agatti), anx7625 Type-C DP, Waveshare panels, Imola media carrier.
|
Followed your suggestion — the 48 non-mainlined commits are now in |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (2)
patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch (1)
32-33: Drop the redundantchannels->minassignment.Line 33 already sets both
channels->minandchannels->maxto1, so Line 32 can be removed for clarity.Suggested cleanup
-+ channels->min = 1; + channels->min = channels->max = 1;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch` around lines 32 - 33, Redundant assignment: remove the first channels->min = 1; line and keep the combined assignment channels->min = channels->max = 1 so that the code only sets both min and max once; locate the assignment near the variable channels in the relevant function and delete the standalone channels->min = 1; statement.patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch (1)
59-62: Consolidate carrier-media shared definitions to avoid redundant includes across stacked overlays.The full DTB variants stack multiple overlays that each independently include
qrb2210-arduino-imola-carrier-media-common.dtsi:
- full-4lanes: carrier-media + camera-csi0-4lanes + camera-csi1-4lanes + panel (lines 168, 280, 443, 508)
- full-2lanes: carrier-media + camera-csi0-2lanes + camera-csi1-2lanes + panel (lines 168, 224, 336, 508)
All four overlays in each composition define the same
pca9555,cam_pwr_csi0,cam_pwr_csi1, andcam24mnodes. While device tree overlay merging tolerates identical includes, having camera and panel overlays depend directly on common.dtsi creates unnecessary coupling. Define these shared carrier nodes once in the mandatorycarrier-mediaoverlay, then export and reference them from camera/panel overlays instead of re-including the common file.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch` around lines 59 - 62, Shared carrier nodes (pca9555, cam_pwr_csi0, cam_pwr_csi1, cam24m) are redundantly included by camera and panel overlays; move their canonical definitions into the mandatory qrb2210-arduino-imola-carrier-media.dtbo and remove the include of qrb2210-arduino-imola-carrier-media-common.dtsi from camera and panel overlays (e.g., qrb2210-arduino-imola-carrier-media-camera-imx219-csi0-4lanes.dtbo, qrb2210-arduino-imola-carrier-media-camera-imx219-csi1-4lanes.dtbo, qrb2210-arduino-imola-carrier-media-panel-8in_touch_a-dsi.dtbo), export the nodes/labels (phandles) from carrier-media (so callers can reference pca9555, cam_pwr_csi0, cam_pwr_csi1, cam24m), and update the camera/panel overlays to reference those exported phandles rather than re-including the common dtsi.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@patch/kernel/qrb2210-edge/0007-arm64-dts-arduino-imola-add-support-for-sound.patch`:
- Around line 16-166: Add the missing audio kernel CONFIGs in the Armbian
qrb2210-edge kernel config so the DTS sound nodes become active: set
CONFIG_SND_SOC_QCOM_COMMON=y, CONFIG_SND_SOC_LPASS_MACRO_COMMON=y,
CONFIG_SND_SOC_LPASS_RX_MACRO=y, CONFIG_SND_SOC_LPASS_TX_MACRO=y,
CONFIG_QCOM_LPASS_AUDIOCC_SM6115=y, CONFIG_SND_SOC_QDSP6=y and
CONFIG_SND_SOC_QCOM_SDW=y in the linux-qrb2210-edge.config used by Armbian (this
mirrors the in-tree defconfig changes referenced by
0008-arm64-defconfig-Enable-Agatti-audio-drivers.patch); ensure symbols like
qcom,pm4125-codec, sdw/swr0/swr1, and qcom,qrb2210-sndcard will have their
drivers built-in or as modules per your packaging rules.
In
`@patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch`:
- Around line 453-457: The Goodix touchscreen node (touch: goodix@5d) uses the
wrong property name and is missing required IRQ/interrupt properties; change
reset-gpio to reset-gpios (plural), add the mandatory interrupts property per
the Goodix binding, and add an irq-gpios property so the IRQ pin can be driven
during reset to select the I2C address; update the touch node to include
reset-gpios, irq-gpios, and interrupts entries matching the board's
GPIO/interrupt cells and flags expected by the driver.
In
`@patch/kernel/qrb2210-edge/0039-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch`:
- Around line 205-211: waveshare_8_0_a_init() currently ignores DSI write
failures stored in dsi_ctx.accum_err and always returns 0; change the function
to propagate initialization failures by returning the accumulated error
(dsi_ctx.accum_err) instead of a hardcoded 0 after the final DSI commands
(jd9365da_switch_page, mipi_dsi_dcs_exit_sleep_mode_multi,
mipi_dsi_dcs_set_display_on_multi) so callers can detect and handle failed
register programming.
In
`@patch/kernel/qrb2210-edge/0042-drm-panel-add-devm_drm_panel_add-helper.patch`:
- Around line 30-40: The kernel-doc for devm_drm_panel_add is missing
documentation for the struct device *dev parameter; update the comment block for
the function devm_drm_panel_add to include an `@dev` entry describing the device
owning the panel (e.g., "device the panel is managed under" or similar),
ensuring the parameter name matches the function signature so kernel-doc
warnings are resolved.
---
Nitpick comments:
In
`@patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch`:
- Around line 59-62: Shared carrier nodes (pca9555, cam_pwr_csi0, cam_pwr_csi1,
cam24m) are redundantly included by camera and panel overlays; move their
canonical definitions into the mandatory
qrb2210-arduino-imola-carrier-media.dtbo and remove the include of
qrb2210-arduino-imola-carrier-media-common.dtsi from camera and panel overlays
(e.g., qrb2210-arduino-imola-carrier-media-camera-imx219-csi0-4lanes.dtbo,
qrb2210-arduino-imola-carrier-media-camera-imx219-csi1-4lanes.dtbo,
qrb2210-arduino-imola-carrier-media-panel-8in_touch_a-dsi.dtbo), export the
nodes/labels (phandles) from carrier-media (so callers can reference pca9555,
cam_pwr_csi0, cam_pwr_csi1, cam24m), and update the camera/panel overlays to
reference those exported phandles rather than re-including the common dtsi.
In
`@patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch`:
- Around line 32-33: Redundant assignment: remove the first channels->min = 1;
line and keep the combined assignment channels->min = channels->max = 1 so that
the code only sets both min and max once; locate the assignment near the
variable channels in the relevant function and delete the standalone
channels->min = 1; statement.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 55d3a873-034d-4434-9dfb-9ad3498e42d5
📒 Files selected for processing (48)
patch/kernel/qrb2210-edge/0001-dt-bindings-drm-bridge-anx7625-describe-Type-C-conne.patchpatch/kernel/qrb2210-edge/0002-drm-bridge-anx7625-implement-minimal-Type-C-support.patchpatch/kernel/qrb2210-edge/0003-drm-bridge-anx7625-implement-message-sending.patchpatch/kernel/qrb2210-edge/0004-drm-bridge-anx7625-correctly-detect-if-PD-can-be-dis.patchpatch/kernel/qrb2210-edge/0005-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patchpatch/kernel/qrb2210-edge/0006-arm64-dts-qcom-agatti-add-LPASS-devices.patchpatch/kernel/qrb2210-edge/0007-arm64-dts-arduino-imola-add-support-for-sound.patchpatch/kernel/qrb2210-edge/0008-arm64-defconfig-Enable-Agatti-audio-drivers.patchpatch/kernel/qrb2210-edge/0009-arm64-dts-qcom-qrb2210-arduino-imola-describe-DSI-DP.patchpatch/kernel/qrb2210-edge/0010-drm-bridge-anx7625-don-t-crash-if-Type-C-port-is-not.patchpatch/kernel/qrb2210-edge/0011-arm64-dts-qcom-arduino-imola-fix-faulty-spidev-node.patchpatch/kernel/qrb2210-edge/0012-drm-msm-add-missing-MODULE_DEVICE_ID-definitions.patchpatch/kernel/qrb2210-edge/0013-ASoC-codecs-pm4125-fix-array-out-of-bounds.patchpatch/kernel/qrb2210-edge/0014-ASoC-qcom-common-setup-fe-dais-before-be-dais.patchpatch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patchpatch/kernel/qrb2210-edge/0016-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patchpatch/kernel/qrb2210-edge/0017-gpu-drm-msm-add-explicit-firmware-for-a702.patchpatch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patchpatch/kernel/qrb2210-edge/0019-ASoC-qcom-sm8250-set-i2s-format-needs.patchpatch/kernel/qrb2210-edge/0020-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patchpatch/kernel/qrb2210-edge/0021-anx7625-allow-32-bit-format.patchpatch/kernel/qrb2210-edge/0022-drm-anx7625-set-I2S-input-stream-as-right-justified.patchpatch/kernel/qrb2210-edge/0023-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patchpatch/kernel/qrb2210-edge/0024-ASoC-codecs-pm4125-harden-swr-discovery-path.patchpatch/kernel/qrb2210-edge/0025-dt-bindings-display-panel-himax-hx83102-describe-Wav.patchpatch/kernel/qrb2210-edge/0026-dt-bindings-display-panel-himax-hx8394-describe-Wave.patchpatch/kernel/qrb2210-edge/0027-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patchpatch/kernel/qrb2210-edge/0028-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patchpatch/kernel/qrb2210-edge/0029-dt-bindings-dipslay-panel-describe-panels-using-Foca.patchpatch/kernel/qrb2210-edge/0030-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patchpatch/kernel/qrb2210-edge/0031-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patchpatch/kernel/qrb2210-edge/0032-drm-panel-himax-hx8394-set-prepare_prev_first.patchpatch/kernel/qrb2210-edge/0033-drm-panel-himax-hx8394-simplify-hx8394_enable.patchpatch/kernel/qrb2210-edge/0034-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patchpatch/kernel/qrb2210-edge/0035-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patchpatch/kernel/qrb2210-edge/0036-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patchpatch/kernel/qrb2210-edge/0037-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patchpatch/kernel/qrb2210-edge/0038-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patchpatch/kernel/qrb2210-edge/0039-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patchpatch/kernel/qrb2210-edge/0040-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patchpatch/kernel/qrb2210-edge/0041-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patchpatch/kernel/qrb2210-edge/0042-drm-panel-add-devm_drm_panel_add-helper.patchpatch/kernel/qrb2210-edge/0043-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patchpatch/kernel/qrb2210-edge/0044-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patchpatch/kernel/qrb2210-edge/0045-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patchpatch/kernel/qrb2210-edge/0046-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patchpatch/kernel/qrb2210-edge/0047-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patchpatch/kernel/qrb2210-edge/0048-arch-arm64-qcom-imola-Align-panel-DTBO.patch
✅ Files skipped from review due to trivial changes (8)
- patch/kernel/qrb2210-edge/0016-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch
- patch/kernel/qrb2210-edge/0008-arm64-defconfig-Enable-Agatti-audio-drivers.patch
- patch/kernel/qrb2210-edge/0025-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch
- patch/kernel/qrb2210-edge/0026-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch
- patch/kernel/qrb2210-edge/0044-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch
- patch/kernel/qrb2210-edge/0028-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch
- patch/kernel/qrb2210-edge/0027-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch
- patch/kernel/qrb2210-edge/0029-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch
|
✅ This PR has been reviewed and approved — all set for merge! |
Summary
Switches the
edgekernel for theqrb2210family (Arduino UNO Q) from the Arduino forkarduino/linux-qcom@qcom-v7.0.0-unoqto the mainlinelinux-stabletree pinned attag:v7.0.Why
The Arduino UNO Q "Imola" device tree was upstreamed in Linux 7.0:
3f745bc0f11farm64: dts: qcom: qrb2210: add dts for Arduino unoq1a040df09fabarm64: dts: qcom: arduino-imola: fix faulty spidev noded5574bb935e3arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridgearch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dtsis present intorvalds/linuxfromv7.0-rc1onward; first final release containing it is Linux 7.0 (2026-04-12). With the DT now upstream, theedgebranch can drop the fork.Changes
Only
config/sources/families/qrb2210.conf:KERNELSOURCE→ falls back toMAINLINE_KERNEL_SOURCE(respects regional mirrors).KERNELBRANCH='tag:v7.0'pinned to latest stable tag.KERNEL_GIT_CACHE_TTL=120for the high-traffic stable repo.declare -gon the mainline variables, consistent with other mainline-only Qualcomm families.No changes to:
config/boards/arduino-uno-q.csc,config/kernel/linux-qrb2210-edge.config(identical aftermake olddefconfigagainst mainline v7.0), U-Boot, bootscripts, extensions.What the fork carried that mainline doesn't (yet)
The fork
qcom-v7.0.0-unoqhas 48 extra commits overv7.0, covering features that were not enabled in the committedlinux-qrb2210-edge.configanyway:pm4125, LPASS Agatti, qdsp6/sm8250 fixes.anx7625, Waveshare DSI panels, touch GPIO controllers.Base boot path (serial console, eMMC, USB gadget RNDIS/ADB, Wi-Fi ath10k, Bluetooth, rootfs resize) is fully covered by mainline v7.0.
Verification
Clean Trixie minimal build completed successfully: https://paste.armbian.com/pikuwasazi
Summary by CodeRabbit
New Features
Bug Fixes
Chores