[openwrt/openwrt] rockchip: backport dts updates for rk3576
LEDE Commits
lede-commits at lists.infradead.org
Thu Oct 2 14:25:46 PDT 2025
hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3a35a2cff1bc5d4fde054054d137cdb124f2354e
commit 3a35a2cff1bc5d4fde054054d137cdb124f2354e
Author: Tianling Shen <cnsztl at immortalwrt.org>
AuthorDate: Sat Sep 13 19:49:35 2025 +0800
rockchip: backport dts updates for rk3576
Backport core dts updates for rk3576.
Signed-off-by: Tianling Shen <cnsztl at immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
...arm64-dts-rockchip-Add-rk3576-SoC-base-DT.patch | 7486 ++++++++++++++++++++
...-rockchip-Add-rk3576-naneng-combphy-nodes.patch | 61 +
...rockchip-add-usb-related-nodes-for-rk3576.patch | 171 +
...15-arm64-dts-rockchip-add-rk3576-otp-node.patch | 63 +
...s-rockchip-Add-UFS-support-for-RK3576-SoC.patch | 48 +
....15-arm64-dts-rockchip-Add-vop-for-rk3576.patch | 98 +
...15-arm64-dts-rockchip-Add-hdmi-for-rk3576.patch | 95 +
...m64-dts-rockchip-Add-SFC-nodes-for-rk3576.patch | 52 +
...64-dts-rockchip-fix-RK3576-SCMI-clock-IDs.patch | 109 +
...-arm64-dts-rockchip-Add-rk3576-pcie-nodes.patch | 135 +
...m64-dts-rockchip-add-SATA-nodes-to-RK3576.patch | 60 +
...16-arm64-dts-rockchip-add-RK3576-RNG-node.patch | 33 +
...6-arm64-dts-rockchip-Add-RK3576-SAI-nodes.patch | 243 +
...-arm64-dts-rockchip-Add-RK3576-HDMI-audio.patch | 50 +
...ip-Add-missing-SFC-power-domains-to-rk357.patch | 39 +
...s-rockchip-fix-rk3576-pcie-unit-addresses.patch | 257 +
...chip-move-rk3576-pinctrl-node-outside-the.patch | 173 +
...ip-remove-a-double-empty-line-from-rk3576.patch | 24 +
...ockchip-fix-rk3576-pcie1-linux-pci-domain.patch | 32 +
...ts-rockchip-add-SDIO-controller-on-RK3576.patch | 41 +
...ip-Enable-HDMI-PHY-clk-provider-on-rk3576.patch | 32 +
...hip-Add-HDMI-PHY-PLL-clock-source-to-VOP2.patch | 53 +
...-dts-rockchip-Add-thermal-nodes-to-RK3576.patch | 269 +
...chip-Add-thermal-trim-OTP-and-tsadc-nodes.patch | 91 +
...m64-dts-rockchip-add-mipi-dcphy-to-rk3576.patch | 52 +
...rockchip-add-the-dsi-controller-to-rk3576.patch | 53 +
...arm64-dts-rockchip-Enable-RK3576-watchdog.patch | 25 +
27 files changed, 9845 insertions(+)
diff --git a/target/linux/rockchip/patches-6.12/050-01-v6.13-arm64-dts-rockchip-Add-rk3576-SoC-base-DT.patch b/target/linux/rockchip/patches-6.12/050-01-v6.13-arm64-dts-rockchip-Add-rk3576-SoC-base-DT.patch
new file mode 100644
index 0000000000..d76ce7cd25
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-01-v6.13-arm64-dts-rockchip-Add-rk3576-SoC-base-DT.patch
@@ -0,0 +1,7486 @@
+From 57b1ce9039665c6cb6907aee4b517f43e1557d2f Mon Sep 17 00:00:00 2001
+From: Detlev Casanova <detlev.casanova at collabora.com>
+Date: Tue, 3 Sep 2024 11:22:38 -0400
+Subject: [PATCH] arm64: dts: rockchip: Add rk3576 SoC base DT
+
+This device tree contains all devices necessary for booting from network
+or SD Card.
+
+It supports CPU, CRU, PM domains, dma, interrupts, timers, UART, I2C
+and SDHCI (everything necessary to boot Linux on this system on chip)
+as well as Ethernet, SPI, GPU and RTC.
+
+Signed-off-by: Liang Chen <cl at rock-chips.com>
+Signed-off-by: Finley Xiao <finley.xiao at rock-chips.com>
+Signed-off-by: Yifeng Zhao <yifeng.zhao at rock-chips.com>
+Signed-off-by: Elaine Zhang <zhangqing at rock-chips.com>
+Signed-off-by: Detlev Casanova <detlev.casanova at collabora.com>
+Tested-by: Liang Chen <cl at rock-chips.com>
+Link: https://lore.kernel.org/r/20240903152308.13565-9-detlev.casanova@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ .../boot/dts/rockchip/rk3576-pinctrl.dtsi | 5775 +++++++++++++++++
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 1678 +++++
+ 2 files changed, 7453 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
+ create mode 100644 arch/arm64/boot/dts/rockchip/rk3576.dtsi
+
+--- /dev/null
++++ b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
+@@ -0,0 +1,5775 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
++/*
++ * Copyright (c) 2023 Rockchip Electronics Co., Ltd.
++ */
++
++#include <dt-bindings/pinctrl/rockchip.h>
++#include "rockchip-pinconf.dtsi"
++
++/*
++ * This file is auto generated by pin2dts tool, please keep these code
++ * by adding changes at end of this file.
++ */
++&pinctrl {
++ aupll_clk {
++ /omit-if-no-ref/
++ aupll_clkm0_pins: aupll_clkm0-pins {
++ rockchip,pins =
++ /* aupll_clk_in_m0 */
++ <0 RK_PA0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ aupll_clkm1_pins: aupll_clkm1-pins {
++ rockchip,pins =
++ /* aupll_clk_in_m1 */
++ <0 RK_PB0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ aupll_clkm2_pins: aupll_clkm2-pins {
++ rockchip,pins =
++ /* aupll_clk_in_m2 */
++ <4 RK_PA2 3 &pcfg_pull_none>;
++ };
++ };
++
++ cam_clk0 {
++ /omit-if-no-ref/
++ cam_clk0m0_clk0: cam_clk0m0-clk0 {
++ rockchip,pins =
++ /* cam_clk0_out_m0 */
++ <3 RK_PD7 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ cam_clk0m1_clk0: cam_clk0m1-clk0 {
++ rockchip,pins =
++ /* cam_clk0_out_m1 */
++ <2 RK_PD2 1 &pcfg_pull_none>;
++ };
++ };
++
++ cam_clk1 {
++ /omit-if-no-ref/
++ cam_clk1m0_clk1: cam_clk1m0-clk1 {
++ rockchip,pins =
++ /* cam_clk1_out_m0 */
++ <4 RK_PA0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ cam_clk1m1_clk1: cam_clk1m1-clk1 {
++ rockchip,pins =
++ /* cam_clk1_out_m1 */
++ <2 RK_PD6 1 &pcfg_pull_none>;
++ };
++ };
++
++ cam_clk2 {
++ /omit-if-no-ref/
++ cam_clk2m0_clk2: cam_clk2m0-clk2 {
++ rockchip,pins =
++ /* cam_clk2_out_m0 */
++ <4 RK_PA1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ cam_clk2m1_clk2: cam_clk2m1-clk2 {
++ rockchip,pins =
++ /* cam_clk2_out_m1 */
++ <2 RK_PD7 1 &pcfg_pull_none>;
++ };
++ };
++
++ can0 {
++ /omit-if-no-ref/
++ can0m0_pins: can0m0-pins {
++ rockchip,pins =
++ /* can0_rx_m0 */
++ <2 RK_PA0 13 &pcfg_pull_none>,
++ /* can0_tx_m0 */
++ <2 RK_PA1 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can0m1_pins: can0m1-pins {
++ rockchip,pins =
++ /* can0_rx_m1 */
++ <4 RK_PC3 12 &pcfg_pull_none>,
++ /* can0_tx_m1 */
++ <4 RK_PC2 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can0m2_pins: can0m2-pins {
++ rockchip,pins =
++ /* can0_rx_m2 */
++ <4 RK_PA6 13 &pcfg_pull_none>,
++ /* can0_tx_m2 */
++ <4 RK_PA4 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can0m3_pins: can0m3-pins {
++ rockchip,pins =
++ /* can0_rx_m3 */
++ <3 RK_PC1 12 &pcfg_pull_none>,
++ /* can0_tx_m3 */
++ <3 RK_PC4 12 &pcfg_pull_none>;
++ };
++ };
++
++ can1 {
++ /omit-if-no-ref/
++ can1m0_pins: can1m0-pins {
++ rockchip,pins =
++ /* can1_rx_m0 */
++ <2 RK_PA2 13 &pcfg_pull_none>,
++ /* can1_tx_m0 */
++ <2 RK_PA3 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can1m1_pins: can1m1-pins {
++ rockchip,pins =
++ /* can1_rx_m1 */
++ <4 RK_PC7 13 &pcfg_pull_none>,
++ /* can1_tx_m1 */
++ <4 RK_PC6 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can1m2_pins: can1m2-pins {
++ rockchip,pins =
++ /* can1_rx_m2 */
++ <4 RK_PB4 13 &pcfg_pull_none>,
++ /* can1_tx_m2 */
++ <4 RK_PB5 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ can1m3_pins: can1m3-pins {
++ rockchip,pins =
++ /* can1_rx_m3 */
++ <3 RK_PA3 11 &pcfg_pull_none>,
++ /* can1_tx_m3 */
++ <3 RK_PA2 11 &pcfg_pull_none>;
++ };
++ };
++
++ clk0_32k {
++ /omit-if-no-ref/
++ clk0_32k_pins: clk0_32k-pins {
++ rockchip,pins =
++ /* clk0_32k_out */
++ <0 RK_PA2 10 &pcfg_pull_none>;
++ };
++ };
++
++ clk1_32k {
++ /omit-if-no-ref/
++ clk1_32k_pins: clk1_32k-pins {
++ rockchip,pins =
++ /* clk1_32k_out */
++ <1 RK_PD5 13 &pcfg_pull_none>;
++ };
++ };
++
++ clk_32k {
++ /omit-if-no-ref/
++ clk_32k_pins: clk_32k-pins {
++ rockchip,pins =
++ /* clk_32k_in */
++ <0 RK_PA2 9 &pcfg_pull_none>;
++ };
++ };
++
++ cpubig {
++ /omit-if-no-ref/
++ cpubig_pins: cpubig-pins {
++ rockchip,pins =
++ /* cpubig_avs */
++ <0 RK_PD2 11 &pcfg_pull_none>;
++ };
++ };
++
++ cpulit {
++ /omit-if-no-ref/
++ cpulit_pins: cpulit-pins {
++ rockchip,pins =
++ /* cpulit_avs */
++ <0 RK_PC0 11 &pcfg_pull_none>;
++ };
++ };
++
++ debug0_test {
++ /omit-if-no-ref/
++ debug0_test_pins: debug0_test-pins {
++ rockchip,pins =
++ /* debug0_test_out */
++ <1 RK_PC4 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug1_test {
++ /omit-if-no-ref/
++ debug1_test_pins: debug1_test-pins {
++ rockchip,pins =
++ /* debug1_test_out */
++ <1 RK_PC5 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug2_test {
++ /omit-if-no-ref/
++ debug2_test_pins: debug2_test-pins {
++ rockchip,pins =
++ /* debug2_test_out */
++ <1 RK_PC6 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug3_test {
++ /omit-if-no-ref/
++ debug3_test_pins: debug3_test-pins {
++ rockchip,pins =
++ /* debug3_test_out */
++ <1 RK_PC7 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug4_test {
++ /omit-if-no-ref/
++ debug4_test_pins: debug4_test-pins {
++ rockchip,pins =
++ /* debug4_test_out */
++ <1 RK_PD0 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug5_test {
++ /omit-if-no-ref/
++ debug5_test_pins: debug5_test-pins {
++ rockchip,pins =
++ /* debug5_test_out */
++ <1 RK_PD1 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug6_test {
++ /omit-if-no-ref/
++ debug6_test_pins: debug6_test-pins {
++ rockchip,pins =
++ /* debug6_test_out */
++ <1 RK_PD2 7 &pcfg_pull_none>;
++ };
++ };
++
++ debug7_test {
++ /omit-if-no-ref/
++ debug7_test_pins: debug7_test-pins {
++ rockchip,pins =
++ /* debug7_test_out */
++ <1 RK_PD3 7 &pcfg_pull_none>;
++ };
++ };
++
++ dp {
++ /omit-if-no-ref/
++ dpm0_pins: dpm0-pins {
++ rockchip,pins =
++ /* dp_hpdin_m0 */
++ <4 RK_PC4 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dpm1_pins: dpm1-pins {
++ rockchip,pins =
++ /* dp_hpdin_m1 */
++ <0 RK_PC5 9 &pcfg_pull_none>;
++ };
++ };
++
++ dsm_aud {
++ /omit-if-no-ref/
++ dsm_audm0_ln: dsm_audm0-ln {
++ rockchip,pins =
++ /* dsm_aud_ln_m0 */
++ <2 RK_PA1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm0_lp: dsm_audm0-lp {
++ rockchip,pins =
++ /* dsm_aud_lp_m0 */
++ <2 RK_PA0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm0_rn: dsm_audm0-rn {
++ rockchip,pins =
++ /* dsm_aud_rn_m0 */
++ <2 RK_PA3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm0_rp: dsm_audm0-rp {
++ rockchip,pins =
++ /* dsm_aud_rp_m0 */
++ <2 RK_PA2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm1_ln: dsm_audm1-ln {
++ rockchip,pins =
++ /* dsm_aud_ln_m1 */
++ <4 RK_PC1 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm1_lp: dsm_audm1-lp {
++ rockchip,pins =
++ /* dsm_aud_lp_m1 */
++ <4 RK_PC0 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm1_rn: dsm_audm1-rn {
++ rockchip,pins =
++ /* dsm_aud_rn_m1 */
++ <4 RK_PC3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ dsm_audm1_rp: dsm_audm1-rp {
++ rockchip,pins =
++ /* dsm_aud_rp_m1 */
++ <4 RK_PC2 1 &pcfg_pull_none>;
++ };
++ };
++
++ dsmc {
++ /omit-if-no-ref/
++ dsmc_clkn: dsmc-clkn {
++ rockchip,pins =
++ /* dsmc_clkn */
++ <3 RK_PD6 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_clkp: dsmc-clkp {
++ rockchip,pins =
++ /* dsmc_clkp */
++ <3 RK_PD5 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_csn0: dsmc-csn0 {
++ rockchip,pins =
++ /* dsmc_csn0 */
++ <3 RK_PD3 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_csn1: dsmc-csn1 {
++ rockchip,pins =
++ /* dsmc_csn1 */
++ <3 RK_PB0 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_csn2: dsmc-csn2 {
++ rockchip,pins =
++ /* dsmc_csn2 */
++ <3 RK_PD1 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_csn3: dsmc-csn3 {
++ rockchip,pins =
++ /* dsmc_csn3 */
++ <3 RK_PD2 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data0: dsmc-data0 {
++ rockchip,pins =
++ /* dsmc_data0 */
++ <3 RK_PD4 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data1: dsmc-data1 {
++ rockchip,pins =
++ /* dsmc_data1 */
++ <3 RK_PD0 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data2: dsmc-data2 {
++ rockchip,pins =
++ /* dsmc_data2 */
++ <3 RK_PC7 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data3: dsmc-data3 {
++ rockchip,pins =
++ /* dsmc_data3 */
++ <3 RK_PC6 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data4: dsmc-data4 {
++ rockchip,pins =
++ /* dsmc_data4 */
++ <3 RK_PC5 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data5: dsmc-data5 {
++ rockchip,pins =
++ /* dsmc_data5 */
++ <3 RK_PC4 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data6: dsmc-data6 {
++ rockchip,pins =
++ /* dsmc_data6 */
++ <3 RK_PC1 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data7: dsmc-data7 {
++ rockchip,pins =
++ /* dsmc_data7 */
++ <3 RK_PC0 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data8: dsmc-data8 {
++ rockchip,pins =
++ /* dsmc_data8 */
++ <3 RK_PB5 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data9: dsmc-data9 {
++ rockchip,pins =
++ /* dsmc_data9 */
++ <3 RK_PB4 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data10: dsmc-data10 {
++ rockchip,pins =
++ /* dsmc_data10 */
++ <3 RK_PB3 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data11: dsmc-data11 {
++ rockchip,pins =
++ /* dsmc_data11 */
++ <3 RK_PB2 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data12: dsmc-data12 {
++ rockchip,pins =
++ /* dsmc_data12 */
++ <3 RK_PB1 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data13: dsmc-data13 {
++ rockchip,pins =
++ /* dsmc_data13 */
++ <3 RK_PA7 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data14: dsmc-data14 {
++ rockchip,pins =
++ /* dsmc_data14 */
++ <3 RK_PA6 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_data15: dsmc-data15 {
++ rockchip,pins =
++ /* dsmc_data15 */
++ <3 RK_PA5 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_dqs0: dsmc-dqs0 {
++ rockchip,pins =
++ /* dsmc_dqs0 */
++ <3 RK_PB7 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_dqs1: dsmc-dqs1 {
++ rockchip,pins =
++ /* dsmc_dqs1 */
++ <3 RK_PB6 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_int0: dsmc-int0 {
++ rockchip,pins =
++ /* dsmc_int0 */
++ <4 RK_PA0 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_int1: dsmc-int1 {
++ rockchip,pins =
++ /* dsmc_int1 */
++ <3 RK_PC2 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_int2: dsmc-int2 {
++ rockchip,pins =
++ /* dsmc_int2 */
++ <4 RK_PA1 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_int3: dsmc-int3 {
++ rockchip,pins =
++ /* dsmc_int3 */
++ <3 RK_PC3 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_rdyn: dsmc-rdyn {
++ rockchip,pins =
++ /* dsmc_rdyn */
++ <3 RK_PA4 5 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ dsmc_resetn: dsmc-resetn {
++ rockchip,pins =
++ /* dsmc_resetn */
++ <3 RK_PD7 5 &pcfg_pull_none>;
++ };
++ };
++
++ dsmc_testclk {
++ /omit-if-no-ref/
++ dsmc_testclk_out: dsmc-testclk-out {
++ rockchip,pins =
++ /* dsmc_testclk_out */
++ <3 RK_PC2 7 &pcfg_pull_none>;
++ };
++ };
++
++ dsmc_testdata {
++ /omit-if-no-ref/
++ dsmc_testdata_out: dsmc-testdata-out {
++ rockchip,pins =
++ /* dsmc_testdata_out */
++ <3 RK_PC3 7 &pcfg_pull_none>;
++ };
++ };
++
++ edp_tx {
++ /omit-if-no-ref/
++ edp_txm0_pins: edp_txm0-pins {
++ rockchip,pins =
++ /* edp_tx_hpdin_m0 */
++ <4 RK_PC1 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ edp_txm1_pins: edp_txm1-pins {
++ rockchip,pins =
++ /* edp_tx_hpdin_m1 */
++ <0 RK_PB6 10 &pcfg_pull_none>;
++ };
++ };
++
++ emmc {
++ /omit-if-no-ref/
++ emmc_rstnout: emmc-rstnout {
++ rockchip,pins =
++ /* emmc_rstn */
++ <1 RK_PB3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ emmc_bus8: emmc-bus8 {
++ rockchip,pins =
++ /* emmc_d0 */
++ <1 RK_PA0 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d1 */
++ <1 RK_PA1 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d2 */
++ <1 RK_PA2 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d3 */
++ <1 RK_PA3 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d4 */
++ <1 RK_PA4 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d5 */
++ <1 RK_PA5 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d6 */
++ <1 RK_PA6 1 &pcfg_pull_up_drv_level_2>,
++ /* emmc_d7 */
++ <1 RK_PA7 1 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ emmc_clk: emmc-clk {
++ rockchip,pins =
++ /* emmc_clk */
++ <1 RK_PB1 1 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ emmc_cmd: emmc-cmd {
++ rockchip,pins =
++ /* emmc_cmd */
++ <1 RK_PB0 1 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ emmc_strb: emmc-strb {
++ rockchip,pins =
++ /* emmc_strb */
++ <1 RK_PB2 1 &pcfg_pull_none>;
++ };
++ };
++
++ emmc_testclk {
++ /omit-if-no-ref/
++ emmc_testclk_test: emmc_testclk-test {
++ rockchip,pins =
++ /* emmc_testclk_out */
++ <1 RK_PB3 6 &pcfg_pull_none>;
++ };
++ };
++
++ emmc_testdata {
++ /omit-if-no-ref/
++ emmc_testdata_test: emmc_testdata-test {
++ rockchip,pins =
++ /* emmc_testdata_out */
++ <1 RK_PB7 5 &pcfg_pull_none>;
++ };
++ };
++
++ eth0 {
++ /omit-if-no-ref/
++ eth0m0_miim: eth0m0-miim {
++ rockchip,pins =
++ /* eth0_mdc_m0 */
++ <3 RK_PA6 3 &pcfg_pull_none>,
++ /* eth0_mdio_m0 */
++ <3 RK_PA5 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m0_rx_bus2: eth0m0-rx_bus2 {
++ rockchip,pins =
++ /* eth0_rxctl_m0 */
++ <3 RK_PA7 3 &pcfg_pull_none>,
++ /* eth0_rxd0_m0 */
++ <3 RK_PB2 3 &pcfg_pull_none>,
++ /* eth0_rxd1_m0 */
++ <3 RK_PB1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m0_tx_bus2: eth0m0-tx_bus2 {
++ rockchip,pins =
++ /* eth0_txctl_m0 */
++ <3 RK_PB3 3 &pcfg_pull_none>,
++ /* eth0_txd0_m0 */
++ <3 RK_PB5 3 &pcfg_pull_none>,
++ /* eth0_txd1_m0 */
++ <3 RK_PB4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m0_rgmii_clk: eth0m0-rgmii_clk {
++ rockchip,pins =
++ /* eth0_rxclk_m0 */
++ <3 RK_PD1 3 &pcfg_pull_none>,
++ /* eth0_txclk_m0 */
++ <3 RK_PB6 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m0_rgmii_bus: eth0m0-rgmii_bus {
++ rockchip,pins =
++ /* eth0_rxd2_m0 */
++ <3 RK_PD3 3 &pcfg_pull_none>,
++ /* eth0_rxd3_m0 */
++ <3 RK_PD2 3 &pcfg_pull_none>,
++ /* eth0_txd2_m0 */
++ <3 RK_PC3 3 &pcfg_pull_none>,
++ /* eth0_txd3_m0 */
++ <3 RK_PC2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m0_mclk: eth0m0-mclk {
++ rockchip,pins =
++ /* eth0m0_mclk */
++ <3 RK_PB0 3 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth0m0_ppsclk: eth0m0-ppsclk {
++ rockchip,pins =
++ /* eth0m0_ppsclk */
++ <3 RK_PC0 3 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth0m0_ppstrig: eth0m0-ppstrig {
++ rockchip,pins =
++ /* eth0m0_ppstrig */
++ <3 RK_PB7 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_miim: eth0m1-miim {
++ rockchip,pins =
++ /* eth0_mdc_m1 */
++ <3 RK_PA1 3 &pcfg_pull_none>,
++ /* eth0_mdio_m1 */
++ <3 RK_PA0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_rx_bus2: eth0m1-rx_bus2 {
++ rockchip,pins =
++ /* eth0_rxctl_m1 */
++ <3 RK_PA2 3 &pcfg_pull_none>,
++ /* eth0_rxd0_m1 */
++ <2 RK_PA6 3 &pcfg_pull_none>,
++ /* eth0_rxd1_m1 */
++ <3 RK_PA3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_tx_bus2: eth0m1-tx_bus2 {
++ rockchip,pins =
++ /* eth0_txctl_m1 */
++ <2 RK_PA7 3 &pcfg_pull_none>,
++ /* eth0_txd0_m1 */
++ <2 RK_PB1 3 &pcfg_pull_none>,
++ /* eth0_txd1_m1 */
++ <2 RK_PB0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_rgmii_clk: eth0m1-rgmii_clk {
++ rockchip,pins =
++ /* eth0_rxclk_m1 */
++ <2 RK_PB5 3 &pcfg_pull_none>,
++ /* eth0_txclk_m1 */
++ <2 RK_PB3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_rgmii_bus: eth0m1-rgmii_bus {
++ rockchip,pins =
++ /* eth0_rxd2_m1 */
++ <2 RK_PB7 3 &pcfg_pull_none>,
++ /* eth0_rxd3_m1 */
++ <2 RK_PB6 3 &pcfg_pull_none>,
++ /* eth0_txd2_m1 */
++ <2 RK_PB4 3 &pcfg_pull_none>,
++ /* eth0_txd3_m1 */
++ <2 RK_PB2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_mclk: eth0m1-mclk {
++ rockchip,pins =
++ /* eth0m1_mclk */
++ <2 RK_PD6 3 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth0m1_ppsclk: eth0m1-ppsclk {
++ rockchip,pins =
++ /* eth0m1_ppsclk */
++ <2 RK_PC1 3 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth0m1_ppstrig: eth0m1-ppstrig {
++ rockchip,pins =
++ /* eth0m1_ppstrig */
++ <2 RK_PC2 3 &pcfg_pull_none>;
++ };
++ };
++
++ eth1 {
++ /omit-if-no-ref/
++ eth1m0_miim: eth1m0-miim {
++ rockchip,pins =
++ /* eth1_mdc_m0 */
++ <2 RK_PD4 2 &pcfg_pull_none>,
++ /* eth1_mdio_m0 */
++ <2 RK_PD5 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m0_rx_bus2: eth1m0-rx_bus2 {
++ rockchip,pins =
++ /* eth1_rxctl_m0 */
++ <2 RK_PD3 2 &pcfg_pull_none>,
++ /* eth1_rxd0_m0 */
++ <2 RK_PD1 2 &pcfg_pull_none>,
++ /* eth1_rxd1_m0 */
++ <2 RK_PD2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m0_tx_bus2: eth1m0-tx_bus2 {
++ rockchip,pins =
++ /* eth1_txctl_m0 */
++ <2 RK_PD0 2 &pcfg_pull_none>,
++ /* eth1_txd0_m0 */
++ <2 RK_PC6 2 &pcfg_pull_none>,
++ /* eth1_txd1_m0 */
++ <2 RK_PC7 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m0_rgmii_clk: eth1m0-rgmii_clk {
++ rockchip,pins =
++ /* eth1_rxclk_m0 */
++ <2 RK_PC2 2 &pcfg_pull_none>,
++ /* eth1_txclk_m0 */
++ <2 RK_PC5 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m0_rgmii_bus: eth1m0-rgmii_bus {
++ rockchip,pins =
++ /* eth1_rxd2_m0 */
++ <2 RK_PC0 2 &pcfg_pull_none>,
++ /* eth1_rxd3_m0 */
++ <2 RK_PC1 2 &pcfg_pull_none>,
++ /* eth1_txd2_m0 */
++ <2 RK_PC3 2 &pcfg_pull_none>,
++ /* eth1_txd3_m0 */
++ <2 RK_PC4 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m0_mclk: eth1m0-mclk {
++ rockchip,pins =
++ /* eth1m0_mclk */
++ <2 RK_PD7 2 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth1m0_ppsclk: eth1m0-ppsclk {
++ rockchip,pins =
++ /* eth1m0_ppsclk */
++ <3 RK_PA2 2 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth1m0_ppstrig: eth1m0-ppstrig {
++ rockchip,pins =
++ /* eth1m0_ppstrig */
++ <3 RK_PA1 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_miim: eth1m1-miim {
++ rockchip,pins =
++ /* eth1_mdc_m1 */
++ <1 RK_PD2 1 &pcfg_pull_none>,
++ /* eth1_mdio_m1 */
++ <1 RK_PD3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_rx_bus2: eth1m1-rx_bus2 {
++ rockchip,pins =
++ /* eth1_rxctl_m1 */
++ <1 RK_PD1 1 &pcfg_pull_none>,
++ /* eth1_rxd0_m1 */
++ <1 RK_PC7 1 &pcfg_pull_none>,
++ /* eth1_rxd1_m1 */
++ <1 RK_PD0 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_tx_bus2: eth1m1-tx_bus2 {
++ rockchip,pins =
++ /* eth1_txctl_m1 */
++ <1 RK_PC6 1 &pcfg_pull_none>,
++ /* eth1_txd0_m1 */
++ <1 RK_PC4 1 &pcfg_pull_none>,
++ /* eth1_txd1_m1 */
++ <1 RK_PC5 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_rgmii_clk: eth1m1-rgmii_clk {
++ rockchip,pins =
++ /* eth1_rxclk_m1 */
++ <1 RK_PB6 1 &pcfg_pull_none>,
++ /* eth1_txclk_m1 */
++ <1 RK_PC1 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_rgmii_bus: eth1m1-rgmii_bus {
++ rockchip,pins =
++ /* eth1_rxd2_m1 */
++ <1 RK_PB4 1 &pcfg_pull_none>,
++ /* eth1_rxd3_m1 */
++ <1 RK_PB5 1 &pcfg_pull_none>,
++ /* eth1_txd2_m1 */
++ <1 RK_PB7 1 &pcfg_pull_none>,
++ /* eth1_txd3_m1 */
++ <1 RK_PC0 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_mclk: eth1m1-mclk {
++ rockchip,pins =
++ /* eth1m1_mclk */
++ <1 RK_PD4 1 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth1m1_ppsclk: eth1m1-ppsclk {
++ rockchip,pins =
++ /* eth1m1_ppsclk */
++ <1 RK_PC2 1 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ eth1m1_ppstrig: eth1m1-ppstrig {
++ rockchip,pins =
++ /* eth1m1_ppstrig */
++ <1 RK_PC3 1 &pcfg_pull_none>;
++ };
++ };
++
++ eth0_ptp {
++ /omit-if-no-ref/
++ eth0m0_ptp_refclk: eth0m0-ptp-refclk {
++ rockchip,pins =
++ /* eth0m0_ptp_refclk */
++ <3 RK_PC1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0m1_ptp_refclk: eth0m1-ptp-refclk {
++ rockchip,pins =
++ /* eth0m1_ptp_refclk */
++ <2 RK_PC0 3 &pcfg_pull_none>;
++ };
++ };
++
++ eth0_testrxclk {
++ /omit-if-no-ref/
++ eth0_testrxclkm0_test: eth0_testrxclkm0-test {
++ rockchip,pins =
++ /* eth0_testrxclk_out_m0 */
++ <3 RK_PC7 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0_testrxclkm1_test: eth0_testrxclkm1-test {
++ rockchip,pins =
++ /* eth0_testrxclk_out_m1 */
++ <2 RK_PC5 6 &pcfg_pull_none>;
++ };
++ };
++
++ eth0_testrxd {
++ /omit-if-no-ref/
++ eth0_testrxdm0_test: eth0_testrxdm0-test {
++ rockchip,pins =
++ /* eth0_testrxd_out_m0 */
++ <3 RK_PD0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth0_testrxdm1_test: eth0_testrxdm1-test {
++ rockchip,pins =
++ /* eth0_testrxd_out_m1 */
++ <2 RK_PC4 6 &pcfg_pull_none>;
++ };
++ };
++
++ eth1_ptp {
++ /omit-if-no-ref/
++ eth1m0_ptp_refclk: eth1m0-ptp-refclk {
++ rockchip,pins =
++ /* eth1m0_ptp_refclk */
++ <3 RK_PA3 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1m1_ptp_refclk: eth1m1-ptp-refclk {
++ rockchip,pins =
++ /* eth1m1_ptp_refclk */
++ <2 RK_PB6 2 &pcfg_pull_none>;
++ };
++ };
++
++ eth1_testrxclk {
++ /omit-if-no-ref/
++ eth1_testrxclkm0_test: eth1_testrxclkm0-test {
++ rockchip,pins =
++ /* eth1_testrxclk_out_m0 */
++ <3 RK_PA1 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1_testrxclkm1_test: eth1_testrxclkm1-test {
++ rockchip,pins =
++ /* eth1_testrxclk_out_m1 */
++ <1 RK_PC3 6 &pcfg_pull_none>;
++ };
++ };
++
++ eth1_testrxd {
++ /omit-if-no-ref/
++ eth1_testrxdm0_test: eth1_testrxdm0-test {
++ rockchip,pins =
++ /* eth1_testrxd_out_m0 */
++ <3 RK_PA0 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ eth1_testrxdm1_test: eth1_testrxdm1-test {
++ rockchip,pins =
++ /* eth1_testrxd_out_m1 */
++ <1 RK_PC2 6 &pcfg_pull_none>;
++ };
++ };
++
++ eth_clk0_25m {
++ /omit-if-no-ref/
++ ethm0_clk0_25m_out: ethm0-clk0-25m-out {
++ rockchip,pins =
++ /* ethm0_clk0_25m_out */
++ <3 RK_PA4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ ethm1_clk0_25m_out: ethm1-clk0-25m-out {
++ rockchip,pins =
++ /* ethm1_clk0_25m_out */
++ <2 RK_PD7 3 &pcfg_pull_none>;
++ };
++ };
++
++ eth_clk1_25m {
++ /omit-if-no-ref/
++ ethm0_clk1_25m_out: ethm0-clk1-25m-out {
++ rockchip,pins =
++ /* ethm0_clk1_25m_out */
++ <2 RK_PD6 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ ethm1_clk1_25m_out: ethm1-clk1-25m-out {
++ rockchip,pins =
++ /* ethm1_clk1_25m_out */
++ <1 RK_PD5 1 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus0 {
++ /omit-if-no-ref/
++ flexbus0m0_csn: flexbus0m0-csn {
++ rockchip,pins =
++ /* flexbus0_csn_m0 */
++ <3 RK_PA4 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m0_d13: flexbus0m0-d13 {
++ rockchip,pins =
++ /* flexbus0_d13_m0 */
++ <4 RK_PA0 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m0_d14: flexbus0m0-d14 {
++ rockchip,pins =
++ /* flexbus0_d14_m0 */
++ <4 RK_PA1 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m0_d15: flexbus0m0-d15 {
++ rockchip,pins =
++ /* flexbus0_d15_m0 */
++ <3 RK_PD7 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m1_csn: flexbus0m1-csn {
++ rockchip,pins =
++ /* flexbus0_csn_m1 */
++ <4 RK_PA1 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m1_d13: flexbus0m1-d13 {
++ rockchip,pins =
++ /* flexbus0_d13_m1 */
++ <4 RK_PA4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m1_d14: flexbus0m1-d14 {
++ rockchip,pins =
++ /* flexbus0_d14_m1 */
++ <4 RK_PA6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m1_d15: flexbus0m1-d15 {
++ rockchip,pins =
++ /* flexbus0_d15_m1 */
++ <4 RK_PB5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m2_csn: flexbus0m2-csn {
++ rockchip,pins =
++ /* flexbus0_csn_m2 */
++ <3 RK_PC3 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m3_csn: flexbus0m3-csn {
++ rockchip,pins =
++ /* flexbus0_csn_m3 */
++ <3 RK_PD2 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0m4_csn: flexbus0m4-csn {
++ rockchip,pins =
++ /* flexbus0_csn_m4 */
++ <4 RK_PB4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_clk: flexbus0-clk {
++ rockchip,pins =
++ /* flexbus0_clk */
++ <3 RK_PB6 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d10: flexbus0-d10 {
++ rockchip,pins =
++ /* flexbus0_d10 */
++ <3 RK_PC3 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d11: flexbus0-d11 {
++ rockchip,pins =
++ /* flexbus0_d11 */
++ <3 RK_PD1 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d12: flexbus0-d12 {
++ rockchip,pins =
++ /* flexbus0_d12 */
++ <3 RK_PD2 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d0: flexbus0-d0 {
++ rockchip,pins =
++ /* flexbus0_d0 */
++ <3 RK_PB5 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d1: flexbus0-d1 {
++ rockchip,pins =
++ /* flexbus0_d1 */
++ <3 RK_PB4 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d2: flexbus0-d2 {
++ rockchip,pins =
++ /* flexbus0_d2 */
++ <3 RK_PB3 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d3: flexbus0-d3 {
++ rockchip,pins =
++ /* flexbus0_d3 */
++ <3 RK_PB2 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d4: flexbus0-d4 {
++ rockchip,pins =
++ /* flexbus0_d4 */
++ <3 RK_PB1 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d5: flexbus0-d5 {
++ rockchip,pins =
++ /* flexbus0_d5 */
++ <3 RK_PA7 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d6: flexbus0-d6 {
++ rockchip,pins =
++ /* flexbus0_d6 */
++ <3 RK_PA6 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d7: flexbus0-d7 {
++ rockchip,pins =
++ /* flexbus0_d7 */
++ <3 RK_PA5 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d8: flexbus0-d8 {
++ rockchip,pins =
++ /* flexbus0_d8 */
++ <3 RK_PB0 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus0_d9: flexbus0-d9 {
++ rockchip,pins =
++ /* flexbus0_d9 */
++ <3 RK_PC2 6 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus1 {
++ /omit-if-no-ref/
++ flexbus1m0_csn: flexbus1m0-csn {
++ rockchip,pins =
++ /* flexbus1_csn_m0 */
++ <3 RK_PB7 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m0_d12: flexbus1m0-d12 {
++ rockchip,pins =
++ /* flexbus1_d12_m0 */
++ <3 RK_PD7 7 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m0_d13: flexbus1m0-d13 {
++ rockchip,pins =
++ /* flexbus1_d13_m0 */
++ <4 RK_PA1 7 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m0_d14: flexbus1m0-d14 {
++ rockchip,pins =
++ /* flexbus1_d14_m0 */
++ <4 RK_PA0 7 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m0_d15: flexbus1m0-d15 {
++ rockchip,pins =
++ /* flexbus1_d15_m0 */
++ <3 RK_PD2 7 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m1_csn: flexbus1m1-csn {
++ rockchip,pins =
++ /* flexbus1_csn_m1 */
++ <3 RK_PD7 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m1_d12: flexbus1m1-d12 {
++ rockchip,pins =
++ /* flexbus1_d12_m1 */
++ <4 RK_PA5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m1_d13: flexbus1m1-d13 {
++ rockchip,pins =
++ /* flexbus1_d13_m1 */
++ <4 RK_PB0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m1_d14: flexbus1m1-d14 {
++ rockchip,pins =
++ /* flexbus1_d14_m1 */
++ <4 RK_PB1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m1_d15: flexbus1m1-d15 {
++ rockchip,pins =
++ /* flexbus1_d15_m1 */
++ <4 RK_PB2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m2_csn: flexbus1m2-csn {
++ rockchip,pins =
++ /* flexbus1_csn_m2 */
++ <3 RK_PD1 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m3_csn: flexbus1m3-csn {
++ rockchip,pins =
++ /* flexbus1_csn_m3 */
++ <4 RK_PA0 8 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1m4_csn: flexbus1m4-csn {
++ rockchip,pins =
++ /* flexbus1_csn_m4 */
++ <4 RK_PA3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_clk: flexbus1-clk {
++ rockchip,pins =
++ /* flexbus1_clk */
++ <3 RK_PD6 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d10: flexbus1-d10 {
++ rockchip,pins =
++ /* flexbus1_d10 */
++ <3 RK_PB7 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d11: flexbus1-d11 {
++ rockchip,pins =
++ /* flexbus1_d11 */
++ <3 RK_PA4 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d0: flexbus1-d0 {
++ rockchip,pins =
++ /* flexbus1_d0 */
++ <3 RK_PD5 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d1: flexbus1-d1 {
++ rockchip,pins =
++ /* flexbus1_d1 */
++ <3 RK_PD4 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d2: flexbus1-d2 {
++ rockchip,pins =
++ /* flexbus1_d2 */
++ <3 RK_PD3 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d3: flexbus1-d3 {
++ rockchip,pins =
++ /* flexbus1_d3 */
++ <3 RK_PD0 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d4: flexbus1-d4 {
++ rockchip,pins =
++ /* flexbus1_d4 */
++ <3 RK_PC7 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d5: flexbus1-d5 {
++ rockchip,pins =
++ /* flexbus1_d5 */
++ <3 RK_PC6 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d6: flexbus1-d6 {
++ rockchip,pins =
++ /* flexbus1_d6 */
++ <3 RK_PC5 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d7: flexbus1-d7 {
++ rockchip,pins =
++ /* flexbus1_d7 */
++ <3 RK_PC4 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d8: flexbus1-d8 {
++ rockchip,pins =
++ /* flexbus1_d8 */
++ <3 RK_PC1 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ flexbus1_d9: flexbus1-d9 {
++ rockchip,pins =
++ /* flexbus1_d9 */
++ <3 RK_PC0 6 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus0_testclk {
++ /omit-if-no-ref/
++ flexbus0_testclk_testclk: flexbus0_testclk-testclk {
++ rockchip,pins =
++ /* flexbus0_testclk_out */
++ <2 RK_PA3 6 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus0_testdata {
++ /omit-if-no-ref/
++ flexbus0_testdata_testdata: flexbus0_testdata-testdata {
++ rockchip,pins =
++ /* flexbus0_testdata_out */
++ <2 RK_PA2 6 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus1_testclk {
++ /omit-if-no-ref/
++ flexbus1_testclk_testclk: flexbus1_testclk-testclk {
++ rockchip,pins =
++ /* flexbus1_testclk_out */
++ <2 RK_PA5 6 &pcfg_pull_none>;
++ };
++ };
++
++ flexbus1_testdata {
++ /omit-if-no-ref/
++ flexbus1_testdata_testdata: flexbus1_testdata-testdata {
++ rockchip,pins =
++ /* flexbus1_testdata_out */
++ <2 RK_PA4 6 &pcfg_pull_none>;
++ };
++ };
++
++ fspi0 {
++ /omit-if-no-ref/
++ fspi0_pins: fspi0-pins {
++ rockchip,pins =
++ /* fspi0_clk */
++ <1 RK_PB1 2 &pcfg_pull_none>,
++ /* fspi0_d0 */
++ <1 RK_PA0 2 &pcfg_pull_none>,
++ /* fspi0_d1 */
++ <1 RK_PA1 2 &pcfg_pull_none>,
++ /* fspi0_d2 */
++ <1 RK_PA2 2 &pcfg_pull_none>,
++ /* fspi0_d3 */
++ <1 RK_PA3 2 &pcfg_pull_none>,
++ /* fspi0_d4 */
++ <1 RK_PA4 2 &pcfg_pull_none>,
++ /* fspi0_d5 */
++ <1 RK_PA5 2 &pcfg_pull_none>,
++ /* fspi0_d6 */
++ <1 RK_PA6 2 &pcfg_pull_none>,
++ /* fspi0_d7 */
++ <1 RK_PA7 2 &pcfg_pull_none>,
++ /* fspi0_dqs */
++ <1 RK_PB2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ fspi0_csn0: fspi0-csn0 {
++ rockchip,pins =
++ /* fspi0_csn0 */
++ <1 RK_PB3 2 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ fspi0_csn1: fspi0-csn1 {
++ rockchip,pins =
++ /* fspi0_csn1 */
++ <1 RK_PB0 2 &pcfg_pull_none>;
++ };
++ };
++
++ fspi1 {
++ /omit-if-no-ref/
++ fspi1m0_pins: fspi1m0-pins {
++ rockchip,pins =
++ /* fspi1_clk_m0 */
++ <2 RK_PA5 2 &pcfg_pull_none>,
++ /* fspi1_d0_m0 */
++ <2 RK_PA0 2 &pcfg_pull_none>,
++ /* fspi1_d1_m0 */
++ <2 RK_PA1 2 &pcfg_pull_none>,
++ /* fspi1_d2_m0 */
++ <2 RK_PA2 2 &pcfg_pull_none>,
++ /* fspi1_d3_m0 */
++ <2 RK_PA3 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ fspi1m0_csn0: fspi1m0-csn0 {
++ rockchip,pins =
++ /* fspi1m0_csn0 */
++ <2 RK_PA4 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ fspi1m1_pins: fspi1m1-pins {
++ rockchip,pins =
++ /* fspi1_clk_m1 */
++ <1 RK_PD5 3 &pcfg_pull_none>,
++ /* fspi1_d0_m1 */
++ <1 RK_PC4 3 &pcfg_pull_none>,
++ /* fspi1_d1_m1 */
++ <1 RK_PC5 3 &pcfg_pull_none>,
++ /* fspi1_d2_m1 */
++ <1 RK_PC6 3 &pcfg_pull_none>,
++ /* fspi1_d3_m1 */
++ <1 RK_PC7 3 &pcfg_pull_none>,
++ /* fspi1_d4_m1 */
++ <1 RK_PD0 3 &pcfg_pull_none>,
++ /* fspi1_d5_m1 */
++ <1 RK_PD1 3 &pcfg_pull_none>,
++ /* fspi1_d6_m1 */
++ <1 RK_PD2 3 &pcfg_pull_none>,
++ /* fspi1_d7_m1 */
++ <1 RK_PD3 3 &pcfg_pull_none>,
++ /* fspi1_dqs_m1 */
++ <1 RK_PD4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ fspi1m1_csn0: fspi1m1-csn0 {
++ rockchip,pins =
++ /* fspi1m1_csn0 */
++ <1 RK_PC3 3 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ fspi1m1_csn1: fspi1m1-csn1 {
++ rockchip,pins =
++ /* fspi1m1_csn1 */
++ <1 RK_PC2 3 &pcfg_pull_none>;
++ };
++ };
++
++ fspi0_testclk {
++ /omit-if-no-ref/
++ fspi0_testclk_test: fspi0_testclk-test {
++ rockchip,pins =
++ /* fspi0_testclk_out */
++ <1 RK_PB0 6 &pcfg_pull_none>;
++ };
++ };
++
++ fspi0_testdata {
++ /omit-if-no-ref/
++ fspi0_testdata_test: fspi0_testdata-test {
++ rockchip,pins =
++ /* fspi0_testdata_out */
++ <1 RK_PB7 6 &pcfg_pull_none>;
++ };
++ };
++
++ fspi1_testclk {
++ /omit-if-no-ref/
++ fspi1_testclkm1_test: fspi1_testclkm1-test {
++ rockchip,pins =
++ /* fspi1_testclk_out_m1 */
++ <1 RK_PC1 7 &pcfg_pull_none>;
++ };
++ };
++
++ fspi1_testdata {
++ /omit-if-no-ref/
++ fspi1_testdatam1_test: fspi1_testdatam1-test {
++ rockchip,pins =
++ /* fspi1_testdata_out_m1 */
++ <1 RK_PB7 7 &pcfg_pull_none>;
++ };
++ };
++
++ gpu {
++ /omit-if-no-ref/
++ gpu_pins: gpu-pins {
++ rockchip,pins =
++ /* gpu_avs */
++ <0 RK_PD3 11 &pcfg_pull_none>;
++ };
++ };
++
++ hdmi_tx {
++ /omit-if-no-ref/
++ hdmi_txm0_pins: hdmi_txm0-pins {
++ rockchip,pins =
++ /* hdmi_tx_cec_m0 */
++ <4 RK_PC0 9 &pcfg_pull_none>,
++ /* hdmi_tx_hpdin_m0 */
++ <4 RK_PC1 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ hdmi_txm1_pins: hdmi_txm1-pins {
++ rockchip,pins =
++ /* hdmi_tx_cec_m1 */
++ <0 RK_PC3 9 &pcfg_pull_none>,
++ /* hdmi_tx_hpdin_m1 */
++ <0 RK_PB6 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ hdmi_tx_scl: hdmi-tx-scl {
++ rockchip,pins =
++ /* hdmi_tx_scl */
++ <4 RK_PC2 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ hdmi_tx_sda: hdmi-tx-sda {
++ rockchip,pins =
++ /* hdmi_tx_sda */
++ <4 RK_PC3 9 &pcfg_pull_none>;
++ };
++ };
++
++ i2c0 {
++ /omit-if-no-ref/
++ i2c0m0_xfer: i2c0m0-xfer {
++ rockchip,pins =
++ /* i2c0_scl_m0 */
++ <0 RK_PB0 11 &pcfg_pull_none_smt>,
++ /* i2c0_sda_m0 */
++ <0 RK_PB1 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c0m1_xfer: i2c0m1-xfer {
++ rockchip,pins =
++ /* i2c0_scl_m1 */
++ <0 RK_PC1 9 &pcfg_pull_none_smt>,
++ /* i2c0_sda_m1 */
++ <0 RK_PC2 9 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c1 {
++ /omit-if-no-ref/
++ i2c1m0_xfer: i2c1m0-xfer {
++ rockchip,pins =
++ /* i2c1_scl_m0 */
++ <0 RK_PB2 11 &pcfg_pull_none_smt>,
++ /* i2c1_sda_m0 */
++ <0 RK_PB3 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c1m1_xfer: i2c1m1-xfer {
++ rockchip,pins =
++ /* i2c1_scl_m1 */
++ <0 RK_PB4 9 &pcfg_pull_none_smt>,
++ /* i2c1_sda_m1 */
++ <0 RK_PB5 9 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c2 {
++ /omit-if-no-ref/
++ i2c2m0_xfer: i2c2m0-xfer {
++ rockchip,pins =
++ /* i2c2_scl_m0 */
++ <0 RK_PB7 9 &pcfg_pull_none_smt>,
++ /* i2c2_sda_m0 */
++ <0 RK_PC0 9 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c2m1_xfer: i2c2m1-xfer {
++ rockchip,pins =
++ /* i2c2_scl_m1 */
++ <1 RK_PA0 10 &pcfg_pull_none_smt>,
++ /* i2c2_sda_m1 */
++ <1 RK_PA1 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c2m2_xfer: i2c2m2-xfer {
++ rockchip,pins =
++ /* i2c2_scl_m2 */
++ <4 RK_PA3 11 &pcfg_pull_none_smt>,
++ /* i2c2_sda_m2 */
++ <4 RK_PA5 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c2m3_xfer: i2c2m3-xfer {
++ rockchip,pins =
++ /* i2c2_scl_m3 */
++ <4 RK_PC2 11 &pcfg_pull_none_smt>,
++ /* i2c2_sda_m3 */
++ <4 RK_PC3 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c3 {
++ /omit-if-no-ref/
++ i2c3m0_xfer: i2c3m0-xfer {
++ rockchip,pins =
++ /* i2c3_scl_m0 */
++ <4 RK_PB5 11 &pcfg_pull_none_smt>,
++ /* i2c3_sda_m0 */
++ <4 RK_PB4 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c3m1_xfer: i2c3m1-xfer {
++ rockchip,pins =
++ /* i2c3_scl_m1 */
++ <0 RK_PC6 9 &pcfg_pull_none_smt>,
++ /* i2c3_sda_m1 */
++ <0 RK_PC7 9 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c3m2_xfer: i2c3m2-xfer {
++ rockchip,pins =
++ /* i2c3_scl_m2 */
++ <3 RK_PD4 11 &pcfg_pull_none_smt>,
++ /* i2c3_sda_m2 */
++ <3 RK_PD5 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c3m3_xfer: i2c3m3-xfer {
++ rockchip,pins =
++ /* i2c3_scl_m3 */
++ <4 RK_PC4 11 &pcfg_pull_none_smt>,
++ /* i2c3_sda_m3 */
++ <4 RK_PC5 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c4 {
++ /omit-if-no-ref/
++ i2c4m0_xfer: i2c4m0-xfer {
++ rockchip,pins =
++ /* i2c4_scl_m0 */
++ <0 RK_PD2 9 &pcfg_pull_none_smt>,
++ /* i2c4_sda_m0 */
++ <0 RK_PD3 9 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c4m1_xfer: i2c4m1-xfer {
++ rockchip,pins =
++ /* i2c4_scl_m1 */
++ <4 RK_PA4 11 &pcfg_pull_none_smt>,
++ /* i2c4_sda_m1 */
++ <4 RK_PA6 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c4m2_xfer: i2c4m2-xfer {
++ rockchip,pins =
++ /* i2c4_scl_m2 */
++ <2 RK_PA6 11 &pcfg_pull_none_smt>,
++ /* i2c4_sda_m2 */
++ <2 RK_PA7 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c4m3_xfer: i2c4m3-xfer {
++ rockchip,pins =
++ /* i2c4_scl_m3 */
++ <3 RK_PC0 11 &pcfg_pull_none_smt>,
++ /* i2c4_sda_m3 */
++ <3 RK_PB7 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c5 {
++ /omit-if-no-ref/
++ i2c5m0_xfer: i2c5m0-xfer {
++ rockchip,pins =
++ /* i2c5_scl_m0 */
++ <2 RK_PA5 11 &pcfg_pull_none_smt>,
++ /* i2c5_sda_m0 */
++ <2 RK_PA4 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c5m1_xfer: i2c5m1-xfer {
++ rockchip,pins =
++ /* i2c5_scl_m1 */
++ <1 RK_PD4 10 &pcfg_pull_none_smt>,
++ /* i2c5_sda_m1 */
++ <1 RK_PD5 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c5m2_xfer: i2c5m2-xfer {
++ rockchip,pins =
++ /* i2c5_scl_m2 */
++ <2 RK_PC6 11 &pcfg_pull_none_smt>,
++ /* i2c5_sda_m2 */
++ <2 RK_PC7 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c5m3_xfer: i2c5m3-xfer {
++ rockchip,pins =
++ /* i2c5_scl_m3 */
++ <3 RK_PC4 11 &pcfg_pull_none_smt>,
++ /* i2c5_sda_m3 */
++ <3 RK_PC1 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c6 {
++ /omit-if-no-ref/
++ i2c6m0_xfer: i2c6m0-xfer {
++ rockchip,pins =
++ /* i2c6_scl_m0 */
++ <0 RK_PA2 11 &pcfg_pull_none_smt>,
++ /* i2c6_sda_m0 */
++ <0 RK_PA5 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c6m1_xfer: i2c6m1-xfer {
++ rockchip,pins =
++ /* i2c6_scl_m1 */
++ <1 RK_PC2 10 &pcfg_pull_none_smt>,
++ /* i2c6_sda_m1 */
++ <1 RK_PC3 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c6m2_xfer: i2c6m2-xfer {
++ rockchip,pins =
++ /* i2c6_scl_m2 */
++ <2 RK_PD0 11 &pcfg_pull_none_smt>,
++ /* i2c6_sda_m2 */
++ <2 RK_PD1 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c6m3_xfer: i2c6m3-xfer {
++ rockchip,pins =
++ /* i2c6_scl_m3 */
++ <4 RK_PC6 11 &pcfg_pull_none_smt>,
++ /* i2c6_sda_m3 */
++ <4 RK_PC7 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c7 {
++ /omit-if-no-ref/
++ i2c7m0_xfer: i2c7m0-xfer {
++ rockchip,pins =
++ /* i2c7_scl_m0 */
++ <1 RK_PB0 10 &pcfg_pull_none_smt>,
++ /* i2c7_sda_m0 */
++ <1 RK_PB3 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c7m1_xfer: i2c7m1-xfer {
++ rockchip,pins =
++ /* i2c7_scl_m1 */
++ <3 RK_PA0 11 &pcfg_pull_none_smt>,
++ /* i2c7_sda_m1 */
++ <3 RK_PA1 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c7m2_xfer: i2c7m2-xfer {
++ rockchip,pins =
++ /* i2c7_scl_m2 */
++ <4 RK_PA0 11 &pcfg_pull_none_smt>,
++ /* i2c7_sda_m2 */
++ <4 RK_PA1 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c7m3_xfer: i2c7m3-xfer {
++ rockchip,pins =
++ /* i2c7_scl_m3 */
++ <4 RK_PC0 11 &pcfg_pull_none_smt>,
++ /* i2c7_sda_m3 */
++ <4 RK_PC1 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c8 {
++ /omit-if-no-ref/
++ i2c8m0_xfer: i2c8m0-xfer {
++ rockchip,pins =
++ /* i2c8_scl_m0 */
++ <2 RK_PA0 11 &pcfg_pull_none_smt>,
++ /* i2c8_sda_m0 */
++ <2 RK_PA1 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c8m1_xfer: i2c8m1-xfer {
++ rockchip,pins =
++ /* i2c8_scl_m1 */
++ <1 RK_PC6 10 &pcfg_pull_none_smt>,
++ /* i2c8_sda_m1 */
++ <1 RK_PC7 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c8m2_xfer: i2c8m2-xfer {
++ rockchip,pins =
++ /* i2c8_scl_m2 */
++ <2 RK_PB6 11 &pcfg_pull_none_smt>,
++ /* i2c8_sda_m2 */
++ <2 RK_PB7 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c8m3_xfer: i2c8m3-xfer {
++ rockchip,pins =
++ /* i2c8_scl_m3 */
++ <3 RK_PB3 11 &pcfg_pull_none_smt>,
++ /* i2c8_sda_m3 */
++ <3 RK_PB2 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i2c9 {
++ /omit-if-no-ref/
++ i2c9m0_xfer: i2c9m0-xfer {
++ rockchip,pins =
++ /* i2c9_scl_m0 */
++ <1 RK_PA5 10 &pcfg_pull_none_smt>,
++ /* i2c9_sda_m0 */
++ <1 RK_PA6 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c9m1_xfer: i2c9m1-xfer {
++ rockchip,pins =
++ /* i2c9_scl_m1 */
++ <1 RK_PB5 10 &pcfg_pull_none_smt>,
++ /* i2c9_sda_m1 */
++ <1 RK_PB4 10 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c9m2_xfer: i2c9m2-xfer {
++ rockchip,pins =
++ /* i2c9_scl_m2 */
++ <2 RK_PD5 11 &pcfg_pull_none_smt>,
++ /* i2c9_sda_m2 */
++ <2 RK_PD4 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i2c9m3_xfer: i2c9m3-xfer {
++ rockchip,pins =
++ /* i2c9_scl_m3 */
++ <3 RK_PC2 11 &pcfg_pull_none_smt>,
++ /* i2c9_sda_m3 */
++ <3 RK_PC3 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i3c0 {
++ /omit-if-no-ref/
++ i3c0m0_xfer: i3c0m0-xfer {
++ rockchip,pins =
++ /* i3c0_scl_m0 */
++ <0 RK_PC1 11 &pcfg_pull_none_smt>,
++ /* i3c0_sda_m0 */
++ <0 RK_PC2 11 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i3c0m1_xfer: i3c0m1-xfer {
++ rockchip,pins =
++ /* i3c0_scl_m1 */
++ <1 RK_PD2 10 &pcfg_pull_none_smt>,
++ /* i3c0_sda_m1 */
++ <1 RK_PD3 10 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i3c1 {
++ /omit-if-no-ref/
++ i3c1m0_xfer: i3c1m0-xfer {
++ rockchip,pins =
++ /* i3c1_scl_m0 */
++ <2 RK_PD2 12 &pcfg_pull_none_smt>,
++ /* i3c1_sda_m0 */
++ <2 RK_PD3 12 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i3c1m1_xfer: i3c1m1-xfer {
++ rockchip,pins =
++ /* i3c1_scl_m1 */
++ <2 RK_PA2 14 &pcfg_pull_none_smt>,
++ /* i3c1_sda_m1 */
++ <2 RK_PA3 14 &pcfg_pull_none_smt>;
++ };
++
++ /omit-if-no-ref/
++ i3c1m2_xfer: i3c1m2-xfer {
++ rockchip,pins =
++ /* i3c1_scl_m2 */
++ <3 RK_PD3 11 &pcfg_pull_none_smt>,
++ /* i3c1_sda_m2 */
++ <3 RK_PD2 11 &pcfg_pull_none_smt>;
++ };
++ };
++
++ i3c0_sda {
++ /omit-if-no-ref/
++ i3c0_sdam0_pu: i3c0_sdam0-pu {
++ rockchip,pins =
++ /* i3c0_sda_pu_m0 */
++ <0 RK_PC5 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ i3c0_sdam1_pu: i3c0_sdam1-pu {
++ rockchip,pins =
++ /* i3c0_sda_pu_m1 */
++ <1 RK_PD1 10 &pcfg_pull_none>;
++ };
++ };
++
++ i3c1_sda {
++ /omit-if-no-ref/
++ i3c1_sdam0_pu: i3c1_sdam0-pu {
++ rockchip,pins =
++ /* i3c1_sda_pu_m0 */
++ <2 RK_PD6 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ i3c1_sdam1_pu: i3c1_sdam1-pu {
++ rockchip,pins =
++ /* i3c1_sda_pu_m1 */
++ <2 RK_PA5 14 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ i3c1_sdam2_pu: i3c1_sdam2-pu {
++ rockchip,pins =
++ /* i3c1_sda_pu_m2 */
++ <3 RK_PD1 11 &pcfg_pull_none>;
++ };
++ };
++
++ isp_flash {
++ /omit-if-no-ref/
++ isp_flashm0_pins: isp_flashm0-pins {
++ rockchip,pins =
++ /* isp_flash_trigout_m0 */
++ <2 RK_PD5 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ isp_flashm1_pins: isp_flashm1-pins {
++ rockchip,pins =
++ /* isp_flash_trigout_m1 */
++ <4 RK_PC5 1 &pcfg_pull_none>;
++ };
++ };
++
++ isp_prelight {
++ /omit-if-no-ref/
++ isp_prelightm0_pins: isp_prelightm0-pins {
++ rockchip,pins =
++ /* isp_prelight_trig_m0 */
++ <2 RK_PD4 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ isp_prelightm1_pins: isp_prelightm1-pins {
++ rockchip,pins =
++ /* isp_prelight_trig_m1 */
++ <4 RK_PC4 1 &pcfg_pull_none>;
++ };
++ };
++
++ jtag {
++ /omit-if-no-ref/
++ jtagm0_pins: jtagm0-pins {
++ rockchip,pins =
++ /* jtag_tck_m0 */
++ <2 RK_PA2 9 &pcfg_pull_none>,
++ /* jtag_tms_m0 */
++ <2 RK_PA3 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ jtagm1_pins: jtagm1-pins {
++ rockchip,pins =
++ /* jtag_tck_m1 */
++ <0 RK_PD4 10 &pcfg_pull_none>,
++ /* jtag_tms_m1 */
++ <0 RK_PD5 10 &pcfg_pull_none>;
++ };
++ };
++
++ mipi {
++ /omit-if-no-ref/
++ mipim0_pins: mipim0-pins {
++ rockchip,pins =
++ /* mipi_te_m0 */
++ <4 RK_PB2 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ mipim1_pins: mipim1-pins {
++ rockchip,pins =
++ /* mipi_te_m1 */
++ <3 RK_PA2 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ mipim2_pins: mipim2-pins {
++ rockchip,pins =
++ /* mipi_te_m2 */
++ <4 RK_PA0 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ mipim3_pins: mipim3-pins {
++ rockchip,pins =
++ /* mipi_te_m3 */
++ <1 RK_PB3 11 &pcfg_pull_none>;
++ };
++ };
++
++ npu {
++ /omit-if-no-ref/
++ npu_pins: npu-pins {
++ rockchip,pins =
++ /* npu_avs */
++ <0 RK_PB7 11 &pcfg_pull_none>;
++ };
++ };
++
++ pcie0 {
++ /omit-if-no-ref/
++ pcie0m0_pins: pcie0m0-pins {
++ rockchip,pins =
++ /* pcie21_port0_clkreq_m0 */
++ <2 RK_PB2 11 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie0m1_pins: pcie0m1-pins {
++ rockchip,pins =
++ /* pcie0_clkreq_m1 */
++ <1 RK_PB6 12 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie0m2_pins: pcie0m2-pins {
++ rockchip,pins =
++ /* pcie0_clkreq_m2 */
++ <4 RK_PB5 12 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie0m3_pins: pcie0m3-pins {
++ rockchip,pins =
++ /* pcie0_clkreq_m3 */
++ <4 RK_PC6 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie0_buttonrst: pcie21-port0-buttonrst {
++ rockchip,pins =
++ /* pcie0_buttonrst */
++ <1 RK_PC4 12 &pcfg_pull_none>;
++ };
++ };
++
++ pcie1 {
++ /omit-if-no-ref/
++ pcie1m0_pins: pcie1m0-pins {
++ rockchip,pins =
++ /* pcie1_clkreq_m0 */
++ <2 RK_PB3 11 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie1m1_pins: pcie1m1-pins {
++ rockchip,pins =
++ /* pcie1_clkreq_m1 */
++ <1 RK_PB4 12 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie1m2_pins: pcie1m2-pins {
++ rockchip,pins =
++ /* pcie1_clkreq_m2 */
++ <4 RK_PA5 12 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie1m3_pins: pcie1m3-pins {
++ rockchip,pins =
++ /* pcie1_clkreq_m3 */
++ <4 RK_PC1 10 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ pcie1_buttonrst: pcie21-port1-buttonrst {
++ rockchip,pins =
++ /* pcie1_buttonrst */
++ <1 RK_PC5 12 &pcfg_pull_none>;
++ };
++ };
++
++ pdm0 {
++ /omit-if-no-ref/
++ pdm0m0_clk0: pdm0m0-clk0 {
++ rockchip,pins =
++ /* pdm0_clk0_m0 */
++ <0 RK_PC4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m0_clk1: pdm0m0-clk1 {
++ rockchip,pins =
++ /* pdm0_clk1_m0 */
++ <0 RK_PC3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m0_sdi0: pdm0m0-sdi0 {
++ rockchip,pins =
++ /* pdm0_sdi0_m0 */
++ <0 RK_PD0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m0_sdi1: pdm0m0-sdi1 {
++ rockchip,pins =
++ /* pdm0_sdi1_m0 */
++ <0 RK_PD1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m0_sdi2: pdm0m0-sdi2 {
++ rockchip,pins =
++ /* pdm0_sdi2_m0 */
++ <0 RK_PD2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m0_sdi3: pdm0m0-sdi3 {
++ rockchip,pins =
++ /* pdm0_sdi3_m0 */
++ <0 RK_PD3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_clk0: pdm0m1-clk0 {
++ rockchip,pins =
++ /* pdm0_clk0_m1 */
++ <1 RK_PB1 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_clk1: pdm0m1-clk1 {
++ rockchip,pins =
++ /* pdm0_clk1_m1 */
++ <1 RK_PA6 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_sdi0: pdm0m1-sdi0 {
++ rockchip,pins =
++ /* pdm0_sdi0_m1 */
++ <1 RK_PB2 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_sdi1: pdm0m1-sdi1 {
++ rockchip,pins =
++ /* pdm0_sdi1_m1 */
++ <1 RK_PA3 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_sdi2: pdm0m1-sdi2 {
++ rockchip,pins =
++ /* pdm0_sdi2_m1 */
++ <1 RK_PA5 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m1_sdi3: pdm0m1-sdi3 {
++ rockchip,pins =
++ /* pdm0_sdi3_m1 */
++ <1 RK_PA2 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_clk0: pdm0m2-clk0 {
++ rockchip,pins =
++ /* pdm0_clk0_m2 */
++ <1 RK_PC1 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_clk1: pdm0m2-clk1 {
++ rockchip,pins =
++ /* pdm0_clk1_m2 */
++ <1 RK_PD5 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_sdi0: pdm0m2-sdi0 {
++ rockchip,pins =
++ /* pdm0_sdi0_m2 */
++ <1 RK_PC6 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_sdi1: pdm0m2-sdi1 {
++ rockchip,pins =
++ /* pdm0_sdi1_m2 */
++ <1 RK_PC7 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_sdi2: pdm0m2-sdi2 {
++ rockchip,pins =
++ /* pdm0_sdi2_m2 */
++ <1 RK_PC0 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m2_sdi3: pdm0m2-sdi3 {
++ rockchip,pins =
++ /* pdm0_sdi3_m2 */
++ <1 RK_PD4 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_clk0: pdm0m3-clk0 {
++ rockchip,pins =
++ /* pdm0_clk0_m3 */
++ <2 RK_PB5 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_clk1: pdm0m3-clk1 {
++ rockchip,pins =
++ /* pdm0_clk1_m3 */
++ <2 RK_PB3 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_sdi0: pdm0m3-sdi0 {
++ rockchip,pins =
++ /* pdm0_sdi0_m3 */
++ <2 RK_PB4 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_sdi1: pdm0m3-sdi1 {
++ rockchip,pins =
++ /* pdm0_sdi1_m3 */
++ <2 RK_PB2 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_sdi2: pdm0m3-sdi2 {
++ rockchip,pins =
++ /* pdm0_sdi2_m3 */
++ <2 RK_PB1 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm0m3_sdi3: pdm0m3-sdi3 {
++ rockchip,pins =
++ /* pdm0_sdi3_m3 */
++ <2 RK_PB0 5 &pcfg_pull_none>;
++ };
++ };
++
++ pdm1 {
++ /omit-if-no-ref/
++ pdm1m0_clk0: pdm1m0-clk0 {
++ rockchip,pins =
++ /* pdm1_clk0_m0 */
++ <2 RK_PC5 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m0_clk1: pdm1m0-clk1 {
++ rockchip,pins =
++ /* pdm1_clk1_m0 */
++ <2 RK_PC1 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m0_sdi0: pdm1m0-sdi0 {
++ rockchip,pins =
++ /* pdm1_sdi0_m0 */
++ <2 RK_PC4 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m0_sdi1: pdm1m0-sdi1 {
++ rockchip,pins =
++ /* pdm1_sdi1_m0 */
++ <2 RK_PC0 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m0_sdi2: pdm1m0-sdi2 {
++ rockchip,pins =
++ /* pdm1_sdi2_m0 */
++ <2 RK_PC2 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m0_sdi3: pdm1m0-sdi3 {
++ rockchip,pins =
++ /* pdm1_sdi3_m0 */
++ <2 RK_PC3 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_clk0: pdm1m1-clk0 {
++ rockchip,pins =
++ /* pdm1_clk0_m1 */
++ <4 RK_PA6 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_clk1: pdm1m1-clk1 {
++ rockchip,pins =
++ /* pdm1_clk1_m1 */
++ <4 RK_PB0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_sdi0: pdm1m1-sdi0 {
++ rockchip,pins =
++ /* pdm1_sdi0_m1 */
++ <4 RK_PB3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_sdi1: pdm1m1-sdi1 {
++ rockchip,pins =
++ /* pdm1_sdi1_m1 */
++ <4 RK_PB2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_sdi2: pdm1m1-sdi2 {
++ rockchip,pins =
++ /* pdm1_sdi2_m1 */
++ <4 RK_PB1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m1_sdi3: pdm1m1-sdi3 {
++ rockchip,pins =
++ /* pdm1_sdi3_m1 */
++ <4 RK_PA4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_clk0: pdm1m2-clk0 {
++ rockchip,pins =
++ /* pdm1_clk0_m2 */
++ <3 RK_PB1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_clk1: pdm1m2-clk1 {
++ rockchip,pins =
++ /* pdm1_clk1_m2 */
++ <3 RK_PA7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_sdi0: pdm1m2-sdi0 {
++ rockchip,pins =
++ /* pdm1_sdi0_m2 */
++ <3 RK_PB3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_sdi1: pdm1m2-sdi1 {
++ rockchip,pins =
++ /* pdm1_sdi1_m2 */
++ <3 RK_PB2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_sdi2: pdm1m2-sdi2 {
++ rockchip,pins =
++ /* pdm1_sdi2_m2 */
++ <3 RK_PA6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pdm1m2_sdi3: pdm1m2-sdi3 {
++ rockchip,pins =
++ /* pdm1_sdi3_m2 */
++ <3 RK_PA5 4 &pcfg_pull_none>;
++ };
++ };
++
++ pmu_debug_test {
++ /omit-if-no-ref/
++ pmu_debug_test_pins: pmu_debug_test-pins {
++ rockchip,pins =
++ /* pmu_debug_test_out */
++ <0 RK_PB0 2 &pcfg_pull_none>;
++ };
++ };
++
++ pwm0 {
++ /omit-if-no-ref/
++ pwm0m0_ch0: pwm0m0-ch0 {
++ rockchip,pins =
++ /* pwm0_ch0_m0 */
++ <0 RK_PC4 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m0_ch1: pwm0m0-ch1 {
++ rockchip,pins =
++ /* pwm0_ch1_m0 */
++ <0 RK_PC3 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m1_ch0: pwm0m1-ch0 {
++ rockchip,pins =
++ /* pwm0_ch0_m1 */
++ <1 RK_PC0 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m1_ch1: pwm0m1-ch1 {
++ rockchip,pins =
++ /* pwm0_ch1_m1 */
++ <4 RK_PC1 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m2_ch0: pwm0m2-ch0 {
++ rockchip,pins =
++ /* pwm0_ch0_m2 */
++ <2 RK_PC3 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m2_ch1: pwm0m2-ch1 {
++ rockchip,pins =
++ /* pwm0_ch1_m2 */
++ <2 RK_PC7 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m3_ch0: pwm0m3-ch0 {
++ rockchip,pins =
++ /* pwm0_ch0_m3 */
++ <3 RK_PB0 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm0m3_ch1: pwm0m3-ch1 {
++ rockchip,pins =
++ /* pwm0_ch1_m3 */
++ <3 RK_PB6 12 &pcfg_pull_none_drv_level_2>;
++ };
++ };
++
++ pwm1 {
++ /omit-if-no-ref/
++ pwm1m0_ch0: pwm1m0-ch0 {
++ rockchip,pins =
++ /* pwm1_ch0_m0 */
++ <0 RK_PB4 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m0_ch1: pwm1m0-ch1 {
++ rockchip,pins =
++ /* pwm1_ch1_m0 */
++ <0 RK_PB5 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m0_ch2: pwm1m0-ch2 {
++ rockchip,pins =
++ /* pwm1_ch2_m0 */
++ <0 RK_PB6 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m0_ch3: pwm1m0-ch3 {
++ rockchip,pins =
++ /* pwm1_ch3_m0 */
++ <0 RK_PC0 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m0_ch4: pwm1m0-ch4 {
++ rockchip,pins =
++ /* pwm1_ch4_m0 */
++ <0 RK_PB7 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m0_ch5: pwm1m0-ch5 {
++ rockchip,pins =
++ /* pwm1_ch5_m0 */
++ <0 RK_PD2 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch0: pwm1m1-ch0 {
++ rockchip,pins =
++ /* pwm1_ch0_m1 */
++ <1 RK_PB4 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch1: pwm1m1-ch1 {
++ rockchip,pins =
++ /* pwm1_ch1_m1 */
++ <1 RK_PB5 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch2: pwm1m1-ch2 {
++ rockchip,pins =
++ /* pwm1_ch2_m1 */
++ <1 RK_PC2 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch3: pwm1m1-ch3 {
++ rockchip,pins =
++ /* pwm1_ch3_m1 */
++ <1 RK_PD2 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch4: pwm1m1-ch4 {
++ rockchip,pins =
++ /* pwm1_ch4_m1 */
++ <1 RK_PD3 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m1_ch5: pwm1m1-ch5 {
++ rockchip,pins =
++ /* pwm1_ch5_m1 */
++ <4 RK_PC0 14 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch0: pwm1m2-ch0 {
++ rockchip,pins =
++ /* pwm1_ch0_m2 */
++ <2 RK_PC0 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch1: pwm1m2-ch1 {
++ rockchip,pins =
++ /* pwm1_ch1_m2 */
++ <2 RK_PC1 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch2: pwm1m2-ch2 {
++ rockchip,pins =
++ /* pwm1_ch2_m2 */
++ <2 RK_PC2 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch3: pwm1m2-ch3 {
++ rockchip,pins =
++ /* pwm1_ch3_m2 */
++ <2 RK_PC4 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch4: pwm1m2-ch4 {
++ rockchip,pins =
++ /* pwm1_ch4_m2 */
++ <2 RK_PC5 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m2_ch5: pwm1m2-ch5 {
++ rockchip,pins =
++ /* pwm1_ch5_m2 */
++ <2 RK_PC6 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch0: pwm1m3-ch0 {
++ rockchip,pins =
++ /* pwm1_ch0_m3 */
++ <3 RK_PA4 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch1: pwm1m3-ch1 {
++ rockchip,pins =
++ /* pwm1_ch1_m3 */
++ <3 RK_PA5 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch2: pwm1m3-ch2 {
++ rockchip,pins =
++ /* pwm1_ch2_m3 */
++ <3 RK_PA6 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch3: pwm1m3-ch3 {
++ rockchip,pins =
++ /* pwm1_ch3_m3 */
++ <3 RK_PB1 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch4: pwm1m3-ch4 {
++ rockchip,pins =
++ /* pwm1_ch4_m3 */
++ <3 RK_PB4 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ pwm1m3_ch5: pwm1m3-ch5 {
++ rockchip,pins =
++ /* pwm1_ch5_m3 */
++ <3 RK_PB5 12 &pcfg_pull_none>;
++ };
++ };
++
++ pwm2 {
++ /omit-if-no-ref/
++ pwm2m0_ch0: pwm2m0-ch0 {
++ rockchip,pins =
++ /* pwm2_ch0_m0 */
++ <0 RK_PD3 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch1: pwm2m0-ch1 {
++ rockchip,pins =
++ /* pwm2_ch1_m0 */
++ <1 RK_PB3 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch2: pwm2m0-ch2 {
++ rockchip,pins =
++ /* pwm2_ch2_m0 */
++ <2 RK_PA0 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch3: pwm2m0-ch3 {
++ rockchip,pins =
++ /* pwm2_ch3_m0 */
++ <2 RK_PA1 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch4: pwm2m0-ch4 {
++ rockchip,pins =
++ /* pwm2_ch4_m0 */
++ <2 RK_PA4 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch5: pwm2m0-ch5 {
++ rockchip,pins =
++ /* pwm2_ch5_m0 */
++ <4 RK_PA2 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch6: pwm2m0-ch6 {
++ rockchip,pins =
++ /* pwm2_ch6_m0 */
++ <4 RK_PA7 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m0_ch7: pwm2m0-ch7 {
++ rockchip,pins =
++ /* pwm2_ch7_m0 */
++ <4 RK_PB3 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch0: pwm2m1-ch0 {
++ rockchip,pins =
++ /* pwm2_ch0_m1 */
++ <4 RK_PC2 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch1: pwm2m1-ch1 {
++ rockchip,pins =
++ /* pwm2_ch1_m1 */
++ <4 RK_PC3 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch2: pwm2m1-ch2 {
++ rockchip,pins =
++ /* pwm2_ch2_m1 */
++ <4 RK_PC6 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch3: pwm2m1-ch3 {
++ rockchip,pins =
++ /* pwm2_ch3_m1 */
++ <4 RK_PC7 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch4: pwm2m1-ch4 {
++ rockchip,pins =
++ /* pwm2_ch4_m1 */
++ <4 RK_PA3 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch5: pwm2m1-ch5 {
++ rockchip,pins =
++ /* pwm2_ch5_m1 */
++ <4 RK_PC5 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch6: pwm2m1-ch6 {
++ rockchip,pins =
++ /* pwm2_ch6_m1 */
++ <4 RK_PC4 14 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m1_ch7: pwm2m1-ch7 {
++ rockchip,pins =
++ /* pwm2_ch7_m1 */
++ <1 RK_PB1 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch0: pwm2m2-ch0 {
++ rockchip,pins =
++ /* pwm2_ch0_m2 */
++ <2 RK_PD0 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch1: pwm2m2-ch1 {
++ rockchip,pins =
++ /* pwm2_ch1_m2 */
++ <2 RK_PD1 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch2: pwm2m2-ch2 {
++ rockchip,pins =
++ /* pwm2_ch2_m2 */
++ <2 RK_PD2 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch3: pwm2m2-ch3 {
++ rockchip,pins =
++ /* pwm2_ch3_m2 */
++ <2 RK_PD3 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch4: pwm2m2-ch4 {
++ rockchip,pins =
++ /* pwm2_ch4_m2 */
++ <2 RK_PD4 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch5: pwm2m2-ch5 {
++ rockchip,pins =
++ /* pwm2_ch5_m2 */
++ <2 RK_PD5 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch6: pwm2m2-ch6 {
++ rockchip,pins =
++ /* pwm2_ch6_m2 */
++ <2 RK_PD6 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m2_ch7: pwm2m2-ch7 {
++ rockchip,pins =
++ /* pwm2_ch7_m2 */
++ <2 RK_PD7 13 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch0: pwm2m3-ch0 {
++ rockchip,pins =
++ /* pwm2_ch0_m3 */
++ <3 RK_PC2 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch1: pwm2m3-ch1 {
++ rockchip,pins =
++ /* pwm2_ch1_m3 */
++ <3 RK_PC3 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch2: pwm2m3-ch2 {
++ rockchip,pins =
++ /* pwm2_ch2_m3 */
++ <3 RK_PC5 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch3: pwm2m3-ch3 {
++ rockchip,pins =
++ /* pwm2_ch3_m3 */
++ <3 RK_PD0 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch4: pwm2m3-ch4 {
++ rockchip,pins =
++ /* pwm2_ch4_m3 */
++ <3 RK_PD2 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch5: pwm2m3-ch5 {
++ rockchip,pins =
++ /* pwm2_ch5_m3 */
++ <3 RK_PD3 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch6: pwm2m3-ch6 {
++ rockchip,pins =
++ /* pwm2_ch6_m3 */
++ <3 RK_PD6 12 &pcfg_pull_none_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ pwm2m3_ch7: pwm2m3-ch7 {
++ rockchip,pins =
++ /* pwm2_ch7_m3 */
++ <3 RK_PD7 12 &pcfg_pull_none_drv_level_2>;
++ };
++ };
++
++ ref_clk0 {
++ /omit-if-no-ref/
++ ref_clk0_clk0: ref_clk0-clk0 {
++ rockchip,pins =
++ /* ref_clk0_out */
++ <0 RK_PA0 1 &pcfg_pull_none>;
++ };
++ };
++
++ ref_clk1 {
++ /omit-if-no-ref/
++ ref_clk1_clk1: ref_clk1-clk1 {
++ rockchip,pins =
++ /* ref_clk1_out */
++ <0 RK_PB4 1 &pcfg_pull_none>;
++ };
++ };
++
++ ref_clk2 {
++ /omit-if-no-ref/
++ ref_clk2_clk2: ref_clk2-clk2 {
++ rockchip,pins =
++ /* ref_clk2_out */
++ <0 RK_PB5 1 &pcfg_pull_none>;
++ };
++ };
++
++ sai0 {
++ /omit-if-no-ref/
++ sai0m0_lrck: sai0m0-lrck {
++ rockchip,pins =
++ /* sai0_lrck_m0 */
++ <2 RK_PB7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_mclk: sai0m0-mclk {
++ rockchip,pins =
++ /* sai0_mclk_m0 */
++ <2 RK_PB5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sclk: sai0m0-sclk {
++ rockchip,pins =
++ /* sai0_sclk_m0 */
++ <2 RK_PB6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdi0: sai0m0-sdi0 {
++ rockchip,pins =
++ /* sai0_sdi0_m0 */
++ <2 RK_PB0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdi1: sai0m0-sdi1 {
++ rockchip,pins =
++ /* sai0_sdi1_m0 */
++ <2 RK_PB1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdi2: sai0m0-sdi2 {
++ rockchip,pins =
++ /* sai0_sdi2_m0 */
++ <2 RK_PB2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdi3: sai0m0-sdi3 {
++ rockchip,pins =
++ /* sai0_sdi3_m0 */
++ <2 RK_PB4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdo0: sai0m0-sdo0 {
++ rockchip,pins =
++ /* sai0_sdo0_m0 */
++ <2 RK_PA6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdo1: sai0m0-sdo1 {
++ rockchip,pins =
++ /* sai0_sdo1_m0 */
++ <2 RK_PA7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdo2: sai0m0-sdo2 {
++ rockchip,pins =
++ /* sai0_sdo2_m0 */
++ <2 RK_PB3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m0_sdo3: sai0m0-sdo3 {
++ rockchip,pins =
++ /* sai0_sdo3_m0 */
++ <2 RK_PD7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_lrck: sai0m1-lrck {
++ rockchip,pins =
++ /* sai0_lrck_m1 */
++ <0 RK_PC7 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_mclk: sai0m1-mclk {
++ rockchip,pins =
++ /* sai0_mclk_m1 */
++ <0 RK_PC4 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sclk: sai0m1-sclk {
++ rockchip,pins =
++ /* sai0_sclk_m1 */
++ <0 RK_PC6 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdi0: sai0m1-sdi0 {
++ rockchip,pins =
++ /* sai0_sdi0_m1 */
++ <0 RK_PD0 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdi1: sai0m1-sdi1 {
++ rockchip,pins =
++ /* sai0_sdi1_m1 */
++ <0 RK_PD1 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdi2: sai0m1-sdi2 {
++ rockchip,pins =
++ /* sai0_sdi2_m1 */
++ <0 RK_PD2 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdi3: sai0m1-sdi3 {
++ rockchip,pins =
++ /* sai0_sdi3_m1 */
++ <0 RK_PD3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdo0: sai0m1-sdo0 {
++ rockchip,pins =
++ /* sai0_sdo0_m1 */
++ <0 RK_PC5 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdo1: sai0m1-sdo1 {
++ rockchip,pins =
++ /* sai0_sdo1_m1 */
++ <0 RK_PD3 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdo2: sai0m1-sdo2 {
++ rockchip,pins =
++ /* sai0_sdo2_m1 */
++ <0 RK_PD2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m1_sdo3: sai0m1-sdo3 {
++ rockchip,pins =
++ /* sai0_sdo3_m1 */
++ <0 RK_PD1 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_lrck: sai0m2-lrck {
++ rockchip,pins =
++ /* sai0_lrck_m2 */
++ <1 RK_PA1 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_mclk: sai0m2-mclk {
++ rockchip,pins =
++ /* sai0_mclk_m2 */
++ <1 RK_PA4 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sclk: sai0m2-sclk {
++ rockchip,pins =
++ /* sai0_sclk_m2 */
++ <1 RK_PA0 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdi0: sai0m2-sdi0 {
++ rockchip,pins =
++ /* sai0_sdi0_m2 */
++ <1 RK_PB2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdi1: sai0m2-sdi1 {
++ rockchip,pins =
++ /* sai0_sdi1_m2 */
++ <1 RK_PB1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdi2: sai0m2-sdi2 {
++ rockchip,pins =
++ /* sai0_sdi2_m2 */
++ <1 RK_PA3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdi3: sai0m2-sdi3 {
++ rockchip,pins =
++ /* sai0_sdi3_m2 */
++ <1 RK_PA2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdo0: sai0m2-sdo0 {
++ rockchip,pins =
++ /* sai0_sdo0_m2 */
++ <1 RK_PA7 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdo1: sai0m2-sdo1 {
++ rockchip,pins =
++ /* sai0_sdo1_m2 */
++ <1 RK_PA2 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdo2: sai0m2-sdo2 {
++ rockchip,pins =
++ /* sai0_sdo2_m2 */
++ <1 RK_PA3 3 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai0m2_sdo3: sai0m2-sdo3 {
++ rockchip,pins =
++ /* sai0_sdo3_m2 */
++ <1 RK_PB1 3 &pcfg_pull_none>;
++ };
++ };
++
++ sai1 {
++ /omit-if-no-ref/
++ sai1m0_lrck: sai1m0-lrck {
++ rockchip,pins =
++ /* sai1_lrck_m0 */
++ <4 RK_PA5 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_mclk: sai1m0-mclk {
++ rockchip,pins =
++ /* sai1_mclk_m0 */
++ <4 RK_PA2 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sclk: sai1m0-sclk {
++ rockchip,pins =
++ /* sai1_sclk_m0 */
++ <4 RK_PA3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdi0: sai1m0-sdi0 {
++ rockchip,pins =
++ /* sai1_sdi0_m0 */
++ <4 RK_PB3 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdi1: sai1m0-sdi1 {
++ rockchip,pins =
++ /* sai1_sdi1_m0 */
++ <4 RK_PB2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdi2: sai1m0-sdi2 {
++ rockchip,pins =
++ /* sai1_sdi2_m0 */
++ <4 RK_PB1 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdi3: sai1m0-sdi3 {
++ rockchip,pins =
++ /* sai1_sdi3_m0 */
++ <4 RK_PB0 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdo0: sai1m0-sdo0 {
++ rockchip,pins =
++ /* sai1_sdo0_m0 */
++ <4 RK_PA7 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdo1: sai1m0-sdo1 {
++ rockchip,pins =
++ /* sai1_sdo1_m0 */
++ <4 RK_PB0 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdo2: sai1m0-sdo2 {
++ rockchip,pins =
++ /* sai1_sdo2_m0 */
++ <4 RK_PB1 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m0_sdo3: sai1m0-sdo3 {
++ rockchip,pins =
++ /* sai1_sdo3_m0 */
++ <4 RK_PB2 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_lrck: sai1m1-lrck {
++ rockchip,pins =
++ /* sai1_lrck_m1 */
++ <3 RK_PC6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_mclk: sai1m1-mclk {
++ rockchip,pins =
++ /* sai1_mclk_m1 */
++ <3 RK_PD0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sclk: sai1m1-sclk {
++ rockchip,pins =
++ /* sai1_sclk_m1 */
++ <3 RK_PC7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdi0: sai1m1-sdi0 {
++ rockchip,pins =
++ /* sai1_sdi0_m1 */
++ <3 RK_PB7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdi1: sai1m1-sdi1 {
++ rockchip,pins =
++ /* sai1_sdi1_m1 */
++ <3 RK_PD4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdi2: sai1m1-sdi2 {
++ rockchip,pins =
++ /* sai1_sdi2_m1 */
++ <3 RK_PD5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdi3: sai1m1-sdi3 {
++ rockchip,pins =
++ /* sai1_sdi3_m1 */
++ <3 RK_PD6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdo0: sai1m1-sdo0 {
++ rockchip,pins =
++ /* sai1_sdo0_m1 */
++ <3 RK_PC5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdo1: sai1m1-sdo1 {
++ rockchip,pins =
++ /* sai1_sdo1_m1 */
++ <3 RK_PC4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdo2: sai1m1-sdo2 {
++ rockchip,pins =
++ /* sai1_sdo2_m1 */
++ <3 RK_PC1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai1m1_sdo3: sai1m1-sdo3 {
++ rockchip,pins =
++ /* sai1_sdo3_m1 */
++ <3 RK_PC0 4 &pcfg_pull_none>;
++ };
++ };
++
++ sai2 {
++ /omit-if-no-ref/
++ sai2m0_lrck: sai2m0-lrck {
++ rockchip,pins =
++ /* sai2_lrck_m0 */
++ <1 RK_PD2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m0_mclk: sai2m0-mclk {
++ rockchip,pins =
++ /* sai2_mclk_m0 */
++ <1 RK_PD4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m0_sclk: sai2m0-sclk {
++ rockchip,pins =
++ /* sai2_sclk_m0 */
++ <1 RK_PD1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m0_sdi: sai2m0-sdi {
++ rockchip,pins =
++ /* sai2m0_sdi */
++ <1 RK_PD3 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai2m0_sdo: sai2m0-sdo {
++ rockchip,pins =
++ /* sai2m0_sdo */
++ <1 RK_PD0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m1_lrck: sai2m1-lrck {
++ rockchip,pins =
++ /* sai2_lrck_m1 */
++ <2 RK_PC3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m1_mclk: sai2m1-mclk {
++ rockchip,pins =
++ /* sai2_mclk_m1 */
++ <2 RK_PC1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m1_sclk: sai2m1-sclk {
++ rockchip,pins =
++ /* sai2_sclk_m1 */
++ <2 RK_PC2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m1_sdi: sai2m1-sdi {
++ rockchip,pins =
++ /* sai2m1_sdi */
++ <2 RK_PC5 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai2m1_sdo: sai2m1-sdo {
++ rockchip,pins =
++ /* sai2m1_sdo */
++ <2 RK_PC4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m2_lrck: sai2m2-lrck {
++ rockchip,pins =
++ /* sai2_lrck_m2 */
++ <3 RK_PC3 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m2_mclk: sai2m2-mclk {
++ rockchip,pins =
++ /* sai2_mclk_m2 */
++ <3 RK_PD1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m2_sclk: sai2m2-sclk {
++ rockchip,pins =
++ /* sai2_sclk_m2 */
++ <3 RK_PC2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai2m2_sdi: sai2m2-sdi {
++ rockchip,pins =
++ /* sai2m2_sdi */
++ <3 RK_PD2 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai2m2_sdo: sai2m2-sdo {
++ rockchip,pins =
++ /* sai2m2_sdo */
++ <3 RK_PD3 4 &pcfg_pull_none>;
++ };
++ };
++
++ sai3 {
++ /omit-if-no-ref/
++ sai3m0_lrck: sai3m0-lrck {
++ rockchip,pins =
++ /* sai3_lrck_m0 */
++ <1 RK_PA6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m0_mclk: sai3m0-mclk {
++ rockchip,pins =
++ /* sai3_mclk_m0 */
++ <1 RK_PA4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m0_sclk: sai3m0-sclk {
++ rockchip,pins =
++ /* sai3_sclk_m0 */
++ <1 RK_PA5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m0_sdi: sai3m0-sdi {
++ rockchip,pins =
++ /* sai3m0_sdi */
++ <1 RK_PA7 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai3m0_sdo: sai3m0-sdo {
++ rockchip,pins =
++ /* sai3m0_sdo */
++ <1 RK_PB2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m1_lrck: sai3m1-lrck {
++ rockchip,pins =
++ /* sai3_lrck_m1 */
++ <1 RK_PB5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m1_mclk: sai3m1-mclk {
++ rockchip,pins =
++ /* sai3_mclk_m1 */
++ <1 RK_PC1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m1_sclk: sai3m1-sclk {
++ rockchip,pins =
++ /* sai3_sclk_m1 */
++ <1 RK_PB4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m1_sdi: sai3m1-sdi {
++ rockchip,pins =
++ /* sai3m1_sdi */
++ <1 RK_PB7 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai3m1_sdo: sai3m1-sdo {
++ rockchip,pins =
++ /* sai3m1_sdo */
++ <1 RK_PB6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m2_lrck: sai3m2-lrck {
++ rockchip,pins =
++ /* sai3_lrck_m2 */
++ <3 RK_PA1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m2_mclk: sai3m2-mclk {
++ rockchip,pins =
++ /* sai3_mclk_m2 */
++ <2 RK_PD6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m2_sclk: sai3m2-sclk {
++ rockchip,pins =
++ /* sai3_sclk_m2 */
++ <3 RK_PA0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m2_sdi: sai3m2-sdi {
++ rockchip,pins =
++ /* sai3m2_sdi */
++ <3 RK_PA3 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai3m2_sdo: sai3m2-sdo {
++ rockchip,pins =
++ /* sai3m2_sdo */
++ <3 RK_PA2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m3_lrck: sai3m3-lrck {
++ rockchip,pins =
++ /* sai3_lrck_m3 */
++ <2 RK_PA2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m3_mclk: sai3m3-mclk {
++ rockchip,pins =
++ /* sai3_mclk_m3 */
++ <2 RK_PA1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m3_sclk: sai3m3-sclk {
++ rockchip,pins =
++ /* sai3_sclk_m3 */
++ <2 RK_PA5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai3m3_sdi: sai3m3-sdi {
++ rockchip,pins =
++ /* sai3m3_sdi */
++ <2 RK_PA3 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai3m3_sdo: sai3m3-sdo {
++ rockchip,pins =
++ /* sai3m3_sdo */
++ <2 RK_PA4 4 &pcfg_pull_none>;
++ };
++ };
++
++ sai4 {
++ /omit-if-no-ref/
++ sai4m0_lrck: sai4m0-lrck {
++ rockchip,pins =
++ /* sai4_lrck_m0 */
++ <4 RK_PA6 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m0_mclk: sai4m0-mclk {
++ rockchip,pins =
++ /* sai4_mclk_m0 */
++ <4 RK_PA2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m0_sclk: sai4m0-sclk {
++ rockchip,pins =
++ /* sai4_sclk_m0 */
++ <4 RK_PA4 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m0_sdi: sai4m0-sdi {
++ rockchip,pins =
++ /* sai4m0_sdi */
++ <4 RK_PA7 2 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai4m0_sdo: sai4m0-sdo {
++ rockchip,pins =
++ /* sai4m0_sdo */
++ <4 RK_PB3 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m1_lrck: sai4m1-lrck {
++ rockchip,pins =
++ /* sai4_lrck_m1 */
++ <4 RK_PA0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m1_mclk: sai4m1-mclk {
++ rockchip,pins =
++ /* sai4_mclk_m1 */
++ <3 RK_PB0 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m1_sclk: sai4m1-sclk {
++ rockchip,pins =
++ /* sai4_sclk_m1 */
++ <3 RK_PD7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m1_sdi: sai4m1-sdi {
++ rockchip,pins =
++ /* sai4m1_sdi */
++ <3 RK_PA4 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai4m1_sdo: sai4m1-sdo {
++ rockchip,pins =
++ /* sai4m1_sdo */
++ <4 RK_PA1 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m2_lrck: sai4m2-lrck {
++ rockchip,pins =
++ /* sai4_lrck_m2 */
++ <4 RK_PC4 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m2_mclk: sai4m2-mclk {
++ rockchip,pins =
++ /* sai4_mclk_m2 */
++ <4 RK_PC0 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m2_sclk: sai4m2-sclk {
++ rockchip,pins =
++ /* sai4_sclk_m2 */
++ <4 RK_PC7 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m2_sdi: sai4m2-sdi {
++ rockchip,pins =
++ /* sai4m2_sdi */
++ <4 RK_PC6 2 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai4m2_sdo: sai4m2-sdo {
++ rockchip,pins =
++ /* sai4m2_sdo */
++ <4 RK_PC5 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m3_lrck: sai4m3-lrck {
++ rockchip,pins =
++ /* sai4_lrck_m3 */
++ <2 RK_PC7 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m3_mclk: sai4m3-mclk {
++ rockchip,pins =
++ /* sai4_mclk_m3 */
++ <2 RK_PD2 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m3_sclk: sai4m3-sclk {
++ rockchip,pins =
++ /* sai4_sclk_m3 */
++ <2 RK_PC6 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sai4m3_sdi: sai4m3-sdi {
++ rockchip,pins =
++ /* sai4m3_sdi */
++ <2 RK_PD0 4 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ sai4m3_sdo: sai4m3-sdo {
++ rockchip,pins =
++ /* sai4m3_sdo */
++ <2 RK_PD1 4 &pcfg_pull_none>;
++ };
++ };
++
++ sata30 {
++ /omit-if-no-ref/
++ sata30_sata: sata30-sata {
++ rockchip,pins =
++ /* sata30_cpdet */
++ <1 RK_PC7 12 &pcfg_pull_none>,
++ /* sata30_cppod */
++ <1 RK_PC6 12 &pcfg_pull_none>,
++ /* sata30_mpswit */
++ <1 RK_PD5 12 &pcfg_pull_none>;
++ };
++ };
++
++ sata30_port0 {
++ /omit-if-no-ref/
++ sata30_port0m0_port0: sata30_port0m0-port0 {
++ rockchip,pins =
++ /* sata30_port0_actled_m0 */
++ <2 RK_PB4 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sata30_port0m1_port0: sata30_port0m1-port0 {
++ rockchip,pins =
++ /* sata30_port0_actled_m1 */
++ <4 RK_PC6 10 &pcfg_pull_none>;
++ };
++ };
++
++ sata30_port1 {
++ /omit-if-no-ref/
++ sata30_port1m0_port1: sata30_port1m0-port1 {
++ rockchip,pins =
++ /* sata30_port1_actled_m0 */
++ <2 RK_PB5 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sata30_port1m1_port1: sata30_port1m1-port1 {
++ rockchip,pins =
++ /* sata30_port1_actled_m1 */
++ <4 RK_PC5 10 &pcfg_pull_none>;
++ };
++ };
++
++ sdmmc0 {
++ /omit-if-no-ref/
++ sdmmc0_bus4: sdmmc0-bus4 {
++ rockchip,pins =
++ /* sdmmc0_d0 */
++ <2 RK_PA0 1 &pcfg_pull_up_drv_level_3>,
++ /* sdmmc0_d1 */
++ <2 RK_PA1 1 &pcfg_pull_up_drv_level_3>,
++ /* sdmmc0_d2 */
++ <2 RK_PA2 1 &pcfg_pull_up_drv_level_3>,
++ /* sdmmc0_d3 */
++ <2 RK_PA3 1 &pcfg_pull_up_drv_level_3>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc0_clk: sdmmc0-clk {
++ rockchip,pins =
++ /* sdmmc0_clk */
++ <2 RK_PA5 1 &pcfg_pull_up_drv_level_3>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc0_cmd: sdmmc0-cmd {
++ rockchip,pins =
++ /* sdmmc0_cmd */
++ <2 RK_PA4 1 &pcfg_pull_up_drv_level_3>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc0_det: sdmmc0-det {
++ rockchip,pins =
++ /* sdmmc0_detn */
++ <0 RK_PA7 1 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc0_pwren: sdmmc0-pwren {
++ rockchip,pins =
++ /* sdmmc0_pwren */
++ <0 RK_PB6 1 &pcfg_pull_none>;
++ };
++ };
++
++ sdmmc1 {
++ /omit-if-no-ref/
++ sdmmc1m0_bus4: sdmmc1m0-bus4 {
++ rockchip,pins =
++ /* sdmmc1_d0_m0 */
++ <1 RK_PB4 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d1_m0 */
++ <1 RK_PB5 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d2_m0 */
++ <1 RK_PB6 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d3_m0 */
++ <1 RK_PB7 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m0_clk: sdmmc1m0-clk {
++ rockchip,pins =
++ /* sdmmc1_clk_m0 */
++ <1 RK_PC1 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m0_cmd: sdmmc1m0-cmd {
++ rockchip,pins =
++ /* sdmmc1_cmd_m0 */
++ <1 RK_PC0 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m0_det: sdmmc1m0-det {
++ rockchip,pins =
++ /* sdmmc1_detn_m0 */
++ <1 RK_PC3 2 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m0_pwren: sdmmc1m0-pwren {
++ rockchip,pins =
++ /* sdmmc1m0_pwren */
++ <1 RK_PC2 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m1_bus4: sdmmc1m1-bus4 {
++ rockchip,pins =
++ /* sdmmc1_d0_m1 */
++ <2 RK_PA6 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d1_m1 */
++ <2 RK_PA7 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d2_m1 */
++ <2 RK_PB0 2 &pcfg_pull_up_drv_level_2>,
++ /* sdmmc1_d3_m1 */
++ <2 RK_PB1 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m1_clk: sdmmc1m1-clk {
++ rockchip,pins =
++ /* sdmmc1_clk_m1 */
++ <2 RK_PB3 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m1_cmd: sdmmc1m1-cmd {
++ rockchip,pins =
++ /* sdmmc1_cmd_m1 */
++ <2 RK_PB2 2 &pcfg_pull_up_drv_level_2>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m1_det: sdmmc1m1-det {
++ rockchip,pins =
++ /* sdmmc1_detn_m1 */
++ <2 RK_PB5 2 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m1_pwren: sdmmc1m1-pwren {
++ rockchip,pins =
++ /* sdmmc1m1_pwren */
++ <2 RK_PB4 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ sdmmc1m2_det: sdmmc1m2-det {
++ rockchip,pins =
++ /* sdmmc1_detn_m2 */
++ <0 RK_PB6 2 &pcfg_pull_up>;
++ };
++ };
++
++ sdmmc0_testclk {
++ /omit-if-no-ref/
++ sdmmc0_testclk_test: sdmmc0_testclk-test {
++ rockchip,pins =
++ /* sdmmc0_testclk_out */
++ <1 RK_PC4 6 &pcfg_pull_none>;
++ };
++ };
++
++ sdmmc0_testdata {
++ /omit-if-no-ref/
++ sdmmc0_testdata_test: sdmmc0_testdata-test {
++ rockchip,pins =
++ /* sdmmc0_testdata_out */
++ <1 RK_PC5 6 &pcfg_pull_none>;
++ };
++ };
++
++ sdmmc1_testclk {
++ /omit-if-no-ref/
++ sdmmc1_testclkm0_test: sdmmc1_testclkm0-test {
++ rockchip,pins =
++ /* sdmmc1_testclk_out_m0 */
++ <1 RK_PC4 5 &pcfg_pull_none>;
++ };
++ };
++
++ sdmmc1_testdata {
++ /omit-if-no-ref/
++ sdmmc1_testdatam0_test: sdmmc1_testdatam0-test {
++ rockchip,pins =
++ /* sdmmc1_testdata_out_m0 */
++ <1 RK_PC5 5 &pcfg_pull_none>;
++ };
++ };
++
++ spdif {
++ /omit-if-no-ref/
++ spdifm0_rx0: spdifm0-rx0 {
++ rockchip,pins =
++ /* spdif_rx0_m0 */
++ <4 RK_PB4 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm0_rx1: spdifm0-rx1 {
++ rockchip,pins =
++ /* spdif_rx1_m0 */
++ <3 RK_PB4 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm0_tx0: spdifm0-tx0 {
++ rockchip,pins =
++ /* spdif_tx0_m0 */
++ <4 RK_PB5 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm0_tx1: spdifm0-tx1 {
++ rockchip,pins =
++ /* spdif_tx1_m0 */
++ <3 RK_PB5 4 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm1_rx0: spdifm1-rx0 {
++ rockchip,pins =
++ /* spdif_rx0_m1 */
++ <4 RK_PA0 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm1_rx1: spdifm1-rx1 {
++ rockchip,pins =
++ /* spdif_rx1_m1 */
++ <3 RK_PA2 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm1_tx0: spdifm1-tx0 {
++ rockchip,pins =
++ /* spdif_tx0_m1 */
++ <4 RK_PA1 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm1_tx1: spdifm1-tx1 {
++ rockchip,pins =
++ /* spdif_tx1_m1 */
++ <3 RK_PA3 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm2_rx0: spdifm2-rx0 {
++ rockchip,pins =
++ /* spdif_rx0_m2 */
++ <2 RK_PD6 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm2_rx1: spdifm2-rx1 {
++ rockchip,pins =
++ /* spdif_rx1_m2 */
++ <1 RK_PD4 6 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm2_tx0: spdifm2-tx0 {
++ rockchip,pins =
++ /* spdif_tx0_m2 */
++ <2 RK_PD7 5 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spdifm2_tx1: spdifm2-tx1 {
++ rockchip,pins =
++ /* spdif_tx1_m2 */
++ <1 RK_PD5 6 &pcfg_pull_none>;
++ };
++ };
++
++ spi0 {
++ /omit-if-no-ref/
++ spi0m0_pins: spi0m0-pins {
++ rockchip,pins =
++ /* spi0_clk_m0 */
++ <0 RK_PC7 11 &pcfg_pull_none>,
++ /* spi0_miso_m0 */
++ <0 RK_PD1 11 &pcfg_pull_none>,
++ /* spi0_mosi_m0 */
++ <0 RK_PD0 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi0m0_csn0: spi0m0-csn0 {
++ rockchip,pins =
++ /* spi0m0_csn0 */
++ <0 RK_PC6 11 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi0m0_csn1: spi0m0-csn1 {
++ rockchip,pins =
++ /* spi0m0_csn1 */
++ <0 RK_PC3 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi0m1_pins: spi0m1-pins {
++ rockchip,pins =
++ /* spi0_clk_m1 */
++ <2 RK_PA5 12 &pcfg_pull_none>,
++ /* spi0_miso_m1 */
++ <2 RK_PA1 12 &pcfg_pull_none>,
++ /* spi0_mosi_m1 */
++ <2 RK_PA0 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi0m1_csn0: spi0m1-csn0 {
++ rockchip,pins =
++ /* spi0m1_csn0 */
++ <2 RK_PA4 12 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi0m1_csn1: spi0m1-csn1 {
++ rockchip,pins =
++ /* spi0m1_csn1 */
++ <2 RK_PA2 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi0m2_pins: spi0m2-pins {
++ rockchip,pins =
++ /* spi0_clk_m2 */
++ <1 RK_PA7 9 &pcfg_pull_none>,
++ /* spi0_miso_m2 */
++ <1 RK_PA6 9 &pcfg_pull_none>,
++ /* spi0_mosi_m2 */
++ <1 RK_PA5 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi0m2_csn0: spi0m2-csn0 {
++ rockchip,pins =
++ /* spi0m2_csn0 */
++ <1 RK_PA4 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi0m2_csn1: spi0m2-csn1 {
++ rockchip,pins =
++ /* spi0m2_csn1 */
++ <1 RK_PB2 9 &pcfg_pull_none>;
++ };
++ };
++
++ spi1 {
++ /omit-if-no-ref/
++ spi1m0_pins: spi1m0-pins {
++ rockchip,pins =
++ /* spi1_clk_m0 */
++ <1 RK_PB4 11 &pcfg_pull_none>,
++ /* spi1_miso_m0 */
++ <1 RK_PB6 11 &pcfg_pull_none>,
++ /* spi1_mosi_m0 */
++ <1 RK_PB5 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi1m0_csn0: spi1m0-csn0 {
++ rockchip,pins =
++ /* spi1m0_csn0 */
++ <1 RK_PB7 11 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi1m0_csn1: spi1m0-csn1 {
++ rockchip,pins =
++ /* spi1m0_csn1 */
++ <1 RK_PC0 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi1m1_pins: spi1m1-pins {
++ rockchip,pins =
++ /* spi1_clk_m1 */
++ <2 RK_PC5 10 &pcfg_pull_none>,
++ /* spi1_miso_m1 */
++ <2 RK_PC3 10 &pcfg_pull_none>,
++ /* spi1_mosi_m1 */
++ <2 RK_PC2 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi1m1_csn0: spi1m1-csn0 {
++ rockchip,pins =
++ /* spi1m1_csn0 */
++ <2 RK_PC4 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi1m1_csn1: spi1m1-csn1 {
++ rockchip,pins =
++ /* spi1m1_csn1 */
++ <2 RK_PC1 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi1m2_pins: spi1m2-pins {
++ rockchip,pins =
++ /* spi1_clk_m2 */
++ <3 RK_PC7 10 &pcfg_pull_none>,
++ /* spi1_miso_m2 */
++ <3 RK_PC5 10 &pcfg_pull_none>,
++ /* spi1_mosi_m2 */
++ <3 RK_PC6 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi1m2_csn0: spi1m2-csn0 {
++ rockchip,pins =
++ /* spi1m2_csn0 */
++ <3 RK_PD0 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi1m2_csn1: spi1m2-csn1 {
++ rockchip,pins =
++ /* spi1m2_csn1 */
++ <4 RK_PA0 10 &pcfg_pull_none>;
++ };
++ };
++
++ spi2 {
++ /omit-if-no-ref/
++ spi2m0_pins: spi2m0-pins {
++ rockchip,pins =
++ /* spi2_clk_m0 */
++ <0 RK_PB2 9 &pcfg_pull_none>,
++ /* spi2_miso_m0 */
++ <0 RK_PB1 9 &pcfg_pull_none>,
++ /* spi2_mosi_m0 */
++ <0 RK_PB3 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi2m0_csn0: spi2m0-csn0 {
++ rockchip,pins =
++ /* spi2m0_csn0 */
++ <0 RK_PB0 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi2m0_csn1: spi2m0-csn1 {
++ rockchip,pins =
++ /* spi2m0_csn1 */
++ <0 RK_PA7 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi2m1_pins: spi2m1-pins {
++ rockchip,pins =
++ /* spi2_clk_m1 */
++ <1 RK_PD5 11 &pcfg_pull_none>,
++ /* spi2_miso_m1 */
++ <1 RK_PC5 11 &pcfg_pull_none>,
++ /* spi2_mosi_m1 */
++ <1 RK_PC4 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi2m1_csn0: spi2m1-csn0 {
++ rockchip,pins =
++ /* spi2m1_csn0 */
++ <1 RK_PC3 11 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi2m1_csn1: spi2m1-csn1 {
++ rockchip,pins =
++ /* spi2m1_csn1 */
++ <1 RK_PC2 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi2m2_pins: spi2m2-pins {
++ rockchip,pins =
++ /* spi2_clk_m2 */
++ <3 RK_PA4 10 &pcfg_pull_none>,
++ /* spi2_miso_m2 */
++ <3 RK_PC1 10 &pcfg_pull_none>,
++ /* spi2_mosi_m2 */
++ <3 RK_PB0 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi2m2_csn0: spi2m2-csn0 {
++ rockchip,pins =
++ /* spi2m2_csn0 */
++ <3 RK_PC4 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi2m2_csn1: spi2m2-csn1 {
++ rockchip,pins =
++ /* spi2m2_csn1 */
++ <3 RK_PA5 10 &pcfg_pull_none>;
++ };
++ };
++
++ spi3 {
++ /omit-if-no-ref/
++ spi3m0_pins: spi3m0-pins {
++ rockchip,pins =
++ /* spi3_clk_m0 */
++ <3 RK_PA0 10 &pcfg_pull_none>,
++ /* spi3_miso_m0 */
++ <3 RK_PA2 10 &pcfg_pull_none>,
++ /* spi3_mosi_m0 */
++ <3 RK_PA1 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi3m0_csn0: spi3m0-csn0 {
++ rockchip,pins =
++ /* spi3m0_csn0 */
++ <3 RK_PA3 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi3m0_csn1: spi3m0-csn1 {
++ rockchip,pins =
++ /* spi3m0_csn1 */
++ <2 RK_PD7 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi3m1_pins: spi3m1-pins {
++ rockchip,pins =
++ /* spi3_clk_m1 */
++ <3 RK_PD4 10 &pcfg_pull_none>,
++ /* spi3_miso_m1 */
++ <3 RK_PD5 10 &pcfg_pull_none>,
++ /* spi3_mosi_m1 */
++ <3 RK_PD6 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi3m1_csn0: spi3m1-csn0 {
++ rockchip,pins =
++ /* spi3m1_csn0 */
++ <3 RK_PB6 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi3m1_csn1: spi3m1-csn1 {
++ rockchip,pins =
++ /* spi3m1_csn1 */
++ <3 RK_PD7 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi3m2_pins: spi3m2-pins {
++ rockchip,pins =
++ /* spi3_clk_m2 */
++ <4 RK_PA7 9 &pcfg_pull_none>,
++ /* spi3_miso_m2 */
++ <4 RK_PA6 9 &pcfg_pull_none>,
++ /* spi3_mosi_m2 */
++ <4 RK_PA4 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi3m2_csn0: spi3m2-csn0 {
++ rockchip,pins =
++ /* spi3m2_csn0 */
++ <4 RK_PA3 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi3m2_csn1: spi3m2-csn1 {
++ rockchip,pins =
++ /* spi3m2_csn1 */
++ <4 RK_PB3 10 &pcfg_pull_none>;
++ };
++ };
++
++ spi4 {
++ /omit-if-no-ref/
++ spi4m0_pins: spi4m0-pins {
++ rockchip,pins =
++ /* spi4_clk_m0 */
++ <4 RK_PC7 12 &pcfg_pull_none>,
++ /* spi4_miso_m0 */
++ <4 RK_PC6 12 &pcfg_pull_none>,
++ /* spi4_mosi_m0 */
++ <4 RK_PC5 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m0_csn0: spi4m0-csn0 {
++ rockchip,pins =
++ /* spi4m0_csn0 */
++ <4 RK_PC4 12 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi4m0_csn1: spi4m0-csn1 {
++ rockchip,pins =
++ /* spi4m0_csn1 */
++ <4 RK_PC0 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m1_pins: spi4m1-pins {
++ rockchip,pins =
++ /* spi4_clk_m1 */
++ <3 RK_PD1 10 &pcfg_pull_none>,
++ /* spi4_miso_m1 */
++ <3 RK_PC2 10 &pcfg_pull_none>,
++ /* spi4_mosi_m1 */
++ <3 RK_PC3 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m1_csn0: spi4m1-csn0 {
++ rockchip,pins =
++ /* spi4m1_csn0 */
++ <3 RK_PB1 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi4m1_csn1: spi4m1-csn1 {
++ rockchip,pins =
++ /* spi4m1_csn1 */
++ <3 RK_PD2 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m2_pins: spi4m2-pins {
++ rockchip,pins =
++ /* spi4_clk_m2 */
++ <4 RK_PB0 9 &pcfg_pull_none>,
++ /* spi4_miso_m2 */
++ <4 RK_PB2 9 &pcfg_pull_none>,
++ /* spi4_mosi_m2 */
++ <4 RK_PB1 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m2_csn0: spi4m2-csn0 {
++ rockchip,pins =
++ /* spi4m2_csn0 */
++ <4 RK_PB3 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi4m2_csn1: spi4m2-csn1 {
++ rockchip,pins =
++ /* spi4m2_csn1 */
++ <4 RK_PA5 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m3_pins: spi4m3-pins {
++ rockchip,pins =
++ /* spi4_clk_m3 */
++ <2 RK_PB3 10 &pcfg_pull_none>,
++ /* spi4_miso_m3 */
++ <2 RK_PB5 10 &pcfg_pull_none>,
++ /* spi4_mosi_m3 */
++ <2 RK_PB4 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ spi4m3_csn0: spi4m3-csn0 {
++ rockchip,pins =
++ /* spi4m3_csn0 */
++ <2 RK_PB2 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ spi4m3_csn1: spi4m3-csn1 {
++ rockchip,pins =
++ /* spi4m3_csn1 */
++ <2 RK_PA6 10 &pcfg_pull_none>;
++ };
++ };
++
++ test_clk {
++ /omit-if-no-ref/
++ test_clk_pins: test_clk-pins {
++ rockchip,pins =
++ /* test_clk_out */
++ <2 RK_PA5 5 &pcfg_pull_none>;
++ };
++ };
++
++ tsadc {
++ /omit-if-no-ref/
++ tsadcm0_pins: tsadcm0-pins {
++ rockchip,pins =
++ /* tsadc_ctrl_m0 */
++ <0 RK_PA1 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ tsadcm1_pins: tsadcm1-pins {
++ rockchip,pins =
++ /* tsadc_ctrl_m1 */
++ <0 RK_PA3 10 &pcfg_pull_none>;
++ };
++ };
++
++ tsadc_ctrl {
++ /omit-if-no-ref/
++ tsadc_ctrl_pins: tsadc_ctrl-pins {
++ rockchip,pins =
++ /* tsadc_ctrl_org */
++ <0 RK_PA1 10 &pcfg_pull_none>;
++ };
++ };
++
++ uart0 {
++ /omit-if-no-ref/
++ uart0m0_xfer: uart0m0-xfer {
++ rockchip,pins =
++ /* uart0_rx_m0 */
++ <0 RK_PD5 9 &pcfg_pull_up>,
++ /* uart0_tx_m0 */
++ <0 RK_PD4 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart0m1_xfer: uart0m1-xfer {
++ rockchip,pins =
++ /* uart0_rx_m1 */
++ <2 RK_PA0 9 &pcfg_pull_up>,
++ /* uart0_tx_m1 */
++ <2 RK_PA1 9 &pcfg_pull_up>;
++ };
++ };
++
++ uart1 {
++ /omit-if-no-ref/
++ uart1m0_xfer: uart1m0-xfer {
++ rockchip,pins =
++ /* uart1_rx_m0 */
++ <0 RK_PC0 10 &pcfg_pull_up>,
++ /* uart1_tx_m0 */
++ <0 RK_PB7 10 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart1m0_ctsn: uart1m0-ctsn {
++ rockchip,pins =
++ /* uart1m0_ctsn */
++ <0 RK_PD2 13 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart1m0_rtsn: uart1m0-rtsn {
++ rockchip,pins =
++ /* uart1m0_rtsn */
++ <0 RK_PD3 13 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart1m1_xfer: uart1m1-xfer {
++ rockchip,pins =
++ /* uart1_rx_m1 */
++ <2 RK_PB1 9 &pcfg_pull_up>,
++ /* uart1_tx_m1 */
++ <2 RK_PB0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart1m1_ctsn: uart1m1-ctsn {
++ rockchip,pins =
++ /* uart1m1_ctsn */
++ <2 RK_PB2 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart1m1_rtsn: uart1m1-rtsn {
++ rockchip,pins =
++ /* uart1m1_rtsn */
++ <2 RK_PB3 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart1m2_xfer: uart1m2-xfer {
++ rockchip,pins =
++ /* uart1_rx_m2 */
++ <3 RK_PA6 9 &pcfg_pull_up>,
++ /* uart1_tx_m2 */
++ <3 RK_PA7 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart1m2_ctsn: uart1m2-ctsn {
++ rockchip,pins =
++ /* uart1m2_ctsn */
++ <3 RK_PA4 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart1m2_rtsn: uart1m2-rtsn {
++ rockchip,pins =
++ /* uart1m2_rtsn */
++ <3 RK_PA5 9 &pcfg_pull_none>;
++ };
++ };
++
++ uart2 {
++ /omit-if-no-ref/
++ uart2m0_xfer: uart2m0-xfer {
++ rockchip,pins =
++ /* uart2_rx_m0 */
++ <1 RK_PC7 9 &pcfg_pull_up>,
++ /* uart2_tx_m0 */
++ <1 RK_PC6 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart2m0_ctsn: uart2m0-ctsn {
++ rockchip,pins =
++ /* uart2m0_ctsn */
++ <1 RK_PC5 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart2m0_rtsn: uart2m0-rtsn {
++ rockchip,pins =
++ /* uart2m0_rtsn */
++ <1 RK_PC4 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart2m1_xfer: uart2m1-xfer {
++ rockchip,pins =
++ /* uart2_rx_m1 */
++ <4 RK_PB4 10 &pcfg_pull_up>,
++ /* uart2_tx_m1 */
++ <4 RK_PB5 10 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart2m1_ctsn: uart2m1-ctsn {
++ rockchip,pins =
++ /* uart2m1_ctsn */
++ <4 RK_PB1 12 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart2m1_rtsn: uart2m1-rtsn {
++ rockchip,pins =
++ /* uart2m1_rtsn */
++ <4 RK_PB0 12 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart2m2_xfer: uart2m2-xfer {
++ rockchip,pins =
++ /* uart2_rx_m2 */
++ <3 RK_PB7 9 &pcfg_pull_up>,
++ /* uart2_tx_m2 */
++ <3 RK_PC0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart2m2_ctsn: uart2m2-ctsn {
++ rockchip,pins =
++ /* uart2m2_ctsn */
++ <3 RK_PD3 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart2m2_rtsn: uart2m2-rtsn {
++ rockchip,pins =
++ /* uart2m2_rtsn */
++ <3 RK_PD2 9 &pcfg_pull_none>;
++ };
++ };
++
++ uart3 {
++ /omit-if-no-ref/
++ uart3m0_xfer: uart3m0-xfer {
++ rockchip,pins =
++ /* uart3_rx_m0 */
++ <3 RK_PA1 9 &pcfg_pull_up>,
++ /* uart3_tx_m0 */
++ <3 RK_PA0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart3m0_ctsn: uart3m0-ctsn {
++ rockchip,pins =
++ /* uart3m0_ctsn */
++ <3 RK_PA2 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart3m0_rtsn: uart3m0-rtsn {
++ rockchip,pins =
++ /* uart3m0_rtsn */
++ <3 RK_PA3 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart3m1_xfer: uart3m1-xfer {
++ rockchip,pins =
++ /* uart3_rx_m1 */
++ <4 RK_PA1 9 &pcfg_pull_up>,
++ /* uart3_tx_m1 */
++ <4 RK_PA0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart3m1_ctsn: uart3m1-ctsn {
++ rockchip,pins =
++ /* uart3m1_ctsn */
++ <3 RK_PB7 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart3m1_rtsn: uart3m1-rtsn {
++ rockchip,pins =
++ /* uart3m1_rtsn */
++ <3 RK_PC0 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart3m2_xfer: uart3m2-xfer {
++ rockchip,pins =
++ /* uart3_rx_m2 */
++ <1 RK_PC1 9 &pcfg_pull_up>,
++ /* uart3_tx_m2 */
++ <1 RK_PC0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart3m2_ctsn: uart3m2-ctsn {
++ rockchip,pins =
++ /* uart3m2_ctsn */
++ <1 RK_PB6 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart3m2_rtsn: uart3m2-rtsn {
++ rockchip,pins =
++ /* uart3m2_rtsn */
++ <1 RK_PB7 9 &pcfg_pull_none>;
++ };
++ };
++
++ uart4 {
++ /omit-if-no-ref/
++ uart4m0_xfer: uart4m0-xfer {
++ rockchip,pins =
++ /* uart4_rx_m0 */
++ <2 RK_PD1 9 &pcfg_pull_up>,
++ /* uart4_tx_m0 */
++ <2 RK_PD0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart4m0_ctsn: uart4m0-ctsn {
++ rockchip,pins =
++ /* uart4m0_ctsn */
++ <2 RK_PC6 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart4m0_rtsn: uart4m0-rtsn {
++ rockchip,pins =
++ /* uart4m0_rtsn */
++ <2 RK_PC7 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart4m1_xfer: uart4m1-xfer {
++ rockchip,pins =
++ /* uart4_rx_m1 */
++ <1 RK_PC5 9 &pcfg_pull_up>,
++ /* uart4_tx_m1 */
++ <1 RK_PC4 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart4m1_ctsn: uart4m1-ctsn {
++ rockchip,pins =
++ /* uart4m1_ctsn */
++ <1 RK_PC3 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart4m1_rtsn: uart4m1-rtsn {
++ rockchip,pins =
++ /* uart4m1_rtsn */
++ <1 RK_PC2 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart4m2_xfer: uart4m2-xfer {
++ rockchip,pins =
++ /* uart4_rx_m2 */
++ <0 RK_PB5 10 &pcfg_pull_up>,
++ /* uart4_tx_m2 */
++ <0 RK_PB4 10 &pcfg_pull_up>;
++ };
++ };
++
++ uart5 {
++ /omit-if-no-ref/
++ uart5m0_xfer: uart5m0-xfer {
++ rockchip,pins =
++ /* uart5_rx_m0 */
++ <3 RK_PD4 9 &pcfg_pull_up>,
++ /* uart5_tx_m0 */
++ <3 RK_PD5 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart5m0_ctsn: uart5m0-ctsn {
++ rockchip,pins =
++ /* uart5m0_ctsn */
++ <3 RK_PD6 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart5m0_rtsn: uart5m0-rtsn {
++ rockchip,pins =
++ /* uart5m0_rtsn */
++ <3 RK_PD7 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart5m1_xfer: uart5m1-xfer {
++ rockchip,pins =
++ /* uart5_rx_m1 */
++ <4 RK_PB1 10 &pcfg_pull_up>,
++ /* uart5_tx_m1 */
++ <4 RK_PB0 10 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart5m1_ctsn: uart5m1-ctsn {
++ rockchip,pins =
++ /* uart5m1_ctsn */
++ <4 RK_PA5 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart5m1_rtsn: uart5m1-rtsn {
++ rockchip,pins =
++ /* uart5m1_rtsn */
++ <4 RK_PA3 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart5m2_xfer: uart5m2-xfer {
++ rockchip,pins =
++ /* uart5_rx_m2 */
++ <2 RK_PA4 9 &pcfg_pull_up>,
++ /* uart5_tx_m2 */
++ <2 RK_PA5 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart5m2_ctsn: uart5m2-ctsn {
++ rockchip,pins =
++ /* uart5m2_ctsn */
++ <2 RK_PA3 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart5m2_rtsn: uart5m2-rtsn {
++ rockchip,pins =
++ /* uart5m2_rtsn */
++ <2 RK_PA2 10 &pcfg_pull_none>;
++ };
++ };
++
++ uart6 {
++ /omit-if-no-ref/
++ uart6m0_xfer: uart6m0-xfer {
++ rockchip,pins =
++ /* uart6_rx_m0 */
++ <4 RK_PA6 10 &pcfg_pull_up>,
++ /* uart6_tx_m0 */
++ <4 RK_PA4 10 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart6m0_ctsn: uart6m0-ctsn {
++ rockchip,pins =
++ /* uart6m0_ctsn */
++ <4 RK_PB1 11 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart6m0_rtsn: uart6m0-rtsn {
++ rockchip,pins =
++ /* uart6m0_rtsn */
++ <4 RK_PB0 11 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart6m1_xfer: uart6m1-xfer {
++ rockchip,pins =
++ /* uart6_rx_m1 */
++ <2 RK_PD3 9 &pcfg_pull_up>,
++ /* uart6_tx_m1 */
++ <2 RK_PD2 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart6m1_ctsn: uart6m1-ctsn {
++ rockchip,pins =
++ /* uart6m1_ctsn */
++ <2 RK_PD5 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart6m1_rtsn: uart6m1-rtsn {
++ rockchip,pins =
++ /* uart6m1_rtsn */
++ <2 RK_PD4 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart6m2_xfer: uart6m2-xfer {
++ rockchip,pins =
++ /* uart6_rx_m2 */
++ <1 RK_PB3 9 &pcfg_pull_up>,
++ /* uart6_tx_m2 */
++ <1 RK_PB0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart6m2_ctsn: uart6m2-ctsn {
++ rockchip,pins =
++ /* uart6m2_ctsn */
++ <1 RK_PA3 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart6m2_rtsn: uart6m2-rtsn {
++ rockchip,pins =
++ /* uart6m2_rtsn */
++ <1 RK_PA2 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart6m3_xfer: uart6m3-xfer {
++ rockchip,pins =
++ /* uart6_rx_m3 */
++ <4 RK_PC5 13 &pcfg_pull_up>,
++ /* uart6_tx_m3 */
++ <4 RK_PC4 13 &pcfg_pull_up>;
++ };
++ };
++
++ uart7 {
++ /omit-if-no-ref/
++ uart7m0_xfer: uart7m0-xfer {
++ rockchip,pins =
++ /* uart7_rx_m0 */
++ <2 RK_PB7 9 &pcfg_pull_up>,
++ /* uart7_tx_m0 */
++ <2 RK_PB6 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart7m0_ctsn: uart7m0-ctsn {
++ rockchip,pins =
++ /* uart7m0_ctsn */
++ <2 RK_PB4 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart7m0_rtsn: uart7m0-rtsn {
++ rockchip,pins =
++ /* uart7m0_rtsn */
++ <2 RK_PB5 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart7m1_xfer: uart7m1-xfer {
++ rockchip,pins =
++ /* uart7_rx_m1 */
++ <1 RK_PA3 9 &pcfg_pull_up>,
++ /* uart7_tx_m1 */
++ <1 RK_PA2 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart7m1_ctsn: uart7m1-ctsn {
++ rockchip,pins =
++ /* uart7m1_ctsn */
++ <1 RK_PA1 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart7m1_rtsn: uart7m1-rtsn {
++ rockchip,pins =
++ /* uart7m1_rtsn */
++ <1 RK_PA0 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart7m2_xfer: uart7m2-xfer {
++ rockchip,pins =
++ /* uart7_rx_m2 */
++ <2 RK_PA0 10 &pcfg_pull_up>,
++ /* uart7_tx_m2 */
++ <2 RK_PA1 10 &pcfg_pull_up>;
++ };
++ };
++
++ uart8 {
++ /omit-if-no-ref/
++ uart8m0_xfer: uart8m0-xfer {
++ rockchip,pins =
++ /* uart8_rx_m0 */
++ <3 RK_PC5 9 &pcfg_pull_up>,
++ /* uart8_tx_m0 */
++ <3 RK_PC6 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart8m0_ctsn: uart8m0-ctsn {
++ rockchip,pins =
++ /* uart8m0_ctsn */
++ <3 RK_PD0 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart8m0_rtsn: uart8m0-rtsn {
++ rockchip,pins =
++ /* uart8m0_rtsn */
++ <3 RK_PC7 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart8m1_xfer: uart8m1-xfer {
++ rockchip,pins =
++ /* uart8_rx_m1 */
++ <2 RK_PA7 9 &pcfg_pull_up>,
++ /* uart8_tx_m1 */
++ <2 RK_PA6 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart8m1_ctsn: uart8m1-ctsn {
++ rockchip,pins =
++ /* uart8m1_ctsn */
++ <2 RK_PB7 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart8m1_rtsn: uart8m1-rtsn {
++ rockchip,pins =
++ /* uart8m1_rtsn */
++ <2 RK_PB6 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart8m2_xfer: uart8m2-xfer {
++ rockchip,pins =
++ /* uart8_rx_m2 */
++ <0 RK_PC2 10 &pcfg_pull_up>,
++ /* uart8_tx_m2 */
++ <0 RK_PC1 10 &pcfg_pull_up>;
++ };
++ };
++
++ uart9 {
++ /omit-if-no-ref/
++ uart9m0_xfer: uart9m0-xfer {
++ rockchip,pins =
++ /* uart9_rx_m0 */
++ <2 RK_PC0 9 &pcfg_pull_up>,
++ /* uart9_tx_m0 */
++ <2 RK_PC1 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart9m0_ctsn: uart9m0-ctsn {
++ rockchip,pins =
++ /* uart9m0_ctsn */
++ <2 RK_PD7 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart9m0_rtsn: uart9m0-rtsn {
++ rockchip,pins =
++ /* uart9m0_rtsn */
++ <2 RK_PD6 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart9m1_xfer: uart9m1-xfer {
++ rockchip,pins =
++ /* uart9_rx_m1 */
++ <3 RK_PB2 9 &pcfg_pull_up>,
++ /* uart9_tx_m1 */
++ <3 RK_PB3 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart9m1_ctsn: uart9m1-ctsn {
++ rockchip,pins =
++ /* uart9m1_ctsn */
++ <3 RK_PB5 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart9m1_rtsn: uart9m1-rtsn {
++ rockchip,pins =
++ /* uart9m1_rtsn */
++ <3 RK_PB4 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart9m2_xfer: uart9m2-xfer {
++ rockchip,pins =
++ /* uart9_rx_m2 */
++ <4 RK_PC3 13 &pcfg_pull_up>,
++ /* uart9_tx_m2 */
++ <4 RK_PC2 13 &pcfg_pull_up>;
++ };
++ };
++
++ uart10 {
++ /omit-if-no-ref/
++ uart10m0_xfer: uart10m0-xfer {
++ rockchip,pins =
++ /* uart10_rx_m0 */
++ <3 RK_PB0 9 &pcfg_pull_up>,
++ /* uart10_tx_m0 */
++ <3 RK_PB1 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart10m0_ctsn: uart10m0-ctsn {
++ rockchip,pins =
++ /* uart10m0_ctsn */
++ <3 RK_PA6 10 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart10m0_rtsn: uart10m0-rtsn {
++ rockchip,pins =
++ /* uart10m0_rtsn */
++ <3 RK_PA7 10 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart10m1_xfer: uart10m1-xfer {
++ rockchip,pins =
++ /* uart10_rx_m1 */
++ <1 RK_PD1 9 &pcfg_pull_up>,
++ /* uart10_tx_m1 */
++ <1 RK_PD0 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart10m1_ctsn: uart10m1-ctsn {
++ rockchip,pins =
++ /* uart10m1_ctsn */
++ <1 RK_PD5 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart10m1_rtsn: uart10m1-rtsn {
++ rockchip,pins =
++ /* uart10m1_rtsn */
++ <1 RK_PD4 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart10m2_xfer: uart10m2-xfer {
++ rockchip,pins =
++ /* uart10_rx_m2 */
++ <0 RK_PC5 10 &pcfg_pull_up>,
++ /* uart10_tx_m2 */
++ <0 RK_PC4 10 &pcfg_pull_up>;
++ };
++ };
++
++ uart11 {
++ /omit-if-no-ref/
++ uart11m0_xfer: uart11m0-xfer {
++ rockchip,pins =
++ /* uart11_rx_m0 */
++ <3 RK_PC1 9 &pcfg_pull_up>,
++ /* uart11_tx_m0 */
++ <3 RK_PC4 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart11m0_ctsn: uart11m0-ctsn {
++ rockchip,pins =
++ /* uart11m0_ctsn */
++ <3 RK_PC3 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart11m0_rtsn: uart11m0-rtsn {
++ rockchip,pins =
++ /* uart11m0_rtsn */
++ <3 RK_PC2 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart11m1_xfer: uart11m1-xfer {
++ rockchip,pins =
++ /* uart11_rx_m1 */
++ <2 RK_PC5 9 &pcfg_pull_up>,
++ /* uart11_tx_m1 */
++ <2 RK_PC4 9 &pcfg_pull_up>;
++ };
++
++ /omit-if-no-ref/
++ uart11m1_ctsn: uart11m1-ctsn {
++ rockchip,pins =
++ /* uart11m1_ctsn */
++ <2 RK_PC2 9 &pcfg_pull_none>;
++ };
++ /omit-if-no-ref/
++ uart11m1_rtsn: uart11m1-rtsn {
++ rockchip,pins =
++ /* uart11m1_rtsn */
++ <2 RK_PC3 9 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ uart11m2_xfer: uart11m2-xfer {
++ rockchip,pins =
++ /* uart11_rx_m2 */
++ <4 RK_PC1 13 &pcfg_pull_up>,
++ /* uart11_tx_m2 */
++ <4 RK_PC0 13 &pcfg_pull_up>;
++ };
++ };
++
++ ufs {
++ /omit-if-no-ref/
++ ufs_refclk: ufs-refclk {
++ rockchip,pins =
++ /* ufs_refclk */
++ <4 RK_PD1 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ ufs_rst: ufs-rst {
++ rockchip,pins =
++ /* ufs_rstn */
++ <4 RK_PD0 1 &pcfg_pull_none>;
++ };
++ };
++
++ ufs_testdata0 {
++ /omit-if-no-ref/
++ ufs_testdata0_test: ufs_testdata0-test {
++ rockchip,pins =
++ /* ufs_testdata0_out */
++ <4 RK_PC4 4 &pcfg_pull_none>;
++ };
++ };
++
++ ufs_testdata1 {
++ /omit-if-no-ref/
++ ufs_testdata1_test: ufs_testdata1-test {
++ rockchip,pins =
++ /* ufs_testdata1_out */
++ <4 RK_PC5 4 &pcfg_pull_none>;
++ };
++ };
++
++ ufs_testdata2 {
++ /omit-if-no-ref/
++ ufs_testdata2_test: ufs_testdata2-test {
++ rockchip,pins =
++ /* ufs_testdata2_out */
++ <4 RK_PC6 4 &pcfg_pull_none>;
++ };
++ };
++
++ ufs_testdata3 {
++ /omit-if-no-ref/
++ ufs_testdata3_test: ufs_testdata3-test {
++ rockchip,pins =
++ /* ufs_testdata3_out */
++ <4 RK_PC7 4 &pcfg_pull_none>;
++ };
++ };
++
++ vi_cif {
++ /omit-if-no-ref/
++ vi_cif_pins: vi_cif-pins {
++ rockchip,pins =
++ /* vi_cif_clki */
++ <3 RK_PA3 1 &pcfg_pull_none>,
++ /* vi_cif_clko */
++ <3 RK_PA2 1 &pcfg_pull_none>,
++ /* vi_cif_d0 */
++ <2 RK_PC5 1 &pcfg_pull_none>,
++ /* vi_cif_d1 */
++ <2 RK_PC4 1 &pcfg_pull_none>,
++ /* vi_cif_d2 */
++ <2 RK_PC3 1 &pcfg_pull_none>,
++ /* vi_cif_d3 */
++ <2 RK_PC2 1 &pcfg_pull_none>,
++ /* vi_cif_d4 */
++ <2 RK_PC1 1 &pcfg_pull_none>,
++ /* vi_cif_d5 */
++ <2 RK_PC0 1 &pcfg_pull_none>,
++ /* vi_cif_d6 */
++ <2 RK_PB7 1 &pcfg_pull_none>,
++ /* vi_cif_d7 */
++ <2 RK_PB6 1 &pcfg_pull_none>,
++ /* vi_cif_d8 */
++ <2 RK_PB5 1 &pcfg_pull_none>,
++ /* vi_cif_d9 */
++ <2 RK_PB4 1 &pcfg_pull_none>,
++ /* vi_cif_d10 */
++ <2 RK_PB3 1 &pcfg_pull_none>,
++ /* vi_cif_d11 */
++ <2 RK_PB2 1 &pcfg_pull_none>,
++ /* vi_cif_d12 */
++ <2 RK_PB1 1 &pcfg_pull_none>,
++ /* vi_cif_d13 */
++ <2 RK_PB0 1 &pcfg_pull_none>,
++ /* vi_cif_d14 */
++ <2 RK_PA7 1 &pcfg_pull_none>,
++ /* vi_cif_d15 */
++ <2 RK_PA6 1 &pcfg_pull_none>,
++ /* vi_cif_href */
++ <3 RK_PA0 1 &pcfg_pull_none>,
++ /* vi_cif_vsync */
++ <3 RK_PA1 1 &pcfg_pull_none>;
++ };
++ };
++
++ vo_lcdc {
++ /omit-if-no-ref/
++ vo_lcdc_pins: vo_lcdc-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d0 */
++ <3 RK_PD3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d1 */
++ <3 RK_PD2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d2 */
++ <3 RK_PD1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d8 */
++ <3 RK_PC3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d9 */
++ <3 RK_PC2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d16 */
++ <3 RK_PB3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d17 */
++ <3 RK_PB2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d18 */
++ <3 RK_PB1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++ };
++
++ vo_post {
++ /omit-if-no-ref/
++ vo_post_pins: vo_post-pins {
++ rockchip,pins =
++ /* vo_post_empty */
++ <4 RK_PA1 1 &pcfg_pull_none>;
++ };
++ };
++
++ vp0_sync {
++ /omit-if-no-ref/
++ vp0_sync_pins: vp0_sync-pins {
++ rockchip,pins =
++ /* vp0_sync_out */
++ <4 RK_PC5 3 &pcfg_pull_none>;
++ };
++ };
++
++ vp1_sync {
++ /omit-if-no-ref/
++ vp1_sync_pins: vp1_sync-pins {
++ rockchip,pins =
++ /* vp1_sync_out */
++ <4 RK_PC6 3 &pcfg_pull_none>;
++ };
++ };
++
++ vp2_sync {
++ /omit-if-no-ref/
++ vp2_sync_pins: vp2_sync-pins {
++ rockchip,pins =
++ /* vp2_sync_out */
++ <4 RK_PC7 3 &pcfg_pull_none>;
++ };
++ };
++};
++
++/*
++ * This part is edited handly.
++ */
++&pinctrl {
++ pmic {
++ /omit-if-no-ref/
++ pmic_pins: pmic-pins {
++ rockchip,pins =
++ /* pmic_int */
++ <0 RK_PA6 9 &pcfg_pull_up>,
++ /* pmic_sleep */
++ <0 RK_PA4 9 &pcfg_pull_none>;
++ };
++ };
++
++ vo {
++ /omit-if-no-ref/
++ bt1120_pins: bt1120-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ bt656_pins: bt656-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ rgb3x8_pins_m0: rgb3x8-pins-m0 {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ rgb3x8_pins_m1: rgb3x8-pins-m1 {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ rgb565_pins: rgb565-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ rgb666_pins: rgb666-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d2 */
++ <3 RK_PD1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d18 */
++ <3 RK_PB1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ rgb888_pins: rgb888-pins {
++ rockchip,pins =
++ /* vo_lcdc_clk */
++ <3 RK_PD7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d0 */
++ <3 RK_PD3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d1 */
++ <3 RK_PD2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d2 */
++ <3 RK_PD1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d3 */
++ <3 RK_PD0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d4 */
++ <3 RK_PC7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d5 */
++ <3 RK_PC6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d6 */
++ <3 RK_PC5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d7 */
++ <3 RK_PC4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d8 */
++ <3 RK_PC3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d9 */
++ <3 RK_PC2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d10 */
++ <3 RK_PC1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d11 */
++ <3 RK_PC0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d12 */
++ <3 RK_PB7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d13 */
++ <3 RK_PB6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d14 */
++ <3 RK_PB5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d15 */
++ <3 RK_PB4 1 &pcfg_pull_none>,
++ /* vo_lcdc_d16 */
++ <3 RK_PB3 1 &pcfg_pull_none>,
++ /* vo_lcdc_d17 */
++ <3 RK_PB2 1 &pcfg_pull_none>,
++ /* vo_lcdc_d18 */
++ <3 RK_PB1 1 &pcfg_pull_none>,
++ /* vo_lcdc_d19 */
++ <3 RK_PB0 1 &pcfg_pull_none>,
++ /* vo_lcdc_d20 */
++ <3 RK_PA7 1 &pcfg_pull_none>,
++ /* vo_lcdc_d21 */
++ <3 RK_PA6 1 &pcfg_pull_none>,
++ /* vo_lcdc_d22 */
++ <3 RK_PA5 1 &pcfg_pull_none>,
++ /* vo_lcdc_d23 */
++ <3 RK_PA4 1 &pcfg_pull_none>,
++ /* vo_lcdc_den */
++ <3 RK_PD4 1 &pcfg_pull_none>,
++ /* vo_lcdc_hsync */
++ <3 RK_PD5 1 &pcfg_pull_none>,
++ /* vo_lcdc_vsync */
++ <3 RK_PD6 1 &pcfg_pull_none>;
++ };
++ };
++
++ vo_ebc {
++ /omit-if-no-ref/
++ vo_ebc_pins: vo_ebc-pins {
++ rockchip,pins =
++ /* vo_ebc_gdclk */
++ <3 RK_PD5 2 &pcfg_pull_none>,
++ /* vo_ebc_gdoe */
++ <3 RK_PA6 2 &pcfg_pull_none>,
++ /* vo_ebc_gdsp */
++ <3 RK_PA5 2 &pcfg_pull_none>,
++ /* vo_ebc_sdce0 */
++ <3 RK_PB3 2 &pcfg_pull_none>,
++ /* vo_ebc_sdclk */
++ <3 RK_PD6 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo0 */
++ <3 RK_PD3 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo1 */
++ <3 RK_PD2 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo2 */
++ <3 RK_PD1 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo3 */
++ <3 RK_PD0 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo4 */
++ <3 RK_PC7 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo5 */
++ <3 RK_PC6 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo6 */
++ <3 RK_PC5 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo7 */
++ <3 RK_PC4 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo8 */
++ <3 RK_PC3 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo9 */
++ <3 RK_PC2 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo10 */
++ <3 RK_PC1 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo11 */
++ <3 RK_PC0 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo12 */
++ <3 RK_PB7 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo13 */
++ <3 RK_PB6 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo14 */
++ <3 RK_PB5 2 &pcfg_pull_none>,
++ /* vo_ebc_sddo15 */
++ <3 RK_PB4 2 &pcfg_pull_none>,
++ /* vo_ebc_sdle */
++ <3 RK_PD4 2 &pcfg_pull_none>,
++ /* vo_ebc_sdoe */
++ <3 RK_PD7 2 &pcfg_pull_none>;
++ };
++
++ /omit-if-no-ref/
++ vo_ebc_extern: vo_ebc-extern {
++ rockchip,pins =
++ /* vo_ebc_sdce1 */
++ <3 RK_PB2 2 &pcfg_pull_none>,
++ /* vo_ebc_sdce2 */
++ <3 RK_PB1 2 &pcfg_pull_none>,
++ /* vo_ebc_sdce3 */
++ <3 RK_PB0 2 &pcfg_pull_none>,
++ /* vo_ebc_sdshr */
++ <3 RK_PA4 2 &pcfg_pull_none>,
++ /* vo_ebc_vcom */
++ <3 RK_PA7 2 &pcfg_pull_none>;
++ };
++ };
++};
+--- /dev/null
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -0,0 +1,1678 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
++/*
++ * Copyright (c) 2023 Rockchip Electronics Co., Ltd.
++ */
++
++#include <dt-bindings/clock/rockchip,rk3576-cru.h>
++#include <dt-bindings/interrupt-controller/arm-gic.h>
++#include <dt-bindings/interrupt-controller/irq.h>
++#include <dt-bindings/phy/phy.h>
++#include <dt-bindings/pinctrl/rockchip.h>
++#include <dt-bindings/power/rockchip,rk3576-power.h>
++#include <dt-bindings/reset/rockchip,rk3576-cru.h>
++#include <dt-bindings/soc/rockchip,boot-mode.h>
++
++/ {
++ compatible = "rockchip,rk3576";
++
++ interrupt-parent = <&gic>;
++ #address-cells = <2>;
++ #size-cells = <2>;
++
++ aliases {
++ i2c0 = &i2c0;
++ i2c1 = &i2c1;
++ i2c2 = &i2c2;
++ i2c3 = &i2c3;
++ i2c4 = &i2c4;
++ i2c5 = &i2c5;
++ i2c6 = &i2c6;
++ i2c7 = &i2c7;
++ i2c8 = &i2c8;
++ i2c9 = &i2c9;
++ serial0 = &uart0;
++ serial1 = &uart1;
++ serial2 = &uart2;
++ serial3 = &uart3;
++ serial4 = &uart4;
++ serial5 = &uart5;
++ serial6 = &uart6;
++ serial7 = &uart7;
++ serial8 = &uart8;
++ serial9 = &uart9;
++ serial10 = &uart10;
++ serial11 = &uart11;
++ spi0 = &spi0;
++ spi1 = &spi1;
++ spi2 = &spi2;
++ spi3 = &spi3;
++ spi4 = &spi4;
++ };
++
++ xin32k: clock-xin32k {
++ compatible = "fixed-clock";
++ clock-frequency = <32768>;
++ clock-output-names = "xin32k";
++ #clock-cells = <0>;
++ };
++
++ xin24m: clock-xin24m {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <24000000>;
++ clock-output-names = "xin24m";
++ };
++
++ spll: clock-spll {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <702000000>;
++ clock-output-names = "spll";
++ };
++
++ cpus {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ cpu-map {
++ cluster0 {
++ core0 {
++ cpu = <&cpu_l0>;
++ };
++ core1 {
++ cpu = <&cpu_l1>;
++ };
++ core2 {
++ cpu = <&cpu_l2>;
++ };
++ core3 {
++ cpu = <&cpu_l3>;
++ };
++ };
++ cluster1 {
++ core0 {
++ cpu = <&cpu_b0>;
++ };
++ core1 {
++ cpu = <&cpu_b1>;
++ };
++ core2 {
++ cpu = <&cpu_b2>;
++ };
++ core3 {
++ cpu = <&cpu_b3>;
++ };
++ };
++ };
++
++ cpu_l0: cpu at 0 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a53";
++ reg = <0x0>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <485>;
++ clocks = <&scmi_clk ARMCLK_L>;
++ operating-points-v2 = <&cluster0_opp_table>;
++ #cooling-cells = <2>;
++ dynamic-power-coefficient = <120>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_l1: cpu at 1 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a53";
++ reg = <0x1>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <485>;
++ clocks = <&scmi_clk ARMCLK_L>;
++ operating-points-v2 = <&cluster0_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_l2: cpu at 2 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a53";
++ reg = <0x2>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <485>;
++ clocks = <&scmi_clk ARMCLK_L>;
++ operating-points-v2 = <&cluster0_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_l3: cpu at 3 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a53";
++ reg = <0x3>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <485>;
++ clocks = <&scmi_clk ARMCLK_L>;
++ operating-points-v2 = <&cluster0_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_b0: cpu at 100 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a72";
++ reg = <0x100>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <1024>;
++ clocks = <&scmi_clk ARMCLK_B>;
++ operating-points-v2 = <&cluster1_opp_table>;
++ #cooling-cells = <2>;
++ dynamic-power-coefficient = <320>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_b1: cpu at 101 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a72";
++ reg = <0x101>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <1024>;
++ clocks = <&scmi_clk ARMCLK_B>;
++ operating-points-v2 = <&cluster1_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_b2: cpu at 102 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a72";
++ reg = <0x102>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <1024>;
++ clocks = <&scmi_clk ARMCLK_B>;
++ operating-points-v2 = <&cluster1_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ cpu_b3: cpu at 103 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a72";
++ reg = <0x103>;
++ enable-method = "psci";
++ capacity-dmips-mhz = <1024>;
++ clocks = <&scmi_clk ARMCLK_B>;
++ operating-points-v2 = <&cluster1_opp_table>;
++ cpu-idle-states = <&CPU_SLEEP>;
++ };
++
++ idle-states {
++ entry-method = "psci";
++
++ CPU_SLEEP: cpu-sleep {
++ compatible = "arm,idle-state";
++ arm,psci-suspend-param = <0x0010000>;
++ entry-latency-us = <120>;
++ exit-latency-us = <250>;
++ min-residency-us = <900>;
++ local-timer-stop;
++ };
++ };
++ };
++
++ cluster0_opp_table: opp-table-cluster0 {
++ compatible = "operating-points-v2";
++ opp-shared;
++
++ opp-408000000 {
++ opp-hz = /bits/ 64 <408000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-600000000 {
++ opp-hz = /bits/ 64 <600000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-816000000 {
++ opp-hz = /bits/ 64 <816000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1008000000 {
++ opp-hz = /bits/ 64 <1008000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1200000000 {
++ opp-hz = /bits/ 64 <1200000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1416000000 {
++ opp-hz = /bits/ 64 <1416000000>;
++ opp-microvolt = <725000 725000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1608000000 {
++ opp-hz = /bits/ 64 <1608000000>;
++ opp-microvolt = <750000 750000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1800000000 {
++ opp-hz = /bits/ 64 <1800000000>;
++ opp-microvolt = <825000 825000 950000>;
++ clock-latency-ns = <40000>;
++ opp-suspend;
++ };
++
++ opp-2016000000 {
++ opp-hz = /bits/ 64 <2016000000>;
++ opp-microvolt = <900000 900000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-2208000000 {
++ opp-hz = /bits/ 64 <2208000000>;
++ opp-microvolt = <950000 950000 950000>;
++ clock-latency-ns = <40000>;
++ };
++ };
++
++ cluster1_opp_table: opp-table-cluster1 {
++ compatible = "operating-points-v2";
++ opp-shared;
++
++ opp-408000000 {
++ opp-hz = /bits/ 64 <408000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ opp-suspend;
++ };
++
++ opp-600000000 {
++ opp-hz = /bits/ 64 <600000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-816000000 {
++ opp-hz = /bits/ 64 <816000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1008000000 {
++ opp-hz = /bits/ 64 <1008000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1200000000 {
++ opp-hz = /bits/ 64 <1200000000>;
++ opp-microvolt = <700000 700000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1416000000 {
++ opp-hz = /bits/ 64 <1416000000>;
++ opp-microvolt = <712500 712500 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1608000000 {
++ opp-hz = /bits/ 64 <1608000000>;
++ opp-microvolt = <737500 737500 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-1800000000 {
++ opp-hz = /bits/ 64 <1800000000>;
++ opp-microvolt = <800000 800000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-2016000000 {
++ opp-hz = /bits/ 64 <2016000000>;
++ opp-microvolt = <862500 862500 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-2208000000 {
++ opp-hz = /bits/ 64 <2208000000>;
++ opp-microvolt = <925000 925000 950000>;
++ clock-latency-ns = <40000>;
++ };
++
++ opp-2304000000 {
++ opp-hz = /bits/ 64 <2304000000>;
++ opp-microvolt = <950000 950000 950000>;
++ clock-latency-ns = <40000>;
++ };
++ };
++
++ gpu_opp_table: opp-table-gpu {
++ compatible = "operating-points-v2";
++
++ opp-300000000 {
++ opp-hz = /bits/ 64 <300000000>;
++ opp-microvolt = <700000 700000 850000>;
++ };
++
++ opp-400000000 {
++ opp-hz = /bits/ 64 <400000000>;
++ opp-microvolt = <700000 700000 850000>;
++ };
++
++ opp-500000000 {
++ opp-hz = /bits/ 64 <500000000>;
++ opp-microvolt = <700000 700000 850000>;
++ };
++
++ opp-600000000 {
++ opp-hz = /bits/ 64 <600000000>;
++ opp-microvolt = <700000 700000 850000>;
++ };
++
++ opp-700000000 {
++ opp-hz = /bits/ 64 <700000000>;
++ opp-microvolt = <725000 725000 850000>;
++ };
++
++ opp-800000000 {
++ opp-hz = /bits/ 64 <800000000>;
++ opp-microvolt = <775000 775000 850000>;
++ };
++
++ opp-900000000 {
++ opp-hz = /bits/ 64 <900000000>;
++ opp-microvolt = <825000 825000 850000>;
++ };
++
++ opp-950000000 {
++ opp-hz = /bits/ 64 <950000000>;
++ opp-microvolt = <850000 850000 850000>;
++ };
++ };
++
++ firmware {
++ scmi: scmi {
++ compatible = "arm,scmi-smc";
++ arm,smc-id = <0x82000010>;
++ shmem = <&scmi_shmem>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ scmi_clk: protocol at 14 {
++ reg = <0x14>;
++ #clock-cells = <1>;
++ };
++ };
++ };
++
++ pmu_a53: pmu-a53 {
++ compatible = "arm,cortex-a53-pmu";
++ interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-affinity = <&cpu_l0>, <&cpu_l1>, <&cpu_l2>, <&cpu_l3>;
++ };
++
++ pmu_a72: pmu-a72 {
++ compatible = "arm,cortex-a72-pmu";
++ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-affinity = <&cpu_b0>, <&cpu_b1>, <&cpu_b2>, <&cpu_b3>;
++ };
++
++ psci {
++ compatible = "arm,psci-1.0";
++ method = "smc";
++ };
++
++ timer {
++ compatible = "arm,armv8-timer";
++ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
++ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
++ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
++ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
++ };
++
++ soc {
++ compatible = "simple-bus";
++ #address-cells = <2>;
++ #size-cells = <2>;
++ ranges;
++
++ sys_grf: syscon at 2600a000 {
++ compatible = "rockchip,rk3576-sys-grf", "syscon";
++ reg = <0x0 0x2600a000 0x0 0x2000>;
++ };
++
++ bigcore_grf: syscon at 2600c000 {
++ compatible = "rockchip,rk3576-bigcore-grf", "syscon";
++ reg = <0x0 0x2600c000 0x0 0x2000>;
++ };
++
++ litcore_grf: syscon at 2600e000 {
++ compatible = "rockchip,rk3576-litcore-grf", "syscon";
++ reg = <0x0 0x2600e000 0x0 0x2000>;
++ };
++
++ cci_grf: syscon at 26010000 {
++ compatible = "rockchip,rk3576-cci-grf", "syscon";
++ reg = <0x0 0x26010000 0x0 0x2000>;
++ };
++
++ gpu_grf: syscon at 26016000 {
++ compatible = "rockchip,rk3576-gpu-grf", "syscon";
++ reg = <0x0 0x26016000 0x0 0x2000>;
++ };
++
++ npu_grf: syscon at 26018000 {
++ compatible = "rockchip,rk3576-npu-grf", "syscon";
++ reg = <0x0 0x26018000 0x0 0x2000>;
++ };
++
++ vo0_grf: syscon at 2601a000 {
++ compatible = "rockchip,rk3576-vo0-grf", "syscon";
++ reg = <0x0 0x2601a000 0x0 0x2000>;
++ };
++
++ usb_grf: syscon at 2601e000 {
++ compatible = "rockchip,rk3576-usb-grf", "syscon";
++ reg = <0x0 0x2601e000 0x0 0x1000>;
++ };
++
++ php_grf: syscon at 26020000 {
++ compatible = "rockchip,rk3576-php-grf", "syscon";
++ reg = <0x0 0x26020000 0x0 0x2000>;
++ };
++
++ pmu0_grf: syscon at 26024000 {
++ compatible = "rockchip,rk3576-pmu0-grf", "syscon", "simple-mfd";
++ reg = <0x0 0x26024000 0x0 0x1000>;
++ };
++
++ pmu1_grf: syscon at 26026000 {
++ compatible = "rockchip,rk3576-pmu1-grf", "syscon";
++ reg = <0x0 0x26026000 0x0 0x1000>;
++ };
++
++ pipe_phy0_grf: syscon at 26028000 {
++ compatible = "rockchip,rk3576-pipe-phy-grf", "syscon";
++ reg = <0x0 0x26028000 0x0 0x2000>;
++ };
++
++ pipe_phy1_grf: syscon at 2602a000 {
++ compatible = "rockchip,rk3576-pipe-phy-grf", "syscon";
++ reg = <0x0 0x2602a000 0x0 0x2000>;
++ };
++
++ usbdpphy_grf: syscon at 2602c000 {
++ compatible = "rockchip,rk3576-usbdpphy-grf", "syscon";
++ reg = <0x0 0x2602c000 0x0 0x2000>;
++ };
++
++ sdgmac_grf: syscon at 26038000 {
++ compatible = "rockchip,rk3576-sdgmac-grf", "syscon";
++ reg = <0x0 0x26038000 0x0 0x1000>;
++ };
++
++ ioc_grf: syscon at 26040000 {
++ compatible = "rockchip,rk3576-ioc-grf", "syscon", "simple-mfd";
++ reg = <0x0 0x26040000 0x0 0xc000>;
++ };
++
++ cru: clock-controller at 27200000 {
++ compatible = "rockchip,rk3576-cru";
++ reg = <0x0 0x27200000 0x0 0x50000>;
++ #clock-cells = <1>;
++ #reset-cells = <1>;
++
++ assigned-clocks =
++ <&cru CLK_AUDIO_FRAC_1_SRC>,
++ <&cru PLL_GPLL>, <&cru PLL_CPLL>,
++ <&cru PLL_AUPLL>, <&cru CLK_UART_FRAC_0>,
++ <&cru CLK_UART_FRAC_1>, <&cru CLK_UART_FRAC_2>,
++ <&cru CLK_AUDIO_FRAC_0>, <&cru CLK_AUDIO_FRAC_1>,
++ <&cru CLK_CPLL_DIV2>, <&cru CLK_CPLL_DIV4>,
++ <&cru CLK_CPLL_DIV10>, <&cru FCLK_DDR_CM0_CORE>,
++ <&cru ACLK_PHP_ROOT>;
++ assigned-clock-parents = <&cru PLL_AUPLL>;
++ assigned-clock-rates =
++ <0>,
++ <1188000000>, <1000000000>,
++ <786432000>, <18432000>,
++ <96000000>, <128000000>,
++ <45158400>, <49152000>,
++ <500000000>, <250000000>,
++ <100000000>, <500000000>,
++ <250000000>;
++ };
++
++ i2c0: i2c at 27300000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x27300000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c0m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ uart1: serial at 27310000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x27310000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac0 8>, <&dmac0 9>;
++ interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart1m0_xfer>;
++ status = "disabled";
++ };
++
++ pmu: power-management at 27380000 {
++ compatible = "rockchip,rk3576-pmu", "syscon", "simple-mfd";
++ reg = <0x0 0x27380000 0x0 0x800>;
++
++ power: power-controller {
++ compatible = "rockchip,rk3576-power-controller";
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_NPU {
++ reg = <RK3576_PD_NPU>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_NPUTOP {
++ reg = <RK3576_PD_NPUTOP>;
++ clocks = <&cru ACLK_RKNN0>,
++ <&cru ACLK_RKNN1>,
++ <&cru ACLK_RKNN_CBUF>,
++ <&cru CLK_RKNN_DSU0>,
++ <&cru HCLK_RKNN_CBUF>,
++ <&cru HCLK_RKNN_ROOT>,
++ <&cru HCLK_NPU_CM0_ROOT>,
++ <&cru PCLK_NPUTOP_ROOT>;
++ pm_qos = <&qos_npu_mcu>,
++ <&qos_npu_nsp0>,
++ <&qos_npu_nsp1>,
++ <&qos_npu_m0ro>,
++ <&qos_npu_m1ro>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_NPU0 {
++ reg = <RK3576_PD_NPU0>;
++ clocks = <&cru HCLK_RKNN_ROOT>,
++ <&cru ACLK_RKNN0>;
++ pm_qos = <&qos_npu_m0>;
++ #power-domain-cells = <0>;
++ };
++ power-domain at RK3576_PD_NPU1 {
++ reg = <RK3576_PD_NPU1>;
++ clocks = <&cru HCLK_RKNN_ROOT>,
++ <&cru ACLK_RKNN1>;
++ pm_qos = <&qos_npu_m1>;
++ #power-domain-cells = <0>;
++ };
++ };
++ };
++
++ power-domain at RK3576_PD_GPU {
++ reg = <RK3576_PD_GPU>;
++ clocks = <&cru CLK_GPU>, <&cru PCLK_GPU_ROOT>;
++ pm_qos = <&qos_gpu>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_NVM {
++ reg = <RK3576_PD_NVM>;
++ clocks = <&cru ACLK_EMMC>, <&cru HCLK_EMMC>;
++ pm_qos = <&qos_emmc>,
++ <&qos_fspi0>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_SDGMAC {
++ reg = <RK3576_PD_SDGMAC>;
++ clocks = <&cru ACLK_HSGPIO>,
++ <&cru ACLK_GMAC0>,
++ <&cru ACLK_GMAC1>,
++ <&cru CCLK_SRC_SDIO>,
++ <&cru CCLK_SRC_SDMMC0>,
++ <&cru HCLK_HSGPIO>,
++ <&cru HCLK_SDIO>,
++ <&cru HCLK_SDMMC0>,
++ <&cru PCLK_SDGMAC_ROOT>;
++ pm_qos = <&qos_fspi1>,
++ <&qos_gmac0>,
++ <&qos_gmac1>,
++ <&qos_sdio>,
++ <&qos_sdmmc>,
++ <&qos_flexbus>;
++ #power-domain-cells = <0>;
++ };
++ };
++
++ power-domain at RK3576_PD_PHP {
++ reg = <RK3576_PD_PHP>;
++ clocks = <&cru ACLK_PHP_ROOT>,
++ <&cru PCLK_PHP_ROOT>,
++ <&cru ACLK_MMU0>,
++ <&cru ACLK_MMU1>;
++ pm_qos = <&qos_mmu0>,
++ <&qos_mmu1>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_SUBPHP {
++ reg = <RK3576_PD_SUBPHP>;
++ #power-domain-cells = <0>;
++ };
++ };
++
++ power-domain at RK3576_PD_AUDIO {
++ reg = <RK3576_PD_AUDIO>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VEPU1 {
++ reg = <RK3576_PD_VEPU1>;
++ clocks = <&cru ACLK_VEPU1>,
++ <&cru HCLK_VEPU1>;
++ pm_qos = <&qos_vepu1>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VPU {
++ reg = <RK3576_PD_VPU>;
++ clocks = <&cru ACLK_EBC>,
++ <&cru HCLK_EBC>,
++ <&cru ACLK_JPEG>,
++ <&cru HCLK_JPEG>,
++ <&cru ACLK_RGA2E_0>,
++ <&cru HCLK_RGA2E_0>,
++ <&cru ACLK_RGA2E_1>,
++ <&cru HCLK_RGA2E_1>,
++ <&cru ACLK_VDPP>,
++ <&cru HCLK_VDPP>;
++ pm_qos = <&qos_ebc>,
++ <&qos_jpeg>,
++ <&qos_rga0>,
++ <&qos_rga1>,
++ <&qos_vdpp>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VDEC {
++ reg = <RK3576_PD_VDEC>;
++ clocks = <&cru ACLK_RKVDEC_ROOT>,
++ <&cru HCLK_RKVDEC>;
++ pm_qos = <&qos_rkvdec>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VI {
++ reg = <RK3576_PD_VI>;
++ clocks = <&cru ACLK_VICAP>,
++ <&cru HCLK_VICAP>,
++ <&cru DCLK_VICAP>,
++ <&cru ACLK_VI_ROOT>,
++ <&cru HCLK_VI_ROOT>,
++ <&cru PCLK_VI_ROOT>,
++ <&cru CLK_ISP_CORE>,
++ <&cru ACLK_ISP>,
++ <&cru HCLK_ISP>,
++ <&cru CLK_CORE_VPSS>,
++ <&cru ACLK_VPSS>,
++ <&cru HCLK_VPSS>;
++ pm_qos = <&qos_isp_mro>,
++ <&qos_isp_mwo>,
++ <&qos_vicap_m0>,
++ <&qos_vpss_mro>,
++ <&qos_vpss_mwo>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_VEPU0 {
++ reg = <RK3576_PD_VEPU0>;
++ clocks = <&cru ACLK_VEPU0>,
++ <&cru HCLK_VEPU0>;
++ pm_qos = <&qos_vepu0>;
++ #power-domain-cells = <0>;
++ };
++ };
++
++ power-domain at RK3576_PD_VOP {
++ reg = <RK3576_PD_VOP>;
++ clocks = <&cru ACLK_VOP>,
++ <&cru HCLK_VOP>,
++ <&cru HCLK_VOP_ROOT>,
++ <&cru PCLK_VOP_ROOT>;
++ pm_qos = <&qos_vop_m0>,
++ <&qos_vop_m1ro>;
++ #power-domain-cells = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ power-domain at RK3576_PD_USB {
++ reg = <RK3576_PD_USB>;
++ clocks = <&cru PCLK_PHP_ROOT>,
++ <&cru ACLK_USB_ROOT>,
++ <&cru ACLK_MMU2>,
++ <&cru ACLK_SLV_MMU2>,
++ <&cru ACLK_UFS_SYS>;
++ pm_qos = <&qos_mmu2>,
++ <&qos_ufshc>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VO0 {
++ reg = <RK3576_PD_VO0>;
++ clocks = <&cru ACLK_HDCP0>,
++ <&cru HCLK_HDCP0>,
++ <&cru ACLK_VO0_ROOT>,
++ <&cru PCLK_VO0_ROOT>,
++ <&cru HCLK_VOP_ROOT>;
++ pm_qos = <&qos_hdcp0>;
++ #power-domain-cells = <0>;
++ };
++
++ power-domain at RK3576_PD_VO1 {
++ reg = <RK3576_PD_VO1>;
++ clocks = <&cru ACLK_HDCP1>,
++ <&cru HCLK_HDCP1>,
++ <&cru ACLK_VO1_ROOT>,
++ <&cru PCLK_VO1_ROOT>,
++ <&cru HCLK_VOP_ROOT>;
++ pm_qos = <&qos_hdcp1>;
++ #power-domain-cells = <0>;
++ };
++ };
++ };
++ };
++
++ gpu: gpu at 27800000 {
++ compatible = "rockchip,rk3576-mali", "arm,mali-bifrost";
++ reg = <0x0 0x27800000 0x0 0x200000>;
++ assigned-clocks = <&scmi_clk CLK_GPU>;
++ assigned-clock-rates = <198000000>;
++ clocks = <&cru CLK_GPU>;
++ clock-names = "core";
++ dynamic-power-coefficient = <1625>;
++ interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "job", "mmu", "gpu";
++ operating-points-v2 = <&gpu_opp_table>;
++ power-domains = <&power RK3576_PD_GPU>;
++ #cooling-cells = <2>;
++ status = "disabled";
++ };
++
++ qos_hdcp1: qos at 27f02000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f02000 0x0 0x20>;
++ };
++
++ qos_fspi1: qos at 27f04000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04000 0x0 0x20>;
++ };
++
++ qos_gmac0: qos at 27f04080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04080 0x0 0x20>;
++ };
++
++ qos_gmac1: qos at 27f04100 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04100 0x0 0x20>;
++ };
++
++ qos_sdio: qos at 27f04180 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04180 0x0 0x20>;
++ };
++
++ qos_sdmmc: qos at 27f04200 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04200 0x0 0x20>;
++ };
++
++ qos_flexbus: qos at 27f04280 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f04280 0x0 0x20>;
++ };
++
++ qos_gpu: qos at 27f05000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f05000 0x0 0x20>;
++ };
++
++ qos_vepu1: qos at 27f06000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f06000 0x0 0x20>;
++ };
++
++ qos_npu_mcu: qos at 27f08000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f08000 0x0 0x20>;
++ };
++
++ qos_npu_nsp0: qos at 27f08080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f08080 0x0 0x20>;
++ };
++
++ qos_npu_nsp1: qos at 27f08100 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f08100 0x0 0x20>;
++ };
++
++ qos_emmc: qos at 27f09000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f09000 0x0 0x20>;
++ };
++
++ qos_fspi0: qos at 27f09080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f09080 0x0 0x20>;
++ };
++
++ qos_mmu0: qos at 27f0a000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0a000 0x0 0x20>;
++ };
++
++ qos_mmu1: qos at 27f0a080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0a080 0x0 0x20>;
++ };
++
++ qos_rkvdec: qos at 27f0c000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0c000 0x0 0x20>;
++ };
++
++ qos_crypto: qos at 27f0d000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0d000 0x0 0x20>;
++ };
++
++ qos_mmu2: qos at 27f0e000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0e000 0x0 0x20>;
++ };
++
++ qos_ufshc: qos at 27f0e080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0e080 0x0 0x20>;
++ };
++
++ qos_vepu0: qos at 27f0f000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f0f000 0x0 0x20>;
++ };
++
++ qos_isp_mro: qos at 27f10000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f10000 0x0 0x20>;
++ };
++
++ qos_isp_mwo: qos at 27f10080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f10080 0x0 0x20>;
++ };
++
++ qos_vicap_m0: qos at 27f10100 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f10100 0x0 0x20>;
++ };
++
++ qos_vpss_mro: qos at 27f10180 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f10180 0x0 0x20>;
++ };
++
++ qos_vpss_mwo: qos at 27f10200 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f10200 0x0 0x20>;
++ };
++
++ qos_hdcp0: qos at 27f11000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f11000 0x0 0x20>;
++ };
++
++ qos_vop_m0: qos at 27f12800 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f12800 0x0 0x20>;
++ };
++
++ qos_vop_m1ro: qos at 27f12880 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f12880 0x0 0x20>;
++ };
++
++ qos_ebc: qos at 27f13000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f13000 0x0 0x20>;
++ };
++
++ qos_rga0: qos at 27f13080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f13080 0x0 0x20>;
++ };
++
++ qos_rga1: qos at 27f13100 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f13100 0x0 0x20>;
++ };
++
++ qos_jpeg: qos at 27f13180 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f13180 0x0 0x20>;
++ };
++
++ qos_vdpp: qos at 27f13200 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f13200 0x0 0x20>;
++ };
++
++ qos_npu_m0: qos at 27f20000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f20000 0x0 0x20>;
++ };
++
++ qos_npu_m1: qos at 27f21000 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f21000 0x0 0x20>;
++ };
++
++ qos_npu_m0ro: qos at 27f22080 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f22080 0x0 0x20>;
++ };
++
++ qos_npu_m1ro: qos at 27f22100 {
++ compatible = "rockchip,rk3576-qos", "syscon";
++ reg = <0x0 0x27f22100 0x0 0x20>;
++ };
++
++ gmac0: ethernet at 2a220000 {
++ compatible = "rockchip,rk3576-gmac", "snps,dwmac-4.20a";
++ reg = <0x0 0x2a220000 0x0 0x10000>;
++ clocks = <&cru CLK_GMAC0_125M_SRC>, <&cru CLK_GMAC0_RMII_CRU>,
++ <&cru PCLK_GMAC0>, <&cru ACLK_GMAC0>,
++ <&cru CLK_GMAC0_PTP_REF>;
++ clock-names = "stmmaceth", "clk_mac_ref",
++ "pclk_mac", "aclk_mac",
++ "ptp_ref";
++ interrupts = <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq", "eth_wake_irq";
++ power-domains = <&power RK3576_PD_SDGMAC>;
++ resets = <&cru SRST_A_GMAC0>;
++ reset-names = "stmmaceth";
++ rockchip,grf = <&sdgmac_grf>;
++ rockchip,php-grf = <&ioc_grf>;
++ snps,axi-config = <&gmac0_stmmac_axi_setup>;
++ snps,mixed-burst;
++ snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
++ snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
++ snps,tso;
++ status = "disabled";
++
++ mdio0: mdio {
++ compatible = "snps,dwmac-mdio";
++ #address-cells = <0x1>;
++ #size-cells = <0x0>;
++ };
++
++ gmac0_stmmac_axi_setup: stmmac-axi-config {
++ snps,blen = <0 0 0 0 16 8 4>;
++ snps,rd_osr_lmt = <8>;
++ snps,wr_osr_lmt = <4>;
++ };
++
++ gmac0_mtl_rx_setup: rx-queues-config {
++ snps,rx-queues-to-use = <1>;
++ queue0 {};
++ };
++
++ gmac0_mtl_tx_setup: tx-queues-config {
++ snps,tx-queues-to-use = <1>;
++ queue0 {};
++ };
++ };
++
++ gmac1: ethernet at 2a230000 {
++ compatible = "rockchip,rk3576-gmac", "snps,dwmac-4.20a";
++ reg = <0x0 0x2a230000 0x0 0x10000>;
++ clocks = <&cru CLK_GMAC1_125M_SRC>, <&cru CLK_GMAC1_RMII_CRU>,
++ <&cru PCLK_GMAC1>, <&cru ACLK_GMAC1>,
++ <&cru CLK_GMAC1_PTP_REF>;
++ clock-names = "stmmaceth", "clk_mac_ref",
++ "pclk_mac", "aclk_mac",
++ "ptp_ref";
++ interrupts = <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq", "eth_wake_irq";
++ power-domains = <&power RK3576_PD_SDGMAC>;
++ resets = <&cru SRST_A_GMAC1>;
++ reset-names = "stmmaceth";
++ rockchip,grf = <&sdgmac_grf>;
++ rockchip,php-grf = <&ioc_grf>;
++ snps,axi-config = <&gmac1_stmmac_axi_setup>;
++ snps,mixed-burst;
++ snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
++ snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
++ snps,tso;
++ status = "disabled";
++
++ mdio1: mdio {
++ compatible = "snps,dwmac-mdio";
++ #address-cells = <0x1>;
++ #size-cells = <0x0>;
++ };
++
++ gmac1_stmmac_axi_setup: stmmac-axi-config {
++ snps,blen = <0 0 0 0 16 8 4>;
++ snps,rd_osr_lmt = <8>;
++ snps,wr_osr_lmt = <4>;
++ };
++
++ gmac1_mtl_rx_setup: rx-queues-config {
++ snps,rx-queues-to-use = <1>;
++ queue0 {};
++ };
++
++ gmac1_mtl_tx_setup: tx-queues-config {
++ snps,tx-queues-to-use = <1>;
++ queue0 {};
++ };
++ };
++
++ sdmmc: mmc at 2a310000 {
++ compatible = "rockchip,rk3576-dw-mshc";
++ reg = <0x0 0x2a310000 0x0 0x4000>;
++ clocks = <&cru HCLK_SDMMC0>, <&cru CCLK_SRC_SDMMC0>;
++ clock-names = "biu", "ciu";
++ fifo-depth = <0x100>;
++ interrupts = <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>;
++ max-frequency = <200000000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4 &sdmmc0_pwren>;
++ power-domains = <&power RK3576_PD_SDGMAC>;
++ resets = <&cru SRST_H_SDMMC0>;
++ reset-names = "reset";
++ status = "disabled";
++ };
++
++ sdhci: mmc at 2a330000 {
++ compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
++ reg = <0x0 0x2a330000 0x0 0x10000>;
++ assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>, <&cru CCLK_SRC_EMMC>;
++ assigned-clock-rates = <200000000>, <24000000>, <200000000>;
++ clocks = <&cru CCLK_SRC_EMMC>, <&cru HCLK_EMMC>,
++ <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
++ <&cru TCLK_EMMC>;
++ clock-names = "core", "bus", "axi", "block", "timer";
++ interrupts = <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>;
++ max-frequency = <200000000>;
++ pinctrl-0 = <&emmc_rstnout>, <&emmc_bus8>, <&emmc_clk>,
++ <&emmc_cmd>, <&emmc_strb>;
++ pinctrl-names = "default";
++ power-domains = <&power RK3576_PD_NVM>;
++ resets = <&cru SRST_C_EMMC>, <&cru SRST_H_EMMC>,
++ <&cru SRST_A_EMMC>, <&cru SRST_B_EMMC>,
++ <&cru SRST_T_EMMC>;
++ reset-names = "core", "bus", "axi", "block", "timer";
++ supports-cqe;
++ status = "disabled";
++ };
++
++ gic: interrupt-controller at 2a701000 {
++ compatible = "arm,gic-400";
++ reg = <0x0 0x2a701000 0 0x10000>,
++ <0x0 0x2a702000 0 0x10000>,
++ <0x0 0x2a704000 0 0x10000>,
++ <0x0 0x2a706000 0 0x10000>;
++ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
++ interrupt-controller;
++ #interrupt-cells = <3>;
++ #address-cells = <2>;
++ #size-cells = <2>;
++ };
++
++ dmac0: dma-controller at 2ab90000 {
++ compatible = "arm,pl330", "arm,primecell";
++ reg = <0x0 0x2ab90000 0x0 0x4000>;
++ arm,pl330-periph-burst;
++ clocks = <&cru ACLK_DMAC0>;
++ clock-names = "apb_pclk";
++ interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
++ #dma-cells = <1>;
++ };
++
++ dmac1: dma-controller at 2abb0000 {
++ compatible = "arm,pl330", "arm,primecell";
++ reg = <0x0 0x2abb0000 0x0 0x4000>;
++ arm,pl330-periph-burst;
++ clocks = <&cru ACLK_DMAC1>;
++ clock-names = "apb_pclk";
++ interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
++ #dma-cells = <1>;
++ };
++
++ dmac2: dma-controller at 2abd0000 {
++ compatible = "arm,pl330", "arm,primecell";
++ reg = <0x0 0x2abd0000 0x0 0x4000>;
++ arm,pl330-periph-burst;
++ clocks = <&cru ACLK_DMAC2>;
++ clock-names = "apb_pclk";
++ interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
++ #dma-cells = <1>;
++ };
++
++ i2c1: i2c at 2ac40000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac40000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c1m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c2: i2c at 2ac50000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac50000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c2m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c3: i2c at 2ac60000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac60000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c3m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c4: i2c at 2ac70000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac70000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c4m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c5: i2c at 2ac80000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac80000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c5m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++
++ i2c6: i2c at 2ac90000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ac90000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C6>, <&cru PCLK_I2C6>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c6m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c7: i2c at 2aca0000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2aca0000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C7>, <&cru PCLK_I2C7>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c7m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c8: i2c at 2acb0000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2acb0000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C8>, <&cru PCLK_I2C8>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c8m0_xfer>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ timer0: timer at 2acc0000 {
++ compatible = "rockchip,rk3576-timer", "rockchip,rk3288-timer";
++ reg = <0x0 0x2acc0000 0x0 0x20>;
++ clocks = <&cru PCLK_BUSTIMER0>, <&cru CLK_TIMER0>;
++ clock-names = "pclk", "timer";
++ interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
++ };
++
++ wdt: watchdog at 2ace0000 {
++ compatible = "rockchip,rk3576-wdt", "snps,dw-wdt";
++ reg = <0x0 0x2ace0000 0x0 0x100>;
++ clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
++ clock-names = "tclk", "pclk";
++ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
++ status = "disabled";
++ };
++
++ spi0: spi at 2acf0000 {
++ compatible = "rockchip,rk3576-spi", "rockchip,rk3066-spi";
++ reg = <0x0 0x2acf0000 0x0 0x1000>;
++ clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>;
++ clock-names = "spiclk", "apb_pclk";
++ dmas = <&dmac0 14>, <&dmac0 15>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
++ num-cs = <2>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi0m0_csn0 &spi0m0_csn1 &spi0m0_pins>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ spi1: spi at 2ad00000 {
++ compatible = "rockchip,rk3576-spi", "rockchip,rk3066-spi";
++ reg = <0x0 0x2ad00000 0x0 0x1000>;
++ clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
++ clock-names = "spiclk", "apb_pclk";
++ dmas = <&dmac0 16>, <&dmac0 17>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
++ num-cs = <2>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi1m0_csn0 &spi1m0_csn1 &spi1m0_pins>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ spi2: spi at 2ad10000 {
++ compatible = "rockchip,rk3576-spi", "rockchip,rk3066-spi";
++ reg = <0x0 0x2ad10000 0x0 0x1000>;
++ clocks = <&cru CLK_SPI2>, <&cru PCLK_SPI2>;
++ clock-names = "spiclk", "apb_pclk";
++ dmas = <&dmac1 15>, <&dmac1 16>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
++ num-cs = <2>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi2m0_csn0 &spi2m0_csn1 &spi2m0_pins>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ spi3: spi at 2ad20000 {
++ compatible = "rockchip,rk3576-spi", "rockchip,rk3066-spi";
++ reg = <0x0 0x2ad20000 0x0 0x1000>;
++ clocks = <&cru CLK_SPI3>, <&cru PCLK_SPI3>;
++ clock-names = "spiclk", "apb_pclk";
++ dmas = <&dmac1 17>, <&dmac1 18>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
++ num-cs = <2>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi3m0_csn0 &spi3m0_csn1 &spi3m0_pins>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ spi4: spi at 2ad30000 {
++ compatible = "rockchip,rk3576-spi", "rockchip,rk3066-spi";
++ reg = <0x0 0x2ad30000 0x0 0x1000>;
++ clocks = <&cru CLK_SPI4>, <&cru PCLK_SPI4>;
++ clock-names = "spiclk", "apb_pclk";
++ dmas = <&dmac2 12>, <&dmac2 13>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
++ num-cs = <2>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi4m0_csn0 &spi4m0_csn1 &spi4m0_pins>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ uart0: serial at 2ad40000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad40000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac0 6>, <&dmac0 7>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart0m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart2: serial at 2ad50000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad50000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac0 10>, <&dmac0 11>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart2m0_xfer>;
++ status = "disabled";
++ };
++
++ uart3: serial at 2ad60000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad60000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac0 12>, <&dmac0 13>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart3m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart4: serial at 2ad70000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad70000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac1 9>, <&dmac1 10>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart4m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart5: serial at 2ad80000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad80000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac1 11>, <&dmac1 12>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart5m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart6: serial at 2ad90000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ad90000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac1 13>, <&dmac1 14>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart6m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart7: serial at 2ada0000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2ada0000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac2 6>, <&dmac2 7>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart7m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart8: serial at 2adb0000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2adb0000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac2 8>, <&dmac2 9>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart8m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ uart9: serial at 2adc0000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2adc0000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac2 10>, <&dmac2 11>;
++ dma-names = "tx", "rx";
++ interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-0 = <&uart9m0_xfer>;
++ pinctrl-names = "default";
++ status = "disabled";
++ };
++
++ saradc: adc at 2ae00000 {
++ compatible = "rockchip,rk3576-saradc", "rockchip,rk3588-saradc";
++ reg = <0x0 0x2ae00000 0x0 0x10000>;
++ clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
++ clock-names = "saradc", "apb_pclk";
++ interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
++ resets = <&cru SRST_P_SARADC>;
++ reset-names = "saradc-apb";
++ #io-channel-cells = <1>;
++ status = "disabled";
++ };
++
++ i2c9: i2c at 2ae80000 {
++ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
++ reg = <0x0 0x2ae80000 0x0 0x1000>;
++ clocks = <&cru CLK_I2C9>, <&cru PCLK_I2C9>;
++ clock-names = "i2c", "pclk";
++ interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&i2c9m0_xfer>;
++ resets = <&cru SRST_I2C9>, <&cru SRST_P_I2C9>;
++ reset-names = "i2c", "apb";
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ uart10: serial at 2afc0000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2afc0000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART10>, <&cru PCLK_UART10>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac2 21>, <&dmac2 22>;
++ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart10m0_xfer>;
++ status = "disabled";
++ };
++
++ uart11: serial at 2afd0000 {
++ compatible = "rockchip,rk3576-uart", "snps,dw-apb-uart";
++ reg = <0x0 0x2afd0000 0x0 0x100>;
++ reg-shift = <2>;
++ reg-io-width = <4>;
++ clocks = <&cru SCLK_UART11>, <&cru PCLK_UART11>;
++ clock-names = "baudclk", "apb_pclk";
++ dmas = <&dmac2 23>, <&dmac2 24>;
++ interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart11m0_xfer>;
++ status = "disabled";
++ };
++
++ sram: sram at 3ff88000 {
++ compatible = "mmio-sram";
++ reg = <0x0 0x3ff88000 0x0 0x78000>;
++ ranges = <0x0 0x0 0x3ff88000 0x78000>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ /* start address and size should be 4k align */
++ rkvdec_sram: rkvdec-sram at 0 {
++ reg = <0x0 0x78000>;
++ };
++ };
++
++ scmi_shmem: scmi-shmem at 4010f000 {
++ compatible = "arm,scmi-shmem";
++ reg = <0x0 0x4010f000 0x0 0x100>;
++ };
++
++ pinctrl: pinctrl {
++ compatible = "rockchip,rk3576-pinctrl";
++ rockchip,grf = <&ioc_grf>;
++ #address-cells = <2>;
++ #size-cells = <2>;
++ ranges;
++
++ gpio0: gpio at 27320000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x27320000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 0 32>;
++ interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio1: gpio at 2ae10000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae10000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 32 32>;
++ interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio2: gpio at 2ae20000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae20000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 64 32>;
++ interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio3: gpio at 2ae30000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae30000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 96 32>;
++ interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio4: gpio at 2ae40000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae40000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 128 32>;
++ interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++ };
++ };
++};
++
++#include "rk3576-pinctrl.dtsi"
diff --git a/target/linux/rockchip/patches-6.12/050-02-v6.14-arm64-dts-rockchip-Add-rk3576-naneng-combphy-nodes.patch b/target/linux/rockchip/patches-6.12/050-02-v6.14-arm64-dts-rockchip-Add-rk3576-naneng-combphy-nodes.patch
new file mode 100644
index 0000000000..6546c92c13
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-02-v6.14-arm64-dts-rockchip-Add-rk3576-naneng-combphy-nodes.patch
@@ -0,0 +1,61 @@
+From ddbf63b25866a4a58222d763f9f2d29c309e00e8 Mon Sep 17 00:00:00 2001
+From: Kever Yang <kever.yang at rock-chips.com>
+Date: Tue, 7 Jan 2025 15:49:05 +0800
+Subject: [PATCH] arm64: dts: rockchip: Add rk3576 naneng combphy nodes
+
+rk3576 has two naneng combo phys:
+- combophy0 is used for one of pcie and sata;
+- combophy1 is used for one of pcie, sata and usb3;
+
+Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
+Link: https://lore.kernel.org/r/20250107074911.550057-2-kever.yang@rock-chips.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 36 ++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1587,6 +1587,42 @@
+ status = "disabled";
+ };
+
++ combphy0_ps: phy at 2b050000 {
++ compatible = "rockchip,rk3576-naneng-combphy";
++ reg = <0x0 0x2b050000 0x0 0x100>;
++ #phy-cells = <1>;
++ clocks = <&cru CLK_REF_PCIE0_PHY>,
++ <&cru PCLK_PCIE2_COMBOPHY0>,
++ <&cru PCLK_PCIE0>;
++ clock-names = "ref", "apb", "pipe";
++ assigned-clocks = <&cru CLK_REF_PCIE0_PHY>;
++ assigned-clock-rates = <100000000>;
++ resets = <&cru SRST_PCIE0_PIPE_PHY>,
++ <&cru SRST_P_PCIE2_COMBOPHY0>;
++ reset-names = "phy", "apb";
++ rockchip,pipe-grf = <&php_grf>;
++ rockchip,pipe-phy-grf = <&pipe_phy0_grf>;
++ status = "disabled";
++ };
++
++ combphy1_psu: phy at 2b060000 {
++ compatible = "rockchip,rk3576-naneng-combphy";
++ reg = <0x0 0x2b060000 0x0 0x100>;
++ #phy-cells = <1>;
++ clocks = <&cru CLK_REF_PCIE1_PHY>,
++ <&cru PCLK_PCIE2_COMBOPHY1>,
++ <&cru PCLK_PCIE1>;
++ clock-names = "ref", "apb", "pipe";
++ assigned-clocks = <&cru CLK_REF_PCIE1_PHY>;
++ assigned-clock-rates = <100000000>;
++ resets = <&cru SRST_PCIE1_PIPE_PHY>,
++ <&cru SRST_P_PCIE2_COMBOPHY1>;
++ reset-names = "phy", "apb";
++ rockchip,pipe-grf = <&php_grf>;
++ rockchip,pipe-phy-grf = <&pipe_phy1_grf>;
++ status = "disabled";
++ };
++
+ sram: sram at 3ff88000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0x3ff88000 0x0 0x78000>;
diff --git a/target/linux/rockchip/patches-6.12/050-03-v6.14-arm64-dts-rockchip-add-usb-related-nodes-for-rk3576.patch b/target/linux/rockchip/patches-6.12/050-03-v6.14-arm64-dts-rockchip-add-usb-related-nodes-for-rk3576.patch
new file mode 100644
index 0000000000..98b8448c06
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-03-v6.14-arm64-dts-rockchip-add-usb-related-nodes-for-rk3576.patch
@@ -0,0 +1,171 @@
+From 23ec57a32da448cb3415d6abad3457b14c69af25 Mon Sep 17 00:00:00 2001
+From: Frank Wang <frank.wang at rock-chips.com>
+Date: Tue, 7 Jan 2025 15:49:08 +0800
+Subject: [PATCH] arm64: dts: rockchip: add usb related nodes for rk3576
+
+This adds USB and USB-PHY related nodes for RK3576 SoC.
+
+Signed-off-by: Frank Wang <frank.wang at rock-chips.com>
+Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
+Link: https://lore.kernel.org/r/20250107074911.550057-5-kever.yang@rock-chips.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 133 +++++++++++++++++++++++
+ 1 file changed, 133 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -445,6 +445,58 @@
+ #size-cells = <2>;
+ ranges;
+
++ usb_drd0_dwc3: usb at 23000000 {
++ compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
++ reg = <0x0 0x23000000 0x0 0x400000>;
++ clocks = <&cru CLK_REF_USB3OTG0>,
++ <&cru CLK_SUSPEND_USB3OTG0>,
++ <&cru ACLK_USB3OTG0>;
++ clock-names = "ref_clk", "suspend_clk", "bus_clk";
++ interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>;
++ power-domains = <&power RK3576_PD_USB>;
++ resets = <&cru SRST_A_USB3OTG0>;
++ dr_mode = "otg";
++ phys = <&u2phy0_otg>, <&usbdp_phy PHY_TYPE_USB3>;
++ phy-names = "usb2-phy", "usb3-phy";
++ phy_type = "utmi_wide";
++ snps,dis_enblslpm_quirk;
++ snps,dis-u1-entry-quirk;
++ snps,dis-u2-entry-quirk;
++ snps,dis-u2-freeclk-exists-quirk;
++ snps,dis-del-phy-power-chg-quirk;
++ snps,dis-tx-ipgap-linecheck-quirk;
++ snps,parkmode-disable-hs-quirk;
++ snps,parkmode-disable-ss-quirk;
++ status = "disabled";
++ };
++
++ usb_drd1_dwc3: usb at 23400000 {
++ compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
++ reg = <0x0 0x23400000 0x0 0x400000>;
++ clocks = <&cru CLK_REF_USB3OTG1>,
++ <&cru CLK_SUSPEND_USB3OTG1>,
++ <&cru ACLK_USB3OTG1>;
++ clock-names = "ref_clk", "suspend_clk", "bus_clk";
++ interrupts = <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>;
++ power-domains = <&power RK3576_PD_PHP>;
++ resets = <&cru SRST_A_USB3OTG1>;
++ dr_mode = "otg";
++ phys = <&u2phy1_otg>, <&combphy1_psu PHY_TYPE_USB3>;
++ phy-names = "usb2-phy", "usb3-phy";
++ phy_type = "utmi_wide";
++ snps,dis_enblslpm_quirk;
++ snps,dis-u1-entry-quirk;
++ snps,dis-u2-entry-quirk;
++ snps,dis-u2-freeclk-exists-quirk;
++ snps,dis-del-phy-power-chg-quirk;
++ snps,dis-tx-ipgap-linecheck-quirk;
++ snps,dis_rxdet_inp3_quirk;
++ snps,parkmode-disable-hs-quirk;
++ snps,parkmode-disable-ss-quirk;
++ dma-coherent;
++ status = "disabled";
++ };
++
+ sys_grf: syscon at 2600a000 {
+ compatible = "rockchip,rk3576-sys-grf", "syscon";
+ reg = <0x0 0x2600a000 0x0 0x2000>;
+@@ -515,6 +567,65 @@
+ reg = <0x0 0x2602c000 0x0 0x2000>;
+ };
+
++ usb2phy_grf: syscon at 2602e000 {
++ compatible = "rockchip,rk3576-usb2phy-grf", "syscon", "simple-mfd";
++ reg = <0x0 0x2602e000 0x0 0x4000>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ u2phy0: usb2-phy at 0 {
++ compatible = "rockchip,rk3576-usb2phy";
++ reg = <0x0 0x10>;
++ resets = <&cru SRST_OTGPHY_0>, <&cru SRST_P_USBPHY_GRF_0>;
++ reset-names = "phy", "apb";
++ clocks = <&cru CLK_PHY_REF_SRC>,
++ <&cru ACLK_MMU2>,
++ <&cru ACLK_SLV_MMU2>;
++ clock-names = "phyclk", "aclk", "aclk_slv";
++ clock-output-names = "usb480m_phy0";
++ #clock-cells = <0>;
++ status = "disabled";
++
++ u2phy0_otg: otg-port {
++ #phy-cells = <0>;
++ interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "otg-bvalid", "otg-id", "linestate";
++ status = "disabled";
++ };
++ };
++
++ u2phy1: usb2-phy at 2000 {
++ compatible = "rockchip,rk3576-usb2phy";
++ reg = <0x2000 0x10>;
++ resets = <&cru SRST_OTGPHY_1>, <&cru SRST_P_USBPHY_GRF_1>;
++ reset-names = "phy", "apb";
++ clocks = <&cru CLK_PHY_REF_SRC>,
++ <&cru ACLK_MMU1>,
++ <&cru ACLK_SLV_MMU1>;
++ clock-names = "phyclk", "aclk", "aclk_slv";
++ clock-output-names = "usb480m_phy1";
++ #clock-cells = <0>;
++ status = "disabled";
++
++ u2phy1_otg: otg-port {
++ #phy-cells = <0>;
++ interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "otg-bvalid", "otg-id", "linestate";
++ status = "disabled";
++ };
++ };
++ };
++
++ vo1_grf: syscon at 26036000 {
++ compatible = "rockchip,rk3576-vo1-grf", "syscon";
++ reg = <0x0 0x26036000 0x0 0x100>;
++ clocks = <&cru PCLK_VO1_ROOT>;
++ };
++
+ sdgmac_grf: syscon at 26038000 {
+ compatible = "rockchip,rk3576-sdgmac-grf", "syscon";
+ reg = <0x0 0x26038000 0x0 0x1000>;
+@@ -1623,6 +1734,28 @@
+ status = "disabled";
+ };
+
++ usbdp_phy: phy at 2b010000 {
++ compatible = "rockchip,rk3576-usbdp-phy";
++ reg = <0x0 0x2b010000 0x0 0x10000>;
++ #phy-cells = <1>;
++ clocks = <&cru CLK_PHY_REF_SRC >,
++ <&cru CLK_USBDP_COMBO_PHY_IMMORTAL>,
++ <&cru PCLK_USBDPPHY>,
++ <&u2phy0>;
++ clock-names = "refclk", "immortal", "pclk", "utmi";
++ resets = <&cru SRST_USBDP_COMBO_PHY_INIT>,
++ <&cru SRST_USBDP_COMBO_PHY_CMN>,
++ <&cru SRST_USBDP_COMBO_PHY_LANE>,
++ <&cru SRST_USBDP_COMBO_PHY_PCS>,
++ <&cru SRST_P_USBDPPHY>;
++ reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
++ rockchip,u2phy-grf = <&usb2phy_grf>;
++ rockchip,usb-grf = <&usb_grf>;
++ rockchip,usbdpphy-grf = <&usbdpphy_grf>;
++ rockchip,vo-grf = <&vo1_grf>;
++ status = "disabled";
++ };
++
+ sram: sram at 3ff88000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0x3ff88000 0x0 0x78000>;
diff --git a/target/linux/rockchip/patches-6.12/050-04-v6.15-arm64-dts-rockchip-add-rk3576-otp-node.patch b/target/linux/rockchip/patches-6.12/050-04-v6.15-arm64-dts-rockchip-add-rk3576-otp-node.patch
new file mode 100644
index 0000000000..8adefbc379
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-04-v6.15-arm64-dts-rockchip-add-rk3576-otp-node.patch
@@ -0,0 +1,63 @@
+From 8715d2eeb062f6859c252bb6c87b363230b66e9f Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 10 Feb 2025 23:45:10 +0100
+Subject: [PATCH] arm64: dts: rockchip: add rk3576 otp node
+
+This adds the otp node to the rk3576 soc devicetree including the
+individual fields we know about.
+
+Tested-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250210224510.1194963-7-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 39 ++++++++++++++++++++++++
+ 1 file changed, 39 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1260,6 +1260,45 @@
+ status = "disabled";
+ };
+
++ otp: otp at 2a580000 {
++ compatible = "rockchip,rk3576-otp";
++ reg = <0x0 0x2a580000 0x0 0x400>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++ clocks = <&cru CLK_OTPC_NS>, <&cru PCLK_OTPC_NS>,
++ <&cru CLK_OTP_PHY_G>;
++ clock-names = "otp", "apb_pclk", "phy";
++ resets = <&cru SRST_OTPC_NS>, <&cru SRST_P_OTPC_NS>;
++ reset-names = "otp", "apb";
++
++ /* Data cells */
++ cpu_code: cpu-code at 2 {
++ reg = <0x02 0x2>;
++ };
++ otp_cpu_version: cpu-version at 5 {
++ reg = <0x05 0x1>;
++ bits = <3 3>;
++ };
++ otp_id: id at a {
++ reg = <0x0a 0x10>;
++ };
++ cpub_leakage: cpub-leakage at 1e {
++ reg = <0x1e 0x1>;
++ };
++ cpul_leakage: cpul-leakage at 1f {
++ reg = <0x1f 0x1>;
++ };
++ npu_leakage: npu-leakage at 20 {
++ reg = <0x20 0x1>;
++ };
++ gpu_leakage: gpu-leakage at 21 {
++ reg = <0x21 0x1>;
++ };
++ log_leakage: log-leakage at 22 {
++ reg = <0x22 0x1>;
++ };
++ };
++
+ gic: interrupt-controller at 2a701000 {
+ compatible = "arm,gic-400";
+ reg = <0x0 0x2a701000 0 0x10000>,
diff --git a/target/linux/rockchip/patches-6.12/050-05-v6.15-scsi-arm64-dts-rockchip-Add-UFS-support-for-RK3576-SoC.patch b/target/linux/rockchip/patches-6.12/050-05-v6.15-scsi-arm64-dts-rockchip-Add-UFS-support-for-RK3576-SoC.patch
new file mode 100644
index 0000000000..6bb5a52816
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-05-v6.15-scsi-arm64-dts-rockchip-Add-UFS-support-for-RK3576-SoC.patch
@@ -0,0 +1,48 @@
+From c75e5e010fef2a62e6f2fe00ee8584e7b3ec82a6 Mon Sep 17 00:00:00 2001
+From: Shawn Lin <shawn.lin at rock-chips.com>
+Date: Wed, 5 Feb 2025 14:15:56 +0800
+Subject: [PATCH] scsi: arm64: dts: rockchip: Add UFS support for RK3576 SoC
+
+Add ufshc node to rk3576.dtsi, so the board using UFS could enable it.
+
+Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
+Link: https://lore.kernel.org/r/1738736156-119203-8-git-send-email-shawn.lin@rock-chips.com
+Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1221,6 +1221,30 @@
+ };
+ };
+
++ ufshc: ufshc at 2a2d0000 {
++ compatible = "rockchip,rk3576-ufshc";
++ reg = <0x0 0x2a2d0000 0x0 0x10000>,
++ <0x0 0x2b040000 0x0 0x10000>,
++ <0x0 0x2601f000 0x0 0x1000>,
++ <0x0 0x2603c000 0x0 0x1000>,
++ <0x0 0x2a2e0000 0x0 0x10000>;
++ reg-names = "hci", "mphy", "hci_grf", "mphy_grf", "hci_apb";
++ clocks = <&cru ACLK_UFS_SYS>, <&cru PCLK_USB_ROOT>, <&cru PCLK_MPHY>,
++ <&cru CLK_REF_UFS_CLKOUT>;
++ clock-names = "core", "pclk", "pclk_mphy", "ref_out";
++ assigned-clocks = <&cru CLK_REF_OSC_MPHY>;
++ assigned-clock-parents = <&cru CLK_REF_MPHY_26M>;
++ interrupts = <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>;
++ power-domains = <&power RK3576_PD_USB>;
++ pinctrl-0 = <&ufs_refclk>;
++ pinctrl-names = "default";
++ resets = <&cru SRST_A_UFS_BIU>, <&cru SRST_A_UFS_SYS>,
++ <&cru SRST_A_UFS>, <&cru SRST_P_UFS_GRF>;
++ reset-names = "biu", "sys", "ufs", "grf";
++ reset-gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>;
++ status = "disabled";
++ };
++
+ sdmmc: mmc at 2a310000 {
+ compatible = "rockchip,rk3576-dw-mshc";
+ reg = <0x0 0x2a310000 0x0 0x4000>;
diff --git a/target/linux/rockchip/patches-6.12/050-06-v6.15-arm64-dts-rockchip-Add-vop-for-rk3576.patch b/target/linux/rockchip/patches-6.12/050-06-v6.15-arm64-dts-rockchip-Add-vop-for-rk3576.patch
new file mode 100644
index 0000000000..ce30e41aec
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-06-v6.15-arm64-dts-rockchip-Add-vop-for-rk3576.patch
@@ -0,0 +1,98 @@
+From d74b842cab0860e41a45df0dac41e4e56202c766 Mon Sep 17 00:00:00 2001
+From: Andy Yan <andy.yan at rock-chips.com>
+Date: Tue, 31 Dec 2024 17:57:18 +0800
+Subject: [PATCH] arm64: dts: rockchip: Add vop for rk3576
+
+Add VOP and VOP_MMU found on rk3576.
+
+Signed-off-by: Andy Yan <andy.yan at rock-chips.com>
+Link: https://lore.kernel.org/r/20241231095728.253943-2-andyshrk@163.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 68 ++++++++++++++++++++++++
+ 1 file changed, 68 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -393,6 +393,11 @@
+ };
+ };
+
++ display_subsystem: display-subsystem {
++ compatible = "rockchip,display-subsystem";
++ ports = <&vop_out>;
++ };
++
+ firmware {
+ scmi: scmi {
+ compatible = "arm,scmi-smc";
+@@ -937,6 +942,69 @@
+ status = "disabled";
+ };
+
++ vop: vop at 27d00000 {
++ compatible = "rockchip,rk3576-vop";
++ reg = <0x0 0x27d00000 0x0 0x3000>, <0x0 0x27d05000 0x0 0x1000>;
++ reg-names = "vop", "gamma-lut";
++ interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "sys",
++ "vp0",
++ "vp1",
++ "vp2";
++ clocks = <&cru ACLK_VOP>,
++ <&cru HCLK_VOP>,
++ <&cru DCLK_VP0>,
++ <&cru DCLK_VP1>,
++ <&cru DCLK_VP2>;
++ clock-names = "aclk",
++ "hclk",
++ "dclk_vp0",
++ "dclk_vp1",
++ "dclk_vp2";
++ iommus = <&vop_mmu>;
++ power-domains = <&power RK3576_PD_VOP>;
++ rockchip,grf = <&sys_grf>;
++ rockchip,pmu = <&pmu>;
++ status = "disabled";
++
++ vop_out: ports {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ vp0: port at 0 {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ reg = <0>;
++ };
++
++ vp1: port at 1 {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ reg = <1>;
++ };
++
++ vp2: port at 2 {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ reg = <2>;
++ };
++ };
++ };
++
++ vop_mmu: iommu at 27d07e00 {
++ compatible = "rockchip,rk3576-iommu", "rockchip,rk3568-iommu";
++ reg = <0x0 0x27d07e00 0x0 0x100>, <0x0 0x27d07f00 0x0 0x100>;
++ interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
++ clock-names = "aclk", "iface";
++ #iommu-cells = <0>;
++ power-domains = <&power RK3576_PD_VOP>;
++ status = "disabled";
++ };
++
+ qos_hdcp1: qos at 27f02000 {
+ compatible = "rockchip,rk3576-qos", "syscon";
+ reg = <0x0 0x27f02000 0x0 0x20>;
diff --git a/target/linux/rockchip/patches-6.12/050-07-v6.15-arm64-dts-rockchip-Add-hdmi-for-rk3576.patch b/target/linux/rockchip/patches-6.12/050-07-v6.15-arm64-dts-rockchip-Add-hdmi-for-rk3576.patch
new file mode 100644
index 0000000000..8b45644920
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-07-v6.15-arm64-dts-rockchip-Add-hdmi-for-rk3576.patch
@@ -0,0 +1,95 @@
+From ad0ea230ab2a3535b186f7fb863b4bca7050e06f Mon Sep 17 00:00:00 2001
+From: Andy Yan <andy.yan at rock-chips.com>
+Date: Tue, 31 Dec 2024 17:57:19 +0800
+Subject: [PATCH] arm64: dts: rockchip: Add hdmi for rk3576
+
+Add hdmi and it's phy dt node for rk3576.
+
+Signed-off-by: Andy Yan <andy.yan at rock-chips.com>
+Link: https://lore.kernel.org/r/20241231095728.253943-3-andyshrk@163.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 58 ++++++++++++++++++++++++
+ 1 file changed, 58 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -625,6 +625,11 @@
+ };
+ };
+
++ hdptxphy_grf: syscon at 26032000 {
++ compatible = "rockchip,rk3576-hdptxphy-grf", "syscon";
++ reg = <0x0 0x26032000 0x0 0x100>;
++ };
++
+ vo1_grf: syscon at 26036000 {
+ compatible = "rockchip,rk3576-vo1-grf", "syscon";
+ reg = <0x0 0x26036000 0x0 0x100>;
+@@ -1005,6 +1010,46 @@
+ status = "disabled";
+ };
+
++ hdmi: hdmi at 27da0000 {
++ compatible = "rockchip,rk3576-dw-hdmi-qp";
++ reg = <0x0 0x27da0000 0x0 0x20000>;
++ clocks = <&cru PCLK_HDMITX0>,
++ <&cru CLK_HDMITX0_EARC>,
++ <&cru CLK_HDMITX0_REF>,
++ <&cru MCLK_SAI6_8CH>,
++ <&cru CLK_HDMITXHDP>,
++ <&cru HCLK_VO0_ROOT>;
++ clock-names = "pclk", "earc", "ref", "aud", "hdp", "hclk_vo1";
++ interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "avp", "cec", "earc", "main", "hpd";
++ phys = <&hdptxphy>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&hdmi_txm0_pins &hdmi_tx_scl &hdmi_tx_sda>;
++ power-domains = <&power RK3576_PD_VO0>;
++ resets = <&cru SRST_HDMITX0_REF>, <&cru SRST_HDMITXHDP>;
++ reset-names = "ref", "hdp";
++ rockchip,grf = <&ioc_grf>;
++ rockchip,vo-grf = <&vo0_grf>;
++ status = "disabled";
++
++ ports {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ hdmi_in: port at 0 {
++ reg = <0>;
++ };
++
++ hdmi_out: port at 1 {
++ reg = <1>;
++ };
++ };
++ };
++
+ qos_hdcp1: qos at 27f02000 {
+ compatible = "rockchip,rk3576-qos", "syscon";
+ reg = <0x0 0x27f02000 0x0 0x20>;
+@@ -1887,6 +1932,19 @@
+ status = "disabled";
+ };
+
++ hdptxphy: hdmiphy at 2b000000 {
++ compatible = "rockchip,rk3576-hdptx-phy", "rockchip,rk3588-hdptx-phy";
++ reg = <0x0 0x2b000000 0x0 0x2000>;
++ clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_HDPTX_APB>;
++ clock-names = "ref", "apb";
++ resets = <&cru SRST_P_HDPTX_APB>, <&cru SRST_HDPTX_INIT>,
++ <&cru SRST_HDPTX_CMN>, <&cru SRST_HDPTX_LANE>;
++ reset-names = "apb", "init", "cmn", "lane";
++ rockchip,grf = <&hdptxphy_grf>;
++ #phy-cells = <0>;
++ status = "disabled";
++ };
++
+ sram: sram at 3ff88000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0x3ff88000 0x0 0x78000>;
diff --git a/target/linux/rockchip/patches-6.12/050-08-v6.15-arm64-dts-rockchip-Add-SFC-nodes-for-rk3576.patch b/target/linux/rockchip/patches-6.12/050-08-v6.15-arm64-dts-rockchip-Add-SFC-nodes-for-rk3576.patch
new file mode 100644
index 0000000000..67a99d3091
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-08-v6.15-arm64-dts-rockchip-Add-SFC-nodes-for-rk3576.patch
@@ -0,0 +1,52 @@
+From 36299757129c897ef8c7ace6981070d367d89f89 Mon Sep 17 00:00:00 2001
+From: Detlev Casanova <detlev.casanova at collabora.com>
+Date: Fri, 28 Feb 2025 09:50:47 -0500
+Subject: [PATCH] arm64: dts: rockchip: Add SFC nodes for rk3576
+
+The rk3576 SoC has 2 SFC cores that provide FSPI functions.
+
+Signed-off-by: Detlev Casanova <detlev.casanova at collabora.com>
+Link: https://lore.kernel.org/r/20250228145304.581349-2-detlev.casanova@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1358,6 +1358,17 @@
+ status = "disabled";
+ };
+
++ sfc1: spi at 2a300000 {
++ compatible = "rockchip,sfc";
++ reg = <0x0 0x2a300000 0x0 0x4000>;
++ interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru SCLK_FSPI1_X2>, <&cru HCLK_FSPI1>;
++ clock-names = "clk_sfc", "hclk_sfc";
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
+ sdmmc: mmc at 2a310000 {
+ compatible = "rockchip,rk3576-dw-mshc";
+ reg = <0x0 0x2a310000 0x0 0x4000>;
+@@ -1397,6 +1408,17 @@
+ status = "disabled";
+ };
+
++ sfc0: spi at 2a340000 {
++ compatible = "rockchip,sfc";
++ reg = <0x0 0x2a340000 0x0 0x4000>;
++ interrupts = <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru SCLK_FSPI_X2>, <&cru HCLK_FSPI>;
++ clock-names = "clk_sfc", "hclk_sfc";
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
+ otp: otp at 2a580000 {
+ compatible = "rockchip,rk3576-otp";
+ reg = <0x0 0x2a580000 0x0 0x400>;
diff --git a/target/linux/rockchip/patches-6.12/050-09-v6.15-arm64-dts-rockchip-fix-RK3576-SCMI-clock-IDs.patch b/target/linux/rockchip/patches-6.12/050-09-v6.15-arm64-dts-rockchip-fix-RK3576-SCMI-clock-IDs.patch
new file mode 100644
index 0000000000..1a7cc3f37d
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-09-v6.15-arm64-dts-rockchip-fix-RK3576-SCMI-clock-IDs.patch
@@ -0,0 +1,109 @@
+From b5cb721adbe8b6c7a8e3b178fa0feb283f4a660a Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Mon, 10 Mar 2025 10:59:57 +0100
+Subject: [PATCH] arm64: dts: rockchip: fix RK3576 SCMI clock IDs
+
+Downstream Linux, and consequently both downstream and mainline TF-A,
+all use a different set of clock IDs from mainline Linux. If we want to
+fiddle with these clocks through SCMI, we'll need to use the right IDs.
+If we don't do this we'll end up changing unrelated clocks all over the
+place.
+
+Change the clock IDs to the newly added SCMI clock IDs for the CPU and
+GPU nodes, which are currently the only ones using SCMI clocks. This
+fixes the terrible GPU performance, as we weren't reclocking it
+properly.
+
+Fixes: 57b1ce903966 ("arm64: dts: rockchip: Add rk3576 SoC base DT")
+Reported-by: Jonas Karlman <jonas at kwiboo.se>
+Closes: https://libera.irclog.whitequark.org/linux-rockchip/2025-03-09#1741542223-1741542875;
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250310-rk3576-scmi-clocks-v1-2-e165deb034e8@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -111,7 +111,7 @@
+ reg = <0x0>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <485>;
+- clocks = <&scmi_clk ARMCLK_L>;
++ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ #cooling-cells = <2>;
+ dynamic-power-coefficient = <120>;
+@@ -124,7 +124,7 @@
+ reg = <0x1>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <485>;
+- clocks = <&scmi_clk ARMCLK_L>;
++ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -135,7 +135,7 @@
+ reg = <0x2>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <485>;
+- clocks = <&scmi_clk ARMCLK_L>;
++ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -146,7 +146,7 @@
+ reg = <0x3>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <485>;
+- clocks = <&scmi_clk ARMCLK_L>;
++ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -157,7 +157,7 @@
+ reg = <0x100>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+- clocks = <&scmi_clk ARMCLK_B>;
++ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ #cooling-cells = <2>;
+ dynamic-power-coefficient = <320>;
+@@ -170,7 +170,7 @@
+ reg = <0x101>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+- clocks = <&scmi_clk ARMCLK_B>;
++ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -181,7 +181,7 @@
+ reg = <0x102>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+- clocks = <&scmi_clk ARMCLK_B>;
++ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -192,7 +192,7 @@
+ reg = <0x103>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+- clocks = <&scmi_clk ARMCLK_B>;
++ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
+ };
+@@ -932,7 +932,7 @@
+ gpu: gpu at 27800000 {
+ compatible = "rockchip,rk3576-mali", "arm,mali-bifrost";
+ reg = <0x0 0x27800000 0x0 0x200000>;
+- assigned-clocks = <&scmi_clk CLK_GPU>;
++ assigned-clocks = <&scmi_clk SCMI_CLK_GPU>;
+ assigned-clock-rates = <198000000>;
+ clocks = <&cru CLK_GPU>;
+ clock-names = "core";
diff --git a/target/linux/rockchip/patches-6.12/050-10-v6.16-arm64-dts-rockchip-Add-rk3576-pcie-nodes.patch b/target/linux/rockchip/patches-6.12/050-10-v6.16-arm64-dts-rockchip-Add-rk3576-pcie-nodes.patch
new file mode 100644
index 0000000000..0f5842d443
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-10-v6.16-arm64-dts-rockchip-Add-rk3576-pcie-nodes.patch
@@ -0,0 +1,135 @@
+From d4b9fc2af45d2b91b1654c4aaa1edcb4dd8f4918 Mon Sep 17 00:00:00 2001
+From: Kever Yang <kever.yang at rock-chips.com>
+Date: Mon, 14 Apr 2025 22:51:10 +0800
+Subject: [PATCH] arm64: dts: rockchip: Add rk3576 pcie nodes
+
+rk3576 has two pcie controllers, both are pcie2x1 work with
+naneng-combphy.
+
+Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
+Tested-by: Shawn Lin <Shawn.lin at rock-chips.com>
+Reviewed-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Tested-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250414145110.11275-3-kever.yang@rock-chips.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 108 +++++++++++++++++++++++
+ 1 file changed, 108 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1240,6 +1240,114 @@
+ reg = <0x0 0x27f22100 0x0 0x20>;
+ };
+
++ pcie0: pcie at 2a200000 {
++ compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
++ reg = <0x0 0x22000000 0x0 0x00400000>,
++ <0x0 0x2a200000 0x0 0x00010000>,
++ <0x0 0x20000000 0x0 0x00100000>;
++ reg-names = "dbi", "apb", "config";
++ bus-range = <0x0 0xf>;
++ clocks = <&cru ACLK_PCIE0_MST>, <&cru ACLK_PCIE0_SLV>,
++ <&cru ACLK_PCIE0_DBI>, <&cru PCLK_PCIE0>,
++ <&cru CLK_PCIE0_AUX>;
++ clock-names = "aclk_mst", "aclk_slv",
++ "aclk_dbi", "pclk",
++ "aux";
++ device_type = "pci";
++ interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
++ #interrupt-cells = <1>;
++ interrupt-map-mask = <0 0 0 7>;
++ interrupt-map = <0 0 0 1 &pcie0_intc 0>,
++ <0 0 0 2 &pcie0_intc 1>,
++ <0 0 0 3 &pcie0_intc 2>,
++ <0 0 0 4 &pcie0_intc 3>;
++ linux,pci-domain = <0>;
++ max-link-speed = <2>;
++ num-ib-windows = <8>;
++ num-viewport = <8>;
++ num-ob-windows = <2>;
++ num-lanes = <1>;
++ phys = <&combphy0_ps PHY_TYPE_PCIE>;
++ phy-names = "pcie-phy";
++ power-domains = <&power RK3576_PD_PHP>;
++ ranges = <0x01000000 0x0 0x20100000 0x0 0x20100000 0x0 0x00100000
++ 0x02000000 0x0 0x20200000 0x0 0x20200000 0x0 0x00e00000
++ 0x03000000 0x9 0x00000000 0x9 0x00000000 0x0 0x80000000>;
++ resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
++ reset-names = "pwr", "pipe";
++ #address-cells = <3>;
++ #size-cells = <2>;
++ status = "disabled";
++
++ pcie0_intc: legacy-interrupt-controller {
++ interrupt-controller;
++ #address-cells = <0>;
++ #interrupt-cells = <1>;
++ interrupt-parent = <&gic>;
++ interrupts = <GIC_SPI 280 IRQ_TYPE_EDGE_RISING>;
++ };
++ };
++
++ pcie1: pcie at 2a210000 {
++ compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
++ reg = <0x0 0x22400000 0x0 0x00400000>,
++ <0x0 0x2a210000 0x0 0x00010000>,
++ <0x0 0x21000000 0x0 0x00100000>;
++ reg-names = "dbi", "apb", "config";
++ bus-range = <0x20 0x2f>;
++ clocks = <&cru ACLK_PCIE1_MST>, <&cru ACLK_PCIE1_SLV>,
++ <&cru ACLK_PCIE1_DBI>, <&cru PCLK_PCIE1>,
++ <&cru CLK_PCIE1_AUX>;
++ clock-names = "aclk_mst", "aclk_slv",
++ "aclk_dbi", "pclk",
++ "aux";
++ device_type = "pci";
++ interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
++ #interrupt-cells = <1>;
++ interrupt-map-mask = <0 0 0 7>;
++ interrupt-map = <0 0 0 1 &pcie1_intc 0>,
++ <0 0 0 2 &pcie1_intc 1>,
++ <0 0 0 3 &pcie1_intc 2>,
++ <0 0 0 4 &pcie1_intc 3>;
++ linux,pci-domain = <0>;
++ max-link-speed = <2>;
++ num-ib-windows = <8>;
++ num-viewport = <8>;
++ num-ob-windows = <2>;
++ num-lanes = <1>;
++ phys = <&combphy1_psu PHY_TYPE_PCIE>;
++ phy-names = "pcie-phy";
++ power-domains = <&power RK3576_PD_SUBPHP>;
++ ranges = <0x01000000 0x0 0x21100000 0x0 0x21100000 0x0 0x00100000
++ 0x02000000 0x0 0x21200000 0x0 0x21200000 0x0 0x00e00000
++ 0x03000000 0x9 0x80000000 0x9 0x80000000 0x0 0x80000000>;
++ resets = <&cru SRST_PCIE1_POWER_UP>, <&cru SRST_P_PCIE1>;
++ reset-names = "pwr", "pipe";
++ #address-cells = <3>;
++ #size-cells = <2>;
++ status = "disabled";
++
++ pcie1_intc: legacy-interrupt-controller {
++ interrupt-controller;
++ #address-cells = <0>;
++ #interrupt-cells = <1>;
++ interrupt-parent = <&gic>;
++ interrupts = <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>;
++ };
++ };
++
+ gmac0: ethernet at 2a220000 {
+ compatible = "rockchip,rk3576-gmac", "snps,dwmac-4.20a";
+ reg = <0x0 0x2a220000 0x0 0x10000>;
diff --git a/target/linux/rockchip/patches-6.12/050-11-v6.16-arm64-dts-rockchip-add-SATA-nodes-to-RK3576.patch b/target/linux/rockchip/patches-6.12/050-11-v6.16-arm64-dts-rockchip-add-SATA-nodes-to-RK3576.patch
new file mode 100644
index 0000000000..4039d25084
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-11-v6.16-arm64-dts-rockchip-add-SATA-nodes-to-RK3576.patch
@@ -0,0 +1,60 @@
+From 24d8127d801560c8fa811d554e8ab5db7e51511c Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Thu, 24 Apr 2025 20:52:23 +0200
+Subject: [PATCH] arm64: dts: rockchip: add SATA nodes to RK3576
+
+The Rockchip RK3576 features two SATA nodes. The first, sata0, is behind
+combphy0, which muxes between pcie0 and sata0.
+
+The second, sata1, is behind combphy1, which muxes between pcie1, sata1
+and usb_drd1_dwc3.
+
+I've only been able to test sata0 on my board, but it appears to work
+just fine.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250424-rk3576-sata-v1-2-23ee89c939fe@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 30 ++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1442,6 +1442,36 @@
+ };
+ };
+
++ sata0: sata at 2a240000 {
++ compatible = "rockchip,rk3576-dwc-ahci", "snps,dwc-ahci";
++ reg = <0x0 0x2a240000 0x0 0x1000>;
++ clocks = <&cru ACLK_SATA0>, <&cru CLK_PMALIVE0>,
++ <&cru CLK_RXOOB0>;
++ clock-names = "sata", "pmalive", "rxoob";
++ interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>;
++ power-domains = <&power RK3576_PD_SUBPHP>;
++ phys = <&combphy0_ps PHY_TYPE_SATA>;
++ phy-names = "sata-phy";
++ ports-implemented = <0x1>;
++ dma-coherent;
++ status = "disabled";
++ };
++
++ sata1: sata at 2a250000 {
++ compatible = "rockchip,rk3576-dwc-ahci", "snps,dwc-ahci";
++ reg = <0x0 0x2a250000 0x0 0x1000>;
++ clocks = <&cru ACLK_SATA1>, <&cru CLK_PMALIVE1>,
++ <&cru CLK_RXOOB1>;
++ clock-names = "sata", "pmalive", "rxoob";
++ interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>;
++ power-domains = <&power RK3576_PD_SUBPHP>;
++ phys = <&combphy1_psu PHY_TYPE_SATA>;
++ phy-names = "sata-phy";
++ ports-implemented = <0x1>;
++ dma-coherent;
++ status = "disabled";
++ };
++
+ ufshc: ufshc at 2a2d0000 {
+ compatible = "rockchip,rk3576-ufshc";
+ reg = <0x0 0x2a2d0000 0x0 0x10000>,
diff --git a/target/linux/rockchip/patches-6.12/050-12-v6.16-arm64-dts-rockchip-add-RK3576-RNG-node.patch b/target/linux/rockchip/patches-6.12/050-12-v6.16-arm64-dts-rockchip-add-RK3576-RNG-node.patch
new file mode 100644
index 0000000000..05425352cd
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-12-v6.16-arm64-dts-rockchip-add-RK3576-RNG-node.patch
@@ -0,0 +1,33 @@
+From 5268f3b5d29887480011b44567bcbf0d422cda94 Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Wed, 30 Apr 2025 18:16:36 +0200
+Subject: [PATCH] arm64: dts: rockchip: add RK3576 RNG node
+
+The RK3576 has a hardware random number generator IP built into the SoC.
+
+Add it to the SoC's .dtsi, now that there's a binding and driver for it.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250430-rk3576-hwrng-v1-3-480c15b5843e@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1557,6 +1557,14 @@
+ status = "disabled";
+ };
+
++ rng: rng at 2a410000 {
++ compatible = "rockchip,rk3576-rng";
++ reg = <0x0 0x2a410000 0x0 0x200>;
++ clocks = <&cru HCLK_TRNG_NS>;
++ interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
++ resets = <&cru SRST_H_TRNG_NS>;
++ };
++
+ otp: otp at 2a580000 {
+ compatible = "rockchip,rk3576-otp";
+ reg = <0x0 0x2a580000 0x0 0x400>;
diff --git a/target/linux/rockchip/patches-6.12/050-13-v6.16-arm64-dts-rockchip-Add-RK3576-SAI-nodes.patch b/target/linux/rockchip/patches-6.12/050-13-v6.16-arm64-dts-rockchip-Add-RK3576-SAI-nodes.patch
new file mode 100644
index 0000000000..914afe111b
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-13-v6.16-arm64-dts-rockchip-Add-RK3576-SAI-nodes.patch
@@ -0,0 +1,243 @@
+From 3dfeccdd3cc88792e631539792a1ecc37a9581dc Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Tue, 6 May 2025 12:42:40 +0200
+Subject: [PATCH] arm64: dts: rockchip: Add RK3576 SAI nodes
+
+The RK3576 SoC has 10 SAI controllers in total. Five of them are in the
+video output power domains, and are used for digital audio output along
+with the video signal of those, e.g. HDMI audio.
+
+The other five, SAI0 through SAI4, are exposed externally. SAI0 and SAI1
+are capable of 8-channel audio, whereas SAI2, SAI3 and SAI4 are limited
+to two channels. These five are in the audio power domain.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250506-rk3576-sai-v4-1-a8b5f5733ceb@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 200 +++++++++++++++++++++++
+ 1 file changed, 200 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1010,6 +1010,41 @@
+ status = "disabled";
+ };
+
++ sai5: sai at 27d40000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x27d40000 0x0 0x1000>;
++ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI5_8CH>, <&cru HCLK_SAI5_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac2 3>;
++ dma-names = "rx";
++ power-domains = <&power RK3576_PD_VO0>;
++ resets = <&cru SRST_M_SAI5_8CH>, <&cru SRST_H_SAI5_8CH>;
++ reset-names = "m", "h";
++ rockchip,sai-rx-route = <0 1 2 3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI5";
++ status = "disabled";
++ };
++
++ sai6: sai at 27d50000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x27d50000 0x0 0x1000>;
++ interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI6_8CH>, <&cru HCLK_SAI6_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac2 4>, <&dmac2 5>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_VO0>;
++ resets = <&cru SRST_M_SAI6_8CH>, <&cru SRST_H_SAI6_8CH>;
++ reset-names = "m", "h";
++ rockchip,sai-rx-route = <0 1 2 3>;
++ rockchip,sai-tx-route = <0 1 2 3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI6";
++ status = "disabled";
++ };
++
+ hdmi: hdmi at 27da0000 {
+ compatible = "rockchip,rk3576-dw-hdmi-qp";
+ reg = <0x0 0x27da0000 0x0 0x20000>;
+@@ -1050,6 +1085,57 @@
+ };
+ };
+
++ sai7: sai at 27ed0000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x27ed0000 0x0 0x1000>;
++ interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI7_8CH>, <&cru HCLK_SAI7_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac2 19>;
++ dma-names = "tx";
++ power-domains = <&power RK3576_PD_VO1>;
++ resets = <&cru SRST_M_SAI7_8CH>, <&cru SRST_H_SAI7_8CH>;
++ reset-names = "m", "h";
++ rockchip,sai-tx-route = <0 1 2 3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI7";
++ status = "disabled";
++ };
++
++ sai8: sai at 27ee0000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x27ee0000 0x0 0x1000>;
++ interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI8_8CH>, <&cru HCLK_SAI8_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac1 7>;
++ dma-names = "tx";
++ power-domains = <&power RK3576_PD_VO1>;
++ resets = <&cru SRST_M_SAI8_8CH>, <&cru SRST_H_SAI8_8CH>;
++ reset-names = "m", "h";
++ rockchip,sai-tx-route = <0 1 2 3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI8";
++ status = "disabled";
++ };
++
++ sai9: sai at 27ef0000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x27ef0000 0x0 0x1000>;
++ interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI9_8CH>, <&cru HCLK_SAI9_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac0 26>;
++ dma-names = "tx";
++ power-domains = <&power RK3576_PD_VO1>;
++ resets = <&cru SRST_M_SAI9_8CH>, <&cru SRST_H_SAI9_8CH>;
++ reset-names = "m", "h";
++ rockchip,sai-tx-route = <0 1 2 3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI9";
++ status = "disabled";
++ };
++
+ qos_hdcp1: qos at 27f02000 {
+ compatible = "rockchip,rk3576-qos", "syscon";
+ reg = <0x0 0x27f02000 0x0 0x20>;
+@@ -1604,6 +1690,120 @@
+ };
+ };
+
++ sai0: sai at 2a600000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x2a600000 0x0 0x1000>;
++ interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI0_8CH>, <&cru HCLK_SAI0_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac0 0>, <&dmac0 1>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_AUDIO>;
++ resets = <&cru SRST_M_SAI0_8CH>, <&cru SRST_H_SAI0_8CH>;
++ reset-names = "m", "h";
++ pinctrl-names = "default";
++ pinctrl-0 = <&sai0m0_lrck
++ &sai0m0_sclk
++ &sai0m0_sdi0
++ &sai0m0_sdi1
++ &sai0m0_sdi2
++ &sai0m0_sdi3
++ &sai0m0_sdo0
++ &sai0m0_sdo1
++ &sai0m0_sdo2
++ &sai0m0_sdo3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI0";
++ status = "disabled";
++ };
++
++ sai1: sai at 2a610000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x2a610000 0x0 0x1000>;
++ interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI1_8CH>, <&cru HCLK_SAI1_8CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac0 2>, <&dmac0 3>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_AUDIO>;
++ resets = <&cru SRST_M_SAI1_8CH>, <&cru SRST_H_SAI1_8CH>;
++ reset-names = "m", "h";
++ pinctrl-names = "default";
++ pinctrl-0 = <&sai1m0_lrck
++ &sai1m0_sclk
++ &sai1m0_sdi0
++ &sai1m0_sdo0
++ &sai1m0_sdo1
++ &sai1m0_sdo2
++ &sai1m0_sdo3>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI1";
++ status = "disabled";
++ };
++
++ sai2: sai at 2a620000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x2a620000 0x0 0x1000>;
++ interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI2_2CH>, <&cru HCLK_SAI2_2CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac1 0>, <&dmac1 1>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_AUDIO>;
++ resets = <&cru SRST_M_SAI2_2CH>, <&cru SRST_H_SAI2_2CH>;
++ reset-names = "m", "h";
++ pinctrl-names = "default";
++ pinctrl-0 = <&sai2m0_lrck
++ &sai2m0_sclk
++ &sai2m0_sdi
++ &sai2m0_sdo>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI2";
++ status = "disabled";
++ };
++
++ sai3: sai at 2a630000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x2a630000 0x0 0x1000>;
++ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI3_2CH>, <&cru HCLK_SAI3_2CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac1 2>, <&dmac1 3>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_AUDIO>;
++ resets = <&cru SRST_M_SAI3_2CH>, <&cru SRST_H_SAI3_2CH>;
++ reset-names = "m", "h";
++ pinctrl-names = "default";
++ pinctrl-0 = <&sai3m0_lrck
++ &sai3m0_sclk
++ &sai3m0_sdi
++ &sai3m0_sdo>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI3";
++ status = "disabled";
++ };
++
++ sai4: sai at 2a640000 {
++ compatible = "rockchip,rk3576-sai";
++ reg = <0x0 0x2a640000 0x0 0x1000>;
++ interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru MCLK_SAI4_2CH>, <&cru HCLK_SAI4_2CH>;
++ clock-names = "mclk", "hclk";
++ dmas = <&dmac2 0>, <&dmac2 1>;
++ dma-names = "tx", "rx";
++ power-domains = <&power RK3576_PD_AUDIO>;
++ resets = <&cru SRST_M_SAI4_2CH>, <&cru SRST_H_SAI4_2CH>;
++ reset-names = "m", "h";
++ pinctrl-names = "default";
++ pinctrl-0 = <&sai4m0_lrck
++ &sai4m0_sclk
++ &sai4m0_sdi
++ &sai4m0_sdo>;
++ #sound-dai-cells = <0>;
++ sound-name-prefix = "SAI4";
++ status = "disabled";
++ };
++
+ gic: interrupt-controller at 2a701000 {
+ compatible = "arm,gic-400";
+ reg = <0x0 0x2a701000 0 0x10000>,
diff --git a/target/linux/rockchip/patches-6.12/050-14-v6.16-arm64-dts-rockchip-Add-RK3576-HDMI-audio.patch b/target/linux/rockchip/patches-6.12/050-14-v6.16-arm64-dts-rockchip-Add-RK3576-HDMI-audio.patch
new file mode 100644
index 0000000000..0d8e36f956
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-14-v6.16-arm64-dts-rockchip-Add-RK3576-HDMI-audio.patch
@@ -0,0 +1,50 @@
+From 7f1561d82e3d3589038782f75faa50c65d9cdd42 Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Tue, 6 May 2025 12:42:41 +0200
+Subject: [PATCH] arm64: dts: rockchip: Add RK3576 HDMI audio
+
+The RK3576 SoC now has upstream support for HDMI.
+
+Add an HDMI audio node, which uses SAI6 as its audio controller
+according to downstream.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250506-rk3576-sai-v4-2-a8b5f5733ceb@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -413,6 +413,22 @@
+ };
+ };
+
++ hdmi_sound: hdmi-sound {
++ compatible = "simple-audio-card";
++ simple-audio-card,name = "HDMI";
++ simple-audio-card,format = "i2s";
++ simple-audio-card,mclk-fs = <256>;
++ status = "disabled";
++
++ simple-audio-card,codec {
++ sound-dai = <&hdmi>;
++ };
++
++ simple-audio-card,cpu {
++ sound-dai = <&sai6>;
++ };
++ };
++
+ pmu_a53: pmu-a53 {
+ compatible = "arm,cortex-a53-pmu";
+ interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+@@ -1069,6 +1085,7 @@
+ reset-names = "ref", "hdp";
+ rockchip,grf = <&ioc_grf>;
+ rockchip,vo-grf = <&vo0_grf>;
++ #sound-dai-cells = <0>;
+ status = "disabled";
+
+ ports {
diff --git a/target/linux/rockchip/patches-6.12/050-15-v6.16-arm64-dts-rockchip-Add-missing-SFC-power-domains-to-rk357.patch b/target/linux/rockchip/patches-6.12/050-15-v6.16-arm64-dts-rockchip-Add-missing-SFC-power-domains-to-rk357.patch
new file mode 100644
index 0000000000..c50c97a04a
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-15-v6.16-arm64-dts-rockchip-Add-missing-SFC-power-domains-to-rk357.patch
@@ -0,0 +1,39 @@
+From ede1fa1384c230c9823f6bf1849cf50c5fc8a83e Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel <sebastian.reichel at collabora.com>
+Date: Tue, 20 May 2025 13:14:27 +0200
+Subject: [PATCH] arm64: dts: rockchip: Add missing SFC power-domains to rk3576
+
+Add the power-domains for the RK3576 SFC nodes according to the
+TRM part 1. This fixes potential SErrors when accessing the SFC
+registers without other peripherals (e.g. eMMC) doing a prior
+power-domain enable. For example this is easy to trigger on the
+Rock 4D, which enables the SFC0 interface, but does not enable
+the eMMC interface at the moment.
+
+Cc: stable at vger.kernel.org
+Fixes: 36299757129c8 ("arm64: dts: rockchip: Add SFC nodes for rk3576")
+Signed-off-by: Sebastian Reichel <sebastian.reichel at collabora.com>
+Link: https://lore.kernel.org/r/20250520-rk3576-fix-fspi-pmdomain-v1-1-f07c6e62dadd@kernel.org
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1605,6 +1605,7 @@
+ interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_FSPI1_X2>, <&cru HCLK_FSPI1>;
+ clock-names = "clk_sfc", "hclk_sfc";
++ power-domains = <&power RK3576_PD_SDGMAC>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -1655,6 +1656,7 @@
+ interrupts = <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_FSPI_X2>, <&cru HCLK_FSPI>;
+ clock-names = "clk_sfc", "hclk_sfc";
++ power-domains = <&power RK3576_PD_NVM>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
diff --git a/target/linux/rockchip/patches-6.12/050-16-v6.16-arm64-dts-rockchip-fix-rk3576-pcie-unit-addresses.patch b/target/linux/rockchip/patches-6.12/050-16-v6.16-arm64-dts-rockchip-fix-rk3576-pcie-unit-addresses.patch
new file mode 100644
index 0000000000..22b2341606
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-16-v6.16-arm64-dts-rockchip-fix-rk3576-pcie-unit-addresses.patch
@@ -0,0 +1,257 @@
+From 4d2587e0e1ce7145a38802fa281f4f1f411ec56f Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 19 May 2025 00:04:43 +0200
+Subject: [PATCH] arm64: dts: rockchip: fix rk3576 pcie unit addresses
+
+The rk3576 pcie nodes currently use the apb register as their unit address
+which is the second reg area defined in the binding.
+
+As can be seen by the dtc warnings like
+
+../arch/arm64/boot/dts/rockchip/rk3576.dtsi:1346.24-1398.5: Warning (simple_bus_reg): /soc/pcie at 2a200000: simple-bus unit address format error, expected "22000000"
+../arch/arm64/boot/dts/rockchip/rk3576.dtsi:1400.24-1452.5: Warning (simple_bus_reg): /soc/pcie at 2a210000: simple-bus unit address format error, expected "22400000"
+
+using the first reg area as the unit address seems to be preferred.
+This is the dbi area per the binding, so adapt the unit address accordingly
+and move the nodes to their new position.
+
+Reported-by: kernel test robot <lkp at intel.com>
+Closes: https://lore.kernel.org/oe-kbuild-all/202505150745.PQT9TLYX-lkp@intel.com/
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250518220449.2722673-2-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 216 +++++++++++------------
+ 1 file changed, 108 insertions(+), 108 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -466,6 +466,114 @@
+ #size-cells = <2>;
+ ranges;
+
++ pcie0: pcie at 22000000 {
++ compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
++ reg = <0x0 0x22000000 0x0 0x00400000>,
++ <0x0 0x2a200000 0x0 0x00010000>,
++ <0x0 0x20000000 0x0 0x00100000>;
++ reg-names = "dbi", "apb", "config";
++ bus-range = <0x0 0xf>;
++ clocks = <&cru ACLK_PCIE0_MST>, <&cru ACLK_PCIE0_SLV>,
++ <&cru ACLK_PCIE0_DBI>, <&cru PCLK_PCIE0>,
++ <&cru CLK_PCIE0_AUX>;
++ clock-names = "aclk_mst", "aclk_slv",
++ "aclk_dbi", "pclk",
++ "aux";
++ device_type = "pci";
++ interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
++ #interrupt-cells = <1>;
++ interrupt-map-mask = <0 0 0 7>;
++ interrupt-map = <0 0 0 1 &pcie0_intc 0>,
++ <0 0 0 2 &pcie0_intc 1>,
++ <0 0 0 3 &pcie0_intc 2>,
++ <0 0 0 4 &pcie0_intc 3>;
++ linux,pci-domain = <0>;
++ max-link-speed = <2>;
++ num-ib-windows = <8>;
++ num-viewport = <8>;
++ num-ob-windows = <2>;
++ num-lanes = <1>;
++ phys = <&combphy0_ps PHY_TYPE_PCIE>;
++ phy-names = "pcie-phy";
++ power-domains = <&power RK3576_PD_PHP>;
++ ranges = <0x01000000 0x0 0x20100000 0x0 0x20100000 0x0 0x00100000
++ 0x02000000 0x0 0x20200000 0x0 0x20200000 0x0 0x00e00000
++ 0x03000000 0x9 0x00000000 0x9 0x00000000 0x0 0x80000000>;
++ resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
++ reset-names = "pwr", "pipe";
++ #address-cells = <3>;
++ #size-cells = <2>;
++ status = "disabled";
++
++ pcie0_intc: legacy-interrupt-controller {
++ interrupt-controller;
++ #address-cells = <0>;
++ #interrupt-cells = <1>;
++ interrupt-parent = <&gic>;
++ interrupts = <GIC_SPI 280 IRQ_TYPE_EDGE_RISING>;
++ };
++ };
++
++ pcie1: pcie at 22400000 {
++ compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
++ reg = <0x0 0x22400000 0x0 0x00400000>,
++ <0x0 0x2a210000 0x0 0x00010000>,
++ <0x0 0x21000000 0x0 0x00100000>;
++ reg-names = "dbi", "apb", "config";
++ bus-range = <0x20 0x2f>;
++ clocks = <&cru ACLK_PCIE1_MST>, <&cru ACLK_PCIE1_SLV>,
++ <&cru ACLK_PCIE1_DBI>, <&cru PCLK_PCIE1>,
++ <&cru CLK_PCIE1_AUX>;
++ clock-names = "aclk_mst", "aclk_slv",
++ "aclk_dbi", "pclk",
++ "aux";
++ device_type = "pci";
++ interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
++ #interrupt-cells = <1>;
++ interrupt-map-mask = <0 0 0 7>;
++ interrupt-map = <0 0 0 1 &pcie1_intc 0>,
++ <0 0 0 2 &pcie1_intc 1>,
++ <0 0 0 3 &pcie1_intc 2>,
++ <0 0 0 4 &pcie1_intc 3>;
++ linux,pci-domain = <0>;
++ max-link-speed = <2>;
++ num-ib-windows = <8>;
++ num-viewport = <8>;
++ num-ob-windows = <2>;
++ num-lanes = <1>;
++ phys = <&combphy1_psu PHY_TYPE_PCIE>;
++ phy-names = "pcie-phy";
++ power-domains = <&power RK3576_PD_SUBPHP>;
++ ranges = <0x01000000 0x0 0x21100000 0x0 0x21100000 0x0 0x00100000
++ 0x02000000 0x0 0x21200000 0x0 0x21200000 0x0 0x00e00000
++ 0x03000000 0x9 0x80000000 0x9 0x80000000 0x0 0x80000000>;
++ resets = <&cru SRST_PCIE1_POWER_UP>, <&cru SRST_P_PCIE1>;
++ reset-names = "pwr", "pipe";
++ #address-cells = <3>;
++ #size-cells = <2>;
++ status = "disabled";
++
++ pcie1_intc: legacy-interrupt-controller {
++ interrupt-controller;
++ #address-cells = <0>;
++ #interrupt-cells = <1>;
++ interrupt-parent = <&gic>;
++ interrupts = <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>;
++ };
++ };
++
+ usb_drd0_dwc3: usb at 23000000 {
+ compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
+ reg = <0x0 0x23000000 0x0 0x400000>;
+@@ -1343,114 +1451,6 @@
+ reg = <0x0 0x27f22100 0x0 0x20>;
+ };
+
+- pcie0: pcie at 2a200000 {
+- compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
+- reg = <0x0 0x22000000 0x0 0x00400000>,
+- <0x0 0x2a200000 0x0 0x00010000>,
+- <0x0 0x20000000 0x0 0x00100000>;
+- reg-names = "dbi", "apb", "config";
+- bus-range = <0x0 0xf>;
+- clocks = <&cru ACLK_PCIE0_MST>, <&cru ACLK_PCIE0_SLV>,
+- <&cru ACLK_PCIE0_DBI>, <&cru PCLK_PCIE0>,
+- <&cru CLK_PCIE0_AUX>;
+- clock-names = "aclk_mst", "aclk_slv",
+- "aclk_dbi", "pclk",
+- "aux";
+- device_type = "pci";
+- interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
+- #interrupt-cells = <1>;
+- interrupt-map-mask = <0 0 0 7>;
+- interrupt-map = <0 0 0 1 &pcie0_intc 0>,
+- <0 0 0 2 &pcie0_intc 1>,
+- <0 0 0 3 &pcie0_intc 2>,
+- <0 0 0 4 &pcie0_intc 3>;
+- linux,pci-domain = <0>;
+- max-link-speed = <2>;
+- num-ib-windows = <8>;
+- num-viewport = <8>;
+- num-ob-windows = <2>;
+- num-lanes = <1>;
+- phys = <&combphy0_ps PHY_TYPE_PCIE>;
+- phy-names = "pcie-phy";
+- power-domains = <&power RK3576_PD_PHP>;
+- ranges = <0x01000000 0x0 0x20100000 0x0 0x20100000 0x0 0x00100000
+- 0x02000000 0x0 0x20200000 0x0 0x20200000 0x0 0x00e00000
+- 0x03000000 0x9 0x00000000 0x9 0x00000000 0x0 0x80000000>;
+- resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
+- reset-names = "pwr", "pipe";
+- #address-cells = <3>;
+- #size-cells = <2>;
+- status = "disabled";
+-
+- pcie0_intc: legacy-interrupt-controller {
+- interrupt-controller;
+- #address-cells = <0>;
+- #interrupt-cells = <1>;
+- interrupt-parent = <&gic>;
+- interrupts = <GIC_SPI 280 IRQ_TYPE_EDGE_RISING>;
+- };
+- };
+-
+- pcie1: pcie at 2a210000 {
+- compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
+- reg = <0x0 0x22400000 0x0 0x00400000>,
+- <0x0 0x2a210000 0x0 0x00010000>,
+- <0x0 0x21000000 0x0 0x00100000>;
+- reg-names = "dbi", "apb", "config";
+- bus-range = <0x20 0x2f>;
+- clocks = <&cru ACLK_PCIE1_MST>, <&cru ACLK_PCIE1_SLV>,
+- <&cru ACLK_PCIE1_DBI>, <&cru PCLK_PCIE1>,
+- <&cru CLK_PCIE1_AUX>;
+- clock-names = "aclk_mst", "aclk_slv",
+- "aclk_dbi", "pclk",
+- "aux";
+- device_type = "pci";
+- interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
+- <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
+- #interrupt-cells = <1>;
+- interrupt-map-mask = <0 0 0 7>;
+- interrupt-map = <0 0 0 1 &pcie1_intc 0>,
+- <0 0 0 2 &pcie1_intc 1>,
+- <0 0 0 3 &pcie1_intc 2>,
+- <0 0 0 4 &pcie1_intc 3>;
+- linux,pci-domain = <0>;
+- max-link-speed = <2>;
+- num-ib-windows = <8>;
+- num-viewport = <8>;
+- num-ob-windows = <2>;
+- num-lanes = <1>;
+- phys = <&combphy1_psu PHY_TYPE_PCIE>;
+- phy-names = "pcie-phy";
+- power-domains = <&power RK3576_PD_SUBPHP>;
+- ranges = <0x01000000 0x0 0x21100000 0x0 0x21100000 0x0 0x00100000
+- 0x02000000 0x0 0x21200000 0x0 0x21200000 0x0 0x00e00000
+- 0x03000000 0x9 0x80000000 0x9 0x80000000 0x0 0x80000000>;
+- resets = <&cru SRST_PCIE1_POWER_UP>, <&cru SRST_P_PCIE1>;
+- reset-names = "pwr", "pipe";
+- #address-cells = <3>;
+- #size-cells = <2>;
+- status = "disabled";
+-
+- pcie1_intc: legacy-interrupt-controller {
+- interrupt-controller;
+- #address-cells = <0>;
+- #interrupt-cells = <1>;
+- interrupt-parent = <&gic>;
+- interrupts = <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>;
+- };
+- };
+-
+ gmac0: ethernet at 2a220000 {
+ compatible = "rockchip,rk3576-gmac", "snps,dwmac-4.20a";
+ reg = <0x0 0x2a220000 0x0 0x10000>;
diff --git a/target/linux/rockchip/patches-6.12/050-17-v6.16-arm64-dts-rockchip-move-rk3576-pinctrl-node-outside-the.patch b/target/linux/rockchip/patches-6.12/050-17-v6.16-arm64-dts-rockchip-move-rk3576-pinctrl-node-outside-the.patch
new file mode 100644
index 0000000000..c83cb9e2be
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-17-v6.16-arm64-dts-rockchip-move-rk3576-pinctrl-node-outside-the.patch
@@ -0,0 +1,173 @@
+From 8ff721f60257d550daf524fc559c0f0d2176b198 Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 19 May 2025 00:04:44 +0200
+Subject: [PATCH] arm64: dts: rockchip: move rk3576 pinctrl node outside the
+ soc node
+
+The non-mmio pinctrl node is not supposed to be inside the soc simple-bus
+as dtc points out:
+
+../arch/arm64/boot/dts/rockchip/rk3576.dtsi:2351.20-2417.5: Warning (simple_bus_reg): /soc/pinctrl: missing or empty reg/ranges property
+
+Move the pinctrl node outside and adapt the indentation.
+
+Reported-by: kernel test robot <lkp at intel.com>
+Closes: https://lore.kernel.org/oe-kbuild-all/202505150745.PQT9TLYX-lkp@intel.com/
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250518220449.2722673-3-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 136 +++++++++++------------
+ 1 file changed, 68 insertions(+), 68 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -429,6 +429,74 @@
+ };
+ };
+
++ pinctrl: pinctrl {
++ compatible = "rockchip,rk3576-pinctrl";
++ rockchip,grf = <&ioc_grf>;
++ #address-cells = <2>;
++ #size-cells = <2>;
++ ranges;
++
++ gpio0: gpio at 27320000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x27320000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 0 32>;
++ interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio1: gpio at 2ae10000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae10000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 32 32>;
++ interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio2: gpio at 2ae20000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae20000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 64 32>;
++ interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio3: gpio at 2ae30000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae30000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 96 32>;
++ interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++
++ gpio4: gpio at 2ae40000 {
++ compatible = "rockchip,gpio-bank";
++ reg = <0x0 0x2ae40000 0x0 0x200>;
++ clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
++ gpio-controller;
++ gpio-ranges = <&pinctrl 0 128 32>;
++ interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #gpio-cells = <2>;
++ #interrupt-cells = <2>;
++ };
++ };
++
+ pmu_a53: pmu-a53 {
+ compatible = "arm,cortex-a53-pmu";
+ interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+@@ -2349,74 +2417,6 @@
+ compatible = "arm,scmi-shmem";
+ reg = <0x0 0x4010f000 0x0 0x100>;
+ };
+-
+- pinctrl: pinctrl {
+- compatible = "rockchip,rk3576-pinctrl";
+- rockchip,grf = <&ioc_grf>;
+- #address-cells = <2>;
+- #size-cells = <2>;
+- ranges;
+-
+- gpio0: gpio at 27320000 {
+- compatible = "rockchip,gpio-bank";
+- reg = <0x0 0x27320000 0x0 0x200>;
+- clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
+- gpio-controller;
+- gpio-ranges = <&pinctrl 0 0 32>;
+- interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-controller;
+- #gpio-cells = <2>;
+- #interrupt-cells = <2>;
+- };
+-
+- gpio1: gpio at 2ae10000 {
+- compatible = "rockchip,gpio-bank";
+- reg = <0x0 0x2ae10000 0x0 0x200>;
+- clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
+- gpio-controller;
+- gpio-ranges = <&pinctrl 0 32 32>;
+- interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-controller;
+- #gpio-cells = <2>;
+- #interrupt-cells = <2>;
+- };
+-
+- gpio2: gpio at 2ae20000 {
+- compatible = "rockchip,gpio-bank";
+- reg = <0x0 0x2ae20000 0x0 0x200>;
+- clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
+- gpio-controller;
+- gpio-ranges = <&pinctrl 0 64 32>;
+- interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-controller;
+- #gpio-cells = <2>;
+- #interrupt-cells = <2>;
+- };
+-
+- gpio3: gpio at 2ae30000 {
+- compatible = "rockchip,gpio-bank";
+- reg = <0x0 0x2ae30000 0x0 0x200>;
+- clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
+- gpio-controller;
+- gpio-ranges = <&pinctrl 0 96 32>;
+- interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-controller;
+- #gpio-cells = <2>;
+- #interrupt-cells = <2>;
+- };
+-
+- gpio4: gpio at 2ae40000 {
+- compatible = "rockchip,gpio-bank";
+- reg = <0x0 0x2ae40000 0x0 0x200>;
+- clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
+- gpio-controller;
+- gpio-ranges = <&pinctrl 0 128 32>;
+- interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+- interrupt-controller;
+- #gpio-cells = <2>;
+- #interrupt-cells = <2>;
+- };
+- };
+ };
+ };
+
diff --git a/target/linux/rockchip/patches-6.12/050-18-v6.16-arm64-dts-rockchip-remove-a-double-empty-line-from-rk3576.patch b/target/linux/rockchip/patches-6.12/050-18-v6.16-arm64-dts-rockchip-remove-a-double-empty-line-from-rk3576.patch
new file mode 100644
index 0000000000..7563539b40
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-18-v6.16-arm64-dts-rockchip-remove-a-double-empty-line-from-rk3576.patch
@@ -0,0 +1,24 @@
+From f8b11d8cfbfc8a0232c1e7cc6af10583c8bdb3f1 Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 19 May 2025 00:04:45 +0200
+Subject: [PATCH] arm64: dts: rockchip: remove a double-empty line from rk3576
+ core dtsi
+
+Two empty lines between nodes, is one too many.
+
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250518220449.2722673-4-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -2002,7 +2002,6 @@
+ status = "disabled";
+ };
+
+-
+ i2c6: i2c at 2ac90000 {
+ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0x2ac90000 0x0 0x1000>;
diff --git a/target/linux/rockchip/patches-6.12/050-19-v6.16-arm64-dts-rockchip-fix-rk3576-pcie1-linux-pci-domain.patch b/target/linux/rockchip/patches-6.12/050-19-v6.16-arm64-dts-rockchip-fix-rk3576-pcie1-linux-pci-domain.patch
new file mode 100644
index 0000000000..3456156db5
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-19-v6.16-arm64-dts-rockchip-fix-rk3576-pcie1-linux-pci-domain.patch
@@ -0,0 +1,32 @@
+From af0f43d5d0d6e486b6a83190000dfa7ad447f825 Mon Sep 17 00:00:00 2001
+From: Shawn Lin <shawn.lin at rock-chips.com>
+Date: Tue, 3 Jun 2025 10:35:40 +0800
+Subject: [PATCH] arm64: dts: rockchip: fix rk3576 pcie1 linux,pci-domain
+
+pcie0 already used 0 as its pci-domain, so pcie1 will fail to
+allocate the same pci-domain if both of them are used.
+
+rk-pcie 2a210000.pcie: PCIe Link up, LTSSM is 0x130011
+rk-pcie 2a210000.pcie: PCIe Gen.2 x1 link up
+rk-pcie 2a210000.pcie: Scanning root bridge failed
+rk-pcie 2a210000.pcie: failed to initialize host
+
+Fixes: d4b9fc2af45d ("arm64: dts: rockchip: Add rk3576 pcie nodes")
+Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
+Link: https://lore.kernel.org/r/1748918140-212263-1-git-send-email-shawn.lin@rock-chips.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -615,7 +615,7 @@
+ <0 0 0 2 &pcie1_intc 1>,
+ <0 0 0 3 &pcie1_intc 2>,
+ <0 0 0 4 &pcie1_intc 3>;
+- linux,pci-domain = <0>;
++ linux,pci-domain = <1>;
+ max-link-speed = <2>;
+ num-ib-windows = <8>;
+ num-viewport = <8>;
diff --git a/target/linux/rockchip/patches-6.12/050-20-v6.17-arm64-dts-rockchip-add-SDIO-controller-on-RK3576.patch b/target/linux/rockchip/patches-6.12/050-20-v6.17-arm64-dts-rockchip-add-SDIO-controller-on-RK3576.patch
new file mode 100644
index 0000000000..7dc8f88f56
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-20-v6.17-arm64-dts-rockchip-add-SDIO-controller-on-RK3576.patch
@@ -0,0 +1,41 @@
+From e490f854b46369b096f3d09c0c6a00f340425136 Mon Sep 17 00:00:00 2001
+From: Alexey Charkov <alchark at gmail.com>
+Date: Sat, 14 Jun 2025 22:14:34 +0400
+Subject: [PATCH] arm64: dts: rockchip: add SDIO controller on RK3576
+
+RK3576 has one more SD/MMC controller than are currently listed in its
+.dtsi, with the missing one intended as an SDIO controller. Add the
+missing node (tested with the onboard WiFi module on ArmSoM Sige5 v1.2)
+
+Signed-off-by: Alexey Charkov <alchark at gmail.com>
+Link: https://lore.kernel.org/r/20250614-sige5-updates-v2-2-3bb31b02623c@gmail.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1695,6 +1695,22 @@
+ status = "disabled";
+ };
+
++ sdio: mmc at 2a320000 {
++ compatible = "rockchip,rk3576-dw-mshc";
++ reg = <0x0 0x2a320000 0x0 0x4000>;
++ clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>;
++ clock-names = "biu", "ciu";
++ fifo-depth = <0x100>;
++ interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
++ max-frequency = <200000000>;
++ pinctrl-0 = <&sdmmc1m0_clk &sdmmc1m0_cmd &sdmmc1m0_bus4>;
++ pinctrl-names = "default";
++ power-domains = <&power RK3576_PD_SDGMAC>;
++ resets = <&cru SRST_H_SDIO>;
++ reset-names = "reset";
++ status = "disabled";
++ };
++
+ sdhci: mmc at 2a330000 {
+ compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
+ reg = <0x0 0x2a330000 0x0 0x10000>;
diff --git a/target/linux/rockchip/patches-6.12/050-21-v6.17-arm64-dts-rockchip-Enable-HDMI-PHY-clk-provider-on-rk3576.patch b/target/linux/rockchip/patches-6.12/050-21-v6.17-arm64-dts-rockchip-Enable-HDMI-PHY-clk-provider-on-rk3576.patch
new file mode 100644
index 0000000000..1d1e02b0f9
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-21-v6.17-arm64-dts-rockchip-Enable-HDMI-PHY-clk-provider-on-rk3576.patch
@@ -0,0 +1,32 @@
+From aba7987a536cee67fb0cb724099096fd8f8f5350 Mon Sep 17 00:00:00 2001
+From: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
+Date: Thu, 12 Jun 2025 00:47:48 +0300
+Subject: [PATCH] arm64: dts: rockchip: Enable HDMI PHY clk provider on rk3576
+
+As with the RK3588 SoC, the HDMI PHY PLL on RK3576 can be used as a more
+accurate pixel clock source for VOP2, which is actually mandatory to
+ensure proper support for display modes handling.
+
+Add the missing #clock-cells property to allow using the clock provider
+functionality of HDMI PHY.
+
+Fixes: ad0ea230ab2a ("arm64: dts: rockchip: Add hdmi for rk3576")
+Cc: stable at vger.kernel.org
+Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
+Tested-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250612-rk3576-hdmitx-fix-v1-2-4b11007d8675@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -2407,6 +2407,7 @@
+ reg = <0x0 0x2b000000 0x0 0x2000>;
+ clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_HDPTX_APB>;
+ clock-names = "ref", "apb";
++ #clock-cells = <0>;
+ resets = <&cru SRST_P_HDPTX_APB>, <&cru SRST_HDPTX_INIT>,
+ <&cru SRST_HDPTX_CMN>, <&cru SRST_HDPTX_LANE>;
+ reset-names = "apb", "init", "cmn", "lane";
diff --git a/target/linux/rockchip/patches-6.12/050-22-v6.17-arm64-dts-rockchip-Add-HDMI-PHY-PLL-clock-source-to-VOP2.patch b/target/linux/rockchip/patches-6.12/050-22-v6.17-arm64-dts-rockchip-Add-HDMI-PHY-PLL-clock-source-to-VOP2.patch
new file mode 100644
index 0000000000..7a8bffff4a
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-22-v6.17-arm64-dts-rockchip-Add-HDMI-PHY-PLL-clock-source-to-VOP2.patch
@@ -0,0 +1,53 @@
+From 4ab8b8ac952fb08d03655e1da0cfee07589e428f Mon Sep 17 00:00:00 2001
+From: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
+Date: Thu, 12 Jun 2025 00:47:49 +0300
+Subject: [PATCH] arm64: dts: rockchip: Add HDMI PHY PLL clock source to VOP2
+ on rk3576
+
+Since commit c871a311edf0 ("phy: rockchip: samsung-hdptx: Setup TMDS
+char rate via phy_configure_opts_hdmi"), the workaround of passing the
+rate from DW HDMI QP bridge driver via phy_set_bus_width() became
+partially broken, as it cannot reliably handle mode switches anymore.
+
+Attempting to fix this up at PHY level would not only introduce
+additional hacks, but it would also fail to adequately resolve the
+display issues that are a consequence of the system CRU limitations.
+
+Instead, proceed with the solution already implemented for RK3588: make
+use of the HDMI PHY PLL as a better suited DCLK source for VOP2. This
+will not only address the aforementioned problem, but it should also
+facilitate the proper operation of display modes up to 4K at 60Hz.
+
+It's worth noting that anything above 4K at 30Hz still requires high TMDS
+clock ratio and scrambling support, which hasn't been mainlined yet.
+
+Fixes: d74b842cab08 ("arm64: dts: rockchip: Add vop for rk3576")
+Cc: stable at vger.kernel.org
+Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
+Tested-By: Detlev Casanova <detlev.casanova at collabora.com>
+Tested-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250612-rk3576-hdmitx-fix-v1-3-4b11007d8675@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1155,12 +1155,14 @@
+ <&cru HCLK_VOP>,
+ <&cru DCLK_VP0>,
+ <&cru DCLK_VP1>,
+- <&cru DCLK_VP2>;
++ <&cru DCLK_VP2>,
++ <&hdptxphy>;
+ clock-names = "aclk",
+ "hclk",
+ "dclk_vp0",
+ "dclk_vp1",
+- "dclk_vp2";
++ "dclk_vp2",
++ "pll_hdmiphy0";
+ iommus = <&vop_mmu>;
+ power-domains = <&power RK3576_PD_VOP>;
+ rockchip,grf = <&sys_grf>;
diff --git a/target/linux/rockchip/patches-6.12/050-23-v6.17-arm64-dts-rockchip-Add-thermal-nodes-to-RK3576.patch b/target/linux/rockchip/patches-6.12/050-23-v6.17-arm64-dts-rockchip-Add-thermal-nodes-to-RK3576.patch
new file mode 100644
index 0000000000..5db7be5f00
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-23-v6.17-arm64-dts-rockchip-Add-thermal-nodes-to-RK3576.patch
@@ -0,0 +1,269 @@
+From 15e8ba9d8b14ae6de415186622379f5f4dcfd141 Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Tue, 10 Jun 2025 14:32:42 +0200
+Subject: [PATCH] arm64: dts: rockchip: Add thermal nodes to RK3576
+
+Add the TSADC node to the RK3576. Additionally, add everything the TSADC
+needs to function, i.e. thermal zones, their trip points and maps, as
+well as adjust the CPU cooling-cells property.
+
+The polling-delay properties are set to 0 as we do have interrupts for
+this TSADC on this particular SoC, though the polling-delay-passive
+properties are set to 100 for the thermal zones that have a passive
+cooling device, as otherwise the thermal throttling behaviour never
+unthrottles.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250610-rk3576-tsadc-upstream-v6-6-b6e9efbf1015@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 164 ++++++++++++++++++++++-
+ 1 file changed, 162 insertions(+), 2 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -11,6 +11,7 @@
+ #include <dt-bindings/power/rockchip,rk3576-power.h>
+ #include <dt-bindings/reset/rockchip,rk3576-cru.h>
+ #include <dt-bindings/soc/rockchip,boot-mode.h>
++#include <dt-bindings/thermal/thermal.h>
+
+ / {
+ compatible = "rockchip,rk3576";
+@@ -113,9 +114,9 @@
+ capacity-dmips-mhz = <485>;
+ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+- #cooling-cells = <2>;
+ dynamic-power-coefficient = <120>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_l1: cpu at 1 {
+@@ -127,6 +128,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_l2: cpu at 2 {
+@@ -138,6 +140,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_l3: cpu at 3 {
+@@ -149,6 +152,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_L>;
+ operating-points-v2 = <&cluster0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_b0: cpu at 100 {
+@@ -159,9 +163,9 @@
+ capacity-dmips-mhz = <1024>;
+ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+- #cooling-cells = <2>;
+ dynamic-power-coefficient = <320>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_b1: cpu at 101 {
+@@ -173,6 +177,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_b2: cpu at 102 {
+@@ -184,6 +189,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ cpu_b3: cpu at 103 {
+@@ -195,6 +201,7 @@
+ clocks = <&scmi_clk SCMI_ARMCLK_B>;
+ operating-points-v2 = <&cluster1_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
++ #cooling-cells = <2>;
+ };
+
+ idle-states {
+@@ -520,6 +527,143 @@
+ method = "smc";
+ };
+
++ thermal_zones: thermal-zones {
++ /* sensor near the center of the SoC */
++ package_thermal: package-thermal {
++ polling-delay-passive = <0>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 0>;
++
++ trips {
++ package_crit: package-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++ };
++
++ /* sensor for cluster1 (big Cortex-A72 cores) */
++ bigcore_thermal: bigcore-thermal {
++ polling-delay-passive = <100>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 1>;
++
++ trips {
++ bigcore_alert: bigcore-alert {
++ temperature = <85000>;
++ hysteresis = <2000>;
++ type = "passive";
++ };
++
++ bigcore_crit: bigcore-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++
++ cooling-maps {
++ map0 {
++ trip = <&bigcore_alert>;
++ cooling-device =
++ <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_b2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_b3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
++ };
++ };
++ };
++
++ /* sensor for cluster0 (little Cortex-A53 cores) */
++ littlecore_thermal: littlecore-thermal {
++ polling-delay-passive = <100>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 2>;
++
++ trips {
++ littlecore_alert: littlecore-alert {
++ temperature = <85000>;
++ hysteresis = <2000>;
++ type = "passive";
++ };
++
++ littlecore_crit: littlecore-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++
++ cooling-maps {
++ map0 {
++ trip = <&littlecore_alert>;
++ cooling-device =
++ <&cpu_l0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_l1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_l2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
++ <&cpu_l3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
++ };
++ };
++ };
++
++ gpu_thermal: gpu-thermal {
++ polling-delay-passive = <100>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 3>;
++
++ trips {
++ gpu_alert: gpu-alert {
++ temperature = <85000>;
++ hysteresis = <2000>;
++ type = "passive";
++ };
++
++ gpu_crit: gpu-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++
++ cooling-maps {
++ map0 {
++ trip = <&gpu_alert>;
++ cooling-device =
++ <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
++ };
++ };
++ };
++
++ npu_thermal: npu-thermal {
++ polling-delay-passive = <0>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 4>;
++
++ trips {
++ npu_crit: npu-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++ };
++
++ ddr_thermal: ddr-thermal {
++ polling-delay-passive = <0>;
++ polling-delay = <0>;
++ thermal-sensors = <&tsadc 5>;
++
++ trips {
++ ddr_crit: ddr-crit {
++ temperature = <115000>;
++ hysteresis = <0>;
++ type = "critical";
++ };
++ };
++ };
++ };
++
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+@@ -2303,6 +2447,22 @@
+ status = "disabled";
+ };
+
++ tsadc: tsadc at 2ae70000 {
++ compatible = "rockchip,rk3576-tsadc";
++ reg = <0x0 0x2ae70000 0x0 0x400>;
++ interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>;
++ clock-names = "tsadc", "apb_pclk";
++ assigned-clocks = <&cru CLK_TSADC>;
++ assigned-clock-rates = <2000000>;
++ resets = <&cru SRST_P_TSADC>, <&cru SRST_TSADC>;
++ reset-names = "tsadc-apb", "tsadc";
++ #thermal-sensor-cells = <1>;
++ rockchip,hw-tshut-temp = <120000>;
++ rockchip,hw-tshut-mode = <0>; /* tshut mode 0:CRU 1:GPIO */
++ rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
++ };
++
+ i2c9: i2c at 2ae80000 {
+ compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0x2ae80000 0x0 0x1000>;
diff --git a/target/linux/rockchip/patches-6.12/050-24-v6.17-arm64-dts-rockchip-Add-thermal-trim-OTP-and-tsadc-nodes.patch b/target/linux/rockchip/patches-6.12/050-24-v6.17-arm64-dts-rockchip-Add-thermal-trim-OTP-and-tsadc-nodes.patch
new file mode 100644
index 0000000000..3692452533
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-24-v6.17-arm64-dts-rockchip-Add-thermal-trim-OTP-and-tsadc-nodes.patch
@@ -0,0 +1,91 @@
+From a4053badacf3699023527392c947314b074f5e0e Mon Sep 17 00:00:00 2001
+From: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Date: Tue, 10 Jun 2025 14:32:43 +0200
+Subject: [PATCH] arm64: dts: rockchip: Add thermal trim OTP and tsadc nodes
+
+Thanks to Heiko's work getting OTP working on the RK3576, we can specify
+the thermal sensor trim values which are stored there now, and with my
+driver addition to rockchip_thermal, we can make use of these.
+
+Add them to the devicetree for the SoC.
+
+Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
+Link: https://lore.kernel.org/r/20250610-rk3576-tsadc-upstream-v6-7-b6e9efbf1015@collabora.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 57 ++++++++++++++++++++++++
+ 1 file changed, 57 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1937,6 +1937,30 @@
+ log_leakage: log-leakage at 22 {
+ reg = <0x22 0x1>;
+ };
++ bigcore_tsadc_trim: bigcore-tsadc-trim at 24 {
++ reg = <0x24 0x2>;
++ bits = <0 10>;
++ };
++ litcore_tsadc_trim: litcore-tsadc-trim at 26 {
++ reg = <0x26 0x2>;
++ bits = <0 10>;
++ };
++ ddr_tsadc_trim: ddr-tsadc-trim at 28 {
++ reg = <0x28 0x2>;
++ bits = <0 10>;
++ };
++ npu_tsadc_trim: npu-tsadc-trim at 2a {
++ reg = <0x2a 0x2>;
++ bits = <0 10>;
++ };
++ gpu_tsadc_trim: gpu-tsadc-trim at 2c {
++ reg = <0x2c 0x2>;
++ bits = <0 10>;
++ };
++ soc_tsadc_trim: soc-tsadc-trim at 64 {
++ reg = <0x64 0x2>;
++ bits = <0 10>;
++ };
+ };
+
+ sai0: sai at 2a600000 {
+@@ -2461,6 +2485,39 @@
+ rockchip,hw-tshut-temp = <120000>;
+ rockchip,hw-tshut-mode = <0>; /* tshut mode 0:CRU 1:GPIO */
+ rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ sensor at 0 {
++ reg = <0>;
++ nvmem-cells = <&soc_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
++ sensor at 1 {
++ reg = <1>;
++ nvmem-cells = <&bigcore_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
++ sensor at 2 {
++ reg = <2>;
++ nvmem-cells = <&litcore_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
++ sensor at 3 {
++ reg = <3>;
++ nvmem-cells = <&ddr_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
++ sensor at 4 {
++ reg = <4>;
++ nvmem-cells = <&npu_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
++ sensor at 5 {
++ reg = <5>;
++ nvmem-cells = <&gpu_tsadc_trim>;
++ nvmem-cell-names = "trim";
++ };
+ };
+
+ i2c9: i2c at 2ae80000 {
diff --git a/target/linux/rockchip/patches-6.12/050-25-v6.17-arm64-dts-rockchip-add-mipi-dcphy-to-rk3576.patch b/target/linux/rockchip/patches-6.12/050-25-v6.17-arm64-dts-rockchip-add-mipi-dcphy-to-rk3576.patch
new file mode 100644
index 0000000000..c121d2b67e
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-25-v6.17-arm64-dts-rockchip-add-mipi-dcphy-to-rk3576.patch
@@ -0,0 +1,52 @@
+From 21bc1a7fcea4635a49f6b2eff3e4c661e80e8f43 Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 7 Jul 2025 18:49:03 +0200
+Subject: [PATCH] arm64: dts: rockchip: add mipi-dcphy to rk3576
+
+Add the MIPI-DC-phy node to the RK3576, that will be used by the one
+DSI2 controller and hopefully in some future also for camera input.
+
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250707164906.1445288-11-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -966,6 +966,12 @@
+ reg = <0x0 0x26032000 0x0 0x100>;
+ };
+
++ mipidcphy_grf: syscon at 26034000 {
++ compatible = "rockchip,rk3576-dcphy-grf", "syscon";
++ reg = <0x0 0x26034000 0x0 0x2000>;
++ clocks = <&cru PCLK_PMUPHY_ROOT>;
++ };
++
+ vo1_grf: syscon at 26036000 {
+ compatible = "rockchip,rk3576-vo1-grf", "syscon";
+ reg = <0x0 0x26036000 0x0 0x100>;
+@@ -2563,6 +2569,22 @@
+ status = "disabled";
+ };
+
++ mipidcphy: phy at 2b020000 {
++ compatible = "rockchip,rk3576-mipi-dcphy";
++ reg = <0x0 0x2b020000 0x0 0x10000>;
++ clocks = <&cru PCLK_MIPI_DCPHY>,
++ <&cru CLK_PHY_REF_SRC>;
++ clock-names = "pclk", "ref";
++ resets = <&cru SRST_M_MIPI_DCPHY>,
++ <&cru SRST_P_MIPI_DCPHY>,
++ <&cru SRST_P_DCPHY_GRF>,
++ <&cru SRST_S_MIPI_DCPHY>;
++ reset-names = "m_phy", "apb", "grf", "s_phy";
++ rockchip,grf = <&mipidcphy_grf>;
++ #phy-cells = <1>;
++ status = "disabled";
++ };
++
+ combphy0_ps: phy at 2b050000 {
+ compatible = "rockchip,rk3576-naneng-combphy";
+ reg = <0x0 0x2b050000 0x0 0x100>;
diff --git a/target/linux/rockchip/patches-6.12/050-26-v6.17-arm64-dts-rockchip-add-the-dsi-controller-to-rk3576.patch b/target/linux/rockchip/patches-6.12/050-26-v6.17-arm64-dts-rockchip-add-the-dsi-controller-to-rk3576.patch
new file mode 100644
index 0000000000..e134d2c0b7
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-26-v6.17-arm64-dts-rockchip-add-the-dsi-controller-to-rk3576.patch
@@ -0,0 +1,53 @@
+From e51828f80df99a2899e263b750cada6426f14c92 Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko at sntech.de>
+Date: Mon, 7 Jul 2025 18:49:04 +0200
+Subject: [PATCH] arm64: dts: rockchip: add the dsi controller to rk3576
+
+The RK3576 comes with one DSI2 controllers based on the same newer
+Synopsis IP as the ones on the RK3588.
+
+Add the necessary node for it.
+
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+Link: https://lore.kernel.org/r/20250707164906.1445288-12-heiko@sntech.de
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 28 ++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -1389,6 +1389,34 @@
+ status = "disabled";
+ };
+
++ dsi: dsi at 27d80000 {
++ compatible = "rockchip,rk3576-mipi-dsi2";
++ reg = <0x0 0x27d80000 0x0 0x10000>;
++ interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&cru PCLK_DSIHOST0>, <&cru CLK_DSIHOST0>;
++ clock-names = "pclk", "sys";
++ power-domains = <&power RK3576_PD_VO0>;
++ resets = <&cru SRST_P_DSIHOST0>;
++ reset-names = "apb";
++ phys = <&mipidcphy PHY_TYPE_DPHY>;
++ phy-names = "dcphy";
++ rockchip,grf = <&vo0_grf>;
++ status = "disabled";
++
++ ports {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ dsi_in: port at 0 {
++ reg = <0>;
++ };
++
++ dsi_out: port at 1 {
++ reg = <1>;
++ };
++ };
++ };
++
+ hdmi: hdmi at 27da0000 {
+ compatible = "rockchip,rk3576-dw-hdmi-qp";
+ reg = <0x0 0x27da0000 0x0 0x20000>;
diff --git a/target/linux/rockchip/patches-6.12/050-27-v6.17-arm64-dts-rockchip-Enable-RK3576-watchdog.patch b/target/linux/rockchip/patches-6.12/050-27-v6.17-arm64-dts-rockchip-Enable-RK3576-watchdog.patch
new file mode 100644
index 0000000000..6fbf8bc970
--- /dev/null
+++ b/target/linux/rockchip/patches-6.12/050-27-v6.17-arm64-dts-rockchip-Enable-RK3576-watchdog.patch
@@ -0,0 +1,25 @@
+From 9c059700fee595142676a9bbaff6e40e3fcd9cbb Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel <sebastian.reichel at collabora.com>
+Date: Mon, 18 Aug 2025 19:18:40 +0200
+Subject: [PATCH] arm64: dts: rockchip: Enable RK3576 watchdog
+
+The RK3576 watchdog does not need any board specific resources, so
+let's enable it by default just like we do for RK3588.
+
+Signed-off-by: Sebastian Reichel <sebastian.reichel at collabora.com>
+Link: https://lore.kernel.org/r/20250818-rk3576-watchdog-v1-1-28f82e01029c@kernel.org
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3576.dtsi | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+@@ -2275,7 +2275,6 @@
+ clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
+ clock-names = "tclk", "pclk";
+ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+- status = "disabled";
+ };
+
+ spi0: spi at 2acf0000 {
More information about the lede-commits
mailing list