Skip to content

Odroid-M2: Add support for Hardkernel ODROID-Vu8S panel#9627

Open
mlegenovic wants to merge 1 commit intoarmbian:mainfrom
mlegenovic:main
Open

Odroid-M2: Add support for Hardkernel ODROID-Vu8S panel#9627
mlegenovic wants to merge 1 commit intoarmbian:mainfrom
mlegenovic:main

Conversation

@mlegenovic
Copy link
Copy Markdown
Contributor

@mlegenovic mlegenovic commented Apr 2, 2026

Description

This adds support for Odroid Vu8S 8inch MIPI LCD panel. Driver and DT is ported from Hardkernel 5.10 kernel. It is well tested over longer time period. Touchscreen is tested first with evtest, then on GNOME and KDE. Night light works well on KDE, but it does not work on GNOME because of known problem in Mutter.

Documentation summary

Use armbian-config to enable overlay odroidm2-display-vu8s or add it directly in /boot/armbianEnv.txt (overlays=odroidm2-display-vu8s). HDMI and Vu8S cannot be used at the same time, so if you want to use HDMI port again, remove this overlay and reboot.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • My changes generate no new warnings

Summary by CodeRabbit

  • New Features
    • Adds ODROID‑Vu8S MIPI‑DSI panel support on ODROID‑M2: panel, PWM backlight, touchscreen, and display mode registration across kernel 6.18 and 7.0 branches.
  • Chores
    • Adds and enables a new device‑tree overlay for the Vu8S display and updates overlay packaging so it is built and included with RK3588S ODROID‑M2 builds.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 2, 2026

📝 Walkthrough

Walkthrough

Adds ODROID‑Vu8S MIPI‑DSI panel support: device‑tree fragments/overlays and Makefile entries for RK3588(S) Odroid M2, plus a new ILI9881C panel descriptor, init sequence, and 800×1280 mode in the DRM panel driver.

Changes

Cohort / File(s) Summary
Kernel 6.18 DTS & driver
patch/kernel/archive/rockchip64-6.18/board-odroidm2-support-for-vu8s-panel.patch, drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
Adds board DTS nodes for PWM backlight, dsi0 panel/endpoint wiring, touchscreen (Goodix GT911) GPIOs and regulator props, and VOP/DSI endpoint routing. Extends ILI9881C driver with odroid_vu8s init instructions, a new 800×1280 DRM mode, descriptor, and OF match entry (odroid,vu8s).
Kernel 6.18 overlay
patch/kernel/archive/rockchip64-6.18/overlay/Makefile, patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
Adds rockchip-rk3588-odroidm2-display-vu8s.dtbo to overlay build list and new plugin overlay enabling backlight/PWM, touchscreen, dsi0/panel, MIPI PHY, LCD regulator flags; disables HDMI audio.
Kernel 7.0 DTS & driver
patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch, drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
Same additions as 6.18 applied for RK3588S/7.0: board DTS for panel/backlight/touch and VOP DSI endpoint wiring; driver additions for odroid,vu8s panel descriptor and mode.
Kernel 7.0 overlay
patch/kernel/archive/rockchip64-7.0/overlay/Makefile, patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
Adds overlay to Makefile and new plugin overlay (same enables/disables as 6.18).

Sequence Diagram(s)

sequenceDiagram
  participant DT as "Device Tree / Overlay"
  participant Kernel as "Kernel (driver probe)"
  participant DSI as "DSI Host / VOP"
  participant Panel as "ILI9881C panel"
  participant BL as "Backlight Regulator / PWM"
  participant TS as "Goodix Touch (I2C)"

  DT->>Kernel: overlay applied / nodes enabled
  Kernel->>Kernel: match OF compatible "odroid,vu8s"
  Kernel->>Panel: probe + run init sequence
  Panel->>DSI: configure MIPI lanes, video mode (800x1280)
  Kernel->>BL: enable regulator, start PWM
  Kernel->>TS: register touchscreen (disabled by default / can be enabled)
  Panel->>Kernel: report panel ready
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰
I hopped through DT and C code bright,
Wired DSI lanes so pixels take flight,
PWM heart thumps, touch wakes with a thrum,
Vu8S glows — a patch, and we're done!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly summarizes the main change: adding support for the Hardkernel ODROID-Vu8S panel to the Odroid-M2 board.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 05 Milestone: Second quarter release Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... labels Apr 2, 2026
Copy link
Copy Markdown
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.

🧹 Nitpick comments (1)
patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch (1)

