linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
@ 2025-08-18 10:00 Chukun Pan
  2025-08-18 10:00 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add HINLINK Chukun Pan
                   ` (5 more replies)
  0 siblings, 6 replies; 24+ messages in thread
From: Chukun Pan @ 2025-08-18 10:00 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

The HINLINK H66K and H68K are development boards with the Rockchip
RK3568 SoC. These boards are all SoM plus expansion board structures.

Both boards can be booted from eMMC or SD-card using the
U-Boot 2025.07 generic-rk3568 target.

The SoM board has CPU, RAM, eMMC and RK809 PMIC.
There is no schematic for this part.

The rest of the schematic can be found here:
https://www.hinlink.cn/wp-content/uploads/2024/03/20250329151432672651.pdf
https://files.seeedstudio.com/wiki/LinkStar_V2/H68K_V2_Schematic.pdf

It should be noted that there is a version of SeeedStudio called
LinkStar H68K, which is different from HINLINK H68K only in the shell.

The HINLINK H68K has two versions distinguished by the shell, and there
is no actual difference. This series is tested on H68K and H68K-V2.

difference |      H66K/H68K    |  H66K/H68K-V2
           | 1x USB 3.0 Type-A | 1x USB 3.0 Type-A
    USB    | 2x USB 2.0 Type-A | 1x USB 2.0 Type-A
           |                   | 1x USB 2.0 (M.2 slot)

Chukun Pan (4):
  dt-bindings: vendor-prefixes: Add HINLINK
  dt-bindings: arm: rockchip: Add HINLINK H66K / H68K
  arm64: dts: rockchip: Add HINLINK H68K
  arm64: dts: rockchip: Add HINLINK H66K

 .../devicetree/bindings/arm/rockchip.yaml     |   7 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 arch/arm64/boot/dts/rockchip/Makefile         |   2 +
 .../boot/dts/rockchip/rk3568-hinlink-h66k.dts |  10 +
 .../boot/dts/rockchip/rk3568-hinlink-h68k.dts |  83 +++
 .../boot/dts/rockchip/rk3568-hinlink-opc.dtsi | 666 ++++++++++++++++++
 6 files changed, 770 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi

-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/4] dt-bindings: vendor-prefixes: Add HINLINK
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
@ 2025-08-18 10:00 ` Chukun Pan
  2025-08-18 10:00 ` [PATCH 2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K Chukun Pan
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 24+ messages in thread
From: Chukun Pan @ 2025-08-18 10:00 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

Add vendor prefix for HINLINK, which is an SBC manufacturer.

Link: https://www.hinlink.cn/
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
 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 a92261b10c52..7ce1970d3125 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -648,6 +648,8 @@ patternProperties:
     description: HiDeep Inc.
   "^himax,.*":
     description: Himax Technologies, Inc.
+  "^hinlink,.*":
+    description: Shenzhen HINLINK Technology Co., Ltd.
   "^hirschmann,.*":
     description: Hirschmann Automation and Control GmbH
   "^hisi,.*":
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
  2025-08-18 10:00 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add HINLINK Chukun Pan
@ 2025-08-18 10:00 ` Chukun Pan
  2025-08-18 10:00 ` [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K Chukun Pan
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 24+ messages in thread
From: Chukun Pan @ 2025-08-18 10:00 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

The HINLINK H66K/H68K are 2.5GbE SBC based on the RK3568 SoC.
Add devicetree binding documentation for them.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
 Documentation/devicetree/bindings/arm/rockchip.yaml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml
index 28db6bd6aa5b..870c318fc8d4 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.yaml
+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
@@ -683,6 +683,13 @@ properties:
           - const: hardkernel,odroid-m2
           - const: rockchip,rk3588s
 
+      - description: HINLINK H66K / H68K
+        items:
+          - enum:
+              - hinlink,h66k
+              - hinlink,h68k
+          - const: rockchip,rk3568
+
       - description: Hugsun X99 TV Box
         items:
           - const: hugsun,x99
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
  2025-08-18 10:00 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add HINLINK Chukun Pan
  2025-08-18 10:00 ` [PATCH 2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K Chukun Pan
@ 2025-08-18 10:00 ` Chukun Pan
  2025-08-30 21:14   ` Erik Beck
  2025-08-18 10:00 ` [PATCH 4/4] arm64: dts: rockchip: Add HINLINK H66K Chukun Pan
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 24+ messages in thread
From: Chukun Pan @ 2025-08-18 10:00 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

The HINLINK H68K is a development board with the
Rockchip RK3568 SoC. It has the following features:

- 2/4GB LPDDR4
- 1x HDMI Type A
- 3.5mm jack with mic
- 1x PCIE 2.0 WiFi slot
- 1x USB 3.0, 2x USB 2.0
- 2x 1GbE RTL8211F Ethernet
- 2x 2.5GbE RTL8125B Ethernet
- MicroSD card slot / eMMC 32GB

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../boot/dts/rockchip/rk3568-hinlink-h68k.dts |  83 +++
 .../boot/dts/rockchip/rk3568-hinlink-opc.dtsi | 666 ++++++++++++++++++
 3 files changed, 750 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi

diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 099520962ffb..09c810cb64a4 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -130,6 +130,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.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
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-hinlink-h68k.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-lubancat-2.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mecsbc.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
new file mode 100644
index 000000000000..793ee651b868
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
@@ -0,0 +1,83 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3568-hinlink-opc.dtsi"
+
+/ {
+	model = "HINLINK H68K";
+	compatible = "hinlink,h68k", "rockchip,rk3568";
+
+	aliases {
+		ethernet0 = &gmac0;
+		ethernet1 = &gmac1;
+	};
+};
+
+&gmac0 {
+	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
+	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
+	assigned-clock-rates = <0>, <125000000>;
+	clock_in_out = "output";
+	phy-handle = <&rgmii_phy0>;
+	phy-mode = "rgmii-id";
+	phy-supply = <&vcc3v3_sys>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&gmac0_miim
+		     &gmac0_tx_bus2
+		     &gmac0_rx_bus2
+		     &gmac0_rgmii_clk
+		     &gmac0_rgmii_bus
+		     &gmac0_rstn>;
+	status = "okay";
+};
+
+&gmac1 {
+	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
+	assigned-clock-rates = <0>, <125000000>;
+	clock_in_out = "output";
+	phy-handle = <&rgmii_phy1>;
+	phy-mode = "rgmii-id";
+	phy-supply = <&vcc3v3_sys>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&gmac1m1_miim
+		     &gmac1m1_tx_bus2
+		     &gmac1m1_rx_bus2
+		     &gmac1m1_rgmii_clk
+		     &gmac1m1_rgmii_bus
+		     &gmac1_rstn>;
+	status = "okay";
+};
+
+&mdio0 {
+	rgmii_phy0: ethernet-phy@1 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x1>;
+		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>;
+		reset-assert-us = <20000>;
+		reset-deassert-us = <100000>;
+		reset-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>;
+	};
+};
+
+&pinctrl {
+	gmac {
+		gmac0_rstn: gmac0-rstn {
+			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		gmac1_rstn: gmac1-rstn {
+			rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi
new file mode 100644
index 000000000000..14f3839ca091
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi
@@ -0,0 +1,666 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+#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"
+
+/ {
+	aliases {
+		mmc0 = &sdhci;
+		mmc1 = &sdmmc0;
+	};
+
+	chosen {
+		stdout-path = "serial2:1500000n8";
+	};
+
+	hdmi-con {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con_in: endpoint {
+				remote-endpoint = <&hdmi_out_con>;
+			};
+		};
+	};
+
+	ir-receiver {
+		compatible = "gpio-ir-receiver";
+		gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pwm3_ir_m0>;
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		pinctrl-names = "default";
+		pinctrl-0 = <&factory>;
+
+		button-factory {
+			label = "factory";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
+			debounce-interval = <50>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&green_led>, <&red_led>, <&work_led>;
+
+		led-0 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "netdev";
+		};
+
+		led-1 {
+			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_DISK;
+			gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
+		};
+
+		led-2 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "default-on";
+		};
+	};
+
+	vcc0v9_2g5: regulator-0v9-vcc-2g5 {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc0v9_2g5";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <900000>;
+		regulator-max-microvolt = <900000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+
+	vcc12v_dcinp: regulator-12v-vcc-dcinp {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc12v_dcinp";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+	};
+
+	vcc3v3_pi6c_05: regulator-3v3-vcc-pi6c-05 {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&lan_power_en>;
+		regulator-name = "vcc3v3_pi6c_05";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+
+	vcc3v3_sd: regulator-3v3-vcc-sd {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&sd_pwren>;
+		regulator-name = "vcc3v3_sd";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc3v3_sys>;
+	};
+
+	vcc3v3_sys: regulator-3v3-vcc-sys {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+
+	vcc5v0_sys: regulator-5v0-vcc-sys {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc12v_dcinp>;
+	};
+
+	vcc5v0_usb30_otg0: regulator-5v0-vcc-usb30-otg0 {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&usb_power_en>;
+		regulator-name = "vcc5v0_usb30_otg0";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+};
+
+&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>;
+		#clock-cells = <1>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_int>;
+		system-power-controller;
+		wakeup-source;
+
+		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>;
+
+		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-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;
+				};
+			};
+
+			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 = <900000>;
+				regulator-max-microvolt = <900000>;
+
+				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-always-on;
+				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: SWITCH_REG2 {
+				regulator-name = "vcc3v3";
+				regulator-always-on;
+				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+		};
+	};
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2m1_xfer>;
+	status = "okay";
+};
+
+&i2s0_8ch {
+	status = "okay";
+};
+
+&pcie2x1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&wifi_perstn>;
+	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
+	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
+	status = "okay";
+};
+
+&pcie30phy {
+	data-lanes = <1 2>;
+	status = "okay";
+};
+
+&pcie3x1 {
+	num-lanes = <1>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&lan_resetb>;
+	reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
+	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
+	status = "okay";
+};
+
+&pcie3x2 {
+	num-lanes = <1>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&lan_reseta>;
+	reset-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_HIGH>;
+	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
+	status = "okay";
+};
+
+&pinctrl {
+	keys {
+		factory: factory {
+			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+
+	leds {
+		green_led: green-led {
+			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		red_led: red-led {
+			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		work_led: work-led {
+			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	ir {
+		pwm3_ir_m0: pwm3-ir-m0 {
+			rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	mmc {
+		sd_pwren: sd-pwren {
+			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pcie {
+		lan_power_en: lan-power-en {
+			rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		lan_reseta: lan-reseta {
+			rockchip,pins = <2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		lan_resetb: lan-resetb {
+			rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		wifi_perstn: wifi-perstn {
+			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pmic {
+		pmic_int: pmic-int {
+			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+
+	usb {
+		usb_power_en: usb-power-en {
+			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+};
+
+&pmu_io_domains {
+	pmuio1-supply = <&vcc3v3_pmu>;
+	pmuio2-supply = <&vcc3v3_pmu>;
+	vccio1-supply = <&vccio_acodec>;
+	vccio2-supply = <&vcc_1v8>;
+	vccio3-supply = <&vccio_sd>;
+	vccio4-supply = <&vcc_1v8>;
+	vccio5-supply = <&vcc_3v3>;
+	vccio6-supply = <&vcc_1v8>;
+	vccio7-supply = <&vcc_3v3>;
+	status = "okay";
+};
+
+&pwm0 {
+	status = "okay";
+};
+
+&saradc {
+	vref-supply = <&vcca_1v8>;
+	status = "okay";
+};
+
+/* Via Type-C adapter */
+&sata0 {
+	status = "okay";
+};
+
+&sdhci {
+	bus-width = <8>;
+	cap-mmc-highspeed;
+	max-frequency = <200000000>;
+	mmc-hs200-1_8v;
+	non-removable;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
+	vmmc-supply = <&vcc_3v3>;
+	vqmmc-supply = <&vcc_1v8>;
+	status = "okay";
+};
+
+&sdmmc0 {
+	bus-width = <4>;
+	cap-sd-highspeed;
+	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+	disable-wp;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+	sd-uhs-sdr50;
+	vmmc-supply = <&vcc3v3_sd>;
+	vqmmc-supply = <&vccio_sd>;
+	status = "okay";
+};
+
+&tsadc {
+	rockchip,hw-tshut-mode = <1>;
+	rockchip,hw-tshut-polarity = <0>;
+	status = "okay";
+};
+
+&uart2 {
+	status = "okay";
+};
+
+&usb_host0_ehci {
+	status = "okay";
+};
+
+&usb_host0_ohci {
+	status = "okay";
+};
+
+&usb_host1_ehci {
+	status = "okay";
+};
+
+&usb_host1_ohci {
+	status = "okay";
+};
+
+&usb_host1_xhci {
+	status = "okay";
+};
+
+&usb2phy0 {
+	status = "okay";
+};
+
+&usb2phy0_host {
+	phy-supply = <&vcc5v0_usb30_otg0>;
+	status = "okay";
+};
+
+&usb2phy1 {
+	status = "okay";
+};
+
+&usb2phy1_host {
+	phy-supply = <&vcc5v0_usb30_otg0>;
+	status = "okay";
+};
+
+&usb2phy1_otg {
+	phy-supply = <&vcc5v0_usb30_otg0>;
+	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.25.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 4/4] arm64: dts: rockchip: Add HINLINK H66K
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
                   ` (2 preceding siblings ...)
  2025-08-18 10:00 ` [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K Chukun Pan
@ 2025-08-18 10:00 ` Chukun Pan
  2025-08-18 17:27 ` [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Conor Dooley
  2025-08-24 10:54 ` Heiko Stuebner
  5 siblings, 0 replies; 24+ messages in thread
From: Chukun Pan @ 2025-08-18 10:00 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

The HINLINK H66K is a development board with the
Rockchip RK3568 SoC. It has the following features:

- 2/4GB LPDDR4
- 1x HDMI Type A
- 3.5mm jack with mic
- 1x PCIE 2.0 WiFi slot
- 1x USB 3.0, 2x USB 2.0
- 2x 2.5GbE RTL8125B Ethernet
- MicroSD card slot / eMMC 32GB

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
 arch/arm64/boot/dts/rockchip/Makefile                |  1 +
 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts | 10 ++++++++++
 2 files changed, 11 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts

diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 09c810cb64a4..93e547a1c77b 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -130,6 +130,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.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
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-hinlink-h66k.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-hinlink-h68k.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-lubancat-2.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mecsbc.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts
new file mode 100644
index 000000000000..bc51123d53f5
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h66k.dts
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3568-hinlink-opc.dtsi"
+
+/ {
+	model = "HINLINK H66K";
+	compatible = "hinlink,h66k", "rockchip,rk3568";
+};
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
                   ` (3 preceding siblings ...)
  2025-08-18 10:00 ` [PATCH 4/4] arm64: dts: rockchip: Add HINLINK H66K Chukun Pan
@ 2025-08-18 17:27 ` Conor Dooley
  2025-08-24 10:54 ` Heiko Stuebner
  5 siblings, 0 replies; 24+ messages in thread
From: Conor Dooley @ 2025-08-18 17:27 UTC (permalink / raw)
  To: Chukun Pan
  Cc: Heiko Stuebner, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

[-- Attachment #1: Type: text/plain, Size: 216 bytes --]

On Mon, Aug 18, 2025 at 06:00:05PM +0800, Chukun Pan wrote:

>   dt-bindings: vendor-prefixes: Add HINLINK
>   dt-bindings: arm: rockchip: Add HINLINK H66K / H68K

Acked-by: Conor Dooley <conor.dooley@microchip.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
                   ` (4 preceding siblings ...)
  2025-08-18 17:27 ` [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Conor Dooley
@ 2025-08-24 10:54 ` Heiko Stuebner
  2025-08-30 21:11   ` Erik Beck
  5 siblings, 1 reply; 24+ messages in thread
From: Heiko Stuebner @ 2025-08-24 10:54 UTC (permalink / raw)
  To: Chukun Pan
  Cc: Heiko Stuebner, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree


On Mon, 18 Aug 2025 18:00:05 +0800, Chukun Pan wrote:
> The HINLINK H66K and H68K are development boards with the Rockchip
> RK3568 SoC. These boards are all SoM plus expansion board structures.
> 
> Both boards can be booted from eMMC or SD-card using the
> U-Boot 2025.07 generic-rk3568 target.
> 
> The SoM board has CPU, RAM, eMMC and RK809 PMIC.
> There is no schematic for this part.
> 
> [...]

Applied, thanks!

[1/4] dt-bindings: vendor-prefixes: Add HINLINK
      commit: 7d11b8c260ea68ce8f420ad467b04b21ea34b011
[2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K
      commit: 4bef07b79ab1ef7d963eaa2c37948030e418d538
[3/4] arm64: dts: rockchip: Add HINLINK H68K
      commit: 86a504b82f8d0e34f99ab9607712e7942c919fa3
[4/4] arm64: dts: rockchip: Add HINLINK H66K
      commit: bb9ef44f05c9558d58e3c9da141e93af1aa11c1f

Best regards,
-- 
Heiko Stuebner <heiko@sntech.de>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-24 10:54 ` Heiko Stuebner
@ 2025-08-30 21:11   ` Erik Beck
  2025-08-30 21:26     ` Andrew Lunn
  0 siblings, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-08-30 21:11 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: Chukun Pan, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

On Sun, 24 Aug 2025 12:54:40 +0200
Heiko Stuebner <heiko@sntech.de> wrote:

> On Mon, 18 Aug 2025 18:00:05 +0800, Chukun Pan wrote:
> > The HINLINK H66K and H68K are development boards with the Rockchip
> > RK3568 SoC. These boards are all SoM plus expansion board structures.
> > 
> > Both boards can be booted from eMMC or SD-card using the
> > U-Boot 2025.07 generic-rk3568 target.
> > 
> > The SoM board has CPU, RAM, eMMC and RK809 PMIC.
> > There is no schematic for this part.
> > 
> > [...]  
> 
> Applied, thanks!

Hi, apologies in advance if I'm going against protocol, but I'm still really
new at the techniques for Linux patch development.

As you may recall, I've been working on a similar patch for the nearly
identical SeeedStudio LinkStar H68K (v1). I found this recent work from
Chukun earlier today; my work, in part, relied on an offshoot of Chukun's
work from circa 2022 and other inspirations from other rk3568 boards. 
(See
https://lore.kernel.org/linux-devicetree/20250723135008.1077970-1-amadeus@jmu.edu.cn/
for example.)

Chukun's work from 18 August 2025 is better and more complete than where my
code currently is, with one exception: the gmac0/1 phy-modes.

As I worked on my dts, I discovered that the 1Gb ethernet ports, using an
RTL8211, don't support rgmii-id mode; only rgmii.
(https://www.realtek.com/Product/Index?id=3976&cate_id=786). 

Changing this makes a huge difference in the ethernet throughput speed. With
rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this to rgmii
mode increases throughput to about 960 Mbs. 

I tested this on Chukun's code by making that change, and essentially
backporting to my OpenWRT testing profile, using kernel 6.12 and U-Boot 25.04
(also backporting the Hinlink dts to U-Boot).

I saw this over 100x speed difference both with my tree and Chukun's. 

I'll make a note of this in Chukun's patch email for the dts shortly.

I'd like to help support further development of the HinLink/Linkstar patches,
and am happy to base whatever assistance I can provide off Chukun's work. 

Please advise on how I can best contribute.

Regards,

Erik

> 
> [1/4] dt-bindings: vendor-prefixes: Add HINLINK
>       commit: 7d11b8c260ea68ce8f420ad467b04b21ea34b011
> [2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K
>       commit: 4bef07b79ab1ef7d963eaa2c37948030e418d538
> [3/4] arm64: dts: rockchip: Add HINLINK H68K
>       commit: 86a504b82f8d0e34f99ab9607712e7942c919fa3
> [4/4] arm64: dts: rockchip: Add HINLINK H66K
>       commit: bb9ef44f05c9558d58e3c9da141e93af1aa11c1f
> 
> Best regards,


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-18 10:00 ` [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K Chukun Pan
@ 2025-08-30 21:14   ` Erik Beck
  2025-08-30 21:30     ` Andrew Lunn
  2025-09-01  7:00     ` Chukun Pan
  0 siblings, 2 replies; 24+ messages in thread
From: Erik Beck @ 2025-08-30 21:14 UTC (permalink / raw)
  To: Chukun Pan
  Cc: Heiko Stuebner, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
	linux-arm-kernel, linux-rockchip, linux-kernel, devicetree

On Mon, 18 Aug 2025 18:00:08 +0800
Chukun Pan <amadeus@jmu.edu.cn> wrote:

> The HINLINK H68K is a development board with the
> Rockchip RK3568 SoC. It has the following features:
> 
> - 2/4GB LPDDR4
> - 1x HDMI Type A
> - 3.5mm jack with mic
> - 1x PCIE 2.0 WiFi slot
> - 1x USB 3.0, 2x USB 2.0
> - 2x 1GbE RTL8211F Ethernet
> - 2x 2.5GbE RTL8125B Ethernet
> - MicroSD card slot / eMMC 32GB
> 
> Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
> ---
>  arch/arm64/boot/dts/rockchip/Makefile         |   1 +
>  .../boot/dts/rockchip/rk3568-hinlink-h68k.dts |  83 +++
>  .../boot/dts/rockchip/rk3568-hinlink-opc.dtsi | 666 ++++++++++++++++++
>  3 files changed, 750 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
>  create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi
> 
> diff --git a/arch/arm64/boot/dts/rockchip/Makefile
> b/arch/arm64/boot/dts/rockchip/Makefile index 099520962ffb..09c810cb64a4
> 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile
> +++ b/arch/arm64/boot/dts/rockchip/Makefile
> @@ -130,6 +130,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.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
> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-hinlink-h68k.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-lubancat-2.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mecsbc.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
> diff --git a/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
> b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts new file mode 100644
> index 000000000000..793ee651b868
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-h68k.dts
> @@ -0,0 +1,83 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +/dts-v1/;
> +
> +#include "rk3568-hinlink-opc.dtsi"
> +
> +/ {
> +	model = "HINLINK H68K";
> +	compatible = "hinlink,h68k", "rockchip,rk3568";
> +
> +	aliases {
> +		ethernet0 = &gmac0;
> +		ethernet1 = &gmac1;
> +	};
> +};
> +
> +&gmac0 {
> +	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
> +	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
> +	assigned-clock-rates = <0>, <125000000>;
> +	clock_in_out = "output";
> +	phy-handle = <&rgmii_phy0>;
> +	phy-mode = "rgmii-id";

Please change phy-mode here to "rgmii". This change will yield an ethernet
speed throughput change of a factor of 100+. 

> +	phy-supply = <&vcc3v3_sys>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&gmac0_miim
> +		     &gmac0_tx_bus2
> +		     &gmac0_rx_bus2
> +		     &gmac0_rgmii_clk
> +		     &gmac0_rgmii_bus
> +		     &gmac0_rstn>;
> +	status = "okay";
> +};
> +
> +&gmac1 {
> +	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
> +	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
> +	assigned-clock-rates = <0>, <125000000>;
> +	clock_in_out = "output";
> +	phy-handle = <&rgmii_phy1>;
> +	phy-mode = "rgmii-id";

Same as above: Please change phy-mode here to "rgmii". This change will yield
an ethernet speed throughput change of a factor of 100+. 

> +	phy-supply = <&vcc3v3_sys>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&gmac1m1_miim
> +		     &gmac1m1_tx_bus2
> +		     &gmac1m1_rx_bus2
> +		     &gmac1m1_rgmii_clk
> +		     &gmac1m1_rgmii_bus
> +		     &gmac1_rstn>;
> +	status = "okay";
> +};
> +
> +&mdio0 {
> +	rgmii_phy0: ethernet-phy@1 {
> +		compatible = "ethernet-phy-ieee802.3-c22";
> +		reg = <0x1>;
> +		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>;
> +		reset-assert-us = <20000>;
> +		reset-deassert-us = <100000>;
> +		reset-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>;
> +	};
> +};
> +
> +&pinctrl {
> +	gmac {
> +		gmac0_rstn: gmac0-rstn {
> +			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		gmac1_rstn: gmac1-rstn {
> +			rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi
> b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi new file mode 100644
> index 000000000000..14f3839ca091
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3568-hinlink-opc.dtsi
> @@ -0,0 +1,666 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +#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"
> +
> +/ {
> +	aliases {
> +		mmc0 = &sdhci;
> +		mmc1 = &sdmmc0;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial2:1500000n8";
> +	};
> +
> +	hdmi-con {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi_con_in: endpoint {
> +				remote-endpoint = <&hdmi_out_con>;
> +			};
> +		};
> +	};
> +
> +	ir-receiver {
> +		compatible = "gpio-ir-receiver";
> +		gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_LOW>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pwm3_ir_m0>;
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&factory>;
> +
> +		button-factory {
> +			label = "factory";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <50>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&green_led>, <&red_led>, <&work_led>;
> +
> +		led-0 {
> +			color = <LED_COLOR_ID_BLUE>;
> +			function = LED_FUNCTION_WAN;
> +			gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "netdev";
> +		};
> +
> +		led-1 {
> +			color = <LED_COLOR_ID_AMBER>;
> +			function = LED_FUNCTION_DISK;
> +			gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		led-2 {
> +			color = <LED_COLOR_ID_GREEN>;
> +			function = LED_FUNCTION_STATUS;
> +			gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "default-on";
> +		};
> +	};
> +
> +	vcc0v9_2g5: regulator-0v9-vcc-2g5 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc0v9_2g5";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <900000>;
> +		regulator-max-microvolt = <900000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +
> +	vcc12v_dcinp: regulator-12v-vcc-dcinp {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc12v_dcinp";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <12000000>;
> +		regulator-max-microvolt = <12000000>;
> +	};
> +
> +	vcc3v3_pi6c_05: regulator-3v3-vcc-pi6c-05 {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&lan_power_en>;
> +		regulator-name = "vcc3v3_pi6c_05";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +
> +	vcc3v3_sd: regulator-3v3-vcc-sd {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&sd_pwren>;
> +		regulator-name = "vcc3v3_sd";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc3v3_sys>;
> +	};
> +
> +	vcc3v3_sys: regulator-3v3-vcc-sys {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc3v3_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +
> +	vcc5v0_sys: regulator-5v0-vcc-sys {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc5v0_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc12v_dcinp>;
> +	};
> +
> +	vcc5v0_usb30_otg0: regulator-5v0-vcc-usb30-otg0 {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&usb_power_en>;
> +		regulator-name = "vcc5v0_usb30_otg0";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +};
> +
> +&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>;
> +		#clock-cells = <1>;
> +		interrupt-parent = <&gpio0>;
> +		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pmic_int>;
> +		system-power-controller;
> +		wakeup-source;
> +
> +		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>;
> +
> +		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-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;
> +				};
> +			};
> +
> +			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 = <900000>;
> +				regulator-max-microvolt = <900000>;
> +
> +				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-always-on;
> +				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: SWITCH_REG2 {
> +				regulator-name = "vcc3v3";
> +				regulator-always-on;
> +				regulator-boot-on;
> +
> +				regulator-state-mem {
> +					regulator-off-in-suspend;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&i2c2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c2m1_xfer>;
> +	status = "okay";
> +};
> +
> +&i2s0_8ch {
> +	status = "okay";
> +};
> +
> +&pcie2x1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wifi_perstn>;
> +	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
> +	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
> +	status = "okay";
> +};
> +
> +&pcie30phy {
> +	data-lanes = <1 2>;
> +	status = "okay";
> +};
> +
> +&pcie3x1 {
> +	num-lanes = <1>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&lan_resetb>;
> +	reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
> +	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
> +	status = "okay";
> +};
> +
> +&pcie3x2 {
> +	num-lanes = <1>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&lan_reseta>;
> +	reset-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_HIGH>;
> +	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
> +	status = "okay";
> +};
> +
> +&pinctrl {
> +	keys {
> +		factory: factory {
> +			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO
> &pcfg_pull_up>;
> +		};
> +	};
> +
> +	leds {
> +		green_led: green-led {
> +			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		red_led: red-led {
> +			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		work_led: work-led {
> +			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +
> +	ir {
> +		pwm3_ir_m0: pwm3-ir-m0 {
> +			rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +
> +	mmc {
> +		sd_pwren: sd-pwren {
> +			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +
> +	pcie {
> +		lan_power_en: lan-power-en {
> +			rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		lan_reseta: lan-reseta {
> +			rockchip,pins = <2 RK_PD0 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		lan_resetb: lan-resetb {
> +			rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +
> +		wifi_perstn: wifi-perstn {
> +			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +
> +	pmic {
> +		pmic_int: pmic-int {
> +			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO
> &pcfg_pull_up>;
> +		};
> +	};
> +
> +	usb {
> +		usb_power_en: usb-power-en {
> +			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO
> &pcfg_pull_none>;
> +		};
> +	};
> +};
> +
> +&pmu_io_domains {
> +	pmuio1-supply = <&vcc3v3_pmu>;
> +	pmuio2-supply = <&vcc3v3_pmu>;
> +	vccio1-supply = <&vccio_acodec>;
> +	vccio2-supply = <&vcc_1v8>;
> +	vccio3-supply = <&vccio_sd>;
> +	vccio4-supply = <&vcc_1v8>;
> +	vccio5-supply = <&vcc_3v3>;
> +	vccio6-supply = <&vcc_1v8>;
> +	vccio7-supply = <&vcc_3v3>;
> +	status = "okay";
> +};
> +
> +&pwm0 {
> +	status = "okay";
> +};
> +
> +&saradc {
> +	vref-supply = <&vcca_1v8>;
> +	status = "okay";
> +};
> +
> +/* Via Type-C adapter */
> +&sata0 {
> +	status = "okay";
> +};
> +
> +&sdhci {
> +	bus-width = <8>;
> +	cap-mmc-highspeed;
> +	max-frequency = <200000000>;
> +	mmc-hs200-1_8v;
> +	non-removable;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
> +	vmmc-supply = <&vcc_3v3>;
> +	vqmmc-supply = <&vcc_1v8>;
> +	status = "okay";
> +};
> +
> +&sdmmc0 {
> +	bus-width = <4>;
> +	cap-sd-highspeed;
> +	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
> +	disable-wp;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
> +	sd-uhs-sdr50;
> +	vmmc-supply = <&vcc3v3_sd>;
> +	vqmmc-supply = <&vccio_sd>;
> +	status = "okay";
> +};
> +
> +&tsadc {
> +	rockchip,hw-tshut-mode = <1>;
> +	rockchip,hw-tshut-polarity = <0>;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	status = "okay";
> +};
> +
> +&usb_host0_ehci {
> +	status = "okay";
> +};
> +
> +&usb_host0_ohci {
> +	status = "okay";
> +};
> +
> +&usb_host1_ehci {
> +	status = "okay";
> +};
> +
> +&usb_host1_ohci {
> +	status = "okay";
> +};
> +
> +&usb_host1_xhci {
> +	status = "okay";
> +};
> +
> +&usb2phy0 {
> +	status = "okay";
> +};
> +
> +&usb2phy0_host {
> +	phy-supply = <&vcc5v0_usb30_otg0>;
> +	status = "okay";
> +};
> +
> +&usb2phy1 {
> +	status = "okay";
> +};
> +
> +&usb2phy1_host {
> +	phy-supply = <&vcc5v0_usb30_otg0>;
> +	status = "okay";
> +};
> +
> +&usb2phy1_otg {
> +	phy-supply = <&vcc5v0_usb30_otg0>;
> +	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>;
> +	};
> +};


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-30 21:11   ` Erik Beck
@ 2025-08-30 21:26     ` Andrew Lunn
  2025-08-30 22:20       ` Erik Beck
  0 siblings, 1 reply; 24+ messages in thread
From: Andrew Lunn @ 2025-08-30 21:26 UTC (permalink / raw)
  To: Erik Beck
  Cc: Heiko Stuebner, Chukun Pan, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

> As I worked on my dts, I discovered that the 1Gb ethernet ports, using an
> RTL8211, don't support rgmii-id mode; only rgmii.
> (https://www.realtek.com/Product/Index?id=3976&cate_id=786). 

Which exact RTL8211 does the board use? You link to information for
the RTL8211FD(I)-CG, which i assume is supported in Linux as RTL8211F.

https://elixir.bootlin.com/linux/v6.16.3/source/drivers/net/phy/realtek/realtek_main.c#L519

This indicates it supports all four RGMII modes. And in general, all
PHY drivers in Linux for RGMII PHYs support all four RGMII modes.

> Changing this makes a huge difference in the ethernet throughput speed. With
> rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this to rgmii
> mode increases throughput to about 960 Mbs. 

Here is some more information about that the four RGMII modes mean,
and how you should use them in Linux:

https://elixir.bootlin.com/linux/v6.16.3/source/Documentation/devicetree/bindings/net/ethernet-controller.yaml#L264

	Andrew

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-30 21:14   ` Erik Beck
@ 2025-08-30 21:30     ` Andrew Lunn
  2025-08-30 22:21       ` Erik Beck
  2025-09-01  7:00     ` Chukun Pan
  1 sibling, 1 reply; 24+ messages in thread
From: Andrew Lunn @ 2025-08-30 21:30 UTC (permalink / raw)
  To: Erik Beck
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

> > +&gmac0 {
> > +	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
> > +	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
> > +	assigned-clock-rates = <0>, <125000000>;
> > +	clock_in_out = "output";
> > +	phy-handle = <&rgmii_phy0>;
> > +	phy-mode = "rgmii-id";
> 
> Please change phy-mode here to "rgmii". This change will yield an ethernet
> speed throughput change of a factor of 100+. 

Rockchip by default do bad things with RGMII delays.

  tx_delay:
    description: Delay value for TXD timing.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 0x7F
    default: 0x30

  rx_delay:
    description: Delay value for RXD timing.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 0x7F
    default: 0x10

Try setting both of these to 0. And then use 'rgmii-id'.

	Andrew

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-30 21:26     ` Andrew Lunn
@ 2025-08-30 22:20       ` Erik Beck
  2025-08-31 13:55         ` Erik Beck
  0 siblings, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-08-30 22:20 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Heiko Stuebner, Chukun Pan, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree



> On Aug 30, 2025, at 17:30, Andrew Lunn <andrew@lunn.ch> wrote:
> 
> 
>> 
>> As I worked on my dts, I discovered that the 1Gb ethernet ports, using an
>> RTL8211, don't support rgmii-id mode; only rgmii.
>> (https://www.realtek.com/Product/Index?id=3976&cate_id=786).
> 
> Which exact RTL8211 does the board use? You link to information for
> the RTL8211FD(I)-CG, which i assume is supported in Linux as RTL8211F.

Thanks Andrew; It isn't clear to me which specific variation it has. I'll take another look at the boot logs and see. The silkscreen on the chips are faint, but will look there too.
> 
> https://elixir.bootlin.com/linux/v6.16.3/source/drivers/net/phy/realtek/realtek_main.c#L519
> 
> This indicates it supports all four RGMII modes. And in general, all
> PHY drivers in Linux for RGMII PHYs support all four RGMII modes.
> 
>> Changing this makes a huge difference in the ethernet throughput speed. With
>> rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this to rgmii
>> mode increases throughput to about 960 Mbs.
> 
> Here is some more information about that the four RGMII modes mean,
> and how you should use them in Linux:
> 
> https://elixir.bootlin.com/linux/v6.16.3/source/Documentation/devicetree/bindings/net/ethernet-controller.yaml#L264
> 
>    Andrew

Thank you!
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-30 21:30     ` Andrew Lunn
@ 2025-08-30 22:21       ` Erik Beck
  2025-08-31 14:48         ` Erik Beck
  0 siblings, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-08-30 22:21 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree



> On Aug 30, 2025, at 17:38, Andrew Lunn <andrew@lunn.ch> wrote:
> 
> 
>> 
>>> +&gmac0 {
>>> +    assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
>>> +    assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
>>> +    assigned-clock-rates = <0>, <125000000>;
>>> +    clock_in_out = "output";
>>> +    phy-handle = <&rgmii_phy0>;
>>> +    phy-mode = "rgmii-id";
>> 
>> Please change phy-mode here to "rgmii". This change will yield an ethernet
>> speed throughput change of a factor of 100+.
> 
> Rockchip by default do bad things with RGMII delays.
> 
>  tx_delay:
>    description: Delay value for TXD timing.
>    $ref: /schemas/types.yaml#/definitions/uint32
>    minimum: 0
>    maximum: 0x7F
>    default: 0x30
> 
>  rx_delay:
>    description: Delay value for RXD timing.
>    $ref: /schemas/types.yaml#/definitions/uint32
>    minimum: 0
>    maximum: 0x7F
>    default: 0x10
> 
> Try setting both of these to 0. And then use 'rgmii-id'.
> 
>    Andrew

Thank you!
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K
  2025-08-30 22:20       ` Erik Beck
@ 2025-08-31 13:55         ` Erik Beck
  0 siblings, 0 replies; 24+ messages in thread
From: Erik Beck @ 2025-08-31 13:55 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Heiko Stuebner, Chukun Pan, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

On Sat, 30 Aug 2025 18:20:50 -0400
Erik Beck <xunil@tahomasoft.com> wrote:

> > On Aug 30, 2025, at 17:30, Andrew Lunn <andrew@lunn.ch> wrote:
> > 
> >   
> >> 
> >> As I worked on my dts, I discovered that the 1Gb ethernet ports, using an
> >> RTL8211, don't support rgmii-id mode; only rgmii.
> >> (https://www.realtek.com/Product/Index?id=3976&cate_id=786).  
> > 
> > Which exact RTL8211 does the board use? You link to information for
> > the RTL8211FD(I)-CG, which i assume is supported in Linux as RTL8211F.  
> 
> Thanks Andrew; It isn't clear to me which specific variation it has. I'll
> take another look at the boot logs and see. The silkscreen on the chips are
> faint, but will look there too.

dmesg reports it is an RTL8211F.

> > 
> > https://elixir.bootlin.com/linux/v6.16.3/source/drivers/net/phy/realtek/realtek_main.c#L519
> > 
> > This indicates it supports all four RGMII modes. And in general, all
> > PHY drivers in Linux for RGMII PHYs support all four RGMII modes.
> >   
> >> Changing this makes a huge difference in the ethernet throughput speed.
> >> With rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this
> >> to rgmii mode increases throughput to about 960 Mbs.  
> > 
> > Here is some more information about that the four RGMII modes mean,
> > and how you should use them in Linux:
> > 
> > https://elixir.bootlin.com/linux/v6.16.3/source/Documentation/devicetree/bindings/net/ethernet-controller.yaml#L264
> > 
> >    Andrew  
> 
> Thank you!
> > 
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip  


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-30 22:21       ` Erik Beck
@ 2025-08-31 14:48         ` Erik Beck
  2025-08-31 15:53           ` Andrew Lunn
  0 siblings, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-08-31 14:48 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

On Sat, 30 Aug 2025 18:21:18 -0400
Erik Beck <xunil@tahomasoft.com> wrote:

> > On Aug 30, 2025, at 17:38, Andrew Lunn <andrew@lunn.ch> wrote:
> > 
> >   
> >>   
> >>> +&gmac0 {
> >>> +    assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
> >>> +    assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
> >>> +    assigned-clock-rates = <0>, <125000000>;
> >>> +    clock_in_out = "output";
> >>> +    phy-handle = <&rgmii_phy0>;
> >>> +    phy-mode = "rgmii-id";  
> >> 
> >> Please change phy-mode here to "rgmii". This change will yield an
> >> ethernet speed throughput change of a factor of 100+.  
> > 
> > Rockchip by default do bad things with RGMII delays.
> > 
> >  tx_delay:
> >    description: Delay value for TXD timing.
> >    $ref: /schemas/types.yaml#/definitions/uint32
> >    minimum: 0
> >    maximum: 0x7F
> >    default: 0x30
> > 
> >  rx_delay:
> >    description: Delay value for RXD timing.
> >    $ref: /schemas/types.yaml#/definitions/uint32
> >    minimum: 0
> >    maximum: 0x7F
> >    default: 0x10
> > 
> > Try setting both of these to 0. And then use 'rgmii-id'.
> > 
> >    Andrew  
Setting both gmac0 and gmac1 to phy-mode=rgmii-id with tx/rx delay set to
<0x0> yields about a 7x improvement from ~6 Mbs (with phy-mode=rgmii-id and
tx/rx delay unset) to about 43 Mbps, which is still well below the ~950 Mbs
with phy-mode=rgmii and tx/rx delay unset.

Regards,

Erik

> 
> Thank you!
> > 
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip  


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-31 14:48         ` Erik Beck
@ 2025-08-31 15:53           ` Andrew Lunn
  2025-08-31 16:28             ` Erik Beck
  0 siblings, 1 reply; 24+ messages in thread
From: Andrew Lunn @ 2025-08-31 15:53 UTC (permalink / raw)
  To: Erik Beck
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

> > > Rockchip by default do bad things with RGMII delays.
> > > 
> > >  tx_delay:
> > >    description: Delay value for TXD timing.
> > >    $ref: /schemas/types.yaml#/definitions/uint32
> > >    minimum: 0
> > >    maximum: 0x7F
> > >    default: 0x30
> > > 
> > >  rx_delay:
> > >    description: Delay value for RXD timing.
> > >    $ref: /schemas/types.yaml#/definitions/uint32
> > >    minimum: 0
> > >    maximum: 0x7F
> > >    default: 0x10
> > > 
> > > Try setting both of these to 0. And then use 'rgmii-id'.
> > > 
> > >    Andrew  
> Setting both gmac0 and gmac1 to phy-mode=rgmii-id with tx/rx delay set to
> <0x0> yields about a 7x improvement from ~6 Mbs (with phy-mode=rgmii-id and
> tx/rx delay unset) to about 43 Mbps, which is still well below the ~950 Mbs
> with phy-mode=rgmii and tx/rx delay unset.

You need to split the problem into two. Rx delays and Tx delays. Use
something like iperf in UDP mode, to send a stream of UDP packets, or
receive a stream of UDP packets. TCP is bad for this sort of testing
because Rx and Tx are interconnected due to flow control and
retransmissions.

Try small values of rx_delay to see if you can improve the Rx
performance. Try small values to tx_delay, to see if you can improve
the Tx performance.

One problem we have with rx_delay and tx_delay is that they are
magic. We have no idea what they mean. The RGMII standard says there
should be a 2ns delay between data and clock. A poorly designed board
could mean the MAC/PHY pair needs to insert say 1.8ns or 2.2ns, not
2ns as defined by the RGMiI standard. Rockchip also seem to encourage
using rx_delay and tx_delay, so i would not be surprised to find
Rockchip boards are often poorly designed and don't follow the RGMII
standard.

rx_delay/tx_delay can probably insert 0.2ns of delay, but it probably
cannot insert -0.2ns of delay. So it could be, you cannot improve
it. If that is the case, we need to consider another solution.

   Andrew

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-31 15:53           ` Andrew Lunn
@ 2025-08-31 16:28             ` Erik Beck
  2025-09-01  0:47               ` Andrew Lunn
  0 siblings, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-08-31 16:28 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

On Sun, 31 Aug 2025 17:53:19 +0200
Andrew Lunn <andrew@lunn.ch> wrote:

> > > > Rockchip by default do bad things with RGMII delays.
> > > > 
> > > >  tx_delay:
> > > >    description: Delay value for TXD timing.
> > > >    $ref: /schemas/types.yaml#/definitions/uint32
> > > >    minimum: 0
> > > >    maximum: 0x7F
> > > >    default: 0x30
> > > > 
> > > >  rx_delay:
> > > >    description: Delay value for RXD timing.
> > > >    $ref: /schemas/types.yaml#/definitions/uint32
> > > >    minimum: 0
> > > >    maximum: 0x7F
> > > >    default: 0x10
> > > > 
> > > > Try setting both of these to 0. And then use 'rgmii-id'.
> > > > 
> > > >    Andrew    
> > Setting both gmac0 and gmac1 to phy-mode=rgmii-id with tx/rx delay set to
> > <0x0> yields about a 7x improvement from ~6 Mbs (with phy-mode=rgmii-id
> > and tx/rx delay unset) to about 43 Mbps, which is still well below the
> > ~950 Mbs with phy-mode=rgmii and tx/rx delay unset.  
> 
> You need to split the problem into two. Rx delays and Tx delays. Use
> something like iperf in UDP mode, to send a stream of UDP packets, or
> receive a stream of UDP packets. TCP is bad for this sort of testing
> because Rx and Tx are interconnected due to flow control and
> retransmissions.
> 
> Try small values of rx_delay to see if you can improve the Rx
> performance. Try small values to tx_delay, to see if you can improve
> the Tx performance.
> 
OK, thanks. 

Just so I am clear, the units are tenths of nanoseconds? So <0x02> is .2
nanoseconds?



> One problem we have with rx_delay and tx_delay is that they are
> magic. We have no idea what they mean. The RGMII standard says there
> should be a 2ns delay between data and clock. A poorly designed board
> could mean the MAC/PHY pair needs to insert say 1.8ns or 2.2ns, not
> 2ns as defined by the RGMiI standard. Rockchip also seem to encourage
> using rx_delay and tx_delay, so i would not be surprised to find
> Rockchip boards are often poorly designed and don't follow the RGMII
> standard.
> 
> rx_delay/tx_delay can probably insert 0.2ns of delay, but it probably
> cannot insert -0.2ns of delay. So it could be, you cannot improve
> it. If that is the case, we need to consider another solution.
> 
>    Andrew
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-31 16:28             ` Erik Beck
@ 2025-09-01  0:47               ` Andrew Lunn
  0 siblings, 0 replies; 24+ messages in thread
From: Andrew Lunn @ 2025-09-01  0:47 UTC (permalink / raw)
  To: Erik Beck
  Cc: Chukun Pan, Heiko Stuebner, Rob Herring, Conor Dooley,
	Krzysztof Kozlowski, linux-arm-kernel, linux-rockchip,
	linux-kernel, devicetree

> Just so I am clear, the units are tenths of nanoseconds? So <0x02> is .2
> nanoseconds?
 
Quoting myself: 
 
> > One problem we have with rx_delay and tx_delay is that they are
> > magic. we have no idea what they mean.

I very much doubt 0x02 is 0.2 nano seconds. If you have an
oscilloscope which can handle the signals, you could measure it and
see how the delay changes with different values. But developers have
done that in the past, with mixed results.

	Andrew

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-08-30 21:14   ` Erik Beck
  2025-08-30 21:30     ` Andrew Lunn
@ 2025-09-01  7:00     ` Chukun Pan
  2025-09-01 10:24       ` Erik Beck
  1 sibling, 1 reply; 24+ messages in thread
From: Chukun Pan @ 2025-09-01  7:00 UTC (permalink / raw)
  To: xunil
  Cc: amadeus, conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
	linux-kernel, linux-rockchip

Hi,

> Please change phy-mode here to "rgmii". This change will yield an
> ethernet speed throughput change of a factor of 100+. 

> Same as above: Please change phy-mode here to "rgmii". This change
> will yield an ethernet speed throughput change of a factor of 100+. 

This doesn't make sense. When I first submitted it to coolsnowwolf/lede
in 2022, I used "rgmii-id" as the phy-mode, and it worked:
https://github.com/coolsnowwolf/lede/blob/master/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3568-opc-h68k.dts#L24

Are you experiencing issues with both eth0 and eth1 or just one of them?
Are you using the generic-rk3568 target for U-Boot?

I can't reproduce your problem in my test.

eth0/gmac1 (as lan):
root@OpenWrt:~# iperf3 -c 192.168.1.100
Connecting to host 192.168.1.100, port 5201
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec   29            sender
[  5]   0.00-10.04  sec  1.10 GBytes   936 Mbits/sec                  receiver

root@OpenWrt:~# iperf3 -c 192.168.1.100 -R
Connecting to host 192.168.1.100, port 5201
Reverse mode, remote host 192.168.1.100 is sending
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.04  sec  1.10 GBytes   939 Mbits/sec    1            sender
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  receiver

eth1/gmac0 (as wan):
root@OpenWrt:~# iperf3 -c 192.168.0.2 -P 4
Connecting to host 192.168.0.2, port 5201
[ ID] Interval           Transfer     Bitrate         Retr
[SUM]   0.00-10.00  sec  1.10 GBytes   945 Mbits/sec  1191             sender
[SUM]   0.00-10.05  sec  1.09 GBytes   935 Mbits/sec                  receiver

root@OpenWrt:~# iperf3 -c 192.168.0.2 -R
Connecting to host 192.168.0.2, port 5201
Reverse mode, remote host 192.168.0.2 is sending
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.06  sec  1.10 GBytes   939 Mbits/sec    6            sender
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  receiver

--
2.25.1



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-09-01  7:00     ` Chukun Pan
@ 2025-09-01 10:24       ` Erik Beck
  2025-09-01 14:06         ` Erik Beck
  2025-09-01 16:25         ` Erik Beck
  0 siblings, 2 replies; 24+ messages in thread
From: Erik Beck @ 2025-09-01 10:24 UTC (permalink / raw)
  To: Chukun Pan
  Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
	linux-kernel, linux-rockchip, Andrew Lunn

On Mon,  1 Sep 2025 15:00:08 +0800
Chukun Pan <amadeus@jmu.edu.cn> wrote:

> Hi,
> 
> > Please change phy-mode here to "rgmii". This change will yield an
> > ethernet speed throughput change of a factor of 100+.   
> 
> > Same as above: Please change phy-mode here to "rgmii". This change
> > will yield an ethernet speed throughput change of a factor of 100+.   
> 
> This doesn't make sense. When I first submitted it to coolsnowwolf/lede
> in 2022, I used "rgmii-id" as the phy-mode, and it worked:
> https://github.com/coolsnowwolf/lede/blob/master/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3568-opc-h68k.dts#L24
> 
> Are you experiencing issues with both eth0 and eth1 or just one of them?
> Are you using the generic-rk3568 target for U-Boot?
> 

Hi Chukun, thanks for your response. 

At Andrew Lunn's suggestion, I'm doing
more granular and rigorous testing, now using iperf3. I'll post more details
of results here after I retest a couple of scenarios. 

However, I will report now that so far, I'm getting better (faster) and more
consistent results using iperf3.

~Erik

> I can't reproduce your problem in my test.
> 
> eth0/gmac1 (as lan):
> root@OpenWrt:~# iperf3 -c 192.168.1.100
> Connecting to host 192.168.1.100, port 5201
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec   29            sender
> [  5]   0.00-10.04  sec  1.10 GBytes   936 Mbits/sec
> receiver
> 
> root@OpenWrt:~# iperf3 -c 192.168.1.100 -R
> Connecting to host 192.168.1.100, port 5201
> Reverse mode, remote host 192.168.1.100 is sending
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.04  sec  1.10 GBytes   939 Mbits/sec    1            sender
> [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> receiver
> 
> eth1/gmac0 (as wan):
> root@OpenWrt:~# iperf3 -c 192.168.0.2 -P 4
> Connecting to host 192.168.0.2, port 5201
> [ ID] Interval           Transfer     Bitrate         Retr
> [SUM]   0.00-10.00  sec  1.10 GBytes   945 Mbits/sec  1191
> sender [SUM]   0.00-10.05  sec  1.09 GBytes   935 Mbits/sec
>  receiver
> 
> root@OpenWrt:~# iperf3 -c 192.168.0.2 -R
> Connecting to host 192.168.0.2, port 5201
> Reverse mode, remote host 192.168.0.2 is sending
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.06  sec  1.10 GBytes   939 Mbits/sec    6            sender
> [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> receiver
> 
> --
> 2.25.1
> 
> 
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-09-01 10:24       ` Erik Beck
@ 2025-09-01 14:06         ` Erik Beck
  2025-09-02  7:00           ` Chukun Pan
  2025-09-01 16:25         ` Erik Beck
  1 sibling, 1 reply; 24+ messages in thread
From: Erik Beck @ 2025-09-01 14:06 UTC (permalink / raw)
  To: Chukun Pan
  Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
	linux-kernel, linux-rockchip, Andrew Lunn

On Mon, 1 Sep 2025 06:24:37 -0400
Erik Beck <xunil@tahomasoft.com> wrote:

> On Mon,  1 Sep 2025 15:00:08 +0800
> Chukun Pan <amadeus@jmu.edu.cn> wrote:
> 
> > Hi,
> > 
> > > Please change phy-mode here to "rgmii". This change will yield an
> > > ethernet speed throughput change of a factor of 100+.   
> > 
> > > Same as above: Please change phy-mode here to "rgmii". This change
> > > will yield an ethernet speed throughput change of a factor of 100+.   
> > 
> > This doesn't make sense. When I first submitted it to coolsnowwolf/lede
> > in 2022, I used "rgmii-id" as the phy-mode, and it worked:
> > https://github.com/coolsnowwolf/lede/blob/master/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3568-opc-h68k.dts#L24
> > 
> > Are you experiencing issues with both eth0 and eth1 or just one of them?
> > Are you using the generic-rk3568 target for U-Boot?
> > 
> 
> Hi Chukun, thanks for your response. 
> 
> At Andrew Lunn's suggestion, I'm doing
> more granular and rigorous testing, now using iperf3. I'll post more details
> of results here after I retest a couple of scenarios. 
> 
> However, I will report now that so far, I'm getting better (faster) and more
> consistent results using iperf3.
> 
> ~Erik

Below are my results.

In summary, the speeds in certain scenarios are closer than in others.
Pooling everything together, at the eyeball level, things look pretty similar
across using RGMII-ID and RGMII (no internal delay). If I were to run these
tests repeatedly, pool the results, and do a statistical comparison (probably
with a Kolmogorov-Smirnov (KS) test or similar), I doubt I could reject the
null hypothesis of no significant difference between the two sample
distributions. 

So what I said earlier regarding rgmii vs rgmii-id DOES NOT hold up under
more rigorous and careful testing.

Thanks,

Erik

___________________________
Results with (gmac0 & gmac1) phy-mode = "rgmii-id", tx_rx_delay unspecified
(kernel on boot sets tx_delay = 0x30 and rx_delay = 0x10 itself, both gmacs) 

eth0/wan
iperf3 -s -F VidTest-1.4Gb.mp4

{openwrt device is 192.168.2.241}
{desktop on openwrt WAN is 192.168.2.90}

-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 44414
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 44422
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   112 MBytes   935 Mbits/sec                  
[  5]   1.00-2.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   2.00-3.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   4.00-5.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   5.00-6.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   6.00-7.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   8.00-9.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   9.00-10.00  sec   112 MBytes   940 Mbits/sec                  
[  5]  10.00-10.00  sec   384 KBytes   815 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver
-----------------------------------------------------------

< Reverse >

iperf3 -s 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 45870
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 45886
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   953 Mbits/sec  120    158 KBytes       
[  5]   1.00-2.00   sec   112 MBytes   935 Mbits/sec  143    141 KBytes       
[  5]   2.00-3.00   sec   110 MBytes   923 Mbits/sec  131    195 KBytes       
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec  142    167 KBytes       
[  5]   4.00-5.00   sec   112 MBytes   942 Mbits/sec  136    133 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   929 Mbits/sec  119    175 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   932 Mbits/sec  126    115 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   943 Mbits/sec  150    113 KBytes       
[  5]   8.00-9.00   sec   105 MBytes   884 Mbits/sec   28    110 KBytes       
[  5]   9.00-10.00  sec   112 MBytes   938 Mbits/sec  140    160 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   932 Mbits/sec  1235            sender


eth1/lan

iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
{openwrt device is 192.168.1.1}
{Laptop attached to openwrt is 192.168.1.134}

Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.1, port 53876
[  5] local 192.168.1.134 port 5201 connected to 192.168.1.1 port 53890
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  31.9 MBytes   267 Mbits/sec                  
[  5]   1.00-2.00   sec  32.5 MBytes   273 Mbits/sec                  
[  5]   2.00-3.00   sec  33.6 MBytes   282 Mbits/sec                  
[  5]   3.00-4.00   sec  29.2 MBytes   245 Mbits/sec                  
[  5]   4.00-5.00   sec  33.8 MBytes   283 Mbits/sec                  
[  5]   5.00-6.00   sec  32.6 MBytes   274 Mbits/sec                  
[  5]   6.00-7.00   sec  34.1 MBytes   286 Mbits/sec                  
[  5]   7.00-8.00   sec  35.0 MBytes   294 Mbits/sec                  
[  5]   8.00-9.00   sec  33.6 MBytes   282 Mbits/sec                  
[  5]   9.00-10.00  sec  32.8 MBytes   275 Mbits/sec                  
[  5]  10.00-10.00  sec   128 KBytes   872 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent  329 MByte /  329 MByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec   329 MBytes   276 Mbits/sec                  receiver
-----------------------------------------------------------

< reverse >

iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.134 port 60508 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes   948 Mbits/sec    0    393 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   931 Mbits/sec    0    411 KBytes       
[  5]   2.00-3.00   sec   112 MBytes   935 Mbits/sec    0    433 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   933 Mbits/sec    0    433 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   934 Mbits/sec    0    433 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   932 Mbits/sec    0    433 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   930 Mbits/sec    0    433 KBytes       
[  5]   7.00-8.00   sec   111 MBytes   934 Mbits/sec    0    433 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   932 Mbits/sec    0    433 KBytes       
[  5]   9.00-10.00  sec   113 MBytes   944 Mbits/sec    0    573 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   936 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec                  receiver



Throughput (wan (eth0) -> lan (eth1) -> laptop)

Desktop <------> Laptop via Openwrt
192.168.2.90     192.168.1.134

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 54694 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   106 MBytes   889 Mbits/sec    0    461 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   934 Mbits/sec    0    461 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   932 Mbits/sec    0    461 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   938 Mbits/sec    0    503 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   9.00-10.00  sec   111 MBytes   933 Mbits/sec    0    503 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   929 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.08 GBytes   927 Mbits/sec                  receive





< Reverse >

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 54694 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   106 MBytes   889 Mbits/sec    0    461 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   934 Mbits/sec    0    461 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   932 Mbits/sec    0    461 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   938 Mbits/sec    0    503 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   9.00-10.00  sec   111 MBytes   933 Mbits/sec    0    503 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   929 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.08 GBytes   927 Mbits/sec                  receive


---------


Results with (gmac0 & gmac1) phy-mode = "rgmii", tx_rx_delay unspecified
(kernel on boot sets tx_delay = 0x30 and rx_delay = 0x10 itself, both gmacs)


eth0/wan
iperf3 -s -F VidTest-1.4Gb.mp4

{openwrt device is 192.168.2.241}
{desktop on openwrt WAN is 192.168.2.90}

iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 35070
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 35084
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   112 MBytes   936 Mbits/sec                  
[  5]   1.00-2.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   2.00-3.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   4.00-5.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   5.00-6.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   6.00-7.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   8.00-9.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   9.00-10.00  sec   112 MBytes   939 Mbits/sec                  
[  5]  10.00-10.00  sec   384 KBytes   869 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver
-----------------------------------------------------------


<reverse>
Accepted connection from 192.168.2.241, port 51650
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 51660
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   953 Mbits/sec  168    209 KBytes       
[  5]   1.00-2.00   sec   112 MBytes   938 Mbits/sec  224    148 KBytes       
[  5]   2.00-3.00   sec   112 MBytes   940 Mbits/sec  196    158 KBytes       
[  5]   3.00-4.00   sec   112 MBytes   943 Mbits/sec  196    180 KBytes       
[  5]   4.00-5.00   sec   112 MBytes   937 Mbits/sec  196    187 KBytes       
[  5]   5.00-6.00   sec   112 MBytes   940 Mbits/sec  196    195 KBytes       
[  5]   6.00-7.00   sec   112 MBytes   937 Mbits/sec  196    204 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec  224    136 KBytes       
[  5]   8.00-9.00   sec   112 MBytes   940 Mbits/sec  196    158 KBytes       
[  5]   9.00-10.00  sec   110 MBytes   922 Mbits/sec  196    188 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec  1988            sender
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
-----------------------------------------------------------



eth1/lan

{192.168.1.1 is Openwrt device}
{192.168.1.134 is laptop directly attached to Openwrt}


iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.1, port 40866
[  5] local 192.168.1.134 port 5201 connected to 192.168.1.1 port 40868
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  67.4 MBytes   565 Mbits/sec                  
[  5]   1.00-2.00   sec  69.4 MBytes   582 Mbits/sec                  
[  5]   2.00-3.00   sec  65.9 MBytes   553 Mbits/sec                  
[  5]   3.00-4.00   sec  66.5 MBytes   558 Mbits/sec                  
[  5]   4.00-5.00   sec  70.2 MBytes   589 Mbits/sec                  
[  5]   5.00-6.00   sec  52.5 MBytes   440 Mbits/sec                  
[  5]   6.00-7.00   sec  67.2 MBytes   564 Mbits/sec                  
[  5]   7.00-8.00   sec  70.2 MBytes   589 Mbits/sec                  
[  5]   8.00-9.00   sec  57.9 MBytes   486 Mbits/sec                  
[  5]   9.00-10.00  sec  66.9 MBytes   561 Mbits/sec                  
[  5]  10.00-10.00  sec   128 KBytes   909 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent  654 MByte /  654 MByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec                  receiver




< reverse >

iperf3 -c 192.168.1.134 --reverse
Connecting to host 192.168.1.134, port 5201
Reverse mode, remote host 192.168.1.134 is sending
[  5] local 192.168.1.1 port 58380 connected to 192.168.1.134 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   104 MBytes   870 Mbits/sec                  
[  5]   1.00-2.00   sec  98.5 MBytes   826 Mbits/sec                  
[  5]   2.00-3.00   sec  89.9 MBytes   754 Mbits/sec                  
[  5]   3.00-4.00   sec  87.4 MBytes   733 Mbits/sec                  
[  5]   4.00-5.00   sec  97.0 MBytes   814 Mbits/sec                  
[  5]   5.00-6.00   sec  95.5 MBytes   801 Mbits/sec                  
[  5]   6.00-7.00   sec  82.1 MBytes   689 Mbits/sec                  
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec  235            sender
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec                  receiver





Throughput (wan (eth0) -> lan (eth1) -> laptop)

Desktop <------> Laptop via Openwrt
192.168.2.90     192.168.1.134

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 44380 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  91.8 MBytes   769 Mbits/sec   15   76.4 KBytes       
[  5]   1.00-2.00   sec  99.5 MBytes   835 Mbits/sec   11    102 KBytes       
[  5]   2.00-3.00   sec  98.8 MBytes   828 Mbits/sec   12    167 KBytes       
[  5]   3.00-4.00   sec  95.4 MBytes   800 Mbits/sec   17    126 KBytes       
[  5]   4.00-5.00   sec   106 MBytes   890 Mbits/sec    9    117 KBytes       
[  5]   5.00-6.00   sec  96.5 MBytes   810 Mbits/sec   15    123 KBytes       
[  5]   6.00-7.00   sec  99.6 MBytes   835 Mbits/sec   13    144 KBytes       
[  5]   7.00-8.00   sec   100 MBytes   842 Mbits/sec   15   58.0 KBytes       
[  5]   8.00-9.00   sec  96.1 MBytes   806 Mbits/sec   15    115 KBytes       
[  5]   9.00-10.00  sec  95.4 MBytes   800 Mbits/sec   14    126 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   980 MBytes   822 Mbits/sec  136            sender
[  5]   0.00-10.00  sec   979 MBytes   821 Mbits/sec                  receiver


< reverse >

perf3 -c 192.168.2.90 --reverse
Connecting to host 192.168.2.90, port 5201
Reverse mode, remote host 192.168.2.90 is sending
[  5] local 192.168.1.134 port 51148 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  40.6 MBytes   340 Mbits/sec                  
[  5]   1.00-2.00   sec  54.9 MBytes   460 Mbits/sec                  
[  5]   2.00-3.00   sec  49.6 MBytes   416 Mbits/sec                  
[  5]   3.00-4.00   sec  47.4 MBytes   397 Mbits/sec                  
[  5]   4.00-5.00   sec  45.9 MBytes   385 Mbits/sec                  
[  5]   5.00-6.00   sec  52.8 MBytes   443 Mbits/sec                  
[  5]   6.00-7.00   sec  45.1 MBytes   379 Mbits/sec                  
[  5]   7.00-8.00   sec  46.1 MBytes   387 Mbits/sec                  
[  5]   8.00-9.00   sec  42.8 MBytes   359 Mbits/sec                  
[  5]   9.00-10.00  sec  40.6 MBytes   341 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   467 MBytes   392 Mbits/sec  403            sender
[  5]   0.00-10.00  sec   466 MBytes   391 Mbits/sec                  receiver

____________________________________


> 
> > I can't reproduce your problem in my test.
> > 
> > eth0/gmac1 (as lan):
> > root@OpenWrt:~# iperf3 -c 192.168.1.100
> > Connecting to host 192.168.1.100, port 5201
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec   29
> > sender [  5]   0.00-10.04  sec  1.10 GBytes   936 Mbits/sec
> > receiver
> > 
> > root@OpenWrt:~# iperf3 -c 192.168.1.100 -R
> > Connecting to host 192.168.1.100, port 5201
> > Reverse mode, remote host 192.168.1.100 is sending
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.04  sec  1.10 GBytes   939 Mbits/sec    1
> > sender [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> > receiver
> > 
> > eth1/gmac0 (as wan):
> > root@OpenWrt:~# iperf3 -c 192.168.0.2 -P 4
> > Connecting to host 192.168.0.2, port 5201
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [SUM]   0.00-10.00  sec  1.10 GBytes   945 Mbits/sec  1191
> > sender [SUM]   0.00-10.05  sec  1.09 GBytes   935 Mbits/sec
> >  receiver
> > 
> > root@OpenWrt:~# iperf3 -c 192.168.0.2 -R
> > Connecting to host 192.168.0.2, port 5201
> > Reverse mode, remote host 192.168.0.2 is sending
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.06  sec  1.10 GBytes   939 Mbits/sec    6
> > sender [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> > receiver
> > 
> > --
> > 2.25.1
> > 
> > 
> > 
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-09-01 10:24       ` Erik Beck
  2025-09-01 14:06         ` Erik Beck
@ 2025-09-01 16:25         ` Erik Beck
  1 sibling, 0 replies; 24+ messages in thread
From: Erik Beck @ 2025-09-01 16:25 UTC (permalink / raw)
  To: Chukun Pan
  Cc: conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
	linux-kernel, linux-rockchip, Andrew Lunn


Resending due to mailer error.

>>>> On Mon, 1 Sep 2025 06:24:37 -0400
>>>> Erik Beck <xunil@tahomasoft.com> wrote:

> On Mon,  1 Sep 2025 15:00:08 +0800
> Chukun Pan <amadeus@jmu.edu.cn> wrote:
> 
> > Hi,
> > 
> > > Please change phy-mode here to "rgmii". This change will yield an
> > > ethernet speed throughput change of a factor of 100+.   
> > 
> > > Same as above: Please change phy-mode here to "rgmii". This change
> > > will yield an ethernet speed throughput change of a factor of 100+.   
> > 
> > This doesn't make sense. When I first submitted it to coolsnowwolf/lede
> > in 2022, I used "rgmii-id" as the phy-mode, and it worked:
> > https://github.com/coolsnowwolf/lede/blob/master/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3568-opc-h68k.dts#L24
> > 
> > Are you experiencing issues with both eth0 and eth1 or just one of them?
> > Are you using the generic-rk3568 target for U-Boot?
> > 
> 
> Hi Chukun, thanks for your response. 
> 
> At Andrew Lunn's suggestion, I'm doing
> more granular and rigorous testing, now using iperf3. I'll post more details
> of results here after I retest a couple of scenarios. 
> 
> However, I will report now that so far, I'm getting better (faster) and more
> consistent results using iperf3.
> 
> ~Erik

Below are my results.

In summary, the speeds in certain scenarios are closer than in others.
Pooling everything together, at the eyeball level, things look pretty similar
across using RGMII-ID and RGMII (no internal delay). If I were to run these
tests repeatedly, pool the results, and do a statistical comparison (probably
with a Kolmogorov-Smirnov (KS) test or similar), I doubt I could reject the
null hypothesis of no significant difference between the two sample
distributions. 

So what I said earlier regarding rgmii vs rgmii-id DOES NOT hold up under
more rigorous and careful testing.

Thanks,

Erik

___________________________
Results with (gmac0 & gmac1) phy-mode = "rgmii-id", tx_rx_delay unspecified
(kernel on boot sets tx_delay = 0x30 and rx_delay = 0x10 itself, both gmacs) 

eth0/wan
iperf3 -s -F VidTest-1.4Gb.mp4

{openwrt device is 192.168.2.241}
{desktop on openwrt WAN is 192.168.2.90}

-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 44414
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 44422
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   112 MBytes   935 Mbits/sec                  
[  5]   1.00-2.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   2.00-3.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   4.00-5.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   5.00-6.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   6.00-7.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   8.00-9.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   9.00-10.00  sec   112 MBytes   940 Mbits/sec                  
[  5]  10.00-10.00  sec   384 KBytes   815 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver
-----------------------------------------------------------

< Reverse >

iperf3 -s 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 45870
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 45886
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   953 Mbits/sec  120    158 KBytes       
[  5]   1.00-2.00   sec   112 MBytes   935 Mbits/sec  143    141 KBytes       
[  5]   2.00-3.00   sec   110 MBytes   923 Mbits/sec  131    195 KBytes       
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec  142    167 KBytes       
[  5]   4.00-5.00   sec   112 MBytes   942 Mbits/sec  136    133 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   929 Mbits/sec  119    175 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   932 Mbits/sec  126    115 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   943 Mbits/sec  150    113 KBytes       
[  5]   8.00-9.00   sec   105 MBytes   884 Mbits/sec   28    110 KBytes       
[  5]   9.00-10.00  sec   112 MBytes   938 Mbits/sec  140    160 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   932 Mbits/sec  1235            sender


eth1/lan

iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
{openwrt device is 192.168.1.1}
{Laptop attached to openwrt is 192.168.1.134}

Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.1, port 53876
[  5] local 192.168.1.134 port 5201 connected to 192.168.1.1 port 53890
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  31.9 MBytes   267 Mbits/sec                  
[  5]   1.00-2.00   sec  32.5 MBytes   273 Mbits/sec                  
[  5]   2.00-3.00   sec  33.6 MBytes   282 Mbits/sec                  
[  5]   3.00-4.00   sec  29.2 MBytes   245 Mbits/sec                  
[  5]   4.00-5.00   sec  33.8 MBytes   283 Mbits/sec                  
[  5]   5.00-6.00   sec  32.6 MBytes   274 Mbits/sec                  
[  5]   6.00-7.00   sec  34.1 MBytes   286 Mbits/sec                  
[  5]   7.00-8.00   sec  35.0 MBytes   294 Mbits/sec                  
[  5]   8.00-9.00   sec  33.6 MBytes   282 Mbits/sec                  
[  5]   9.00-10.00  sec  32.8 MBytes   275 Mbits/sec                  
[  5]  10.00-10.00  sec   128 KBytes   872 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent  329 MByte /  329 MByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec   329 MBytes   276 Mbits/sec                  receiver
-----------------------------------------------------------

< reverse >

iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.134 port 60508 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes   948 Mbits/sec    0    393 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   931 Mbits/sec    0    411 KBytes       
[  5]   2.00-3.00   sec   112 MBytes   935 Mbits/sec    0    433 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   933 Mbits/sec    0    433 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   934 Mbits/sec    0    433 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   932 Mbits/sec    0    433 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   930 Mbits/sec    0    433 KBytes       
[  5]   7.00-8.00   sec   111 MBytes   934 Mbits/sec    0    433 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   932 Mbits/sec    0    433 KBytes       
[  5]   9.00-10.00  sec   113 MBytes   944 Mbits/sec    0    573 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   936 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec                  receiver



Throughput (wan (eth0) -> lan (eth1) -> laptop)

Desktop <------> Laptop via Openwrt
192.168.2.90     192.168.1.134

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 54694 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   106 MBytes   889 Mbits/sec    0    461 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   934 Mbits/sec    0    461 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   932 Mbits/sec    0    461 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   938 Mbits/sec    0    503 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   9.00-10.00  sec   111 MBytes   933 Mbits/sec    0    503 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   929 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.08 GBytes   927 Mbits/sec                  receive





< Reverse >

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 54694 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   106 MBytes   889 Mbits/sec    0    461 KBytes       
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   3.00-4.00   sec   111 MBytes   934 Mbits/sec    0    461 KBytes       
[  5]   4.00-5.00   sec   111 MBytes   932 Mbits/sec    0    461 KBytes       
[  5]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0    461 KBytes       
[  5]   6.00-7.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   938 Mbits/sec    0    503 KBytes       
[  5]   8.00-9.00   sec   111 MBytes   931 Mbits/sec    0    503 KBytes       
[  5]   9.00-10.00  sec   111 MBytes   933 Mbits/sec    0    503 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   929 Mbits/sec    0            sender
[  5]   0.00-10.00  sec  1.08 GBytes   927 Mbits/sec                  receive


---------


Results with (gmac0 & gmac1) phy-mode = "rgmii", tx_rx_delay unspecified
(kernel on boot sets tx_delay = 0x30 and rx_delay = 0x10 itself, both gmacs)


eth0/wan
iperf3 -s -F VidTest-1.4Gb.mp4

{openwrt device is 192.168.2.241}
{desktop on openwrt WAN is 192.168.2.90}

iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.241, port 35070
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 35084
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   112 MBytes   936 Mbits/sec                  
[  5]   1.00-2.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   2.00-3.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   3.00-4.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   4.00-5.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   5.00-6.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   6.00-7.00   sec   112 MBytes   938 Mbits/sec                  
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec                  
[  5]   8.00-9.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   9.00-10.00  sec   112 MBytes   939 Mbits/sec                  
[  5]  10.00-10.00  sec   384 KBytes   869 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver
-----------------------------------------------------------


<reverse>
Accepted connection from 192.168.2.241, port 51650
[  5] local 192.168.2.90 port 5201 connected to 192.168.2.241 port 51660
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   953 Mbits/sec  168    209 KBytes       
[  5]   1.00-2.00   sec   112 MBytes   938 Mbits/sec  224    148 KBytes       
[  5]   2.00-3.00   sec   112 MBytes   940 Mbits/sec  196    158 KBytes       
[  5]   3.00-4.00   sec   112 MBytes   943 Mbits/sec  196    180 KBytes       
[  5]   4.00-5.00   sec   112 MBytes   937 Mbits/sec  196    187 KBytes       
[  5]   5.00-6.00   sec   112 MBytes   940 Mbits/sec  196    195 KBytes       
[  5]   6.00-7.00   sec   112 MBytes   937 Mbits/sec  196    204 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   940 Mbits/sec  224    136 KBytes       
[  5]   8.00-9.00   sec   112 MBytes   940 Mbits/sec  196    158 KBytes       
[  5]   9.00-10.00  sec   110 MBytes   922 Mbits/sec  196    188 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec  1988            sender
        Sent 1.09 GByte / 1.09 GByte (100%) of VidTest-1.4Gb.mp4
-----------------------------------------------------------



eth1/lan

{192.168.1.1 is Openwrt device}
{192.168.1.134 is laptop directly attached to Openwrt}


iperf3 -s -F VidTest-1.4Gb.mp4 
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.1, port 40866
[  5] local 192.168.1.134 port 5201 connected to 192.168.1.1 port 40868
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  67.4 MBytes   565 Mbits/sec                  
[  5]   1.00-2.00   sec  69.4 MBytes   582 Mbits/sec                  
[  5]   2.00-3.00   sec  65.9 MBytes   553 Mbits/sec                  
[  5]   3.00-4.00   sec  66.5 MBytes   558 Mbits/sec                  
[  5]   4.00-5.00   sec  70.2 MBytes   589 Mbits/sec                  
[  5]   5.00-6.00   sec  52.5 MBytes   440 Mbits/sec                  
[  5]   6.00-7.00   sec  67.2 MBytes   564 Mbits/sec                  
[  5]   7.00-8.00   sec  70.2 MBytes   589 Mbits/sec                  
[  5]   8.00-9.00   sec  57.9 MBytes   486 Mbits/sec                  
[  5]   9.00-10.00  sec  66.9 MBytes   561 Mbits/sec                  
[  5]  10.00-10.00  sec   128 KBytes   909 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
        Sent  654 MByte /  654 MByte (100%) of VidTest-1.4Gb.mp4
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec                  receiver




< reverse >

iperf3 -c 192.168.1.134 --reverse
Connecting to host 192.168.1.134, port 5201
Reverse mode, remote host 192.168.1.134 is sending
[  5] local 192.168.1.1 port 58380 connected to 192.168.1.134 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   104 MBytes   870 Mbits/sec                  
[  5]   1.00-2.00   sec  98.5 MBytes   826 Mbits/sec                  
[  5]   2.00-3.00   sec  89.9 MBytes   754 Mbits/sec                  
[  5]   3.00-4.00   sec  87.4 MBytes   733 Mbits/sec                  
[  5]   4.00-5.00   sec  97.0 MBytes   814 Mbits/sec                  
[  5]   5.00-6.00   sec  95.5 MBytes   801 Mbits/sec                  
[  5]   6.00-7.00   sec  82.1 MBytes   689 Mbits/sec                  
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec  235            sender
[  5]   0.00-10.00  sec   654 MBytes   549 Mbits/sec                  receiver





Throughput (wan (eth0) -> lan (eth1) -> laptop)

Desktop <------> Laptop via Openwrt
192.168.2.90     192.168.1.134

iperf3 -c 192.168.2.90
Connecting to host 192.168.2.90, port 5201
[  5] local 192.168.1.134 port 44380 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  91.8 MBytes   769 Mbits/sec   15   76.4 KBytes       
[  5]   1.00-2.00   sec  99.5 MBytes   835 Mbits/sec   11    102 KBytes       
[  5]   2.00-3.00   sec  98.8 MBytes   828 Mbits/sec   12    167 KBytes       
[  5]   3.00-4.00   sec  95.4 MBytes   800 Mbits/sec   17    126 KBytes       
[  5]   4.00-5.00   sec   106 MBytes   890 Mbits/sec    9    117 KBytes       
[  5]   5.00-6.00   sec  96.5 MBytes   810 Mbits/sec   15    123 KBytes       
[  5]   6.00-7.00   sec  99.6 MBytes   835 Mbits/sec   13    144 KBytes       
[  5]   7.00-8.00   sec   100 MBytes   842 Mbits/sec   15   58.0 KBytes       
[  5]   8.00-9.00   sec  96.1 MBytes   806 Mbits/sec   15    115 KBytes       
[  5]   9.00-10.00  sec  95.4 MBytes   800 Mbits/sec   14    126 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   980 MBytes   822 Mbits/sec  136            sender
[  5]   0.00-10.00  sec   979 MBytes   821 Mbits/sec                  receiver


< reverse >

perf3 -c 192.168.2.90 --reverse
Connecting to host 192.168.2.90, port 5201
Reverse mode, remote host 192.168.2.90 is sending
[  5] local 192.168.1.134 port 51148 connected to 192.168.2.90 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  40.6 MBytes   340 Mbits/sec                  
[  5]   1.00-2.00   sec  54.9 MBytes   460 Mbits/sec                  
[  5]   2.00-3.00   sec  49.6 MBytes   416 Mbits/sec                  
[  5]   3.00-4.00   sec  47.4 MBytes   397 Mbits/sec                  
[  5]   4.00-5.00   sec  45.9 MBytes   385 Mbits/sec                  
[  5]   5.00-6.00   sec  52.8 MBytes   443 Mbits/sec                  
[  5]   6.00-7.00   sec  45.1 MBytes   379 Mbits/sec                  
[  5]   7.00-8.00   sec  46.1 MBytes   387 Mbits/sec                  
[  5]   8.00-9.00   sec  42.8 MBytes   359 Mbits/sec                  
[  5]   9.00-10.00  sec  40.6 MBytes   341 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   467 MBytes   392 Mbits/sec  403            sender
[  5]   0.00-10.00  sec   466 MBytes   391 Mbits/sec                  receiver

____________________________________


> 
> > I can't reproduce your problem in my test.
> > 
> > eth0/gmac1 (as lan):
> > root@OpenWrt:~# iperf3 -c 192.168.1.100
> > Connecting to host 192.168.1.100, port 5201
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec   29
> > sender [  5]   0.00-10.04  sec  1.10 GBytes   936 Mbits/sec
> > receiver
> > 
> > root@OpenWrt:~# iperf3 -c 192.168.1.100 -R
> > Connecting to host 192.168.1.100, port 5201
> > Reverse mode, remote host 192.168.1.100 is sending
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.04  sec  1.10 GBytes   939 Mbits/sec    1
> > sender [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> > receiver
> > 
> > eth1/gmac0 (as wan):
> > root@OpenWrt:~# iperf3 -c 192.168.0.2 -P 4
> > Connecting to host 192.168.0.2, port 5201
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [SUM]   0.00-10.00  sec  1.10 GBytes   945 Mbits/sec  1191
> > sender [SUM]   0.00-10.05  sec  1.09 GBytes   935 Mbits/sec
> >  receiver
> > 
> > root@OpenWrt:~# iperf3 -c 192.168.0.2 -R
> > Connecting to host 192.168.0.2, port 5201
> > Reverse mode, remote host 192.168.0.2 is sending
> > [ ID] Interval           Transfer     Bitrate         Retr
> > [  5]   0.00-10.06  sec  1.10 GBytes   939 Mbits/sec    6
> > sender [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> > receiver
> > 
> > --
> > 2.25.1
> > 
> > 
> > 
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-09-01 14:06         ` Erik Beck
@ 2025-09-02  7:00           ` Chukun Pan
  2025-09-02 12:10             ` Erik Beck
  0 siblings, 1 reply; 24+ messages in thread
From: Chukun Pan @ 2025-09-02  7:00 UTC (permalink / raw)
  To: xunil
  Cc: amadeus, andrew, conor+dt, devicetree, heiko, krzk+dt,
	linux-arm-kernel, linux-kernel, linux-rockchip

Hi,

> So what I said earlier regarding rgmii vs rgmii-id DOES NOT hold up
> under more rigorous and careful testing.

So the following question does not exist?

>> Changing this makes a huge difference in the ethernet throughput speed. With
>> rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this to rgmii
>> mode increases throughput to about 960 Mbs.

If the iperf3 test does not reach Gigabit, you can run it in
multiple threads. e.g. `iperf3 -c xxx -P 4`

--
2.25.1



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K
  2025-09-02  7:00           ` Chukun Pan
@ 2025-09-02 12:10             ` Erik Beck
  0 siblings, 0 replies; 24+ messages in thread
From: Erik Beck @ 2025-09-02 12:10 UTC (permalink / raw)
  To: Chukun Pan
  Cc: andrew, conor+dt, devicetree, heiko, krzk+dt, linux-arm-kernel,
	linux-kernel, linux-rockchip

On Tue,  2 Sep 2025 15:00:19 +0800
Chukun Pan <amadeus@jmu.edu.cn> wrote:

> Hi,

Greetings!

> 
> > So what I said earlier regarding rgmii vs rgmii-id DOES NOT hold up
> > under more rigorous and careful testing.  
> 
> So the following question does not exist?

Yes, that is correct. My earlier question/comment/concern about a huge speed
difference between rgmii-id mode and rmgmii doesn't seem to exist when more
careful experiments and testing methods are used. I'll elaborate some more
below. And I apologize for any inconvenience. 

> >> Changing this makes a huge difference in the ethernet throughput speed.
> >> With rgmii-id mode specified, throughput is about 6.5 Mbs. Changing this
> >> to rgmii mode increases throughput to about 960 Mbs.  
> 

I'm still a bit surprised that my first test method (web-based, like fast.com
or self-hosted internal download speeds) gave such different results from more
comprehensive and careful testing with iperf3. While certainly web-based
methods can't target a particular interface, nor do they have many other
potential adjustments or refinements (UDP vs TCP, etc), they have been and
continue to be a useful tool for me to get quick information about the status
and health of my network and its devices. 


> If the iperf3 test does not reach Gigabit, you can run it in
> multiple threads. e.g. `iperf3 -c xxx -P 4`

Thanks for the tip.

I remain keenly interested in seeing a patch for the Hinlink/LinkStar devices
make it into the mainline kernel. Please let me know how I can help your
(and others) efforts to accomplish that.

Regards,

Erik


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2025-09-02 12:10 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-18 10:00 [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Chukun Pan
2025-08-18 10:00 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add HINLINK Chukun Pan
2025-08-18 10:00 ` [PATCH 2/4] dt-bindings: arm: rockchip: Add HINLINK H66K / H68K Chukun Pan
2025-08-18 10:00 ` [PATCH 3/4] arm64: dts: rockchip: Add HINLINK H68K Chukun Pan
2025-08-30 21:14   ` Erik Beck
2025-08-30 21:30     ` Andrew Lunn
2025-08-30 22:21       ` Erik Beck
2025-08-31 14:48         ` Erik Beck
2025-08-31 15:53           ` Andrew Lunn
2025-08-31 16:28             ` Erik Beck
2025-09-01  0:47               ` Andrew Lunn
2025-09-01  7:00     ` Chukun Pan
2025-09-01 10:24       ` Erik Beck
2025-09-01 14:06         ` Erik Beck
2025-09-02  7:00           ` Chukun Pan
2025-09-02 12:10             ` Erik Beck
2025-09-01 16:25         ` Erik Beck
2025-08-18 10:00 ` [PATCH 4/4] arm64: dts: rockchip: Add HINLINK H66K Chukun Pan
2025-08-18 17:27 ` [PATCH 0/4] arm64: dts: rockchip: Add HINLINK H66K/H68K Conor Dooley
2025-08-24 10:54 ` Heiko Stuebner
2025-08-30 21:11   ` Erik Beck
2025-08-30 21:26     ` Andrew Lunn
2025-08-30 22:20       ` Erik Beck
2025-08-31 13:55         ` Erik Beck

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).