This is an automatically generated commit which aids following Kernel patch history, as git will see the move and copy as a rename thus defeating the purpose. For the original discussion see: https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org> Link: https://github.com/openwrt/openwrt/pull/23139 Signed-off-by: Nick Hainke <vincent@systemli.org>
95 lines
3.1 KiB
Diff
95 lines
3.1 KiB
Diff
From e684f02492f99d6f6f037a35a613607339cf8e8f Mon Sep 17 00:00:00 2001
|
|
From: Heiko Stuebner <heiko@sntech.de>
|
|
Date: Fri, 6 Sep 2024 10:25:11 +0200
|
|
Subject: arm64: dts: rockchip: fix the pcie refclock oscillator on Rock 5 ITX
|
|
|
|
The Rock 5 ITX uses two PCIe controllers to drive both a M.2 slot and its
|
|
SATA controller with 2 lanes each. The supply for the refclk oscillator is
|
|
the same that supplies the M.2 slot, but the SATA controller port is
|
|
supplied by a different rail.
|
|
|
|
This leads to the effect that if the PCIe30x4 controller for the M.2
|
|
probes first, everything works normally. But if the PCIe30x2 controller
|
|
that is connected to the SATA controller probes first, it will hang on
|
|
the first DBI read as nothing will have enabled the refclock before.
|
|
|
|
Fix this by describing the clock generator with its supplies so that
|
|
both controllers can reference it as needed.
|
|
|
|
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
Link: https://lore.kernel.org/r/20240906082511.2963890-6-heiko@sntech.de
|
|
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5-itx.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5-itx.dts
|
|
@@ -72,6 +72,15 @@
|
|
};
|
|
};
|
|
|
|
+ /* Unnamed gated oscillator: 100MHz,3.3V,3225 */
|
|
+ pcie30_port0_refclk: pcie30_port1_refclk: pcie-oscillator {
|
|
+ compatible = "gated-fixed-clock";
|
|
+ #clock-cells = <0>;
|
|
+ clock-frequency = <100000000>;
|
|
+ clock-output-names = "pcie30_refclk";
|
|
+ vdd-supply = <&vcc3v3_pi6c_05>;
|
|
+ };
|
|
+
|
|
fan0: pwm-fan {
|
|
compatible = "pwm-fan";
|
|
#cooling-cells = <2>;
|
|
@@ -146,13 +155,14 @@
|
|
vin-supply = <&vcc_3v3_s3>;
|
|
};
|
|
|
|
- vcc3v3_mkey: regulator-vcc3v3-mkey {
|
|
+ /* The PCIE30x4_PWREN_H controls two regulators */
|
|
+ vcc3v3_mkey: vcc3v3_pi6c_05: regulator-vcc3v3-pi6c-05 {
|
|
compatible = "regulator-fixed";
|
|
enable-active-high;
|
|
gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pcie30x4_pwren_h>;
|
|
- regulator-name = "vcc3v3_mkey";
|
|
+ regulator-name = "vcc3v3_pi6c_05";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
startup-delay-us = <5000>;
|
|
@@ -513,6 +523,18 @@
|
|
|
|
/* ASMedia ASM1164 Sata controller */
|
|
&pcie3x2 {
|
|
+ /*
|
|
+ * The board has a "pcie_refclk" oscillator that needs enabling,
|
|
+ * so add it to the list of clocks.
|
|
+ */
|
|
+ clocks = <&cru ACLK_PCIE_2L_MSTR>, <&cru ACLK_PCIE_2L_SLV>,
|
|
+ <&cru ACLK_PCIE_2L_DBI>, <&cru PCLK_PCIE_2L>,
|
|
+ <&cru CLK_PCIE_AUX1>, <&cru CLK_PCIE2L_PIPE>,
|
|
+ <&pcie30_port1_refclk>;
|
|
+ clock-names = "aclk_mst", "aclk_slv",
|
|
+ "aclk_dbi", "pclk",
|
|
+ "aux", "pipe",
|
|
+ "ref";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pcie30x2_perstn_m1_l>;
|
|
reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
|
|
@@ -522,6 +544,18 @@
|
|
|
|
/* M.2 M.key */
|
|
&pcie3x4 {
|
|
+ /*
|
|
+ * The board has a "pcie_refclk" oscillator that needs enabling,
|
|
+ * so add it to the list of clocks.
|
|
+ */
|
|
+ clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,
|
|
+ <&cru ACLK_PCIE_4L_DBI>, <&cru PCLK_PCIE_4L>,
|
|
+ <&cru CLK_PCIE_AUX0>, <&cru CLK_PCIE4L_PIPE>,
|
|
+ <&pcie30_port0_refclk>;
|
|
+ clock-names = "aclk_mst", "aclk_slv",
|
|
+ "aclk_dbi", "pclk",
|
|
+ "aux", "pipe",
|
|
+ "ref";
|
|
num-lanes = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pcie30x4_perstn_m1_l>;
|