Skip to content

Commit 895107b

Browse files
Yury-MonZonalchark
authored andcommitted
arm64: dts: rockchip: add "No Graphics" overlay for RK3576 boards
Add a single DT overlay that disables the display pipeline so it can be powered down when booting to a headless "No Graphics" target: the VOP display controller and its IOMMU, the HDMI and DP interfaces and their PHYs, the HDMI/DP audio cards, and the rockchip-drm display-subsystem aggregator. The Mali GPU is deliberately left enabled: a headless system may still drive a directly-attached panel (e.g. the Flipper One SPI panel, its own drm/tiny device) whose userspace renders via GLES/EGL, which needs the GPU. The GPU idles into its own power domain via runtime PM when unused, so leaving it enabled costs practically nothing. All disabled nodes are SoC nodes defined in rk3576.dtsi, so one overlay applies to any RK3576 board; nodes a given board does not enable simply stay disabled. Overlay-application tests are provided for the EVB1, ArmSoM Sige5, NanoPi M5, Rock 4D and Flipper One boards. With these consumers disabled, genpd powers off the PD_VO0 and PD_VO1 domains. PD_VOP is the genpd parent of PD_USB/PD_VO0/PD_VO1, so it stays powered while USB/UFS are in use - a hardware power-tree constraint; the VOP controller itself is left unbound and idle. Panels driven directly over a peripheral bus rather than through the VOP (e.g. the Flipper One SPI panel) are unaffected and keep working. Signed-off-by: Yury Smirnov <yurymonzon@gmail.com>
1 parent 721a2be commit 895107b

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

arch/arm64/boot/dts/rockchip/Makefile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-khadas-edge-2l.dtb
180180
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb
181181
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb
182182
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb
183+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-no-graphics.dtbo
183184
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb
184185
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb
185186
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb
@@ -301,6 +302,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-dp-4k-hdmi-2.5k.dtb
301302
rk3576-armsom-sige5-dp-4k-hdmi-2.5k-dtbs := rk3576-armsom-sige5.dtb \
302303
rk3576-dp-4k-hdmi-2.5k.dtbo
303304

305+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-no-graphics.dtb
306+
rk3576-armsom-sige5-no-graphics-dtbs := rk3576-armsom-sige5.dtb \
307+
rk3576-no-graphics.dtbo
308+
304309
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtb
305310
rk3576-armsom-sige5-v1.2-wifibt-dtbs := rk3576-armsom-sige5.dtb \
306311
rk3576-armsom-sige5-v1.2-wifibt.dtbo
@@ -309,6 +314,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10-dp-4k-hdmi-2.5k.dtb
309314
rk3576-evb1-v10-dp-4k-hdmi-2.5k-dtbs := rk3576-evb1-v10.dtb \
310315
rk3576-dp-4k-hdmi-2.5k.dtbo
311316

317+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10-no-graphics.dtb
318+
rk3576-evb1-v10-no-graphics-dtbs := rk3576-evb1-v10.dtb \
319+
rk3576-no-graphics.dtbo
320+
312321
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10-pcie1.dtb
313322
rk3576-evb1-v10-pcie1-dtbs := rk3576-evb1-v10.dtb \
314323
rk3576-evb1-v10-pcie1.dtbo
@@ -321,6 +330,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-flipper-one-i2c2-free.dtb
321330
rk3576-flipper-one-i2c2-free-dtbs := rk3576-flipper-one-rev-f0b0c1.dtb \
322331
rk3576-flipper-one-i2c2-free.dtbo
323332

333+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-flipper-one-no-graphics.dtb
334+
rk3576-flipper-one-no-graphics-dtbs := rk3576-flipper-one-rev-f0b0c1.dtb \
335+
rk3576-no-graphics.dtbo
336+
324337
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-flipper-one-sata.dtb
325338
rk3576-flipper-one-sata-dtbs := rk3576-flipper-one-rev-f0b0c1.dtb \
326339
rk3576-flipper-one-sata.dtbo
@@ -329,6 +342,14 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-flipper-one-uart2.dtb
329342
rk3576-flipper-one-uart2-dtbs := rk3576-flipper-one-rev-f0b0c1.dtb \
330343
rk3576-flipper-one-uart2.dtbo
331344

345+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5-no-graphics.dtb
346+
rk3576-nanopi-m5-no-graphics-dtbs := rk3576-nanopi-m5.dtb \
347+
rk3576-no-graphics.dtbo
348+
349+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d-no-graphics.dtb
350+
rk3576-rock-4d-no-graphics-dtbs := rk3576-rock-4d.dtb \
351+
rk3576-no-graphics.dtbo
352+
332353
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-wifi.dtb
333354
rk3588-edgeble-neu6a-wifi-dtbs := rk3588-edgeble-neu6a-io.dtb \
334355
rk3588-edgeble-neu6a-wifi.dtbo
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+
/*
3+
* DT-overlay for a "No Graphics" (headless) target on RK3576 boards: disables
4+
* the display pipeline so it can be powered down - the VOP display controller
5+
* and its IOMMU, the HDMI and DP interfaces and their PHYs, the HDMI/DP audio
6+
* cards, and the rockchip-drm display-subsystem aggregator.
7+
*
8+
* The Mali GPU is deliberately left enabled: a headless system may still drive
9+
* a directly-attached panel (e.g. the Flipper One SPI panel, its own drm/tiny
10+
* device) whose userspace renders via GLES/EGL, which needs the GPU. The GPU
11+
* also idles into its own power domain via runtime PM when unused, so leaving
12+
* it enabled costs practically nothing.
13+
*
14+
* All disabled nodes are SoC nodes defined in rk3576.dtsi, so this single
15+
* overlay applies to any RK3576 board. Nodes a given board does not enable stay
16+
* disabled - a harmless no-op that also keeps the overlay robust against
17+
* stacked overlays.
18+
*
19+
* With these consumers disabled, genpd powers off the PD_VO0 and PD_VO1 power
20+
* domains. Note that PD_VOP is the genpd parent of PD_USB/PD_VO0/PD_VO1, so it
21+
* stays powered as long as USB/UFS (children of PD_USB) are in use - a hardware
22+
* power-tree constraint. The VOP controller itself is left unbound and idle.
23+
*
24+
* Panels driven directly over a peripheral bus rather than through the VOP
25+
* (e.g. the Flipper One SPI panel) are unaffected and keep working.
26+
*/
27+
28+
/dts-v1/;
29+
/plugin/;
30+
31+
&display_subsystem {
32+
status = "disabled";
33+
};
34+
35+
&vop {
36+
status = "disabled";
37+
};
38+
39+
&vop_mmu {
40+
status = "disabled";
41+
};
42+
43+
&hdmi {
44+
status = "disabled";
45+
};
46+
47+
&hdptxphy {
48+
status = "disabled";
49+
};
50+
51+
&hdmi_sound {
52+
status = "disabled";
53+
};
54+
55+
&dp {
56+
status = "disabled";
57+
};
58+
59+
&dp0_sound {
60+
status = "disabled";
61+
};

0 commit comments

Comments
 (0)