Skip to contentSkip to conversation

Slightly improve hardware description of Pine64 RockPro64

PATCH Superseded Dragan Simic 1 participant 3 messages Feb 28, 2025

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Slightly improve hardware description of Pine64 RockPro64

This is a small series that introduces small improvements to the way Pine64 RockPro64 [1] single-board-computer is described in the DT files. This applies to both production-run revisions of the RockPro64.

The introduced improvements boil down to eliminating some warnings from the kernel log, by adding a previously undefined regulator and by adding some missing references to the regulators. The PCI Express patch from this series may actually result in some improvements, but the jury is still out; the patch itself is perfectly safe in the meantime.

[1] https://wiki.pine64.org/wiki/ROCKPro64

Dragan Simic (2):
arm64: dts: rockchip: Add avdd HDMI supplies to RockPro64 board dtsi
arm64: dts: rockchip: Add missing PCIe supplies to RockPro64 board
dtsi

 .../boot/dts/rockchip/rk3399-rockpro64.dtsi      | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
#1 lore raw

PATCH 1/2 arm64: dts: rockchip: Add avdd HDMI supplies to RockPro64 board dtsi

Add missing "avdd-0v9-supply" and "avdd-1v8-supply" properties to the "hdmi" node in the Pine64 RockPro64 board dtsi file. To achieve this, also add the associated "vcca_0v9" regulator that produces the 0.9 V supply, [1][2] which hasn't been defined previously in the board dtsi file.

This also eliminates the following warnings from the kernel log:

dwhdmi-rockchip ff940000.hdmi: supply avdd-0v9 not found, using dummy regulator dwhdmi-rockchip ff940000.hdmi: supply avdd-1v8 not found, using dummy regulator

There are no functional changes to the way board works with these additions, because the "vcc1v8_dvp" and "vcca_0v9" regulators are always enabled, [1][2] but these additions improve the accuracy of hardware description.

These changes apply to the both supported hardware revisions of the Pine64 RockPro64, i.e. to the production-run revisions 2.0 and 2.1. [1][2]

[1] https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf
[2] https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf

---
 arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi +12 -0
index 69a9d6170649..47dc198706c8 100644
@@ -227,6 +227,16 @@ vcc5v0_usb: regulator-vcc5v0-usb {
 		vin-supply = <&vcc12v_dcin>;
 	};
 
+	vcca_0v9: regulator-vcca-0v9 {
+		compatible = "regulator-fixed";
+		regulator-name = "vcca_0v9";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <900000>;
+		regulator-max-microvolt = <900000>;
+		vin-supply = <&vcc3v3_sys>;
+	};
+
 	vdd_log: regulator-vdd-log {
 		compatible = "pwm-regulator";
 		pwms = <&pwm2 0 25000 1>;
@@ -312,6 +322,8 @@ &gmac {
 };
 
 &hdmi {
+	avdd-0v9-supply = <&vcca_0v9>;
+	avdd-1v8-supply = <&vcc1v8_dvp>;
 	ddc-i2c-bus = <&i2c3>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&hdmi_cec>;
#2 lore raw

PATCH 2/2 arm64: dts: rockchip: Add missing PCIe supplies to RockPro64 board dtsi

In reply to Dragan Simic

Add missing "vpcie0v9-supply" and "vpcie1v8-supply" properties to the "pcie0" node in the Pine64 RockPro64 board dtsi file. This eliminates the following warnings from the kernel log:

rockchip-pcie f8000000.pcie: supply vpcie1v8 not found, using dummy regulator rockchip-pcie f8000000.pcie: supply vpcie0v9 not found, using dummy regulator

There are no functional changes to the way board works after these changes, because the "vcca_0v9" and "vcca_1v8" regulators are always enabled, [1][2] but these additions improve the accuracy of hardware description.

Shuffle and reorder the "vpcie*-supply" properties a bit, so they're sorted alphanumerically, which is a bit more logical and more useful than having these properties listed in their strict alphabetical order.

These changes apply to the both supported hardware revisions of the Pine64 RockPro64, i.e. to the production-run revisions 2.0 and 2.1. [1][2]

[1] https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf
[2] https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf

---

Notes:
Actually, these additions to the DT _might_ improve the way RockPro64 works a bit, by _possibly_ resolving the longstanding issues with PCI Express enumeration, which have been observed with certain PCI Express cards only. This was mentioned in the commit 43853e843aa6 (arm64: dts:
rockchip: Remove unsupported node from the Pinebook Pro dts, 2024-04-01), together with a brief description of the out-of-tree enumeration delay that reportedly resolves those issues.

Symptomatically enough, AFAIK only the RockPro64 has been reported to suffer from the PCI Express issues, and it's only the RockPro64 that has the missing supplies in its DT, so maybe there's something that causes issues when the PCI Express is probed before the RK808 PMIC, which the "vcca_1v8" regulator comes from. The above-mentioned enumeration delay might actually be just a workaround for those underlying issues.

Admittedly, the RockPro64 is a bit specific board by having a standard PCI Express slot, allowing use of various standard cards, but pretty much standard PCI Express cards have been attached to other RK3399 boards as well, and I can't recall similar issues being reported for them.

The required reliability testing will be performed as the time permits, so we'll hopefully see are these assumptions valid. In the meantime, this patch remains perfectly safe, from the standpoint of being unable to do any harm or cause some unforeseen regressions.

 arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi +3 -1
index 47dc198706c8..41ee381ff81f 100644
@@ -673,8 +673,10 @@ &pcie0 {
 	num-lanes = <4>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pcie_perst>;
-	vpcie12v-supply = <&vcc12v_dcin>;
+	vpcie0v9-supply = <&vcca_0v9>;
+	vpcie1v8-supply = <&vcca_1v8>;
 	vpcie3v3-supply = <&vcc3v3_pcie>;
+	vpcie12v-supply = <&vcc12v_dcin>;
 	status = "okay";
 };