413-428: Minor formatting issue in display mode definition.

There's an extraneous space before the comma on line 421 (.vsync_start = 1280 + 8 ,). This is a cosmetic issue that doesn't affect functionality.

🧹 Suggested formatting fix
 	.vdisplay	= 1280,
-	.vsync_start	= 1280 + 8 ,
+	.vsync_start	= 1280 + 8,
 	.vsync_end	= 1280 + 8 + 4,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch`
around lines 413 - 428, In the odroid_hj080be31ia1_default_mode drm_display_mode
definition remove the extraneous space before the comma in the .vsync_start
initializer (the ".vsync_start = 1280 + 8 ,") so it reads ".vsync_start = 1280 +
8,"; keep formatting consistent with other initializers in the struct.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch`:
- Around line 413-428: In the odroid_hj080be31ia1_default_mode drm_display_mode
definition remove the extraneous space before the comma in the .vsync_start
initializer (the ".vsync_start = 1280 + 8 ,") so it reads ".vsync_start = 1280 +
8,"; keep formatting consistent with other initializers in the struct.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7910ff66-5641-4e8a-9550-5043dcbde765

📥 Commits

Reviewing files that changed from the base of the PR and between adf16e0 and a33055a.

📒 Files selected for processing (6)
  • patch/kernel/archive/rockchip64-6.18/board-odroidm2-support-for-vu8s-panel.patch
  • patch/kernel/archive/rockchip64-6.18/overlay/Makefile
  • patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
  • patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch
  • patch/kernel/archive/rockchip64-7.0/overlay/Makefile
  • patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso

Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
Copy link
Copy Markdown
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.

🧹 Nitpick comments (1)
patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch (1)

106-115: DSI1 endpoint defined without corresponding panel - verify intent.

The dsi1_in_vp3 endpoint references vp3_out_dsi1, but there's no dsi1_out endpoint or panel defined on DSI1. If this is intentional preparatory wiring for potential dual-DSI or future expansion, this is fine. Otherwise, it could be dead code.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch`
around lines 106 - 115, The new device-tree fragment adds a dsi1_in node and an
endpoint label dsi1_in_vp3 that points to vp3_out_dsi1 but there is no matching
DSI1 panel/out node (e.g. a dsi1_out endpoint or panel node) in the patch;
either remove this unused endpoint or add the corresponding DSI1 panel/out
endpoint that provides the referenced label (ensure the remote-endpoint property
matches the actual label name), and if this is intentionally stubbing future
hardware, add a clear comment and leave status = "disabled" while keeping labels
consistent (update dsi1_in, dsi1_in_vp3, and vp3_out_dsi1 references
accordingly).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch`:
- Around line 106-115: The new device-tree fragment adds a dsi1_in node and an
endpoint label dsi1_in_vp3 that points to vp3_out_dsi1 but there is no matching
DSI1 panel/out node (e.g. a dsi1_out endpoint or panel node) in the patch;
either remove this unused endpoint or add the corresponding DSI1 panel/out
endpoint that provides the referenced label (ensure the remote-endpoint property
matches the actual label name), and if this is intentionally stubbing future
hardware, add a clear comment and leave status = "disabled" while keeping labels
consistent (update dsi1_in, dsi1_in_vp3, and vp3_out_dsi1 references
accordingly).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d007abd5-70c4-45ff-9648-a547b193c3c9

📥 Commits

Reviewing files that changed from the base of the PR and between a33055a and db841be.

📒 Files selected for processing (6)
  • patch/kernel/archive/rockchip64-6.18/board-odroidm2-support-for-vu8s-panel.patch
  • patch/kernel/archive/rockchip64-6.18/overlay/Makefile
  • patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
  • patch/kernel/archive/rockchip64-7.0/board-odroidm2-support-for-vu8s-panel.patch
  • patch/kernel/archive/rockchip64-7.0/overlay/Makefile
  • patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
✅ Files skipped from review due to trivial changes (2)
  • patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
  • patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-odroidm2-display-vu8s.dtso
🚧 Files skipped from review as they are similar to previous changes (3)
  • patch/kernel/archive/rockchip64-7.0/overlay/Makefile
  • patch/kernel/archive/rockchip64-6.18/overlay/Makefile
  • patch/kernel/archive/rockchip64-6.18/board-odroidm2-support-for-vu8s-panel.patch

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

Labels

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

Development

Successfully merging this pull request may close these issues.

1 participant