* [PATCH v5 0/3] arm64: dts: rockchip: introduce LinkEase EasePi R1
@ 2025-10-09 8:44 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 1/3] dt-bindings: vendor-prefixes: Document LinkEase Liangbin Lian
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-09 8:44 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jjm2473, jbx6244,
andrew
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
LinkEase EasePi R1 [1] is a high-performance mini router.
Specification:
- Rockchip RK3568
- 2GB/4GB LPDDR4 RAM
- 16GB on-board eMMC
- 1x M.2 key for 2280 NVMe (PCIe 3.0)
- 1x USB 3.0 Type-A
- 1x USB 2.0 Type-C (for USB flashing)
- 2x 1000 Base-T (native, RTL8211F)
- 2x 2500 Base-T (PCIe, RTL8125B)
- 1x HDMI 2.0 Output
- 12v DC Jack
- 1x Power key connected to PMIC
- 2x LEDs (one static power supplied, one GPIO controlled)
[1] https://doc.linkease.com/zh/guide/easepi-r1/hardware.html
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
---
Changes in v2:
- Change deprecated "rockchip,system-power-controller" to "system-power-controller"
- Link to v1: https://lore.kernel.org/r/20250925055906.83375-1-jjm2473@gmail.com/
Changes in v3:
- Fix typo ('status = "disable"' -> 'status = "disabled"') found by kernel test robot https://lore.kernel.org/all/202509261328.Grjhp029-lkp@intel.com/
- Link to v2: https://lore.kernel.org/r/20250925092037.13582-1-jjm2473@gmail.com/
Changes in v4:
- Fix missing "Acked-by" message in patch 1/3 and 2/3
- Link to v3: https://lore.kernel.org/r/20250929065714.27741-1-jjm2473@gmail.com/
Changes in v5:
- Change gmac phy-mode to 'rgmii-id' and remove {tx|rx}_delay as suggested by Andrew Lunn <andrew@lunn.ch>
- Fix comments ('not mounted' -> 'not populated') for unpopulated devices as suggested by Andrew Lunn <andrew@lunn.ch>
- Link to v4: https://lore.kernel.org/r/20250930055017.67610-1-jjm2473@gmail.com/
---
Liangbin Lian (3):
dt-bindings: vendor-prefixes: Document LinkEase
dt-bindings: arm: rockchip: Add LinkEase EasePi R1
arm64: dts: rockchip: add LinkEase EasePi R1
.../devicetree/bindings/arm/rockchip.yaml | 5 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../boot/dts/rockchip/rk3568-easepi-r1.dts | 686 ++++++++++++++++++
4 files changed, 694 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-easepi-r1.dts
base-commit: 30d4efb2f5a515a60fe6b0ca85362cbebea21e2f
--
2.51.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v5 1/3] dt-bindings: vendor-prefixes: Document LinkEase
2025-10-09 8:44 [PATCH v5 0/3] arm64: dts: rockchip: introduce LinkEase EasePi R1 Liangbin Lian
@ 2025-10-09 8:44 ` Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 2/3] dt-bindings: arm: rockchip: Add LinkEase EasePi R1 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
2 siblings, 0 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-09 8:44 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jjm2473, jbx6244,
andrew
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Conor Dooley
LinkEase is a company focusing on the research and development of
network equipment and related software and hardware from Shenzhen.
Add vendor prefix for it.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 9ec8947dfcad..db496416b250 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -873,6 +873,8 @@ patternProperties:
description: Lincoln Technology Solutions
"^lineartechnology,.*":
description: Linear Technology
+ "^linkease,.*":
+ description: Shenzhen LinkEase Network Technology Co., Ltd.
"^linksprite,.*":
description: LinkSprite Technologies, Inc.
"^linksys,.*":
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 2/3] dt-bindings: arm: rockchip: Add LinkEase EasePi R1
2025-10-09 8:44 [PATCH v5 0/3] arm64: dts: rockchip: introduce LinkEase EasePi R1 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 1/3] dt-bindings: vendor-prefixes: Document LinkEase Liangbin Lian
@ 2025-10-09 8:44 ` Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
2 siblings, 0 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-09 8:44 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jjm2473, jbx6244,
andrew
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Conor Dooley
LinkEase EasePi R1 is a high-performance mini router based on RK3568.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Liangbin Lian <jjm2473@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 28db6bd6aa5b..ec2271cfb7e1 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.yaml
+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
@@ -726,6 +726,11 @@ properties:
- const: lckfb,tspi-rk3566
- const: rockchip,rk3566
+ - description: LinkEase EasePi R1
+ items:
+ - const: linkease,easepi-r1
+ - const: rockchip,rk3568
+
- description: Luckfox Core3576 Module based boards
items:
- enum:
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 8:44 [PATCH v5 0/3] arm64: dts: rockchip: introduce LinkEase EasePi R1 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 1/3] dt-bindings: vendor-prefixes: Document LinkEase Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 2/3] dt-bindings: arm: rockchip: Add LinkEase EasePi R1 Liangbin Lian
@ 2025-10-09 8:44 ` Liangbin Lian
2025-10-09 13:14 ` Andrew Lunn
` (2 more replies)
2 siblings, 3 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-09 8:44 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jjm2473, jbx6244,
andrew
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
LinkEase EasePi R1 [1] is a high-performance mini router.
Specification:
- Rockchip RK3568
- 2GB/4GB LPDDR4 RAM
- 16GB on-board eMMC
- 1x M.2 key for 2280 NVMe (PCIe 3.0)
- 1x USB 3.0 Type-A
- 1x USB 2.0 Type-C (for USB flashing)
- 2x 1000 Base-T (native, RTL8211F)
- 2x 2500 Base-T (PCIe, RTL8125B)
- 1x HDMI 2.0 Output
- 12v DC Jack
- 1x Power key connected to PMIC
- 2x LEDs (one static power supplied, one GPIO controlled)
[1] https://doc.linkease.com/zh/guide/easepi-r1/hardware.html
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
---
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../boot/dts/rockchip/rk3568-easepi-r1.dts | 686 ++++++++++++++++++
2 files changed, 687 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-easepi-r1.dts
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 099520962ffb..7646ffd7f309 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -127,6 +127,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-nanopi-r3s.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-bigtreetech-cb2-manta.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-bigtreetech-pi2.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-easepi-r1.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-fastrhino-r66s.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-fastrhino-r68s.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-easepi-r1.dts b/arch/arm64/boot/dts/rockchip/rk3568-easepi-r1.dts
new file mode 100644
index 000000000000..d41a691dfd6c
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-easepi-r1.dts
@@ -0,0 +1,686 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/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 "rk3568.dtsi"
+
+/ {
+ model = "LinkEase EasePi R1";
+ compatible = "linkease,easepi-r1", "rockchip,rk3568";
+
+ aliases {
+ mmc0 = &sdmmc0;
+ mmc1 = &sdhci;
+ mmc2 = &sdmmc2;
+
+ ethernet0 = &gmac0;
+ ethernet1 = &gmac1;
+ };
+
+ chosen: chosen {
+ stdout-path = "serial2:1500000n8";
+ };
+
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 0>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+
+ button-recovery {
+ label = "Recovery";
+ linux,code = <KEY_VENDOR>;
+ press-threshold-microvolt = <1750>;
+ };
+ };
+
+ dc_12v: regulator-dc-12v {
+ compatible = "regulator-fixed";
+ regulator-name = "dc_12v";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ };
+
+ vcc5v0_sys: regulator-vcc5v0-sys {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&dc_12v>;
+ };
+
+ vcc3v3_sys: regulator-vcc3v3-sys {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&dc_12v>;
+ };
+
+ pcie30_avdd0v9: regulator-pcie30-avdd0v9 {
+ compatible = "regulator-fixed";
+ regulator-name = "pcie30_avdd0v9";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+ vin-supply = <&vcc3v3_sys>;
+ };
+
+ pcie30_avdd1v8: regulator-pcie30-avdd1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "pcie30_avdd1v8";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vcc3v3_sys>;
+ };
+
+ regulator-vdd0v95-25glan {
+ compatible = "regulator-fixed";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwr_25g_pin>;
+ enable-active-high;
+ gpio = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
+ regulator-name = "vdd0v95_25glan";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <950000>;
+ regulator-boot-on;
+ regulator-always-on;
+ vin-supply = <&vcc3v3_sys>;
+ };
+
+ vcc3v3_nvme: regulator-vcc3v3-nvme {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3_nvme";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ enable-active-high;
+ gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
+ vin-supply = <&dc_12v>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc3v3_nvme_en>;
+ };
+
+ sdio_pwrseq: sdio-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ clocks = <&rk809 1>;
+ clock-names = "ext_clock";
+ pinctrl-names = "default";
+ pinctrl-0 = <&wifi_enable_h>;
+ post-power-on-delay-ms = <200>;
+ reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
+ };
+
+ hdmi-con {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con_in: endpoint {
+ remote-endpoint = <&hdmi_out_con>;
+ };
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&status_led_pin>;
+
+ status_led: led-status {
+ gpios = <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_STATUS;
+ label = "green:status";
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+};
+
+&gmac0 {
+ phy-mode = "rgmii-id";
+ clock_in_out = "input";
+
+ assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
+ assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
+ assigned-clock-rates = <0>, <125000000>;
+ phy-handle = <&rgmii_phy0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gmac0_miim
+ &gmac0_tx_bus2
+ &gmac0_rx_bus2
+ &gmac0_rgmii_clk
+ &gmac0_rgmii_bus>;
+
+ status = "okay";
+};
+
+&gmac1 {
+ phy-mode = "rgmii-id";
+ clock_in_out = "input";
+
+ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
+ assigned-clock-rates = <0>, <125000000>;
+ phy-handle = <&rgmii_phy1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gmac1m1_miim
+ &gmac1m1_tx_bus2
+ &gmac1m1_rx_bus2
+ &gmac1m1_rgmii_clk
+ &gmac1m1_rgmii_bus>;
+
+ status = "okay";
+};
+
+&mdio0 {
+ rgmii_phy0: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0x1>;
+ pinctrl-0 = <ð_phy0_reset_pin>;
+ pinctrl-names = "default";
+ reset-assert-us = <20000>;
+ reset-deassert-us = <100000>;
+ reset-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&mdio1 {
+ rgmii_phy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0x1>;
+ pinctrl-0 = <ð_phy1_reset_pin>;
+ pinctrl-names = "default";
+ reset-assert-us = <20000>;
+ reset-deassert-us = <100000>;
+ reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&combphy0 {
+ status = "okay";
+};
+
+&combphy1 {
+ status = "okay";
+};
+
+&combphy2 {
+ status = "okay";
+};
+
+&cpu0 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu1 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu2 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&cpu3 {
+ cpu-supply = <&vdd_cpu>;
+};
+
+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};
+
+&hdmi {
+ avdd-0v9-supply = <&vdda0v9_image>;
+ avdd-1v8-supply = <&vcca1v8_image>;
+ 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";
+};
+
+&i2c0 {
+ status = "okay";
+
+ vdd_cpu: regulator@1c {
+ compatible = "tcs,tcs4525";
+ reg = <0x1c>;
+ fcs,suspend-voltage-selector = <1>;
+ regulator-name = "vdd_cpu";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1150000>;
+ regulator-ramp-delay = <2300>;
+ vin-supply = <&vcc5v0_sys>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ rk809: pmic@20 {
+ compatible = "rockchip,rk809";
+ reg = <0x20>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+ #clock-cells = <1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pmic_int>;
+ system-power-controller;
+ vcc1-supply = <&vcc3v3_sys>;
+ vcc2-supply = <&vcc3v3_sys>;
+ vcc3-supply = <&vcc3v3_sys>;
+ vcc4-supply = <&vcc3v3_sys>;
+ vcc5-supply = <&vcc3v3_sys>;
+ vcc6-supply = <&vcc3v3_sys>;
+ vcc7-supply = <&vcc3v3_sys>;
+ vcc8-supply = <&vcc3v3_sys>;
+ vcc9-supply = <&vcc3v3_sys>;
+ wakeup-source;
+
+ regulators {
+ vdd_logic: DCDC_REG1 {
+ regulator-name = "vdd_logic";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-initial-mode = <0x2>;
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1350000>;
+ regulator-ramp-delay = <6001>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vdd_gpu: DCDC_REG2 {
+ regulator-name = "vdd_gpu";
+ regulator-always-on;
+ regulator-initial-mode = <0x2>;
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1350000>;
+ regulator-ramp-delay = <6001>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcc_ddr: DCDC_REG3 {
+ regulator-name = "vcc_ddr";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-initial-mode = <0x2>;
+
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ vdd_npu: DCDC_REG4 {
+ regulator-name = "vdd_npu";
+ regulator-initial-mode = <0x2>;
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1350000>;
+ regulator-ramp-delay = <6001>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcc_1v8: DCDC_REG5 {
+ regulator-name = "vcc_1v8";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vdda0v9_image: LDO_REG1 {
+ regulator-name = "vdda0v9_image";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <950000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vdda_0v9: LDO_REG2 {
+ regulator-name = "vdda_0v9";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vdda0v9_pmu: LDO_REG3 {
+ regulator-name = "vdda0v9_pmu";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <900000>;
+ };
+ };
+
+ vccio_acodec: LDO_REG4 {
+ regulator-name = "vccio_acodec";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vccio_sd: LDO_REG5 {
+ regulator-name = "vccio_sd";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcc3v3_pmu: LDO_REG6 {
+ regulator-name = "vcc3v3_pmu";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <3300000>;
+ };
+ };
+
+ vcca_1v8: LDO_REG7 {
+ regulator-name = "vcca_1v8";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcca1v8_pmu: LDO_REG8 {
+ regulator-name = "vcca1v8_pmu";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <1800000>;
+ };
+ };
+
+ vcca1v8_image: LDO_REG9 {
+ regulator-name = "vcca1v8_image";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcc_3v3: SWITCH_REG1 {
+ regulator-name = "vcc_3v3";
+ regulator-always-on;
+ regulator-boot-on;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vcc3v3_sd: SWITCH_REG2 {
+ regulator-name = "vcc3v3_sd";
+ regulator-always-on;
+ regulator-boot-on;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+ };
+
+ };
+};
+
+&i2s0_8ch {
+ status = "okay";
+};
+
+/* ETH3 */
+&pcie2x1 {
+ reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&pcie30phy {
+ data-lanes = <1 2>;
+ status = "okay";
+};
+
+/* ETH2 */
+&pcie3x1 {
+ num-lanes = <1>;
+ reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+/* M.2 Key for 2280 NVMe */
+&pcie3x2 {
+ num-lanes = <1>;
+ reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
+ vpcie3v3-supply = <&vcc3v3_nvme>;
+ status = "okay";
+};
+
+&pinctrl {
+ gmac0 {
+ eth_phy0_reset_pin: eth-phy0-reset-pin {
+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
+ gmac1 {
+ eth_phy1_reset_pin: eth-phy1-reset-pin {
+ rockchip,pins = <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
+
+ gpio-leds {
+ status_led_pin: status-led-pin {
+ rockchip,pins =
+ <2 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ pmic {
+ pmic_int: pmic-int {
+ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
+
+ pcie-nic {
+ pwr_25g_pin: pwr-25g-pin {
+ rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ nvme {
+ vcc3v3_nvme_en: vcc3v3-nvme-en {
+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ sdio-pwrseq {
+ wifi_enable_h: wifi-enable-h {
+ rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+};
+
+&pmu_io_domains {
+ pmuio1-supply = <&vcc3v3_pmu>;
+ pmuio2-supply = <&vcc3v3_pmu>;
+ vccio1-supply = <&vccio_acodec>;
+ vccio3-supply = <&vccio_sd>;
+ vccio4-supply = <&vcc_1v8>;
+ vccio5-supply = <&vcc_3v3>;
+ vccio6-supply = <&vcc_1v8>;
+ vccio7-supply = <&vcc_3v3>;
+ status = "okay";
+};
+
+&saradc {
+ vref-supply = <&vcca_1v8>;
+ status = "okay";
+};
+
+&sdhci {
+ bus-width = <8>;
+ max-frequency = <200000000>;
+ non-removable;
+ pinctrl-names = "default";
+ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
+ status = "okay";
+};
+
+/* Micro SD card slot is not populated */
+&sdmmc0 {
+ max-frequency = <150000000>;
+ no-sdio;
+ no-mmc;
+ bus-width = <4>;
+ cap-mmc-highspeed;
+ cap-sd-highspeed;
+ disable-wp;
+ pinctrl-names = "default";
+ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+ vmmc-supply = <&vcc3v3_sd>;
+ vqmmc-supply = <&vccio_sd>;
+ status = "disabled";
+};
+
+/* Wifi module is not populated */
+&sdmmc2 {
+ max-frequency = <150000000>;
+ bus-width = <4>;
+ disable-wp;
+ cap-sd-highspeed;
+ cap-sdio-irq;
+ keep-power-in-suspend;
+ mmc-pwrseq = <&sdio_pwrseq>;
+ non-removable;
+ pinctrl-names = "default";
+ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;
+ sd-uhs-sdr104;
+ vmmc-supply = <&vcc3v3_sys>;
+ vqmmc-supply = <&vcc_1v8>;
+ status = "disabled";
+};
+
+&tsadc {
+ rockchip,hw-tshut-mode = <1>;
+ rockchip,hw-tshut-polarity = <0>;
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+/* OTG Only USB2.0, Only device mode */
+&usb_host0_xhci {
+ phys = <&usb2phy0_otg>;
+ phy-names = "usb2-phy";
+ extcon = <&usb2phy0>;
+ maximum-speed = "high-speed";
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&usb_host1_xhci {
+ status = "okay";
+};
+
+&usb2phy0 {
+ status = "okay";
+};
+
+&usb2phy0_host {
+ phy-supply = <&vcc5v0_sys>;
+ status = "okay";
+};
+
+&usb2phy0_otg {
+ status = "okay";
+};
+
+&vop {
+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
+ 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] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
@ 2025-10-09 13:14 ` Andrew Lunn
2025-10-09 13:59 ` Russell King (Oracle)
2025-10-13 7:00 ` Chukun Pan
2 siblings, 0 replies; 14+ messages in thread
From: Andrew Lunn @ 2025-10-09 13:14 UTC (permalink / raw)
To: Liangbin Lian
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, devicetree,
linux-arm-kernel, linux-rockchip, linux-kernel
> +&gmac0 {
> + phy-mode = "rgmii-id";
> + clock_in_out = "input";
> +
> + assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
> + assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
> + assigned-clock-rates = <0>, <125000000>;
> + phy-handle = <&rgmii_phy0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&gmac0_miim
> + &gmac0_tx_bus2
> + &gmac0_rx_bus2
> + &gmac0_rgmii_clk
> + &gmac0_rgmii_bus>;
> +
> + status = "okay";
> +};
> +
> +&gmac1 {
> + phy-mode = "rgmii-id";
> + clock_in_out = "input";
> +
> + assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
> + assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
> + assigned-clock-rates = <0>, <125000000>;
> + phy-handle = <&rgmii_phy1>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&gmac1m1_miim
> + &gmac1m1_tx_bus2
> + &gmac1m1_rx_bus2
> + &gmac1m1_rgmii_clk
> + &gmac1m1_rgmii_bus>;
> +
> + status = "okay";
> +};
> +
> +&mdio0 {
> + rgmii_phy0: ethernet-phy@1 {
> + compatible = "ethernet-phy-ieee802.3-c22";
> + reg = <0x1>;
> + pinctrl-0 = <ð_phy0_reset_pin>;
> + pinctrl-names = "default";
> + reset-assert-us = <20000>;
> + reset-deassert-us = <100000>;
> + reset-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
> + };
> +};
> +
> +&mdio1 {
> + rgmii_phy1: ethernet-phy@1 {
> + compatible = "ethernet-phy-ieee802.3-c22";
> + reg = <0x1>;
> + pinctrl-0 = <ð_phy1_reset_pin>;
> + pinctrl-names = "default";
> + reset-assert-us = <20000>;
> + reset-deassert-us = <100000>;
> + reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;
> + };
> +};
For these nodes only:
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
2025-10-09 13:14 ` Andrew Lunn
@ 2025-10-09 13:59 ` Russell King (Oracle)
2025-10-10 3:10 ` Liangbin Lian
2025-10-10 3:20 ` Liangbin Lian
2025-10-13 7:00 ` Chukun Pan
2 siblings, 2 replies; 14+ messages in thread
From: Russell King (Oracle) @ 2025-10-09 13:59 UTC (permalink / raw)
To: Liangbin Lian
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, andrew,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Thu, Oct 09, 2025 at 04:44:16PM +0800, Liangbin Lian wrote:
> +&gmac0 {
> + phy-mode = "rgmii-id";
> + clock_in_out = "input";
...
> +&gmac1 {
> + phy-mode = "rgmii-id";
> + clock_in_out = "input";
I am fine with what is being proposed here, but I think this
clock_in_out property needs fixing. The description for it is thus:
clock_in_out:
description:
For RGMII, it must be "input", means main clock(125MHz)
is not sourced from SoC's PLL, but input from PHY.
For RMII, "input" means PHY provides the reference clock(50MHz),
"output" means GMAC provides the reference clock.
$ref: /schemas/types.yaml#/definitions/string
enum: [input, output]
default: input
The problems that I have here are:
1) the description states that the only possible value for this when in
RGMII mode is "input" which is reasonable, because it's due to the
RGMII specification. The driver code is perfectly able to determine
whether RGMII has been specified, and set bsp_priv->clock_input
itself, relieving DT of this need.
2) bsp_priv->clock_input is only used in gmac_clk_enable() when calling
the SoC specific set_clock_selection() method. Only RK3528, RK3576,
and RK3588 populate this method. Every other SoC supported by this
driver still requires the property:
ret = of_property_read_string(dev->of_node, "clock_in_out", &strings);
if (ret) {
dev_err(dev, "Can not read property: clock_in_out.\n");
bsp_priv->clock_input = true;
} ...
If one doesn't provide it, one gets an error print, which is not nice
I note that the DT binding doesn't list this property as required, so
the code is at odds with the binding.
(I note that your Rockchip SoC is RK3568, which doesn't implement this
method.)
So, taking both these points together, the code should not be printing
an error if "clock_in_out" is missing when either:
a) RGMII is being used (or maybe only when RMII is being used?)
b) the set_clock_selection() method is not present for the SoC variant.
With the driver fixed as indicated above, I then think clock_in_out in
your descriptions becomes unnecessary, and should be removed.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 13:59 ` Russell King (Oracle)
@ 2025-10-10 3:10 ` Liangbin Lian
2025-10-10 3:20 ` Liangbin Lian
1 sibling, 0 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-10 3:10 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, andrew,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Russell King (Oracle) <linux@armlinux.org.uk> 于2025年10月9日周四 21:59写道:
>
> On Thu, Oct 09, 2025 at 04:44:16PM +0800, Liangbin Lian wrote:
> > +&gmac0 {
> > + phy-mode = "rgmii-id";
> > + clock_in_out = "input";
> ...
> > +&gmac1 {
> > + phy-mode = "rgmii-id";
> > + clock_in_out = "input";
>
> I am fine with what is being proposed here, but I think this
> clock_in_out property needs fixing. The description for it is thus:
>
> clock_in_out:
> description:
> For RGMII, it must be "input", means main clock(125MHz)
> is not sourced from SoC's PLL, but input from PHY.
> For RMII, "input" means PHY provides the reference clock(50MHz),
> "output" means GMAC provides the reference clock.
> $ref: /schemas/types.yaml#/definitions/string
> enum: [input, output]
> default: input
>
> The problems that I have here are:
>
> 1) the description states that the only possible value for this when in
> RGMII mode is "input" which is reasonable, because it's due to the
> RGMII specification. The driver code is perfectly able to determine
> whether RGMII has been specified, and set bsp_priv->clock_input
> itself, relieving DT of this need.
>
> 2) bsp_priv->clock_input is only used in gmac_clk_enable() when calling
> the SoC specific set_clock_selection() method. Only RK3528, RK3576,
> and RK3588 populate this method. Every other SoC supported by this
> driver still requires the property:
>
> ret = of_property_read_string(dev->of_node, "clock_in_out", &strings);
> if (ret) {
> dev_err(dev, "Can not read property: clock_in_out.\n");
> bsp_priv->clock_input = true;
> } ...
>
> If one doesn't provide it, one gets an error print, which is not nice
> I note that the DT binding doesn't list this property as required, so
> the code is at odds with the binding.
>
> (I note that your Rockchip SoC is RK3568, which doesn't implement this
> method.)
>
> So, taking both these points together, the code should not be printing
> an error if "clock_in_out" is missing when either:
>
> a) RGMII is being used (or maybe only when RMII is being used?)
> b) the set_clock_selection() method is not present for the SoC variant.
>
> With the driver fixed as indicated above, I then think clock_in_out in
> your descriptions becomes unnecessary, and should be removed.
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
In fact, deleting {tx|rx}_delay also prints errors,
but it does not affect the function.
I agree that these prints on the driver should be fixed.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 13:59 ` Russell King (Oracle)
2025-10-10 3:10 ` Liangbin Lian
@ 2025-10-10 3:20 ` Liangbin Lian
2025-10-13 12:49 ` Russell King (Oracle)
1 sibling, 1 reply; 14+ messages in thread
From: Liangbin Lian @ 2025-10-10 3:20 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, andrew,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Russell King (Oracle) <linux@armlinux.org.uk> 于2025年10月9日周四 21:59写道:
>
> On Thu, Oct 09, 2025 at 04:44:16PM +0800, Liangbin Lian wrote:
> > +&gmac0 {
> > + phy-mode = "rgmii-id";
> > + clock_in_out = "input";
> ...
> > +&gmac1 {
> > + phy-mode = "rgmii-id";
> > + clock_in_out = "input";
>
> I am fine with what is being proposed here, but I think this
> clock_in_out property needs fixing. The description for it is thus:
>
> clock_in_out:
> description:
> For RGMII, it must be "input", means main clock(125MHz)
> is not sourced from SoC's PLL, but input from PHY.
> For RMII, "input" means PHY provides the reference clock(50MHz),
> "output" means GMAC provides the reference clock.
> $ref: /schemas/types.yaml#/definitions/string
> enum: [input, output]
> default: input
>
> The problems that I have here are:
>
> 1) the description states that the only possible value for this when in
> RGMII mode is "input" which is reasonable, because it's due to the
> RGMII specification. The driver code is perfectly able to determine
> whether RGMII has been specified, and set bsp_priv->clock_input
> itself, relieving DT of this need.
>
> 2) bsp_priv->clock_input is only used in gmac_clk_enable() when calling
> the SoC specific set_clock_selection() method. Only RK3528, RK3576,
> and RK3588 populate this method. Every other SoC supported by this
> driver still requires the property:
>
> ret = of_property_read_string(dev->of_node, "clock_in_out", &strings);
> if (ret) {
> dev_err(dev, "Can not read property: clock_in_out.\n");
> bsp_priv->clock_input = true;
> } ...
>
> If one doesn't provide it, one gets an error print, which is not nice
> I note that the DT binding doesn't list this property as required, so
> the code is at odds with the binding.
>
> (I note that your Rockchip SoC is RK3568, which doesn't implement this
> method.)
>
> So, taking both these points together, the code should not be printing
> an error if "clock_in_out" is missing when either:
>
> a) RGMII is being used (or maybe only when RMII is being used?)
> b) the set_clock_selection() method is not present for the SoC variant.
>
> With the driver fixed as indicated above, I then think clock_in_out in
> your descriptions becomes unnecessary, and should be removed.
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
> clock_in_out:
> description:
> For RGMII, it must be "input"
This description does not match the actual situation,
there are many dts using 'output':
https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-bpi-r2-pro.dts#L235
https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dts#L241
https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-fastrhino-r68s.dts#L33
https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dts#L78
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
2025-10-09 13:14 ` Andrew Lunn
2025-10-09 13:59 ` Russell King (Oracle)
@ 2025-10-13 7:00 ` Chukun Pan
2025-10-13 8:51 ` Liangbin Lian
2 siblings, 1 reply; 14+ messages in thread
From: Chukun Pan @ 2025-10-13 7:00 UTC (permalink / raw)
To: jjm2473
Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
linux-kernel, linux-rockchip, Chukun Pan
Hi,
> + regulator-vdd0v95-25glan {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pwr_25g_pin>;
> + enable-active-high;
> + gpio = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
> + regulator-name = "vdd0v95_25glan";
> + regulator-min-microvolt = <950000>;
> + regulator-max-microvolt = <950000>;
> + regulator-boot-on;
> + regulator-always-on;
The property order should be consistent with other nodes.
> + vin-supply = <&vcc3v3_sys>;
> + };
> +
> + vcc3v3_nvme: regulator-vcc3v3-nvme {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc3v3_nvme";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + enable-active-high;
> + gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> + vin-supply = <&dc_12v>;
Same here, keep alphabetical order.
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc3v3_nvme_en>;
> + };
> + status_led: led-status {
> + gpios = <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_GREEN>;
> + function = LED_FUNCTION_STATUS;
> + label = "green:status";
The "label" property is deprecated.
> +&pcie2x1 {
> + reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply is missing.
> + status = "okay";
> +};
> +&pcie3x1 {
> + num-lanes = <1>;
> + reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply is missing.
> + status = "okay";
> +};
> +&sdmmc0 {
> + max-frequency = <150000000>;
max-frequency has been defined in rk356x-base.dtsi
> + no-sdio;
> + no-mmc;
no-mmc and cap-mmc-highspeed are mutually exclusive.
> + bus-width = <4>;
> + cap-mmc-highspeed;
> +/* Micro SD card slot is not populated */
> +/* Wifi module is not populated */
Why would you define them if they aren't on the board?
> +&sdmmc2 {
> + max-frequency = <150000000>;
max-frequency has been defined in rk356x-base.dtsi
> + bus-width = <4>;
> + disable-wp;
disable-wp does not work with sdio
> +&usb2phy0_otg {
phy-supply is missing.
> + status = "okay";
> +};
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-13 7:00 ` Chukun Pan
@ 2025-10-13 8:51 ` Liangbin Lian
2025-10-13 13:00 ` Chukun Pan
0 siblings, 1 reply; 14+ messages in thread
From: Liangbin Lian @ 2025-10-13 8:51 UTC (permalink / raw)
To: Chukun Pan
Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
linux-kernel, linux-rockchip
Chukun Pan <amadeus@jmu.edu.cn> 于2025年10月13日周一 15:01写道:
>
> Hi,
>
> > + regulator-vdd0v95-25glan {
> > + compatible = "regulator-fixed";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pwr_25g_pin>;
> > + enable-active-high;
> > + gpio = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
> > + regulator-name = "vdd0v95_25glan";
> > + regulator-min-microvolt = <950000>;
> > + regulator-max-microvolt = <950000>;
> > + regulator-boot-on;
> > + regulator-always-on;
>
> The property order should be consistent with other nodes.
>
> > + vin-supply = <&vcc3v3_sys>;
> > + };
> > +
> > + vcc3v3_nvme: regulator-vcc3v3-nvme {
> > + compatible = "regulator-fixed";
> > + regulator-name = "vcc3v3_nvme";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + enable-active-high;
> > + gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> > + vin-supply = <&dc_12v>;
>
> Same here, keep alphabetical order.
>
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&vcc3v3_nvme_en>;
> > + };
>
> > + status_led: led-status {
> > + gpios = <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>;
> > + color = <LED_COLOR_ID_GREEN>;
> > + function = LED_FUNCTION_STATUS;
> > + label = "green:status";
>
> The "label" property is deprecated.
>
> > +&pcie2x1 {
> > + reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
>
> vpcie3v3-supply is missing.
>
> > + status = "okay";
> > +};
>
> > +&pcie3x1 {
> > + num-lanes = <1>;
> > + reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>;
>
> vpcie3v3-supply is missing.
>
> > + status = "okay";
> > +};
>
> > +&sdmmc0 {
> > + max-frequency = <150000000>;
>
> max-frequency has been defined in rk356x-base.dtsi
>
> > + no-sdio;
> > + no-mmc;
>
> no-mmc and cap-mmc-highspeed are mutually exclusive.
>
> > + bus-width = <4>;
> > + cap-mmc-highspeed;
>
> > +/* Micro SD card slot is not populated */
> > +/* Wifi module is not populated */
>
> Why would you define them if they aren't on the board?
>
> > +&sdmmc2 {
> > + max-frequency = <150000000>;
>
> max-frequency has been defined in rk356x-base.dtsi
>
> > + bus-width = <4>;
> > + disable-wp;
>
> disable-wp does not work with sdio
>
> > +&usb2phy0_otg {
>
> phy-supply is missing.
>
> > + status = "okay";
> > +};
Chukun Pan:
Hello!
All except usb2phy0_otg will be fixed.
> > +&usb2phy0_otg {
>
> phy-supply is missing.
>
> > + status = "okay";
> > +};
VBUS on usb2phy0_otg is floating, this USB port only works on
device(peripheral) mode.
phy-supply is optional, so this should be fine, right?
Liangbin Lian
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-10 3:20 ` Liangbin Lian
@ 2025-10-13 12:49 ` Russell King (Oracle)
2025-10-13 14:07 ` Liangbin Lian
0 siblings, 1 reply; 14+ messages in thread
From: Russell King (Oracle) @ 2025-10-13 12:49 UTC (permalink / raw)
To: Liangbin Lian
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, andrew,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
On Fri, Oct 10, 2025 at 11:20:08AM +0800, Liangbin Lian wrote:
> Russell King (Oracle) <linux@armlinux.org.uk> 于2025年10月9日周四 21:59写道:
> >
> > On Thu, Oct 09, 2025 at 04:44:16PM +0800, Liangbin Lian wrote:
> > > +&gmac0 {
> > > + phy-mode = "rgmii-id";
> > > + clock_in_out = "input";
> > ...
> > > +&gmac1 {
> > > + phy-mode = "rgmii-id";
> > > + clock_in_out = "input";
> >
> > I am fine with what is being proposed here, but I think this
> > clock_in_out property needs fixing. The description for it is thus:
> >
> > clock_in_out:
> > description:
> > For RGMII, it must be "input", means main clock(125MHz)
> > is not sourced from SoC's PLL, but input from PHY.
> > For RMII, "input" means PHY provides the reference clock(50MHz),
> > "output" means GMAC provides the reference clock.
> > $ref: /schemas/types.yaml#/definitions/string
> > enum: [input, output]
> > default: input
> >
> > The problems that I have here are:
> >
> > 1) the description states that the only possible value for this when in
> > RGMII mode is "input" which is reasonable, because it's due to the
> > RGMII specification. The driver code is perfectly able to determine
> > whether RGMII has been specified, and set bsp_priv->clock_input
> > itself, relieving DT of this need.
> >
> > 2) bsp_priv->clock_input is only used in gmac_clk_enable() when calling
> > the SoC specific set_clock_selection() method. Only RK3528, RK3576,
> > and RK3588 populate this method. Every other SoC supported by this
> > driver still requires the property:
...
> > clock_in_out:
> > description:
> > For RGMII, it must be "input"
>
> This description does not match the actual situation,
> there are many dts using 'output':
> https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-bpi-r2-pro.dts#L235
> https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dts#L241
> https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-fastrhino-r68s.dts#L33
> https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dts#L78
For all of the above, whether it is "input" or "output" has no effect
as these are all rk3568, and rk3568 does not implement the
set_clock_selection() method.
static const struct rk_gmac_ops rk3568_ops = {
.set_phy_intf_sel = rk3568_set_phy_intf_sel,
.set_to_rgmii = rk3568_set_to_rgmii,
.set_to_rmii = rk3568_set_to_rmii,
.set_speed = rk_set_clk_mac_speed,
.regs_valid = true,
.regs = {
0xfe2a0000, /* gmac0 */
0xfe010000, /* gmac1 */
0x0, /* sentinel */
},
};
I'm going to propose:
1) that the driver should only print an error if "clock_in_out" is
missing _and_ the SoC implements the required function.
2) that the driver should print a non-fatal error if this property is
specified in DT _and_ the SoC does not implement the function to
discourage its use.
3) [tr]x_delay should not print an error for non-RGMII phy interface
modes.
I consider it a bug that a driver prints errors for properties that
have not been specified that it does not actually require. By doing
so, it encourages people to add useless properties to their DT
description that will never ever be used (e.g. because they are not
relevant for hardware the operating mode that the board is setup
for.)
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-13 8:51 ` Liangbin Lian
@ 2025-10-13 13:00 ` Chukun Pan
2025-10-13 14:03 ` Liangbin Lian
0 siblings, 1 reply; 14+ messages in thread
From: Chukun Pan @ 2025-10-13 13:00 UTC (permalink / raw)
To: jjm2473
Cc: amadeus, conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
linux-kernel, linux-rockchip
Hi,
> +&pinctrl {
> + gmac0 {
> + eth_phy0_reset_pin: eth-phy0-reset-pin {
> + rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
> + };
> + };
Leave a blank line.
> + gmac1 {
> + eth_phy1_reset_pin: eth-phy1-reset-pin {
> + rockchip,pins = <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;
> + };
> + };
> + gpio-leds {
> + status_led_pin: status-led-pin {
> + rockchip,pins =
No line break required here.
> + <2 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
> + };
> + };
> VBUS on usb2phy0_otg is floating, this USB port only works on
> device (peripheral) mode.
> phy-supply is optional, so this should be fine, right?
Yes, if there is no log like this:
supply phy not found, using dummy regulator
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-13 13:00 ` Chukun Pan
@ 2025-10-13 14:03 ` Liangbin Lian
0 siblings, 0 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-13 14:03 UTC (permalink / raw)
To: Chukun Pan
Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
linux-kernel, linux-rockchip
Chukun Pan <amadeus@jmu.edu.cn> 于2025年10月13日周一 21:00写道:
>
> Hi,
>
> > +&pinctrl {
> > + gmac0 {
> > + eth_phy0_reset_pin: eth-phy0-reset-pin {
> > + rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
> > + };
> > + };
>
> Leave a blank line.
>
> > + gmac1 {
> > + eth_phy1_reset_pin: eth-phy1-reset-pin {
> > + rockchip,pins = <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;
> > + };
> > + };
>
> > + gpio-leds {
> > + status_led_pin: status-led-pin {
> > + rockchip,pins =
>
> No line break required here.
>
> > + <2 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
> > + };
> > + };
>
> > VBUS on usb2phy0_otg is floating, this USB port only works on
> > device (peripheral) mode.
> > phy-supply is optional, so this should be fine, right?
>
> Yes, if there is no log like this:
> supply phy not found, using dummy regulator
...
> > VBUS on usb2phy0_otg is floating, this USB port only works on
> > device (peripheral) mode.
> > phy-supply is optional, so this should be fine, right?
>
> Yes, if there is no log like this:
> supply phy not found, using dummy regulator
I have checked the log, 'supply phy not found, using dummy regulator'
not present on usb, but present on gmac.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: rockchip: add LinkEase EasePi R1
2025-10-13 12:49 ` Russell King (Oracle)
@ 2025-10-13 14:07 ` Liangbin Lian
0 siblings, 0 replies; 14+ messages in thread
From: Liangbin Lian @ 2025-10-13 14:07 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: robh, krzk+dt, conor+dt, heiko, quentin.schulz, kever.yang, naoki,
honyuenkwun, inindev, ivan8215145640, neil.armstrong, mani,
dsimic, pbrobinson, alchark, didi.debian, jbx6244, andrew,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Russell King (Oracle) <linux@armlinux.org.uk> 于2025年10月13日周一 20:49写道:
>
> On Fri, Oct 10, 2025 at 11:20:08AM +0800, Liangbin Lian wrote:
> > Russell King (Oracle) <linux@armlinux.org.uk> 于2025年10月9日周四 21:59写道:
> > >
> > > On Thu, Oct 09, 2025 at 04:44:16PM +0800, Liangbin Lian wrote:
> > > > +&gmac0 {
> > > > + phy-mode = "rgmii-id";
> > > > + clock_in_out = "input";
> > > ...
> > > > +&gmac1 {
> > > > + phy-mode = "rgmii-id";
> > > > + clock_in_out = "input";
> > >
> > > I am fine with what is being proposed here, but I think this
> > > clock_in_out property needs fixing. The description for it is thus:
> > >
> > > clock_in_out:
> > > description:
> > > For RGMII, it must be "input", means main clock(125MHz)
> > > is not sourced from SoC's PLL, but input from PHY.
> > > For RMII, "input" means PHY provides the reference clock(50MHz),
> > > "output" means GMAC provides the reference clock.
> > > $ref: /schemas/types.yaml#/definitions/string
> > > enum: [input, output]
> > > default: input
> > >
> > > The problems that I have here are:
> > >
> > > 1) the description states that the only possible value for this when in
> > > RGMII mode is "input" which is reasonable, because it's due to the
> > > RGMII specification. The driver code is perfectly able to determine
> > > whether RGMII has been specified, and set bsp_priv->clock_input
> > > itself, relieving DT of this need.
> > >
> > > 2) bsp_priv->clock_input is only used in gmac_clk_enable() when calling
> > > the SoC specific set_clock_selection() method. Only RK3528, RK3576,
> > > and RK3588 populate this method. Every other SoC supported by this
> > > driver still requires the property:
> ...
> > > clock_in_out:
> > > description:
> > > For RGMII, it must be "input"
> >
> > This description does not match the actual situation,
> > there are many dts using 'output':
> > https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-bpi-r2-pro.dts#L235
> > https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dts#L241
> > https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-fastrhino-r68s.dts#L33
> > https://elixir.bootlin.com/linux/v6.17/source/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dts#L78
>
> For all of the above, whether it is "input" or "output" has no effect
> as these are all rk3568, and rk3568 does not implement the
> set_clock_selection() method.
>
> static const struct rk_gmac_ops rk3568_ops = {
> .set_phy_intf_sel = rk3568_set_phy_intf_sel,
> .set_to_rgmii = rk3568_set_to_rgmii,
> .set_to_rmii = rk3568_set_to_rmii,
> .set_speed = rk_set_clk_mac_speed,
> .regs_valid = true,
> .regs = {
> 0xfe2a0000, /* gmac0 */
> 0xfe010000, /* gmac1 */
> 0x0, /* sentinel */
> },
> };
>
> I'm going to propose:
>
> 1) that the driver should only print an error if "clock_in_out" is
> missing _and_ the SoC implements the required function.
>
> 2) that the driver should print a non-fatal error if this property is
> specified in DT _and_ the SoC does not implement the function to
> discourage its use.
>
> 3) [tr]x_delay should not print an error for non-RGMII phy interface
> modes.
>
> I consider it a bug that a driver prints errors for properties that
> have not been specified that it does not actually require. By doing
> so, it encourages people to add useless properties to their DT
> description that will never ever be used (e.g. because they are not
> relevant for hardware the operating mode that the board is setup
> for.)
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
I will remove clock_in_out, its default value is 'input'.
After removing it, there will only be an error log, which will not
affect the function.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-10-13 14:07 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-09 8:44 [PATCH v5 0/3] arm64: dts: rockchip: introduce LinkEase EasePi R1 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 1/3] dt-bindings: vendor-prefixes: Document LinkEase Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 2/3] dt-bindings: arm: rockchip: Add LinkEase EasePi R1 Liangbin Lian
2025-10-09 8:44 ` [PATCH v5 3/3] arm64: dts: rockchip: add " Liangbin Lian
2025-10-09 13:14 ` Andrew Lunn
2025-10-09 13:59 ` Russell King (Oracle)
2025-10-10 3:10 ` Liangbin Lian
2025-10-10 3:20 ` Liangbin Lian
2025-10-13 12:49 ` Russell King (Oracle)
2025-10-13 14:07 ` Liangbin Lian
2025-10-13 7:00 ` Chukun Pan
2025-10-13 8:51 ` Liangbin Lian
2025-10-13 13:00 ` Chukun Pan
2025-10-13 14:03 ` Liangbin Lian
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).