* [PATCH 1/2] dt-bindings: arm: rockchip: Add FriendlyElec NanoPi R76S @ 2025-09-22 9:15 Tianling Shen 2025-09-22 9:15 ` [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the " Tianling Shen 2025-09-22 20:56 ` [PATCH 1/2] dt-bindings: arm: rockchip: Add " Rob Herring (Arm) 0 siblings, 2 replies; 10+ messages in thread From: Tianling Shen @ 2025-09-22 9:15 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Tianling Shen, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway device with two 2.5G, designed and developed by FriendlyElec. Add devicetree binding documentation for the FriendlyElec NanoPi R76S board. Signed-off-by: Tianling Shen <cnsztl@gmail.com> --- Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml index 6aceaa8acbb2..e8185344c6f0 100644 --- a/Documentation/devicetree/bindings/arm/rockchip.yaml +++ b/Documentation/devicetree/bindings/arm/rockchip.yaml @@ -330,6 +330,11 @@ properties: - friendlyarm,nanopi-r6s - const: rockchip,rk3588s + - description: FriendlyElec NanoPi R76S + items: + - const: friendlyarm,nanopi-r76s + - const: rockchip,rk3576 + - description: FriendlyElec NanoPi Zero2 items: - const: friendlyarm,nanopi-zero2 -- 2.51.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-22 9:15 [PATCH 1/2] dt-bindings: arm: rockchip: Add FriendlyElec NanoPi R76S Tianling Shen @ 2025-09-22 9:15 ` Tianling Shen 2025-09-26 16:07 ` Diederik de Haas 2025-09-22 20:56 ` [PATCH 1/2] dt-bindings: arm: rockchip: Add " Rob Herring (Arm) 1 sibling, 1 reply; 10+ messages in thread From: Tianling Shen @ 2025-09-22 9:15 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Tianling Shen, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway device with two 2.5G, designed and developed by FriendlyElec. Specification: - Rockchip RK3576 - 2/4GB LPDDR4X RAM - 2x 2500Base-T (PCIe, rtl8125b) - 3x LEDs (Power, LAN, WAN) - 32GB eMMC - MicroSD Slot - MDMI 1.4/2.0 OUT - M.2 E-Key SDIO slot - USB 3.0 Port - USB Type-C 5V Power Signed-off-by: Tianling Shen <cnsztl@gmail.com> --- arch/arm64/boot/dts/rockchip/Makefile | 1 + .../boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 ++++++++++++++++++ 2 files changed, 861 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile index ad684e3831bc..2d4a1e29db6f 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb diff --git a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts new file mode 100644 index 000000000000..731789a69677 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts @@ -0,0 +1,860 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd. + * (http://www.friendlyelec.com) + * + * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com> + */ + +/dts-v1/; +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/rockchip.h> +#include <dt-bindings/soc/rockchip,vop2.h> + +#include "rk3576.dtsi" + +/ { + model = "FriendlyElec NanoPi R76S"; + compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576"; + + aliases { + mmc0 = &sdhci; + mmc1 = &sdmmc; + mmc2 = &sdio; + }; + + chosen { + stdout-path = "serial0:1500000n8"; + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&reset_button_pin>; + + button-reset { + label = "reset"; + gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; + debounce-interval = <50>; + linux,code = <KEY_RESTART>; + wakeup-source; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&lan_led_pin>, <&power_led_pin>, <&wan_led_pin>; + + led-0 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_LAN; + gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; + }; + + power_led: led-1 { + color = <LED_COLOR_ID_RED>; + function = LED_FUNCTION_POWER; + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + }; + + led-2 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_WAN; + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; + }; + }; + + hdmi-con { + compatible = "hdmi-connector"; + hdmi-pwr-supply = <&vcc5v_hdmi_tx>; + type = "a"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + sdio_pwrseq: sdio-pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&hym8563>; + clock-names = "ext_clock"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_reg_on_h>; + post-power-on-delay-ms = <200>; + reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; + }; + + vcc5v_dcin: regulator-vcc5v-dcin { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-name = "vcc5v_dcin"; + }; + + vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&hdmi_tx_on_h>; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-name = "vcc5v_hdmi_tx"; + vin-supply = <&vcc5v0_sys_s5>; + }; + + vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc3v3_rtc_s5"; + vin-supply = <&vcc5v0_sys_s5>; + }; + + vcc5v0_device_s0: regulator-vcc5v0-device-s0 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-name = "vcc5v0_device_s0"; + vin-supply = <&vcc5v_dcin>; + }; + + vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-name = "vcc5v0_sys_s5"; + vin-supply = <&vcc5v_dcin>; + }; + + vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&usb_otg0_pwren_h>; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-name = "vcc5v0_usb_otg0"; + vin-supply = <&vcc5v0_sys_s5>; + }; + + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vcc_1v1_nldo_s3"; + vin-supply = <&vcc5v0_sys_s5>; + }; + + vcc_1v8_s0: regulator-vcc-1v8-s0 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc_1v8_s0"; + vin-supply = <&vcc_1v8_s3>; + }; + + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <2000000>; + regulator-max-microvolt = <2000000>; + regulator-name = "vcc_2v0_pldo_s3"; + vin-supply = <&vcc5v0_sys_s5>; + }; + + vcc_3v3_s0: regulator-vcc-3v3-s0 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc_3v3_s0"; + vin-supply = <&vcc_3v3_s3>; + }; +}; + +&combphy0_ps { + status = "okay"; +}; + +&combphy1_psu { + status = "okay"; +}; + +&cpu_b0 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b1 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b2 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b3 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_l0 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l1 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l2 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l3 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&gpu { + mali-supply = <&vdd_gpu_s0>; + status = "okay"; +}; + +&hdmi { + status = "okay"; +}; + +&hdmi_in { + hdmi_in_vp0: endpoint { + remote-endpoint = <&vp0_out_hdmi>; + }; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +&hdmi_sound { + status = "okay"; +}; + +&hdptxphy { + status = "okay"; +}; + +&i2c1 { + status = "okay"; + + pmic@23 { + compatible = "rockchip,rk806"; + reg = <0x23>; + #gpio-cells = <2>; + gpio-controller; + interrupt-parent = <&gpio0>; + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, + <&rk806_dvs2_null>, <&rk806_dvs3_null>; + system-power-controller; + + vcc1-supply = <&vcc5v0_sys_s5>; + vcc2-supply = <&vcc5v0_sys_s5>; + vcc3-supply = <&vcc5v0_sys_s5>; + vcc4-supply = <&vcc5v0_sys_s5>; + vcc5-supply = <&vcc5v0_sys_s5>; + vcc6-supply = <&vcc5v0_sys_s5>; + vcc7-supply = <&vcc5v0_sys_s5>; + vcc8-supply = <&vcc5v0_sys_s5>; + vcc9-supply = <&vcc5v0_sys_s5>; + vcc10-supply = <&vcc5v0_sys_s5>; + vcc11-supply = <&vcc_2v0_pldo_s3>; + vcc12-supply = <&vcc5v0_sys_s5>; + vcc13-supply = <&vcc_1v1_nldo_s3>; + vcc14-supply = <&vcc_1v1_nldo_s3>; + vcca-supply = <&vcc5v0_sys_s5>; + + rk806_dvs1_null: dvs1-null-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun0"; + }; + + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun2"; + }; + + rk806_dvs1_rst: dvs1-rst-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun3"; + }; + + rk806_dvs1_slp: dvs1-slp-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun1"; + }; + + rk806_dvs2_dvs: dvs2-dvs-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun4"; + }; + + rk806_dvs2_gpio: dvs2-gpio-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun5"; + }; + + rk806_dvs2_null: dvs2-null-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun0"; + }; + + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun2"; + }; + + rk806_dvs2_rst: dvs2-rst-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun3"; + }; + + rk806_dvs2_slp: dvs2-slp-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun1"; + }; + + rk806_dvs3_dvs: dvs3-dvs-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun4"; + }; + + rk806_dvs3_gpio: dvs3-gpio-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun5"; + }; + + rk806_dvs3_null: dvs3-null-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun0"; + }; + + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun2"; + }; + + rk806_dvs3_rst: dvs3-rst-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun3"; + }; + + rk806_dvs3_slp: dvs3-slp-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun1"; + }; + + regulators { + vdd_cpu_big_s0: dcdc-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_cpu_big_s0"; + regulator-ramp-delay = <12500>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_npu_s0: dcdc-reg2 { + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_npu_s0"; + regulator-ramp-delay = <12500>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_cpu_lit_s0: dcdc-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_cpu_lit_s0"; + regulator-ramp-delay = <12500>; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <750000>; + }; + }; + + vcc_3v3_s3: dcdc-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc_3v3_s3"; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vdd_gpu_s0: dcdc-reg5 { + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <900000>; + regulator-name = "vdd_gpu_s0"; + regulator-ramp-delay = <12500>; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <850000>; + }; + }; + + vddq_ddr_s0: dcdc-reg6 { + regulator-always-on; + regulator-boot-on; + regulator-name = "vddq_ddr_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_logic_s0: dcdc-reg7 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <800000>; + regulator-name = "vdd_logic_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_1v8_s3: dcdc-reg8 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc_1v8_s3"; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vdd2_ddr_s3: dcdc-reg9 { + regulator-always-on; + regulator-boot-on; + regulator-name = "vdd2_ddr_s3"; + + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vdd_ddr_s0: dcdc-reg10 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <1200000>; + regulator-name = "vdd_ddr_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca_1v8_s0: pldo-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca_1v8_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca1v8_pldo2_s0: pldo-reg2 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca1v8_pldo2_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_1v2_s0: pldo-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-name = "vdda_1v2_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca_3v3_s0: pldo-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcca_3v3_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vccio_sd_s0: pldo-reg5 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vccio_sd_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca1v8_pldo6_s3: pldo-reg6 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca1v8_pldo6_s3"; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vdd_0v75_s3: nldo-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-name = "vdd_0v75_s3"; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <750000>; + }; + }; + + vdda_ddr_pll_s0: nldo-reg2 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-name = "vdda_ddr_pll_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda0v75_hdmi_s0: nldo-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <837500>; + regulator-max-microvolt = <837500>; + regulator-name = "vdda0v75_hdmi_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_0v85_s0: nldo-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-name = "vdda_0v85_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_0v75_s0: nldo-reg5 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-name = "vdda_0v75_s0"; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + }; + }; +}; + +&i2c2 { + status = "okay"; + + hym8563: rtc@51 { + compatible = "haoyu,hym8563"; + reg = <0x51>; + #clock-cells = <0>; + clock-output-names = "hym8563"; + interrupt-parent = <&gpio0>; + interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&rtc_int_l>; + wakeup-source; + }; +}; + +&pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_perstn>; + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc_3v3_s3>; + status = "okay"; +}; + +&pcie1 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie1_perstn>; + reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc_3v3_s3>; + status = "okay"; +}; + +&pinctrl { + bt { + bt_reg_on_h: bt-reg-on-h { + rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + bt_wake_host_h: bt-wake-host-h { + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>; + }; + + host_wake_bt_h: host-wake-bt-h { + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + gpio-keys { + reset_button_pin: reset-button-pin { + rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + gpio-leds { + lan_led_pin: lan-led-pin { + rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + power_led_pin: power-led-pin { + rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + wan_led_pin: wan-led-pin { + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + hdmi { + hdmi_tx_on_h: hdmi-tx-on-h { + rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + hym8563 { + rtc_int_l: rtc-int-l { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + pcie { + pcie0_perstn: pcie0-perstn { + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + pcie1_perstn: pcie1-perstn { + rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + usb { + usb_otg0_pwren_h: usb-otg0-pwren-h { + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + wifi { + wifi_wake_host_h: wifi-wake-host-h { + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; + }; + + wifi_reg_on_h: wifi-reg-on-h { + rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&sai6 { + status = "okay"; +}; + +&sdmmc { + bus-width = <4>; + cap-mmc-highspeed; + cap-sd-highspeed; + disable-wp; + no-mmc; + no-sdio; + sd-uhs-sdr104; + vmmc-supply = <&vcc_3v3_s3>; + vqmmc-supply = <&vccio_sd_s0>; + status = "okay"; +}; + +&sdio { + #address-cells = <1>; + #size-cells = <0>; + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + disable-wp; + keep-power-in-suspend; + mmc-pwrseq = <&sdio_pwrseq>; + no-mmc; + no-sd; + non-removable; + sd-uhs-sdr104; + vmmc-supply = <&vcc_3v3_s3>; + vqmmc-supply = <&vcc_1v8_s3>; + wakeup-source; + status = "okay"; + + rtl8822cs: wifi@1 { + reg = <1>; + interrupt-parent = <&gpio0>; + interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "host-wake"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_wake_host_h>; + }; +}; + +&sdhci { + bus-width = <8>; + cap-mmc-highspeed; + full-pwr-cycle-in-suspend; + mmc-hs400-1_8v; + mmc-hs400-enhanced-strobe; + no-sdio; + no-sd; + non-removable; + status = "okay"; +}; + +&saradc { + vref-supply = <&vcca_1v8_s0>; + status = "okay"; +}; + +&u2phy0 { + status = "okay"; +}; + +&u2phy0_otg { + phy-supply = <&vcc5v0_usb_otg0>; + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&uart5 { + pinctrl-names = "default"; + pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>; + uart-has-rtscts; + status = "okay"; + + bluetooth { + compatible = "realtek,rtl8822cs-bt"; + enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; + device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>; + host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>; + }; +}; + +&usbdp_phy { + status = "okay"; +}; + +&usb_drd0_dwc3 { + dr_mode = "host"; + extcon = <&u2phy0>; + status = "okay"; +}; + +&vop { + status = "okay"; +}; + +&vop_mmu { + status = "okay"; +}; + +&vp0 { + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { + reg = <ROCKCHIP_VOP2_EP_HDMI0>; + remote-endpoint = <&hdmi_in_vp0>; + }; +}; -- 2.51.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-22 9:15 ` [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the " Tianling Shen @ 2025-09-26 16:07 ` Diederik de Haas 2025-09-27 1:19 ` Tianling Shen 0 siblings, 1 reply; 10+ messages in thread From: Diederik de Haas @ 2025-09-26 16:07 UTC (permalink / raw) To: Tianling Shen, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel [-- Attachment #1: Type: text/plain, Size: 23446 bytes --] On Mon Sep 22, 2025 at 11:15 AM CEST, Tianling Shen wrote: > The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway > device with two 2.5G, designed and developed by FriendlyElec. > > Specification: > - Rockchip RK3576 > - 2/4GB LPDDR4X RAM > - 2x 2500Base-T (PCIe, rtl8125b) > - 3x LEDs (Power, LAN, WAN) > - 32GB eMMC > - MicroSD Slot > - MDMI 1.4/2.0 OUT > - M.2 E-Key SDIO slot > - USB 3.0 Port > - USB Type-C 5V Power > > Signed-off-by: Tianling Shen <cnsztl@gmail.com> > --- > arch/arm64/boot/dts/rockchip/Makefile | 1 + > .../boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 ++++++++++++++++++ > 2 files changed, 861 insertions(+) > create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > index ad684e3831bc..2d4a1e29db6f 100644 > --- a/arch/arm64/boot/dts/rockchip/Makefile > +++ b/arch/arm64/boot/dts/rockchip/Makefile > @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb > diff --git a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts > new file mode 100644 > index 000000000000..731789a69677 > --- /dev/null > +++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts > @@ -0,0 +1,860 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd. > + * (http://www.friendlyelec.com) > + * > + * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com> > + */ > + > +/dts-v1/; > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/pinctrl/rockchip.h> > +#include <dt-bindings/soc/rockchip,vop2.h> > + > +#include "rk3576.dtsi" > + > +/ { > + model = "FriendlyElec NanoPi R76S"; > + compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576"; > + > + aliases { > + mmc0 = &sdhci; > + mmc1 = &sdmmc; > + mmc2 = &sdio; > + }; > + > + chosen { > + stdout-path = "serial0:1500000n8"; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + pinctrl-names = "default"; > + pinctrl-0 = <&reset_button_pin>; > + > + button-reset { > + label = "reset"; > + gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; > + debounce-interval = <50>; > + linux,code = <KEY_RESTART>; > + wakeup-source; > + }; > + }; > + > + gpio-leds { > + compatible = "gpio-leds"; > + pinctrl-names = "default"; > + pinctrl-0 = <&lan_led_pin>, <&power_led_pin>, <&wan_led_pin>; It is recommended to use the labels in the schematics to define the pinctl nodes (and thus their references). In quite a lot of cases that's indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds pinctls. > + > + led-0 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_LAN; > + gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; > + }; > + > + power_led: led-1 { power_led is never referenced, so you can drop it. Cheers, Diederik > + color = <LED_COLOR_ID_RED>; > + function = LED_FUNCTION_POWER; > + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "heartbeat"; > + }; > + > + led-2 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_WAN; > + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; > + }; > + }; > + > + hdmi-con { > + compatible = "hdmi-connector"; > + hdmi-pwr-supply = <&vcc5v_hdmi_tx>; > + type = "a"; > + > + port { > + hdmi_con_in: endpoint { > + remote-endpoint = <&hdmi_out_con>; > + }; > + }; > + }; > + > + sdio_pwrseq: sdio-pwrseq { > + compatible = "mmc-pwrseq-simple"; > + clocks = <&hym8563>; > + clock-names = "ext_clock"; > + pinctrl-names = "default"; > + pinctrl-0 = <&wifi_reg_on_h>; > + post-power-on-delay-ms = <200>; > + reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; > + }; > + > + vcc5v_dcin: regulator-vcc5v-dcin { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-name = "vcc5v_dcin"; > + }; > + > + vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&hdmi_tx_on_h>; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-name = "vcc5v_hdmi_tx"; > + vin-supply = <&vcc5v0_sys_s5>; > + }; > + > + vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc3v3_rtc_s5"; > + vin-supply = <&vcc5v0_sys_s5>; > + }; > + > + vcc5v0_device_s0: regulator-vcc5v0-device-s0 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-name = "vcc5v0_device_s0"; > + vin-supply = <&vcc5v_dcin>; > + }; > + > + vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-name = "vcc5v0_sys_s5"; > + vin-supply = <&vcc5v_dcin>; > + }; > + > + vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&usb_otg0_pwren_h>; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-name = "vcc5v0_usb_otg0"; > + vin-supply = <&vcc5v0_sys_s5>; > + }; > + > + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1100000>; > + regulator-name = "vcc_1v1_nldo_s3"; > + vin-supply = <&vcc5v0_sys_s5>; > + }; > + > + vcc_1v8_s0: regulator-vcc-1v8-s0 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcc_1v8_s0"; > + vin-supply = <&vcc_1v8_s3>; > + }; > + > + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <2000000>; > + regulator-max-microvolt = <2000000>; > + regulator-name = "vcc_2v0_pldo_s3"; > + vin-supply = <&vcc5v0_sys_s5>; > + }; > + > + vcc_3v3_s0: regulator-vcc-3v3-s0 { > + compatible = "regulator-fixed"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc_3v3_s0"; > + vin-supply = <&vcc_3v3_s3>; > + }; > +}; > + > +&combphy0_ps { > + status = "okay"; > +}; > + > +&combphy1_psu { > + status = "okay"; > +}; > + > +&cpu_b0 { > + cpu-supply = <&vdd_cpu_big_s0>; > +}; > + > +&cpu_b1 { > + cpu-supply = <&vdd_cpu_big_s0>; > +}; > + > +&cpu_b2 { > + cpu-supply = <&vdd_cpu_big_s0>; > +}; > + > +&cpu_b3 { > + cpu-supply = <&vdd_cpu_big_s0>; > +}; > + > +&cpu_l0 { > + cpu-supply = <&vdd_cpu_lit_s0>; > +}; > + > +&cpu_l1 { > + cpu-supply = <&vdd_cpu_lit_s0>; > +}; > + > +&cpu_l2 { > + cpu-supply = <&vdd_cpu_lit_s0>; > +}; > + > +&cpu_l3 { > + cpu-supply = <&vdd_cpu_lit_s0>; > +}; > + > +&gpu { > + mali-supply = <&vdd_gpu_s0>; > + status = "okay"; > +}; > + > +&hdmi { > + status = "okay"; > +}; > + > +&hdmi_in { > + hdmi_in_vp0: endpoint { > + remote-endpoint = <&vp0_out_hdmi>; > + }; > +}; > + > +&hdmi_out { > + hdmi_out_con: endpoint { > + remote-endpoint = <&hdmi_con_in>; > + }; > +}; > + > +&hdmi_sound { > + status = "okay"; > +}; > + > +&hdptxphy { > + status = "okay"; > +}; > + > +&i2c1 { > + status = "okay"; > + > + pmic@23 { > + compatible = "rockchip,rk806"; > + reg = <0x23>; > + #gpio-cells = <2>; > + gpio-controller; > + interrupt-parent = <&gpio0>; > + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, > + <&rk806_dvs2_null>, <&rk806_dvs3_null>; > + system-power-controller; > + > + vcc1-supply = <&vcc5v0_sys_s5>; > + vcc2-supply = <&vcc5v0_sys_s5>; > + vcc3-supply = <&vcc5v0_sys_s5>; > + vcc4-supply = <&vcc5v0_sys_s5>; > + vcc5-supply = <&vcc5v0_sys_s5>; > + vcc6-supply = <&vcc5v0_sys_s5>; > + vcc7-supply = <&vcc5v0_sys_s5>; > + vcc8-supply = <&vcc5v0_sys_s5>; > + vcc9-supply = <&vcc5v0_sys_s5>; > + vcc10-supply = <&vcc5v0_sys_s5>; > + vcc11-supply = <&vcc_2v0_pldo_s3>; > + vcc12-supply = <&vcc5v0_sys_s5>; > + vcc13-supply = <&vcc_1v1_nldo_s3>; > + vcc14-supply = <&vcc_1v1_nldo_s3>; > + vcca-supply = <&vcc5v0_sys_s5>; > + > + rk806_dvs1_null: dvs1-null-pins { > + pins = "gpio_pwrctrl1"; > + function = "pin_fun0"; > + }; > + > + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { > + pins = "gpio_pwrctrl1"; > + function = "pin_fun2"; > + }; > + > + rk806_dvs1_rst: dvs1-rst-pins { > + pins = "gpio_pwrctrl1"; > + function = "pin_fun3"; > + }; > + > + rk806_dvs1_slp: dvs1-slp-pins { > + pins = "gpio_pwrctrl1"; > + function = "pin_fun1"; > + }; > + > + rk806_dvs2_dvs: dvs2-dvs-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun4"; > + }; > + > + rk806_dvs2_gpio: dvs2-gpio-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun5"; > + }; > + > + rk806_dvs2_null: dvs2-null-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun0"; > + }; > + > + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun2"; > + }; > + > + rk806_dvs2_rst: dvs2-rst-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun3"; > + }; > + > + rk806_dvs2_slp: dvs2-slp-pins { > + pins = "gpio_pwrctrl2"; > + function = "pin_fun1"; > + }; > + > + rk806_dvs3_dvs: dvs3-dvs-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun4"; > + }; > + > + rk806_dvs3_gpio: dvs3-gpio-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun5"; > + }; > + > + rk806_dvs3_null: dvs3-null-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun0"; > + }; > + > + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun2"; > + }; > + > + rk806_dvs3_rst: dvs3-rst-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun3"; > + }; > + > + rk806_dvs3_slp: dvs3-slp-pins { > + pins = "gpio_pwrctrl3"; > + function = "pin_fun1"; > + }; > + > + regulators { > + vdd_cpu_big_s0: dcdc-reg1 { > + regulator-always-on; > + regulator-boot-on; > + regulator-enable-ramp-delay = <400>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <950000>; > + regulator-name = "vdd_cpu_big_s0"; > + regulator-ramp-delay = <12500>; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_npu_s0: dcdc-reg2 { > + regulator-boot-on; > + regulator-enable-ramp-delay = <400>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <950000>; > + regulator-name = "vdd_npu_s0"; > + regulator-ramp-delay = <12500>; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_cpu_lit_s0: dcdc-reg3 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <950000>; > + regulator-name = "vdd_cpu_lit_s0"; > + regulator-ramp-delay = <12500>; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + regulator-suspend-microvolt = <750000>; > + }; > + }; > + > + vcc_3v3_s3: dcdc-reg4 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc_3v3_s3"; > + > + regulator-state-mem { > + regulator-on-in-suspend; > + regulator-suspend-microvolt = <3300000>; > + }; > + }; > + > + vdd_gpu_s0: dcdc-reg5 { > + regulator-boot-on; > + regulator-enable-ramp-delay = <400>; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <900000>; > + regulator-name = "vdd_gpu_s0"; > + regulator-ramp-delay = <12500>; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + regulator-suspend-microvolt = <850000>; > + }; > + }; > + > + vddq_ddr_s0: dcdc-reg6 { > + regulator-always-on; > + regulator-boot-on; > + regulator-name = "vddq_ddr_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdd_logic_s0: dcdc-reg7 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <800000>; > + regulator-name = "vdd_logic_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcc_1v8_s3: dcdc-reg8 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcc_1v8_s3"; > + > + regulator-state-mem { > + regulator-on-in-suspend; > + regulator-suspend-microvolt = <1800000>; > + }; > + }; > + > + vdd2_ddr_s3: dcdc-reg9 { > + regulator-always-on; > + regulator-boot-on; > + regulator-name = "vdd2_ddr_s3"; > + > + regulator-state-mem { > + regulator-on-in-suspend; > + }; > + }; > + > + vdd_ddr_s0: dcdc-reg10 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <1200000>; > + regulator-name = "vdd_ddr_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcca_1v8_s0: pldo-reg1 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcca_1v8_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcca1v8_pldo2_s0: pldo-reg2 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcca1v8_pldo2_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdda_1v2_s0: pldo-reg3 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-name = "vdda_1v2_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcca_3v3_s0: pldo-reg4 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcca_3v3_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vccio_sd_s0: pldo-reg5 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vccio_sd_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vcca1v8_pldo6_s3: pldo-reg6 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcca1v8_pldo6_s3"; > + > + regulator-state-mem { > + regulator-on-in-suspend; > + regulator-suspend-microvolt = <1800000>; > + }; > + }; > + > + vdd_0v75_s3: nldo-reg1 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <750000>; > + regulator-max-microvolt = <750000>; > + regulator-name = "vdd_0v75_s3"; > + > + regulator-state-mem { > + regulator-on-in-suspend; > + regulator-suspend-microvolt = <750000>; > + }; > + }; > + > + vdda_ddr_pll_s0: nldo-reg2 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <850000>; > + regulator-max-microvolt = <850000>; > + regulator-name = "vdda_ddr_pll_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdda0v75_hdmi_s0: nldo-reg3 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <837500>; > + regulator-max-microvolt = <837500>; > + regulator-name = "vdda0v75_hdmi_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdda_0v85_s0: nldo-reg4 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <850000>; > + regulator-max-microvolt = <850000>; > + regulator-name = "vdda_0v85_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + vdda_0v75_s0: nldo-reg5 { > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <750000>; > + regulator-max-microvolt = <750000>; > + regulator-name = "vdda_0v75_s0"; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + }; > + }; > +}; > + > +&i2c2 { > + status = "okay"; > + > + hym8563: rtc@51 { > + compatible = "haoyu,hym8563"; > + reg = <0x51>; > + #clock-cells = <0>; > + clock-output-names = "hym8563"; > + interrupt-parent = <&gpio0>; > + interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&rtc_int_l>; > + wakeup-source; > + }; > +}; > + > +&pcie0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pcie0_perstn>; > + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; > + vpcie3v3-supply = <&vcc_3v3_s3>; > + status = "okay"; > +}; > + > +&pcie1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pcie1_perstn>; > + reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; > + vpcie3v3-supply = <&vcc_3v3_s3>; > + status = "okay"; > +}; > + > +&pinctrl { > + bt { > + bt_reg_on_h: bt-reg-on-h { > + rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + > + bt_wake_host_h: bt-wake-host-h { > + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>; > + }; > + > + host_wake_bt_h: host-wake-bt-h { > + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + }; > + > + gpio-keys { > + reset_button_pin: reset-button-pin { > + rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + }; > + > + gpio-leds { > + lan_led_pin: lan-led-pin { > + rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + > + power_led_pin: power-led-pin { > + rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + > + wan_led_pin: wan-led-pin { > + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + hdmi { > + hdmi_tx_on_h: hdmi-tx-on-h { > + rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + hym8563 { > + rtc_int_l: rtc-int-l { > + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + }; > + > + pcie { > + pcie0_perstn: pcie0-perstn { > + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + > + pcie1_perstn: pcie1-perstn { > + rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; > + }; > + }; > + > + usb { > + usb_otg0_pwren_h: usb-otg0-pwren-h { > + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + wifi { > + wifi_wake_host_h: wifi-wake-host-h { > + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; > + }; > + > + wifi_reg_on_h: wifi-reg-on-h { > + rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > +}; > + > +&sai6 { > + status = "okay"; > +}; > + > +&sdmmc { > + bus-width = <4>; > + cap-mmc-highspeed; > + cap-sd-highspeed; > + disable-wp; > + no-mmc; > + no-sdio; > + sd-uhs-sdr104; > + vmmc-supply = <&vcc_3v3_s3>; > + vqmmc-supply = <&vccio_sd_s0>; > + status = "okay"; > +}; > + > +&sdio { > + #address-cells = <1>; > + #size-cells = <0>; > + bus-width = <4>; > + cap-sd-highspeed; > + cap-sdio-irq; > + disable-wp; > + keep-power-in-suspend; > + mmc-pwrseq = <&sdio_pwrseq>; > + no-mmc; > + no-sd; > + non-removable; > + sd-uhs-sdr104; > + vmmc-supply = <&vcc_3v3_s3>; > + vqmmc-supply = <&vcc_1v8_s3>; > + wakeup-source; > + status = "okay"; > + > + rtl8822cs: wifi@1 { > + reg = <1>; > + interrupt-parent = <&gpio0>; > + interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "host-wake"; > + pinctrl-names = "default"; > + pinctrl-0 = <&wifi_wake_host_h>; > + }; > +}; > + > +&sdhci { > + bus-width = <8>; > + cap-mmc-highspeed; > + full-pwr-cycle-in-suspend; > + mmc-hs400-1_8v; > + mmc-hs400-enhanced-strobe; > + no-sdio; > + no-sd; > + non-removable; > + status = "okay"; > +}; > + > +&saradc { > + vref-supply = <&vcca_1v8_s0>; > + status = "okay"; > +}; > + > +&u2phy0 { > + status = "okay"; > +}; > + > +&u2phy0_otg { > + phy-supply = <&vcc5v0_usb_otg0>; > + status = "okay"; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > +&uart5 { > + pinctrl-names = "default"; > + pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>; > + uart-has-rtscts; > + status = "okay"; > + > + bluetooth { > + compatible = "realtek,rtl8822cs-bt"; > + enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; > + device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>; > + host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>; > + }; > +}; > + > +&usbdp_phy { > + status = "okay"; > +}; > + > +&usb_drd0_dwc3 { > + dr_mode = "host"; > + extcon = <&u2phy0>; > + status = "okay"; > +}; > + > +&vop { > + status = "okay"; > +}; > + > +&vop_mmu { > + status = "okay"; > +}; > + > +&vp0 { > + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { > + reg = <ROCKCHIP_VOP2_EP_HDMI0>; > + remote-endpoint = <&hdmi_in_vp0>; > + }; > +}; [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-26 16:07 ` Diederik de Haas @ 2025-09-27 1:19 ` Tianling Shen 2025-09-27 7:37 ` Diederik de Haas 0 siblings, 1 reply; 10+ messages in thread From: Tianling Shen @ 2025-09-27 1:19 UTC (permalink / raw) To: Diederik de Haas, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel On 2025/9/27 0:07, Diederik de Haas wrote: > On Mon Sep 22, 2025 at 11:15 AM CEST, Tianling Shen wrote: >> The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway >> device with two 2.5G, designed and developed by FriendlyElec. >> >> Specification: >> - Rockchip RK3576 >> - 2/4GB LPDDR4X RAM >> - 2x 2500Base-T (PCIe, rtl8125b) >> - 3x LEDs (Power, LAN, WAN) >> - 32GB eMMC >> - MicroSD Slot >> - MDMI 1.4/2.0 OUT >> - M.2 E-Key SDIO slot >> - USB 3.0 Port >> - USB Type-C 5V Power >> >> Signed-off-by: Tianling Shen <cnsztl@gmail.com> >> --- >> arch/arm64/boot/dts/rockchip/Makefile | 1 + >> .../boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 ++++++++++++++++++ >> 2 files changed, 861 insertions(+) >> create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >> >> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile >> index ad684e3831bc..2d4a1e29db6f 100644 >> --- a/arch/arm64/boot/dts/rockchip/Makefile >> +++ b/arch/arm64/boot/dts/rockchip/Makefile >> @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb >> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb >> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >> new file mode 100644 >> index 000000000000..731789a69677 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >> @@ -0,0 +1,860 @@ >> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT >> +/* >> + * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd. >> + * (http://www.friendlyelec.com) >> + * >> + * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com> >> + */ >> + >> +/dts-v1/; >> +#include <dt-bindings/gpio/gpio.h> >> +#include <dt-bindings/input/input.h> >> +#include <dt-bindings/leds/common.h> >> +#include <dt-bindings/pinctrl/rockchip.h> >> +#include <dt-bindings/soc/rockchip,vop2.h> >> + >> +#include "rk3576.dtsi" >> + >> +/ { >> + model = "FriendlyElec NanoPi R76S"; >> + compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576"; >> + >> + aliases { >> + mmc0 = &sdhci; >> + mmc1 = &sdmmc; >> + mmc2 = &sdio; >> + }; >> + >> + chosen { >> + stdout-path = "serial0:1500000n8"; >> + }; >> + >> + gpio-keys { >> + compatible = "gpio-keys"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&reset_button_pin>; >> + >> + button-reset { >> + label = "reset"; >> + gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; >> + debounce-interval = <50>; >> + linux,code = <KEY_RESTART>; >> + wakeup-source; >> + }; >> + }; >> + >> + gpio-leds { >> + compatible = "gpio-leds"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&lan_led_pin>, <&power_led_pin>, <&wan_led_pin>; > > It is recommended to use the labels in the schematics to define the > pinctl nodes (and thus their references). In quite a lot of cases that's > indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds > pinctls. I cannot find any specific naming rules from the gpio-keys[1] and gpio-leds[2] bindings, did I miss any update? I think this naming matches the current practice at least in rockchip's dt tree. 1. https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.yaml 2. https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/leds-gpio.yaml > >> + >> + led-0 { >> + color = <LED_COLOR_ID_GREEN>; >> + function = LED_FUNCTION_LAN; >> + gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; >> + }; >> + >> + power_led: led-1 { > > power_led is never referenced, so you can drop it. > This will be used by some downstream projects but I'm fine to remove it here. Thanks, Tianling. > Cheers, > Diederik > >> + color = <LED_COLOR_ID_RED>; >> + function = LED_FUNCTION_POWER; >> + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; >> + linux,default-trigger = "heartbeat"; >> + }; >> + >> + led-2 { >> + color = <LED_COLOR_ID_GREEN>; >> + function = LED_FUNCTION_WAN; >> + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; >> + }; >> + }; >> + >> + hdmi-con { >> + compatible = "hdmi-connector"; >> + hdmi-pwr-supply = <&vcc5v_hdmi_tx>; >> + type = "a"; >> + >> + port { >> + hdmi_con_in: endpoint { >> + remote-endpoint = <&hdmi_out_con>; >> + }; >> + }; >> + }; >> + >> + sdio_pwrseq: sdio-pwrseq { >> + compatible = "mmc-pwrseq-simple"; >> + clocks = <&hym8563>; >> + clock-names = "ext_clock"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&wifi_reg_on_h>; >> + post-power-on-delay-ms = <200>; >> + reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; >> + }; >> + >> + vcc5v_dcin: regulator-vcc5v-dcin { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <5000000>; >> + regulator-max-microvolt = <5000000>; >> + regulator-name = "vcc5v_dcin"; >> + }; >> + >> + vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx { >> + compatible = "regulator-fixed"; >> + enable-active-high; >> + gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&hdmi_tx_on_h>; >> + regulator-min-microvolt = <5000000>; >> + regulator-max-microvolt = <5000000>; >> + regulator-name = "vcc5v_hdmi_tx"; >> + vin-supply = <&vcc5v0_sys_s5>; >> + }; >> + >> + vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc3v3_rtc_s5"; >> + vin-supply = <&vcc5v0_sys_s5>; >> + }; >> + >> + vcc5v0_device_s0: regulator-vcc5v0-device-s0 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <5000000>; >> + regulator-max-microvolt = <5000000>; >> + regulator-name = "vcc5v0_device_s0"; >> + vin-supply = <&vcc5v_dcin>; >> + }; >> + >> + vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <5000000>; >> + regulator-max-microvolt = <5000000>; >> + regulator-name = "vcc5v0_sys_s5"; >> + vin-supply = <&vcc5v_dcin>; >> + }; >> + >> + vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 { >> + compatible = "regulator-fixed"; >> + enable-active-high; >> + gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&usb_otg0_pwren_h>; >> + regulator-min-microvolt = <5000000>; >> + regulator-max-microvolt = <5000000>; >> + regulator-name = "vcc5v0_usb_otg0"; >> + vin-supply = <&vcc5v0_sys_s5>; >> + }; >> + >> + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1100000>; >> + regulator-max-microvolt = <1100000>; >> + regulator-name = "vcc_1v1_nldo_s3"; >> + vin-supply = <&vcc5v0_sys_s5>; >> + }; >> + >> + vcc_1v8_s0: regulator-vcc-1v8-s0 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vcc_1v8_s0"; >> + vin-supply = <&vcc_1v8_s3>; >> + }; >> + >> + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <2000000>; >> + regulator-max-microvolt = <2000000>; >> + regulator-name = "vcc_2v0_pldo_s3"; >> + vin-supply = <&vcc5v0_sys_s5>; >> + }; >> + >> + vcc_3v3_s0: regulator-vcc-3v3-s0 { >> + compatible = "regulator-fixed"; >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc_3v3_s0"; >> + vin-supply = <&vcc_3v3_s3>; >> + }; >> +}; >> + >> +&combphy0_ps { >> + status = "okay"; >> +}; >> + >> +&combphy1_psu { >> + status = "okay"; >> +}; >> + >> +&cpu_b0 { >> + cpu-supply = <&vdd_cpu_big_s0>; >> +}; >> + >> +&cpu_b1 { >> + cpu-supply = <&vdd_cpu_big_s0>; >> +}; >> + >> +&cpu_b2 { >> + cpu-supply = <&vdd_cpu_big_s0>; >> +}; >> + >> +&cpu_b3 { >> + cpu-supply = <&vdd_cpu_big_s0>; >> +}; >> + >> +&cpu_l0 { >> + cpu-supply = <&vdd_cpu_lit_s0>; >> +}; >> + >> +&cpu_l1 { >> + cpu-supply = <&vdd_cpu_lit_s0>; >> +}; >> + >> +&cpu_l2 { >> + cpu-supply = <&vdd_cpu_lit_s0>; >> +}; >> + >> +&cpu_l3 { >> + cpu-supply = <&vdd_cpu_lit_s0>; >> +}; >> + >> +&gpu { >> + mali-supply = <&vdd_gpu_s0>; >> + status = "okay"; >> +}; >> + >> +&hdmi { >> + status = "okay"; >> +}; >> + >> +&hdmi_in { >> + hdmi_in_vp0: endpoint { >> + remote-endpoint = <&vp0_out_hdmi>; >> + }; >> +}; >> + >> +&hdmi_out { >> + hdmi_out_con: endpoint { >> + remote-endpoint = <&hdmi_con_in>; >> + }; >> +}; >> + >> +&hdmi_sound { >> + status = "okay"; >> +}; >> + >> +&hdptxphy { >> + status = "okay"; >> +}; >> + >> +&i2c1 { >> + status = "okay"; >> + >> + pmic@23 { >> + compatible = "rockchip,rk806"; >> + reg = <0x23>; >> + #gpio-cells = <2>; >> + gpio-controller; >> + interrupt-parent = <&gpio0>; >> + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, >> + <&rk806_dvs2_null>, <&rk806_dvs3_null>; >> + system-power-controller; >> + >> + vcc1-supply = <&vcc5v0_sys_s5>; >> + vcc2-supply = <&vcc5v0_sys_s5>; >> + vcc3-supply = <&vcc5v0_sys_s5>; >> + vcc4-supply = <&vcc5v0_sys_s5>; >> + vcc5-supply = <&vcc5v0_sys_s5>; >> + vcc6-supply = <&vcc5v0_sys_s5>; >> + vcc7-supply = <&vcc5v0_sys_s5>; >> + vcc8-supply = <&vcc5v0_sys_s5>; >> + vcc9-supply = <&vcc5v0_sys_s5>; >> + vcc10-supply = <&vcc5v0_sys_s5>; >> + vcc11-supply = <&vcc_2v0_pldo_s3>; >> + vcc12-supply = <&vcc5v0_sys_s5>; >> + vcc13-supply = <&vcc_1v1_nldo_s3>; >> + vcc14-supply = <&vcc_1v1_nldo_s3>; >> + vcca-supply = <&vcc5v0_sys_s5>; >> + >> + rk806_dvs1_null: dvs1-null-pins { >> + pins = "gpio_pwrctrl1"; >> + function = "pin_fun0"; >> + }; >> + >> + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { >> + pins = "gpio_pwrctrl1"; >> + function = "pin_fun2"; >> + }; >> + >> + rk806_dvs1_rst: dvs1-rst-pins { >> + pins = "gpio_pwrctrl1"; >> + function = "pin_fun3"; >> + }; >> + >> + rk806_dvs1_slp: dvs1-slp-pins { >> + pins = "gpio_pwrctrl1"; >> + function = "pin_fun1"; >> + }; >> + >> + rk806_dvs2_dvs: dvs2-dvs-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun4"; >> + }; >> + >> + rk806_dvs2_gpio: dvs2-gpio-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun5"; >> + }; >> + >> + rk806_dvs2_null: dvs2-null-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun0"; >> + }; >> + >> + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun2"; >> + }; >> + >> + rk806_dvs2_rst: dvs2-rst-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun3"; >> + }; >> + >> + rk806_dvs2_slp: dvs2-slp-pins { >> + pins = "gpio_pwrctrl2"; >> + function = "pin_fun1"; >> + }; >> + >> + rk806_dvs3_dvs: dvs3-dvs-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun4"; >> + }; >> + >> + rk806_dvs3_gpio: dvs3-gpio-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun5"; >> + }; >> + >> + rk806_dvs3_null: dvs3-null-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun0"; >> + }; >> + >> + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun2"; >> + }; >> + >> + rk806_dvs3_rst: dvs3-rst-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun3"; >> + }; >> + >> + rk806_dvs3_slp: dvs3-slp-pins { >> + pins = "gpio_pwrctrl3"; >> + function = "pin_fun1"; >> + }; >> + >> + regulators { >> + vdd_cpu_big_s0: dcdc-reg1 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-enable-ramp-delay = <400>; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <950000>; >> + regulator-name = "vdd_cpu_big_s0"; >> + regulator-ramp-delay = <12500>; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdd_npu_s0: dcdc-reg2 { >> + regulator-boot-on; >> + regulator-enable-ramp-delay = <400>; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <950000>; >> + regulator-name = "vdd_npu_s0"; >> + regulator-ramp-delay = <12500>; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdd_cpu_lit_s0: dcdc-reg3 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <950000>; >> + regulator-name = "vdd_cpu_lit_s0"; >> + regulator-ramp-delay = <12500>; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + regulator-suspend-microvolt = <750000>; >> + }; >> + }; >> + >> + vcc_3v3_s3: dcdc-reg4 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc_3v3_s3"; >> + >> + regulator-state-mem { >> + regulator-on-in-suspend; >> + regulator-suspend-microvolt = <3300000>; >> + }; >> + }; >> + >> + vdd_gpu_s0: dcdc-reg5 { >> + regulator-boot-on; >> + regulator-enable-ramp-delay = <400>; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <900000>; >> + regulator-name = "vdd_gpu_s0"; >> + regulator-ramp-delay = <12500>; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + regulator-suspend-microvolt = <850000>; >> + }; >> + }; >> + >> + vddq_ddr_s0: dcdc-reg6 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-name = "vddq_ddr_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdd_logic_s0: dcdc-reg7 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <800000>; >> + regulator-name = "vdd_logic_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vcc_1v8_s3: dcdc-reg8 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vcc_1v8_s3"; >> + >> + regulator-state-mem { >> + regulator-on-in-suspend; >> + regulator-suspend-microvolt = <1800000>; >> + }; >> + }; >> + >> + vdd2_ddr_s3: dcdc-reg9 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-name = "vdd2_ddr_s3"; >> + >> + regulator-state-mem { >> + regulator-on-in-suspend; >> + }; >> + }; >> + >> + vdd_ddr_s0: dcdc-reg10 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <550000>; >> + regulator-max-microvolt = <1200000>; >> + regulator-name = "vdd_ddr_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vcca_1v8_s0: pldo-reg1 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vcca_1v8_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vcca1v8_pldo2_s0: pldo-reg2 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vcca1v8_pldo2_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdda_1v2_s0: pldo-reg3 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1200000>; >> + regulator-max-microvolt = <1200000>; >> + regulator-name = "vdda_1v2_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vcca_3v3_s0: pldo-reg4 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcca_3v3_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vccio_sd_s0: pldo-reg5 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vccio_sd_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vcca1v8_pldo6_s3: pldo-reg6 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vcca1v8_pldo6_s3"; >> + >> + regulator-state-mem { >> + regulator-on-in-suspend; >> + regulator-suspend-microvolt = <1800000>; >> + }; >> + }; >> + >> + vdd_0v75_s3: nldo-reg1 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <750000>; >> + regulator-max-microvolt = <750000>; >> + regulator-name = "vdd_0v75_s3"; >> + >> + regulator-state-mem { >> + regulator-on-in-suspend; >> + regulator-suspend-microvolt = <750000>; >> + }; >> + }; >> + >> + vdda_ddr_pll_s0: nldo-reg2 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <850000>; >> + regulator-max-microvolt = <850000>; >> + regulator-name = "vdda_ddr_pll_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdda0v75_hdmi_s0: nldo-reg3 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <837500>; >> + regulator-max-microvolt = <837500>; >> + regulator-name = "vdda0v75_hdmi_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdda_0v85_s0: nldo-reg4 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <850000>; >> + regulator-max-microvolt = <850000>; >> + regulator-name = "vdda_0v85_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + vdda_0v75_s0: nldo-reg5 { >> + regulator-always-on; >> + regulator-boot-on; >> + regulator-min-microvolt = <750000>; >> + regulator-max-microvolt = <750000>; >> + regulator-name = "vdda_0v75_s0"; >> + >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + }; >> + }; >> +}; >> + >> +&i2c2 { >> + status = "okay"; >> + >> + hym8563: rtc@51 { >> + compatible = "haoyu,hym8563"; >> + reg = <0x51>; >> + #clock-cells = <0>; >> + clock-output-names = "hym8563"; >> + interrupt-parent = <&gpio0>; >> + interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&rtc_int_l>; >> + wakeup-source; >> + }; >> +}; >> + >> +&pcie0 { >> + pinctrl-names = "default"; >> + pinctrl-0 = <&pcie0_perstn>; >> + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; >> + vpcie3v3-supply = <&vcc_3v3_s3>; >> + status = "okay"; >> +}; >> + >> +&pcie1 { >> + pinctrl-names = "default"; >> + pinctrl-0 = <&pcie1_perstn>; >> + reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; >> + vpcie3v3-supply = <&vcc_3v3_s3>; >> + status = "okay"; >> +}; >> + >> +&pinctrl { >> + bt { >> + bt_reg_on_h: bt-reg-on-h { >> + rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + >> + bt_wake_host_h: bt-wake-host-h { >> + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>; >> + }; >> + >> + host_wake_bt_h: host-wake-bt-h { >> + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + }; >> + >> + gpio-keys { >> + reset_button_pin: reset-button-pin { >> + rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + }; >> + >> + gpio-leds { >> + lan_led_pin: lan-led-pin { >> + rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + >> + power_led_pin: power-led-pin { >> + rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + >> + wan_led_pin: wan-led-pin { >> + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + }; >> + >> + hdmi { >> + hdmi_tx_on_h: hdmi-tx-on-h { >> + rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + }; >> + >> + hym8563 { >> + rtc_int_l: rtc-int-l { >> + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + }; >> + >> + pcie { >> + pcie0_perstn: pcie0-perstn { >> + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + >> + pcie1_perstn: pcie1-perstn { >> + rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >> + }; >> + }; >> + >> + usb { >> + usb_otg0_pwren_h: usb-otg0-pwren-h { >> + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + }; >> + >> + wifi { >> + wifi_wake_host_h: wifi-wake-host-h { >> + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; >> + }; >> + >> + wifi_reg_on_h: wifi-reg-on-h { >> + rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; >> + }; >> + }; >> +}; >> + >> +&sai6 { >> + status = "okay"; >> +}; >> + >> +&sdmmc { >> + bus-width = <4>; >> + cap-mmc-highspeed; >> + cap-sd-highspeed; >> + disable-wp; >> + no-mmc; >> + no-sdio; >> + sd-uhs-sdr104; >> + vmmc-supply = <&vcc_3v3_s3>; >> + vqmmc-supply = <&vccio_sd_s0>; >> + status = "okay"; >> +}; >> + >> +&sdio { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + bus-width = <4>; >> + cap-sd-highspeed; >> + cap-sdio-irq; >> + disable-wp; >> + keep-power-in-suspend; >> + mmc-pwrseq = <&sdio_pwrseq>; >> + no-mmc; >> + no-sd; >> + non-removable; >> + sd-uhs-sdr104; >> + vmmc-supply = <&vcc_3v3_s3>; >> + vqmmc-supply = <&vcc_1v8_s3>; >> + wakeup-source; >> + status = "okay"; >> + >> + rtl8822cs: wifi@1 { >> + reg = <1>; >> + interrupt-parent = <&gpio0>; >> + interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>; >> + interrupt-names = "host-wake"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&wifi_wake_host_h>; >> + }; >> +}; >> + >> +&sdhci { >> + bus-width = <8>; >> + cap-mmc-highspeed; >> + full-pwr-cycle-in-suspend; >> + mmc-hs400-1_8v; >> + mmc-hs400-enhanced-strobe; >> + no-sdio; >> + no-sd; >> + non-removable; >> + status = "okay"; >> +}; >> + >> +&saradc { >> + vref-supply = <&vcca_1v8_s0>; >> + status = "okay"; >> +}; >> + >> +&u2phy0 { >> + status = "okay"; >> +}; >> + >> +&u2phy0_otg { >> + phy-supply = <&vcc5v0_usb_otg0>; >> + status = "okay"; >> +}; >> + >> +&uart0 { >> + status = "okay"; >> +}; >> + >> +&uart5 { >> + pinctrl-names = "default"; >> + pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>; >> + uart-has-rtscts; >> + status = "okay"; >> + >> + bluetooth { >> + compatible = "realtek,rtl8822cs-bt"; >> + enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; >> + device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>; >> + host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>; >> + }; >> +}; >> + >> +&usbdp_phy { >> + status = "okay"; >> +}; >> + >> +&usb_drd0_dwc3 { >> + dr_mode = "host"; >> + extcon = <&u2phy0>; >> + status = "okay"; >> +}; >> + >> +&vop { >> + status = "okay"; >> +}; >> + >> +&vop_mmu { >> + status = "okay"; >> +}; >> + >> +&vp0 { >> + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { >> + reg = <ROCKCHIP_VOP2_EP_HDMI0>; >> + remote-endpoint = <&hdmi_in_vp0>; >> + }; >> +}; > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-27 1:19 ` Tianling Shen @ 2025-09-27 7:37 ` Diederik de Haas 2025-09-27 9:06 ` Tianling Shen 2025-09-27 13:47 ` Dragan Simic 0 siblings, 2 replies; 10+ messages in thread From: Diederik de Haas @ 2025-09-27 7:37 UTC (permalink / raw) To: Tianling Shen, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel [-- Attachment #1: Type: text/plain, Size: 26320 bytes --] On Sat Sep 27, 2025 at 3:19 AM CEST, Tianling Shen wrote: > On 2025/9/27 0:07, Diederik de Haas wrote: >> On Mon Sep 22, 2025 at 11:15 AM CEST, Tianling Shen wrote: >>> The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway >>> device with two 2.5G, designed and developed by FriendlyElec. >>> >>> Signed-off-by: Tianling Shen <cnsztl@gmail.com> >>> --- >>> arch/arm64/boot/dts/rockchip/Makefile | 1 + >>> .../boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 ++++++++++++++++++ >>> 2 files changed, 861 insertions(+) >>> create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>> >>> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile >>> index ad684e3831bc..2d4a1e29db6f 100644 >>> --- a/arch/arm64/boot/dts/rockchip/Makefile >>> +++ b/arch/arm64/boot/dts/rockchip/Makefile >>> @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb >>> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb >>> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>> new file mode 100644 >>> index 000000000000..731789a69677 >>> --- /dev/null >>> +++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>> @@ -0,0 +1,860 @@ >>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT >>> +/* >>> + * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd. >>> + * (http://www.friendlyelec.com) >>> + * >>> + * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com> >>> + */ >>> + >>> +/dts-v1/; >>> +#include <dt-bindings/gpio/gpio.h> >>> +#include <dt-bindings/input/input.h> >>> +#include <dt-bindings/leds/common.h> >>> +#include <dt-bindings/pinctrl/rockchip.h> >>> +#include <dt-bindings/soc/rockchip,vop2.h> >>> + >>> +#include "rk3576.dtsi" >>> + >>> +/ { >>> + model = "FriendlyElec NanoPi R76S"; >>> + compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576"; >>> + >>> + aliases { >>> + mmc0 = &sdhci; >>> + mmc1 = &sdmmc; >>> + mmc2 = &sdio; >>> + }; >>> + >>> + chosen { >>> + stdout-path = "serial0:1500000n8"; >>> + }; >>> + >>> + gpio-keys { >>> + compatible = "gpio-keys"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&reset_button_pin>; >>> + >>> + button-reset { >>> + label = "reset"; >>> + gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; >>> + debounce-interval = <50>; >>> + linux,code = <KEY_RESTART>; >>> + wakeup-source; >>> + }; >>> + }; >>> + >>> + gpio-leds { >>> + compatible = "gpio-leds"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&lan_led_pin>, <&power_led_pin>, <&wan_led_pin>; >> >> It is recommended to use the labels in the schematics to define the >> pinctl nodes (and thus their references). In quite a lot of cases that's >> indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds >> pinctls. > > I cannot find any specific naming rules from the gpio-keys[1] and > gpio-leds[2] bindings, did I miss any update? > > I think this naming matches the current practice at least in rockchip's > dt tree. There is an unofficial rule/aim: https://lore.kernel.org/linux-rockchip/5360173.ktpJ11cQ8Q@diego/ But granted, there is 'some' inconsistency. And used in f.e. https://lore.kernel.org/linux-rockchip/20250727144409.327740-4-jonas@kwiboo.se/ Where you can just copy the pinctrl labels from the dts[i] and paste that in the schematic document and you're instantly at the right place. Which is the exact purpose of that rule/aim. > 1. > https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.yaml > 2. > https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/leds-gpio.yaml > >> >>> + >>> + led-0 { >>> + color = <LED_COLOR_ID_GREEN>; >>> + function = LED_FUNCTION_LAN; >>> + gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; >>> + }; >>> + >>> + power_led: led-1 { >> >> power_led is never referenced, so you can drop it. >> > > This will be used by some downstream projects but I'm fine to remove it > here. I'm guessing OpenWrt and I have no problem to accomodate them, but I don't know if that should be present in the upstream dts file. And if so, whether that should be mentioned in the commit message (or not). AFAIUI OpenWrt patches the (power-)LED definition anyway. Cheers, Diederik >>> + color = <LED_COLOR_ID_RED>; >>> + function = LED_FUNCTION_POWER; >>> + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; >>> + linux,default-trigger = "heartbeat"; >>> + }; >>> + >>> + led-2 { >>> + color = <LED_COLOR_ID_GREEN>; >>> + function = LED_FUNCTION_WAN; >>> + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; >>> + }; >>> + }; >>> + >>> + hdmi-con { >>> + compatible = "hdmi-connector"; >>> + hdmi-pwr-supply = <&vcc5v_hdmi_tx>; >>> + type = "a"; >>> + >>> + port { >>> + hdmi_con_in: endpoint { >>> + remote-endpoint = <&hdmi_out_con>; >>> + }; >>> + }; >>> + }; >>> + >>> + sdio_pwrseq: sdio-pwrseq { >>> + compatible = "mmc-pwrseq-simple"; >>> + clocks = <&hym8563>; >>> + clock-names = "ext_clock"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&wifi_reg_on_h>; >>> + post-power-on-delay-ms = <200>; >>> + reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + vcc5v_dcin: regulator-vcc5v-dcin { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <5000000>; >>> + regulator-max-microvolt = <5000000>; >>> + regulator-name = "vcc5v_dcin"; >>> + }; >>> + >>> + vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx { >>> + compatible = "regulator-fixed"; >>> + enable-active-high; >>> + gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&hdmi_tx_on_h>; >>> + regulator-min-microvolt = <5000000>; >>> + regulator-max-microvolt = <5000000>; >>> + regulator-name = "vcc5v_hdmi_tx"; >>> + vin-supply = <&vcc5v0_sys_s5>; >>> + }; >>> + >>> + vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <3300000>; >>> + regulator-max-microvolt = <3300000>; >>> + regulator-name = "vcc3v3_rtc_s5"; >>> + vin-supply = <&vcc5v0_sys_s5>; >>> + }; >>> + >>> + vcc5v0_device_s0: regulator-vcc5v0-device-s0 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <5000000>; >>> + regulator-max-microvolt = <5000000>; >>> + regulator-name = "vcc5v0_device_s0"; >>> + vin-supply = <&vcc5v_dcin>; >>> + }; >>> + >>> + vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <5000000>; >>> + regulator-max-microvolt = <5000000>; >>> + regulator-name = "vcc5v0_sys_s5"; >>> + vin-supply = <&vcc5v_dcin>; >>> + }; >>> + >>> + vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 { >>> + compatible = "regulator-fixed"; >>> + enable-active-high; >>> + gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&usb_otg0_pwren_h>; >>> + regulator-min-microvolt = <5000000>; >>> + regulator-max-microvolt = <5000000>; >>> + regulator-name = "vcc5v0_usb_otg0"; >>> + vin-supply = <&vcc5v0_sys_s5>; >>> + }; >>> + >>> + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1100000>; >>> + regulator-max-microvolt = <1100000>; >>> + regulator-name = "vcc_1v1_nldo_s3"; >>> + vin-supply = <&vcc5v0_sys_s5>; >>> + }; >>> + >>> + vcc_1v8_s0: regulator-vcc-1v8-s0 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <1800000>; >>> + regulator-name = "vcc_1v8_s0"; >>> + vin-supply = <&vcc_1v8_s3>; >>> + }; >>> + >>> + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <2000000>; >>> + regulator-max-microvolt = <2000000>; >>> + regulator-name = "vcc_2v0_pldo_s3"; >>> + vin-supply = <&vcc5v0_sys_s5>; >>> + }; >>> + >>> + vcc_3v3_s0: regulator-vcc-3v3-s0 { >>> + compatible = "regulator-fixed"; >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <3300000>; >>> + regulator-max-microvolt = <3300000>; >>> + regulator-name = "vcc_3v3_s0"; >>> + vin-supply = <&vcc_3v3_s3>; >>> + }; >>> +}; >>> + >>> +&combphy0_ps { >>> + status = "okay"; >>> +}; >>> + >>> +&combphy1_psu { >>> + status = "okay"; >>> +}; >>> + >>> +&cpu_b0 { >>> + cpu-supply = <&vdd_cpu_big_s0>; >>> +}; >>> + >>> +&cpu_b1 { >>> + cpu-supply = <&vdd_cpu_big_s0>; >>> +}; >>> + >>> +&cpu_b2 { >>> + cpu-supply = <&vdd_cpu_big_s0>; >>> +}; >>> + >>> +&cpu_b3 { >>> + cpu-supply = <&vdd_cpu_big_s0>; >>> +}; >>> + >>> +&cpu_l0 { >>> + cpu-supply = <&vdd_cpu_lit_s0>; >>> +}; >>> + >>> +&cpu_l1 { >>> + cpu-supply = <&vdd_cpu_lit_s0>; >>> +}; >>> + >>> +&cpu_l2 { >>> + cpu-supply = <&vdd_cpu_lit_s0>; >>> +}; >>> + >>> +&cpu_l3 { >>> + cpu-supply = <&vdd_cpu_lit_s0>; >>> +}; >>> + >>> +&gpu { >>> + mali-supply = <&vdd_gpu_s0>; >>> + status = "okay"; >>> +}; >>> + >>> +&hdmi { >>> + status = "okay"; >>> +}; >>> + >>> +&hdmi_in { >>> + hdmi_in_vp0: endpoint { >>> + remote-endpoint = <&vp0_out_hdmi>; >>> + }; >>> +}; >>> + >>> +&hdmi_out { >>> + hdmi_out_con: endpoint { >>> + remote-endpoint = <&hdmi_con_in>; >>> + }; >>> +}; >>> + >>> +&hdmi_sound { >>> + status = "okay"; >>> +}; >>> + >>> +&hdptxphy { >>> + status = "okay"; >>> +}; >>> + >>> +&i2c1 { >>> + status = "okay"; >>> + >>> + pmic@23 { >>> + compatible = "rockchip,rk806"; >>> + reg = <0x23>; >>> + #gpio-cells = <2>; >>> + gpio-controller; >>> + interrupt-parent = <&gpio0>; >>> + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, >>> + <&rk806_dvs2_null>, <&rk806_dvs3_null>; >>> + system-power-controller; >>> + >>> + vcc1-supply = <&vcc5v0_sys_s5>; >>> + vcc2-supply = <&vcc5v0_sys_s5>; >>> + vcc3-supply = <&vcc5v0_sys_s5>; >>> + vcc4-supply = <&vcc5v0_sys_s5>; >>> + vcc5-supply = <&vcc5v0_sys_s5>; >>> + vcc6-supply = <&vcc5v0_sys_s5>; >>> + vcc7-supply = <&vcc5v0_sys_s5>; >>> + vcc8-supply = <&vcc5v0_sys_s5>; >>> + vcc9-supply = <&vcc5v0_sys_s5>; >>> + vcc10-supply = <&vcc5v0_sys_s5>; >>> + vcc11-supply = <&vcc_2v0_pldo_s3>; >>> + vcc12-supply = <&vcc5v0_sys_s5>; >>> + vcc13-supply = <&vcc_1v1_nldo_s3>; >>> + vcc14-supply = <&vcc_1v1_nldo_s3>; >>> + vcca-supply = <&vcc5v0_sys_s5>; >>> + >>> + rk806_dvs1_null: dvs1-null-pins { >>> + pins = "gpio_pwrctrl1"; >>> + function = "pin_fun0"; >>> + }; >>> + >>> + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { >>> + pins = "gpio_pwrctrl1"; >>> + function = "pin_fun2"; >>> + }; >>> + >>> + rk806_dvs1_rst: dvs1-rst-pins { >>> + pins = "gpio_pwrctrl1"; >>> + function = "pin_fun3"; >>> + }; >>> + >>> + rk806_dvs1_slp: dvs1-slp-pins { >>> + pins = "gpio_pwrctrl1"; >>> + function = "pin_fun1"; >>> + }; >>> + >>> + rk806_dvs2_dvs: dvs2-dvs-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun4"; >>> + }; >>> + >>> + rk806_dvs2_gpio: dvs2-gpio-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun5"; >>> + }; >>> + >>> + rk806_dvs2_null: dvs2-null-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun0"; >>> + }; >>> + >>> + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun2"; >>> + }; >>> + >>> + rk806_dvs2_rst: dvs2-rst-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun3"; >>> + }; >>> + >>> + rk806_dvs2_slp: dvs2-slp-pins { >>> + pins = "gpio_pwrctrl2"; >>> + function = "pin_fun1"; >>> + }; >>> + >>> + rk806_dvs3_dvs: dvs3-dvs-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun4"; >>> + }; >>> + >>> + rk806_dvs3_gpio: dvs3-gpio-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun5"; >>> + }; >>> + >>> + rk806_dvs3_null: dvs3-null-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun0"; >>> + }; >>> + >>> + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun2"; >>> + }; >>> + >>> + rk806_dvs3_rst: dvs3-rst-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun3"; >>> + }; >>> + >>> + rk806_dvs3_slp: dvs3-slp-pins { >>> + pins = "gpio_pwrctrl3"; >>> + function = "pin_fun1"; >>> + }; >>> + >>> + regulators { >>> + vdd_cpu_big_s0: dcdc-reg1 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-enable-ramp-delay = <400>; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <950000>; >>> + regulator-name = "vdd_cpu_big_s0"; >>> + regulator-ramp-delay = <12500>; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdd_npu_s0: dcdc-reg2 { >>> + regulator-boot-on; >>> + regulator-enable-ramp-delay = <400>; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <950000>; >>> + regulator-name = "vdd_npu_s0"; >>> + regulator-ramp-delay = <12500>; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdd_cpu_lit_s0: dcdc-reg3 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <950000>; >>> + regulator-name = "vdd_cpu_lit_s0"; >>> + regulator-ramp-delay = <12500>; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + regulator-suspend-microvolt = <750000>; >>> + }; >>> + }; >>> + >>> + vcc_3v3_s3: dcdc-reg4 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <3300000>; >>> + regulator-max-microvolt = <3300000>; >>> + regulator-name = "vcc_3v3_s3"; >>> + >>> + regulator-state-mem { >>> + regulator-on-in-suspend; >>> + regulator-suspend-microvolt = <3300000>; >>> + }; >>> + }; >>> + >>> + vdd_gpu_s0: dcdc-reg5 { >>> + regulator-boot-on; >>> + regulator-enable-ramp-delay = <400>; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <900000>; >>> + regulator-name = "vdd_gpu_s0"; >>> + regulator-ramp-delay = <12500>; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + regulator-suspend-microvolt = <850000>; >>> + }; >>> + }; >>> + >>> + vddq_ddr_s0: dcdc-reg6 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-name = "vddq_ddr_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdd_logic_s0: dcdc-reg7 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <800000>; >>> + regulator-name = "vdd_logic_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vcc_1v8_s3: dcdc-reg8 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <1800000>; >>> + regulator-name = "vcc_1v8_s3"; >>> + >>> + regulator-state-mem { >>> + regulator-on-in-suspend; >>> + regulator-suspend-microvolt = <1800000>; >>> + }; >>> + }; >>> + >>> + vdd2_ddr_s3: dcdc-reg9 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-name = "vdd2_ddr_s3"; >>> + >>> + regulator-state-mem { >>> + regulator-on-in-suspend; >>> + }; >>> + }; >>> + >>> + vdd_ddr_s0: dcdc-reg10 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <550000>; >>> + regulator-max-microvolt = <1200000>; >>> + regulator-name = "vdd_ddr_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vcca_1v8_s0: pldo-reg1 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <1800000>; >>> + regulator-name = "vcca_1v8_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vcca1v8_pldo2_s0: pldo-reg2 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <1800000>; >>> + regulator-name = "vcca1v8_pldo2_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdda_1v2_s0: pldo-reg3 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1200000>; >>> + regulator-max-microvolt = <1200000>; >>> + regulator-name = "vdda_1v2_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vcca_3v3_s0: pldo-reg4 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <3300000>; >>> + regulator-max-microvolt = <3300000>; >>> + regulator-name = "vcca_3v3_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vccio_sd_s0: pldo-reg5 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <3300000>; >>> + regulator-name = "vccio_sd_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vcca1v8_pldo6_s3: pldo-reg6 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <1800000>; >>> + regulator-name = "vcca1v8_pldo6_s3"; >>> + >>> + regulator-state-mem { >>> + regulator-on-in-suspend; >>> + regulator-suspend-microvolt = <1800000>; >>> + }; >>> + }; >>> + >>> + vdd_0v75_s3: nldo-reg1 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <750000>; >>> + regulator-max-microvolt = <750000>; >>> + regulator-name = "vdd_0v75_s3"; >>> + >>> + regulator-state-mem { >>> + regulator-on-in-suspend; >>> + regulator-suspend-microvolt = <750000>; >>> + }; >>> + }; >>> + >>> + vdda_ddr_pll_s0: nldo-reg2 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <850000>; >>> + regulator-max-microvolt = <850000>; >>> + regulator-name = "vdda_ddr_pll_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdda0v75_hdmi_s0: nldo-reg3 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <837500>; >>> + regulator-max-microvolt = <837500>; >>> + regulator-name = "vdda0v75_hdmi_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdda_0v85_s0: nldo-reg4 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <850000>; >>> + regulator-max-microvolt = <850000>; >>> + regulator-name = "vdda_0v85_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + >>> + vdda_0v75_s0: nldo-reg5 { >>> + regulator-always-on; >>> + regulator-boot-on; >>> + regulator-min-microvolt = <750000>; >>> + regulator-max-microvolt = <750000>; >>> + regulator-name = "vdda_0v75_s0"; >>> + >>> + regulator-state-mem { >>> + regulator-off-in-suspend; >>> + }; >>> + }; >>> + }; >>> + }; >>> +}; >>> + >>> +&i2c2 { >>> + status = "okay"; >>> + >>> + hym8563: rtc@51 { >>> + compatible = "haoyu,hym8563"; >>> + reg = <0x51>; >>> + #clock-cells = <0>; >>> + clock-output-names = "hym8563"; >>> + interrupt-parent = <&gpio0>; >>> + interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&rtc_int_l>; >>> + wakeup-source; >>> + }; >>> +}; >>> + >>> +&pcie0 { >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&pcie0_perstn>; >>> + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; >>> + vpcie3v3-supply = <&vcc_3v3_s3>; >>> + status = "okay"; >>> +}; >>> + >>> +&pcie1 { >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&pcie1_perstn>; >>> + reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; >>> + vpcie3v3-supply = <&vcc_3v3_s3>; >>> + status = "okay"; >>> +}; >>> + >>> +&pinctrl { >>> + bt { >>> + bt_reg_on_h: bt-reg-on-h { >>> + rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + >>> + bt_wake_host_h: bt-wake-host-h { >>> + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>; >>> + }; >>> + >>> + host_wake_bt_h: host-wake-bt-h { >>> + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + }; >>> + >>> + gpio-keys { >>> + reset_button_pin: reset-button-pin { >>> + rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + }; >>> + >>> + gpio-leds { >>> + lan_led_pin: lan-led-pin { >>> + rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + >>> + power_led_pin: power-led-pin { >>> + rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + >>> + wan_led_pin: wan-led-pin { >>> + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + }; >>> + >>> + hdmi { >>> + hdmi_tx_on_h: hdmi-tx-on-h { >>> + rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + }; >>> + >>> + hym8563 { >>> + rtc_int_l: rtc-int-l { >>> + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + }; >>> + >>> + pcie { >>> + pcie0_perstn: pcie0-perstn { >>> + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + >>> + pcie1_perstn: pcie1-perstn { >>> + rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >>> + }; >>> + }; >>> + >>> + usb { >>> + usb_otg0_pwren_h: usb-otg0-pwren-h { >>> + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + }; >>> + >>> + wifi { >>> + wifi_wake_host_h: wifi-wake-host-h { >>> + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; >>> + }; >>> + >>> + wifi_reg_on_h: wifi-reg-on-h { >>> + rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; >>> + }; >>> + }; >>> +}; >>> + >>> +&sai6 { >>> + status = "okay"; >>> +}; >>> + >>> +&sdmmc { >>> + bus-width = <4>; >>> + cap-mmc-highspeed; >>> + cap-sd-highspeed; >>> + disable-wp; >>> + no-mmc; >>> + no-sdio; >>> + sd-uhs-sdr104; >>> + vmmc-supply = <&vcc_3v3_s3>; >>> + vqmmc-supply = <&vccio_sd_s0>; >>> + status = "okay"; >>> +}; >>> + >>> +&sdio { >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + bus-width = <4>; >>> + cap-sd-highspeed; >>> + cap-sdio-irq; >>> + disable-wp; >>> + keep-power-in-suspend; >>> + mmc-pwrseq = <&sdio_pwrseq>; >>> + no-mmc; >>> + no-sd; >>> + non-removable; >>> + sd-uhs-sdr104; >>> + vmmc-supply = <&vcc_3v3_s3>; >>> + vqmmc-supply = <&vcc_1v8_s3>; >>> + wakeup-source; >>> + status = "okay"; >>> + >>> + rtl8822cs: wifi@1 { >>> + reg = <1>; >>> + interrupt-parent = <&gpio0>; >>> + interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>; >>> + interrupt-names = "host-wake"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&wifi_wake_host_h>; >>> + }; >>> +}; >>> + >>> +&sdhci { >>> + bus-width = <8>; >>> + cap-mmc-highspeed; >>> + full-pwr-cycle-in-suspend; >>> + mmc-hs400-1_8v; >>> + mmc-hs400-enhanced-strobe; >>> + no-sdio; >>> + no-sd; >>> + non-removable; >>> + status = "okay"; >>> +}; >>> + >>> +&saradc { >>> + vref-supply = <&vcca_1v8_s0>; >>> + status = "okay"; >>> +}; >>> + >>> +&u2phy0 { >>> + status = "okay"; >>> +}; >>> + >>> +&u2phy0_otg { >>> + phy-supply = <&vcc5v0_usb_otg0>; >>> + status = "okay"; >>> +}; >>> + >>> +&uart0 { >>> + status = "okay"; >>> +}; >>> + >>> +&uart5 { >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>; >>> + uart-has-rtscts; >>> + status = "okay"; >>> + >>> + bluetooth { >>> + compatible = "realtek,rtl8822cs-bt"; >>> + enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; >>> + device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>; >>> + host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>; >>> + }; >>> +}; >>> + >>> +&usbdp_phy { >>> + status = "okay"; >>> +}; >>> + >>> +&usb_drd0_dwc3 { >>> + dr_mode = "host"; >>> + extcon = <&u2phy0>; >>> + status = "okay"; >>> +}; >>> + >>> +&vop { >>> + status = "okay"; >>> +}; >>> + >>> +&vop_mmu { >>> + status = "okay"; >>> +}; >>> + >>> +&vp0 { >>> + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { >>> + reg = <ROCKCHIP_VOP2_EP_HDMI0>; >>> + remote-endpoint = <&hdmi_in_vp0>; >>> + }; >>> +}; >> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-27 7:37 ` Diederik de Haas @ 2025-09-27 9:06 ` Tianling Shen 2025-09-27 13:47 ` Dragan Simic 1 sibling, 0 replies; 10+ messages in thread From: Tianling Shen @ 2025-09-27 9:06 UTC (permalink / raw) To: Diederik de Haas, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Dragan Simic, Jonas Karlman Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel On 2025/9/27 15:37, Diederik de Haas wrote: > On Sat Sep 27, 2025 at 3:19 AM CEST, Tianling Shen wrote: >> On 2025/9/27 0:07, Diederik de Haas wrote: >>> On Mon Sep 22, 2025 at 11:15 AM CEST, Tianling Shen wrote: >>>> The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway >>>> device with two 2.5G, designed and developed by FriendlyElec. >>>> >>>> Signed-off-by: Tianling Shen <cnsztl@gmail.com> >>>> --- >>>> arch/arm64/boot/dts/rockchip/Makefile | 1 + >>>> .../boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 ++++++++++++++++++ >>>> 2 files changed, 861 insertions(+) >>>> create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>>> >>>> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile >>>> index ad684e3831bc..2d4a1e29db6f 100644 >>>> --- a/arch/arm64/boot/dts/rockchip/Makefile >>>> +++ b/arch/arm64/boot/dts/rockchip/Makefile >>>> @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-luckfox-omni3576.dtb >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-m5.dtb >>>> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-roc-pc.dtb >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb >>>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb >>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>>> new file mode 100644 >>>> index 000000000000..731789a69677 >>>> --- /dev/null >>>> +++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts >>>> @@ -0,0 +1,860 @@ >>>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT >>>> +/* >>>> + * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd. >>>> + * (http://www.friendlyelec.com) >>>> + * >>>> + * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com> >>>> + */ >>>> + >>>> +/dts-v1/; >>>> +#include <dt-bindings/gpio/gpio.h> >>>> +#include <dt-bindings/input/input.h> >>>> +#include <dt-bindings/leds/common.h> >>>> +#include <dt-bindings/pinctrl/rockchip.h> >>>> +#include <dt-bindings/soc/rockchip,vop2.h> >>>> + >>>> +#include "rk3576.dtsi" >>>> + >>>> +/ { >>>> + model = "FriendlyElec NanoPi R76S"; >>>> + compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576"; >>>> + >>>> + aliases { >>>> + mmc0 = &sdhci; >>>> + mmc1 = &sdmmc; >>>> + mmc2 = &sdio; >>>> + }; >>>> + >>>> + chosen { >>>> + stdout-path = "serial0:1500000n8"; >>>> + }; >>>> + >>>> + gpio-keys { >>>> + compatible = "gpio-keys"; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&reset_button_pin>; >>>> + >>>> + button-reset { >>>> + label = "reset"; >>>> + gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; >>>> + debounce-interval = <50>; >>>> + linux,code = <KEY_RESTART>; >>>> + wakeup-source; >>>> + }; >>>> + }; >>>> + >>>> + gpio-leds { >>>> + compatible = "gpio-leds"; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&lan_led_pin>, <&power_led_pin>, <&wan_led_pin>; >>> >>> It is recommended to use the labels in the schematics to define the >>> pinctl nodes (and thus their references). In quite a lot of cases that's >>> indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds >>> pinctls. >> >> I cannot find any specific naming rules from the gpio-keys[1] and >> gpio-leds[2] bindings, did I miss any update? >> >> I think this naming matches the current practice at least in rockchip's >> dt tree. > > There is an unofficial rule/aim: > https://lore.kernel.org/linux-rockchip/5360173.ktpJ11cQ8Q@diego/ > But granted, there is 'some' inconsistency. > > And used in f.e. > https://lore.kernel.org/linux-rockchip/20250727144409.327740-4-jonas@kwiboo.se/ > > Where you can just copy the pinctrl labels from the dts[i] and paste > that in the schematic document and you're instantly at the right place. > Which is the exact purpose of that rule/aim. > Oh I see, thanks for the explanation and information, I will update them in v2. >> 1. >> https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.yaml >> 2. >> https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/leds-gpio.yaml >> >>> >>>> + >>>> + led-0 { >>>> + color = <LED_COLOR_ID_GREEN>; >>>> + function = LED_FUNCTION_LAN; >>>> + gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; >>>> + }; >>>> + >>>> + power_led: led-1 { >>> >>> power_led is never referenced, so you can drop it. >>> >> >> This will be used by some downstream projects but I'm fine to remove it >> here. > > I'm guessing OpenWrt and I have no problem to accomodate them, but I > don't know if that should be present in the upstream dts file. And if > so, whether that should be mentioned in the commit message (or not). > AFAIUI OpenWrt patches the (power-)LED definition anyway. > Let's drop it here then ;) Thanks, Tianling. > Cheers, > Diederik > >>>> + color = <LED_COLOR_ID_RED>; >>>> + function = LED_FUNCTION_POWER; >>>> + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>; >>>> + linux,default-trigger = "heartbeat"; >>>> + }; >>>> + >>>> + led-2 { >>>> + color = <LED_COLOR_ID_GREEN>; >>>> + function = LED_FUNCTION_WAN; >>>> + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; >>>> + }; >>>> + }; >>>> + >>>> + hdmi-con { >>>> + compatible = "hdmi-connector"; >>>> + hdmi-pwr-supply = <&vcc5v_hdmi_tx>; >>>> + type = "a"; >>>> + >>>> + port { >>>> + hdmi_con_in: endpoint { >>>> + remote-endpoint = <&hdmi_out_con>; >>>> + }; >>>> + }; >>>> + }; >>>> + >>>> + sdio_pwrseq: sdio-pwrseq { >>>> + compatible = "mmc-pwrseq-simple"; >>>> + clocks = <&hym8563>; >>>> + clock-names = "ext_clock"; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&wifi_reg_on_h>; >>>> + post-power-on-delay-ms = <200>; >>>> + reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; >>>> + }; >>>> + >>>> + vcc5v_dcin: regulator-vcc5v-dcin { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <5000000>; >>>> + regulator-max-microvolt = <5000000>; >>>> + regulator-name = "vcc5v_dcin"; >>>> + }; >>>> + >>>> + vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx { >>>> + compatible = "regulator-fixed"; >>>> + enable-active-high; >>>> + gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&hdmi_tx_on_h>; >>>> + regulator-min-microvolt = <5000000>; >>>> + regulator-max-microvolt = <5000000>; >>>> + regulator-name = "vcc5v_hdmi_tx"; >>>> + vin-supply = <&vcc5v0_sys_s5>; >>>> + }; >>>> + >>>> + vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <3300000>; >>>> + regulator-max-microvolt = <3300000>; >>>> + regulator-name = "vcc3v3_rtc_s5"; >>>> + vin-supply = <&vcc5v0_sys_s5>; >>>> + }; >>>> + >>>> + vcc5v0_device_s0: regulator-vcc5v0-device-s0 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <5000000>; >>>> + regulator-max-microvolt = <5000000>; >>>> + regulator-name = "vcc5v0_device_s0"; >>>> + vin-supply = <&vcc5v_dcin>; >>>> + }; >>>> + >>>> + vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <5000000>; >>>> + regulator-max-microvolt = <5000000>; >>>> + regulator-name = "vcc5v0_sys_s5"; >>>> + vin-supply = <&vcc5v_dcin>; >>>> + }; >>>> + >>>> + vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 { >>>> + compatible = "regulator-fixed"; >>>> + enable-active-high; >>>> + gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&usb_otg0_pwren_h>; >>>> + regulator-min-microvolt = <5000000>; >>>> + regulator-max-microvolt = <5000000>; >>>> + regulator-name = "vcc5v0_usb_otg0"; >>>> + vin-supply = <&vcc5v0_sys_s5>; >>>> + }; >>>> + >>>> + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1100000>; >>>> + regulator-max-microvolt = <1100000>; >>>> + regulator-name = "vcc_1v1_nldo_s3"; >>>> + vin-supply = <&vcc5v0_sys_s5>; >>>> + }; >>>> + >>>> + vcc_1v8_s0: regulator-vcc-1v8-s0 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <1800000>; >>>> + regulator-name = "vcc_1v8_s0"; >>>> + vin-supply = <&vcc_1v8_s3>; >>>> + }; >>>> + >>>> + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <2000000>; >>>> + regulator-max-microvolt = <2000000>; >>>> + regulator-name = "vcc_2v0_pldo_s3"; >>>> + vin-supply = <&vcc5v0_sys_s5>; >>>> + }; >>>> + >>>> + vcc_3v3_s0: regulator-vcc-3v3-s0 { >>>> + compatible = "regulator-fixed"; >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <3300000>; >>>> + regulator-max-microvolt = <3300000>; >>>> + regulator-name = "vcc_3v3_s0"; >>>> + vin-supply = <&vcc_3v3_s3>; >>>> + }; >>>> +}; >>>> + >>>> +&combphy0_ps { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&combphy1_psu { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&cpu_b0 { >>>> + cpu-supply = <&vdd_cpu_big_s0>; >>>> +}; >>>> + >>>> +&cpu_b1 { >>>> + cpu-supply = <&vdd_cpu_big_s0>; >>>> +}; >>>> + >>>> +&cpu_b2 { >>>> + cpu-supply = <&vdd_cpu_big_s0>; >>>> +}; >>>> + >>>> +&cpu_b3 { >>>> + cpu-supply = <&vdd_cpu_big_s0>; >>>> +}; >>>> + >>>> +&cpu_l0 { >>>> + cpu-supply = <&vdd_cpu_lit_s0>; >>>> +}; >>>> + >>>> +&cpu_l1 { >>>> + cpu-supply = <&vdd_cpu_lit_s0>; >>>> +}; >>>> + >>>> +&cpu_l2 { >>>> + cpu-supply = <&vdd_cpu_lit_s0>; >>>> +}; >>>> + >>>> +&cpu_l3 { >>>> + cpu-supply = <&vdd_cpu_lit_s0>; >>>> +}; >>>> + >>>> +&gpu { >>>> + mali-supply = <&vdd_gpu_s0>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&hdmi { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&hdmi_in { >>>> + hdmi_in_vp0: endpoint { >>>> + remote-endpoint = <&vp0_out_hdmi>; >>>> + }; >>>> +}; >>>> + >>>> +&hdmi_out { >>>> + hdmi_out_con: endpoint { >>>> + remote-endpoint = <&hdmi_con_in>; >>>> + }; >>>> +}; >>>> + >>>> +&hdmi_sound { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&hdptxphy { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&i2c1 { >>>> + status = "okay"; >>>> + >>>> + pmic@23 { >>>> + compatible = "rockchip,rk806"; >>>> + reg = <0x23>; >>>> + #gpio-cells = <2>; >>>> + gpio-controller; >>>> + interrupt-parent = <&gpio0>; >>>> + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, >>>> + <&rk806_dvs2_null>, <&rk806_dvs3_null>; >>>> + system-power-controller; >>>> + >>>> + vcc1-supply = <&vcc5v0_sys_s5>; >>>> + vcc2-supply = <&vcc5v0_sys_s5>; >>>> + vcc3-supply = <&vcc5v0_sys_s5>; >>>> + vcc4-supply = <&vcc5v0_sys_s5>; >>>> + vcc5-supply = <&vcc5v0_sys_s5>; >>>> + vcc6-supply = <&vcc5v0_sys_s5>; >>>> + vcc7-supply = <&vcc5v0_sys_s5>; >>>> + vcc8-supply = <&vcc5v0_sys_s5>; >>>> + vcc9-supply = <&vcc5v0_sys_s5>; >>>> + vcc10-supply = <&vcc5v0_sys_s5>; >>>> + vcc11-supply = <&vcc_2v0_pldo_s3>; >>>> + vcc12-supply = <&vcc5v0_sys_s5>; >>>> + vcc13-supply = <&vcc_1v1_nldo_s3>; >>>> + vcc14-supply = <&vcc_1v1_nldo_s3>; >>>> + vcca-supply = <&vcc5v0_sys_s5>; >>>> + >>>> + rk806_dvs1_null: dvs1-null-pins { >>>> + pins = "gpio_pwrctrl1"; >>>> + function = "pin_fun0"; >>>> + }; >>>> + >>>> + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { >>>> + pins = "gpio_pwrctrl1"; >>>> + function = "pin_fun2"; >>>> + }; >>>> + >>>> + rk806_dvs1_rst: dvs1-rst-pins { >>>> + pins = "gpio_pwrctrl1"; >>>> + function = "pin_fun3"; >>>> + }; >>>> + >>>> + rk806_dvs1_slp: dvs1-slp-pins { >>>> + pins = "gpio_pwrctrl1"; >>>> + function = "pin_fun1"; >>>> + }; >>>> + >>>> + rk806_dvs2_dvs: dvs2-dvs-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun4"; >>>> + }; >>>> + >>>> + rk806_dvs2_gpio: dvs2-gpio-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun5"; >>>> + }; >>>> + >>>> + rk806_dvs2_null: dvs2-null-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun0"; >>>> + }; >>>> + >>>> + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun2"; >>>> + }; >>>> + >>>> + rk806_dvs2_rst: dvs2-rst-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun3"; >>>> + }; >>>> + >>>> + rk806_dvs2_slp: dvs2-slp-pins { >>>> + pins = "gpio_pwrctrl2"; >>>> + function = "pin_fun1"; >>>> + }; >>>> + >>>> + rk806_dvs3_dvs: dvs3-dvs-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun4"; >>>> + }; >>>> + >>>> + rk806_dvs3_gpio: dvs3-gpio-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun5"; >>>> + }; >>>> + >>>> + rk806_dvs3_null: dvs3-null-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun0"; >>>> + }; >>>> + >>>> + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun2"; >>>> + }; >>>> + >>>> + rk806_dvs3_rst: dvs3-rst-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun3"; >>>> + }; >>>> + >>>> + rk806_dvs3_slp: dvs3-slp-pins { >>>> + pins = "gpio_pwrctrl3"; >>>> + function = "pin_fun1"; >>>> + }; >>>> + >>>> + regulators { >>>> + vdd_cpu_big_s0: dcdc-reg1 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-enable-ramp-delay = <400>; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <950000>; >>>> + regulator-name = "vdd_cpu_big_s0"; >>>> + regulator-ramp-delay = <12500>; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdd_npu_s0: dcdc-reg2 { >>>> + regulator-boot-on; >>>> + regulator-enable-ramp-delay = <400>; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <950000>; >>>> + regulator-name = "vdd_npu_s0"; >>>> + regulator-ramp-delay = <12500>; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdd_cpu_lit_s0: dcdc-reg3 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <950000>; >>>> + regulator-name = "vdd_cpu_lit_s0"; >>>> + regulator-ramp-delay = <12500>; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + regulator-suspend-microvolt = <750000>; >>>> + }; >>>> + }; >>>> + >>>> + vcc_3v3_s3: dcdc-reg4 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <3300000>; >>>> + regulator-max-microvolt = <3300000>; >>>> + regulator-name = "vcc_3v3_s3"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-on-in-suspend; >>>> + regulator-suspend-microvolt = <3300000>; >>>> + }; >>>> + }; >>>> + >>>> + vdd_gpu_s0: dcdc-reg5 { >>>> + regulator-boot-on; >>>> + regulator-enable-ramp-delay = <400>; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <900000>; >>>> + regulator-name = "vdd_gpu_s0"; >>>> + regulator-ramp-delay = <12500>; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + regulator-suspend-microvolt = <850000>; >>>> + }; >>>> + }; >>>> + >>>> + vddq_ddr_s0: dcdc-reg6 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-name = "vddq_ddr_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdd_logic_s0: dcdc-reg7 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <800000>; >>>> + regulator-name = "vdd_logic_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vcc_1v8_s3: dcdc-reg8 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <1800000>; >>>> + regulator-name = "vcc_1v8_s3"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-on-in-suspend; >>>> + regulator-suspend-microvolt = <1800000>; >>>> + }; >>>> + }; >>>> + >>>> + vdd2_ddr_s3: dcdc-reg9 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-name = "vdd2_ddr_s3"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-on-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdd_ddr_s0: dcdc-reg10 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <550000>; >>>> + regulator-max-microvolt = <1200000>; >>>> + regulator-name = "vdd_ddr_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vcca_1v8_s0: pldo-reg1 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <1800000>; >>>> + regulator-name = "vcca_1v8_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vcca1v8_pldo2_s0: pldo-reg2 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <1800000>; >>>> + regulator-name = "vcca1v8_pldo2_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdda_1v2_s0: pldo-reg3 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1200000>; >>>> + regulator-max-microvolt = <1200000>; >>>> + regulator-name = "vdda_1v2_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vcca_3v3_s0: pldo-reg4 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <3300000>; >>>> + regulator-max-microvolt = <3300000>; >>>> + regulator-name = "vcca_3v3_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vccio_sd_s0: pldo-reg5 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <3300000>; >>>> + regulator-name = "vccio_sd_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vcca1v8_pldo6_s3: pldo-reg6 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <1800000>; >>>> + regulator-max-microvolt = <1800000>; >>>> + regulator-name = "vcca1v8_pldo6_s3"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-on-in-suspend; >>>> + regulator-suspend-microvolt = <1800000>; >>>> + }; >>>> + }; >>>> + >>>> + vdd_0v75_s3: nldo-reg1 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <750000>; >>>> + regulator-max-microvolt = <750000>; >>>> + regulator-name = "vdd_0v75_s3"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-on-in-suspend; >>>> + regulator-suspend-microvolt = <750000>; >>>> + }; >>>> + }; >>>> + >>>> + vdda_ddr_pll_s0: nldo-reg2 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <850000>; >>>> + regulator-max-microvolt = <850000>; >>>> + regulator-name = "vdda_ddr_pll_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdda0v75_hdmi_s0: nldo-reg3 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <837500>; >>>> + regulator-max-microvolt = <837500>; >>>> + regulator-name = "vdda0v75_hdmi_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdda_0v85_s0: nldo-reg4 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <850000>; >>>> + regulator-max-microvolt = <850000>; >>>> + regulator-name = "vdda_0v85_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + >>>> + vdda_0v75_s0: nldo-reg5 { >>>> + regulator-always-on; >>>> + regulator-boot-on; >>>> + regulator-min-microvolt = <750000>; >>>> + regulator-max-microvolt = <750000>; >>>> + regulator-name = "vdda_0v75_s0"; >>>> + >>>> + regulator-state-mem { >>>> + regulator-off-in-suspend; >>>> + }; >>>> + }; >>>> + }; >>>> + }; >>>> +}; >>>> + >>>> +&i2c2 { >>>> + status = "okay"; >>>> + >>>> + hym8563: rtc@51 { >>>> + compatible = "haoyu,hym8563"; >>>> + reg = <0x51>; >>>> + #clock-cells = <0>; >>>> + clock-output-names = "hym8563"; >>>> + interrupt-parent = <&gpio0>; >>>> + interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&rtc_int_l>; >>>> + wakeup-source; >>>> + }; >>>> +}; >>>> + >>>> +&pcie0 { >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&pcie0_perstn>; >>>> + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; >>>> + vpcie3v3-supply = <&vcc_3v3_s3>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&pcie1 { >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&pcie1_perstn>; >>>> + reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; >>>> + vpcie3v3-supply = <&vcc_3v3_s3>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&pinctrl { >>>> + bt { >>>> + bt_reg_on_h: bt-reg-on-h { >>>> + rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + >>>> + bt_wake_host_h: bt-wake-host-h { >>>> + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>; >>>> + }; >>>> + >>>> + host_wake_bt_h: host-wake-bt-h { >>>> + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + }; >>>> + >>>> + gpio-keys { >>>> + reset_button_pin: reset-button-pin { >>>> + rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + }; >>>> + >>>> + gpio-leds { >>>> + lan_led_pin: lan-led-pin { >>>> + rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + >>>> + power_led_pin: power-led-pin { >>>> + rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + >>>> + wan_led_pin: wan-led-pin { >>>> + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + }; >>>> + >>>> + hdmi { >>>> + hdmi_tx_on_h: hdmi-tx-on-h { >>>> + rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + }; >>>> + >>>> + hym8563 { >>>> + rtc_int_l: rtc-int-l { >>>> + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + }; >>>> + >>>> + pcie { >>>> + pcie0_perstn: pcie0-perstn { >>>> + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + >>>> + pcie1_perstn: pcie1-perstn { >>>> + rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; >>>> + }; >>>> + }; >>>> + >>>> + usb { >>>> + usb_otg0_pwren_h: usb-otg0-pwren-h { >>>> + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + }; >>>> + >>>> + wifi { >>>> + wifi_wake_host_h: wifi-wake-host-h { >>>> + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; >>>> + }; >>>> + >>>> + wifi_reg_on_h: wifi-reg-on-h { >>>> + rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; >>>> + }; >>>> + }; >>>> +}; >>>> + >>>> +&sai6 { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&sdmmc { >>>> + bus-width = <4>; >>>> + cap-mmc-highspeed; >>>> + cap-sd-highspeed; >>>> + disable-wp; >>>> + no-mmc; >>>> + no-sdio; >>>> + sd-uhs-sdr104; >>>> + vmmc-supply = <&vcc_3v3_s3>; >>>> + vqmmc-supply = <&vccio_sd_s0>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&sdio { >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + bus-width = <4>; >>>> + cap-sd-highspeed; >>>> + cap-sdio-irq; >>>> + disable-wp; >>>> + keep-power-in-suspend; >>>> + mmc-pwrseq = <&sdio_pwrseq>; >>>> + no-mmc; >>>> + no-sd; >>>> + non-removable; >>>> + sd-uhs-sdr104; >>>> + vmmc-supply = <&vcc_3v3_s3>; >>>> + vqmmc-supply = <&vcc_1v8_s3>; >>>> + wakeup-source; >>>> + status = "okay"; >>>> + >>>> + rtl8822cs: wifi@1 { >>>> + reg = <1>; >>>> + interrupt-parent = <&gpio0>; >>>> + interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>; >>>> + interrupt-names = "host-wake"; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&wifi_wake_host_h>; >>>> + }; >>>> +}; >>>> + >>>> +&sdhci { >>>> + bus-width = <8>; >>>> + cap-mmc-highspeed; >>>> + full-pwr-cycle-in-suspend; >>>> + mmc-hs400-1_8v; >>>> + mmc-hs400-enhanced-strobe; >>>> + no-sdio; >>>> + no-sd; >>>> + non-removable; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&saradc { >>>> + vref-supply = <&vcca_1v8_s0>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&u2phy0 { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&u2phy0_otg { >>>> + phy-supply = <&vcc5v0_usb_otg0>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&uart0 { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&uart5 { >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>; >>>> + uart-has-rtscts; >>>> + status = "okay"; >>>> + >>>> + bluetooth { >>>> + compatible = "realtek,rtl8822cs-bt"; >>>> + enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; >>>> + device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>; >>>> + host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>; >>>> + }; >>>> +}; >>>> + >>>> +&usbdp_phy { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&usb_drd0_dwc3 { >>>> + dr_mode = "host"; >>>> + extcon = <&u2phy0>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&vop { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&vop_mmu { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&vp0 { >>>> + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { >>>> + reg = <ROCKCHIP_VOP2_EP_HDMI0>; >>>> + remote-endpoint = <&hdmi_in_vp0>; >>>> + }; >>>> +}; >>> > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-27 7:37 ` Diederik de Haas 2025-09-27 9:06 ` Tianling Shen @ 2025-09-27 13:47 ` Dragan Simic 2025-09-27 13:52 ` Tianling Shen 1 sibling, 1 reply; 10+ messages in thread From: Dragan Simic @ 2025-09-27 13:47 UTC (permalink / raw) To: Diederik de Haas Cc: Tianling Shen, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Jonas Karlman, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel Hello Diederik and Tianling, On 2025-09-27 09:37, Diederik de Haas wrote: > On Sat Sep 27, 2025 at 3:19 AM CEST, Tianling Shen wrote: >> On 2025/9/27 0:07, Diederik de Haas wrote: >>> It is recommended to use the labels in the schematics to define the >>> pinctl nodes (and thus their references). In quite a lot of cases >>> that's >>> indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds >>> pinctls. >> >> I cannot find any specific naming rules from the gpio-keys[1] and >> gpio-leds[2] bindings, did I miss any update? >> >> I think this naming matches the current practice at least in >> rockchip's >> dt tree. > > There is an unofficial rule/aim: > https://lore.kernel.org/linux-rockchip/5360173.ktpJ11cQ8Q@diego/ > But granted, there is 'some' inconsistency. > > And used in f.e. > https://lore.kernel.org/linux-rockchip/20250727144409.327740-4-jonas@kwiboo.se/ > > Where you can just copy the pinctrl labels from the dts[i] and paste > that in the schematic document and you're instantly at the right place. > Which is the exact purpose of that rule/aim. Is the schematic actually publicly available? I tried searching for it, but found nothing, unfortunately. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-27 13:47 ` Dragan Simic @ 2025-09-27 13:52 ` Tianling Shen 2025-09-27 14:13 ` Dragan Simic 0 siblings, 1 reply; 10+ messages in thread From: Tianling Shen @ 2025-09-27 13:52 UTC (permalink / raw) To: Dragan Simic, Diederik de Haas Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Jonas Karlman, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel Hi Dragan, On 2025/9/27 21:47, Dragan Simic wrote: > Hello Diederik and Tianling, > > On 2025-09-27 09:37, Diederik de Haas wrote: >> On Sat Sep 27, 2025 at 3:19 AM CEST, Tianling Shen wrote: >>> On 2025/9/27 0:07, Diederik de Haas wrote: >>>> It is recommended to use the labels in the schematics to define the >>>> pinctl nodes (and thus their references). In quite a lot of cases >>>> that's >>>> indeed the case, but not for gpio-keys (USER_BUT) or these gpio-leds >>>> pinctls. >>> >>> I cannot find any specific naming rules from the gpio-keys[1] and >>> gpio-leds[2] bindings, did I miss any update? >>> >>> I think this naming matches the current practice at least in rockchip's >>> dt tree. >> >> There is an unofficial rule/aim: >> https://lore.kernel.org/linux-rockchip/5360173.ktpJ11cQ8Q@diego/ >> But granted, there is 'some' inconsistency. >> >> And used in f.e. >> https://lore.kernel.org/linux-rockchip/20250727144409.327740-4- >> jonas@kwiboo.se/ >> >> Where you can just copy the pinctrl labels from the dts[i] and paste >> that in the schematic document and you're instantly at the right place. >> Which is the exact purpose of that rule/aim. > > Is the schematic actually publicly available? I tried searching for > it, but found nothing, unfortunately. The schematic for NanoPi R76S is available at https://wiki.friendlyelec.com/wiki/images/6/60/NanoPi_R76S_LP4X_2411_SCH.pdf For more information please move to https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R76S. Thanks, Tianling. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the FriendlyElec NanoPi R76S 2025-09-27 13:52 ` Tianling Shen @ 2025-09-27 14:13 ` Dragan Simic 0 siblings, 0 replies; 10+ messages in thread From: Dragan Simic @ 2025-09-27 14:13 UTC (permalink / raw) To: Tianling Shen Cc: Diederik de Haas, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, Jonas Karlman, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel On 2025-09-27 15:52, Tianling Shen wrote: > On 2025/9/27 21:47, Dragan Simic wrote: >> On 2025-09-27 09:37, Diederik de Haas wrote: >>> On Sat Sep 27, 2025 at 3:19 AM CEST, Tianling Shen wrote: >>>> On 2025/9/27 0:07, Diederik de Haas wrote: >>>>> It is recommended to use the labels in the schematics to define the >>>>> pinctl nodes (and thus their references). In quite a lot of cases >>>>> that's >>>>> indeed the case, but not for gpio-keys (USER_BUT) or these >>>>> gpio-leds >>>>> pinctls. >>>> >>>> I cannot find any specific naming rules from the gpio-keys[1] and >>>> gpio-leds[2] bindings, did I miss any update? >>>> >>>> I think this naming matches the current practice at least in >>>> rockchip's >>>> dt tree. >>> >>> There is an unofficial rule/aim: >>> https://lore.kernel.org/linux-rockchip/5360173.ktpJ11cQ8Q@diego/ >>> But granted, there is 'some' inconsistency. >>> >>> And used in f.e. >>> https://lore.kernel.org/linux-rockchip/20250727144409.327740-4- >>> jonas@kwiboo.se/ >>> >>> Where you can just copy the pinctrl labels from the dts[i] and paste >>> that in the schematic document and you're instantly at the right >>> place. >>> Which is the exact purpose of that rule/aim. >> >> Is the schematic actually publicly available? I tried searching for >> it, but found nothing, unfortunately. > > The schematic for NanoPi R76S is available at > https://wiki.friendlyelec.com/wiki/images/6/60/NanoPi_R76S_LP4X_2411_SCH.pdf > > For more information please move to > https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R76S. Oh, I see. I'm sorry, somehow I got the NanoPi R76S mixed up with another board whose DT has also been submitted recently, [1] for which I was unable to find the schematic. I already found the R76S schematic, which was actually really easy to do. By the way, it would be good to provide a link to the schematic as a reference in the description of patch 2/2, if there turns out to be v3 of this series. [1] https://lore.kernel.org/linux-rockchip/20250925-print-defog-992c12970b37@spud/T/#t ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] dt-bindings: arm: rockchip: Add FriendlyElec NanoPi R76S 2025-09-22 9:15 [PATCH 1/2] dt-bindings: arm: rockchip: Add FriendlyElec NanoPi R76S Tianling Shen 2025-09-22 9:15 ` [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the " Tianling Shen @ 2025-09-22 20:56 ` Rob Herring (Arm) 1 sibling, 0 replies; 10+ messages in thread From: Rob Herring (Arm) @ 2025-09-22 20:56 UTC (permalink / raw) To: Tianling Shen Cc: Jonas Karlman, linux-arm-kernel, Dragan Simic, linux-rockchip, devicetree, Heiko Stuebner, Conor Dooley, Krzysztof Kozlowski, linux-kernel On Mon, 22 Sep 2025 17:15:08 +0800, Tianling Shen wrote: > The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway > device with two 2.5G, designed and developed by FriendlyElec. > > Add devicetree binding documentation for the FriendlyElec NanoPi R76S > board. > > Signed-off-by: Tianling Shen <cnsztl@gmail.com> > --- > Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++ > 1 file changed, 5 insertions(+) > Acked-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-09-27 14:13 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-22 9:15 [PATCH 1/2] dt-bindings: arm: rockchip: Add FriendlyElec NanoPi R76S Tianling Shen 2025-09-22 9:15 ` [PATCH 2/2] arm64: dts: rockchip: Add devicetree for the " Tianling Shen 2025-09-26 16:07 ` Diederik de Haas 2025-09-27 1:19 ` Tianling Shen 2025-09-27 7:37 ` Diederik de Haas 2025-09-27 9:06 ` Tianling Shen 2025-09-27 13:47 ` Dragan Simic 2025-09-27 13:52 ` Tianling Shen 2025-09-27 14:13 ` Dragan Simic 2025-09-22 20:56 ` [PATCH 1/2] dt-bindings: arm: rockchip: Add " Rob Herring (Arm)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).