Skip to contentSkip to conversation

spacemit: k1-musepi-pro: add missing devices

PATCH Superseded Andre Heider 4 participants 20 messages May 11 – May 12

Subsystems (3)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

v2 cover spacemit: k1-musepi-pro: add missing devices

Add the missing devices with their required regulators. The regulators are named after their label in the vendor schematics[0].

v2:
- drop reg_vcc_5v0_sys as per "non-controllable" review comments on similar patches for other boards (kept the root reg_usb_vbus for though)
- add reg_vcc_4v0 instead as p1 vin?-supply, misread the schematics
- drop mpcie_vcc_3v3 and use pcie_vcc_3v3 for pcie2* too ("non-controllable" again)
- all of the above makes it consistent with other k1 boards

v1: https://lore.kernel.org/spacemit/[email protected]/T/#t

root@OpenWrt:~# cat /sys/kernel/debug/regulator/regulator_summary
 regulator                      use open bypass  opmode voltage current     min     max
---------------------------------------------------------------------------------------
 regulator-dummy                  1    0      0 unknown     0mV     0mA     0mV     0mV
 USBVBUS                          5    4      0 unknown 12000mV     0mA 12000mV 12000mV
    PCIE_VCC3V3                   5    4      0 unknown  3300mV     0mA  3300mV  3300mV
       ca400000.pcie:pcie@0-vpcie3v3   1                                 0mA     0mV     0mV
       ca800000.pcie:pcie@0-vpcie3v3   1                                 0mA     0mV     0mV
       ca400000.pcie-vpcie3v3     1                                 0mA     0mV     0mV
       ca800000.pcie-vpcie3v3     1                                 0mA     0mV     0mV
    VCC4V0                        8   10      0 unknown  4000mV     0mA  4000mV  4000mV
       buck1                      1    0      0 unknown  1050mV     0mA   500mV  3450mV
       buck2                      1    0      0 unknown   900mV     0mA   500mV  3450mV
       buck3                      1    1      0 unknown  1800mV     0mA   500mV  1800mV
          2-0050-vcc              0                                 0mA     0mV     0mV
       buck4                      2    2      0 unknown  3300mV     0mA   500mV  3300mV
          spi0.0-vcc              1                                 0mA     0mV     0mV
          d4280000.mmc-vmmc       0                                 0mA  3300mV  3300mV
       buck5                      3    7      0 unknown  2100mV     0mA   500mV  3450mV
          dldo1                   0    0      0 unknown  1200mV     0mA   500mV  3400mV
          dldo2                   0    0      0 unknown   500mV     0mA   500mV  3400mV
          dldo3                   0    0      0 unknown   500mV     0mA   500mV  3400mV
          dldo4                   1    0      0 unknown  1800mV     0mA   500mV  3400mV
          dldo5                   0    0      0 unknown   500mV     0mA   500mV  3400mV
          dldo6                   1    0      0 unknown  1800mV     0mA   500mV  3400mV
          dldo7                   0    0      0 unknown   500mV     0mA   500mV  3400mV
       buck6                      1    0      0 unknown  1100mV     0mA   500mV  3450mV
       aldo1                      1    1      0 unknown  3300mV     0mA   500mV  3400mV
          d4280000.mmc-vqmmc      1                                 0mA     0mV     0mV
       aldo2                      0    0      0 unknown   500mV     0mA   500mV  3400mV
       aldo3                      0    0      0 unknown   500mV     0mA   500mV  3400mV
       aldo4                      0    0      0 unknown   500mV     0mA   500mV  3400mV
    5V_VBUS                       2    1      0 unknown  5000mV     0mA  5000mV  5000mV
       c0a00000.usb-vbus          1                                 0mA     0mV     0mV
    VCC5V0_HUB                    2    1      0 unknown  5000mV     0mA  5000mV  5000mV
       c0a00000.usb:hub@1-vdd     1                                 0mA     0mV     0mV

[0] https://github.com/spacemit-com/docs-product/blob/main/en/k1_muse_pi_pro/pi_pro_hw.md

Andre Heider (6):
riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure
riscv: dts: spacemit: k1-musepi-pro: add 24c04 eeprom
riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR
riscv: dts: spacemit: k1-musepi-pro: enable USB 3 ports
riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports
riscv: dts: spacemit: k1-musepi-pro: set default console baud rate

 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 324 +++++++++++++++++-
 1 file changed, 323 insertions(+), 1 deletion(-)
Signature · 1 line
2.53.0
#1 lore raw

PATCH v2 1/6 riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

Enable i2c8 and add the connected SpacemiT P1 PMIC with its related regulators for the board's power infrastructure and voltage regulation support.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 144 ++++++++++++++++++
 1 file changed, 144 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +144 -0
index 29e333b670cf0..88c35ad1ef2ae 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c8 = &i2c8;
 	};
 
 	chosen {
@@ -33,6 +34,25 @@ led1 {
 			default-state = "on";
 		};
 	};
+
+	reg_usb_vbus: regulator-usb-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USBVBUS";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_vcc_4v0: regulator-vcc-40v {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
 };
 
 &emmc {
@@ -72,6 +92,130 @@ &pdma {
 	status = "okay";
 };
 
+&i2c8 {
+	pinctrl-0 = <&i2c8_cfg>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	pmic@41 {
+		compatible = "spacemit,p1";
+		reg = <0x41>;
+		interrupts = <64>;
+		vin1-supply = <&reg_vcc_4v0>;
+		vin2-supply = <&reg_vcc_4v0>;
+		vin3-supply = <&reg_vcc_4v0>;
+		vin4-supply = <&reg_vcc_4v0>;
+		vin5-supply = <&reg_vcc_4v0>;
+		vin6-supply = <&reg_vcc_4v0>;
+		aldoin-supply = <&reg_vcc_4v0>;
+		dldoin1-supply = <&buck5>;
+		dldoin2-supply = <&buck5>;
+
+		regulators {
+			buck1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck5: buck5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			aldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			aldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			dldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo7 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+		};
+	};
+};
+
 &uart0 {
 	pinctrl-0 = <&uart0_2_cfg>;
 	pinctrl-names = "default";
Signature · 1 line
2.53.0
#2 lore raw

Re: [PATCH v2 1/6] riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] The node name `regulator-vcc-40v` incorrectly implies a 40V regulator, whereas it is configured for…

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The node name regulator-vcc-40v incorrectly implies a 40V regulator, whereas it is configured for 4.0V. --

commit 31559fd8aa980bcda8336aa1515122f80207c34b
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

This commit enables i2c8 and adds the connected SpacemiT P1 PMIC with its related regulators for the board's power infrastructure.

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0

[ ... ]

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts led1 { · line 47

Quoted 1 line
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -0
+	reg_vcc_4v0: regulator-vcc-40v {

This isn't a bug, but there appears to be a typo in the node name. The 40v suffix implies a 40V regulator, whereas the regulator properties configure it for 4.0V. Should this be named regulator-vcc-4v0 or similar to match the label and configuration?

Quoted 8 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +8 -0
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
maintainer
#3 lore raw

Re: [PATCH v2 1/6] riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

In reply to Andre Heider

Hi Andre,

Quoted 25 lines · Andre Heider

Enable i2c8 and add the connected SpacemiT P1 PMIC with its related regulators for the board's power infrastructure and voltage regulation support.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 144 ++++++++++++++++++
 1 file changed, 144 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
index 29e333b670cf0..88c35ad1ef2ae 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c8 = &i2c8;
 	};
 
 	chosen {
@@ -33,6 +34,25 @@ led1 {
 			default-state = "on";
 		};
 	};
+

..

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts led1 { · line 45

Quoted 8 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +8 -0
+	reg_usb_vbus: regulator-usb-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USBVBUS";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};

I think you can further drop above regulator, which merely serve as vin-supply and not used by devices, plus it's a non-controllable fixed regulator

Quoted 148 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +134 -0
+
+	reg_vcc_4v0: regulator-vcc-40v {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
 };
 
 &emmc {
@@ -72,6 +92,130 @@ &pdma {
 	status = "okay";
 };
 
+&i2c8 {
+	pinctrl-0 = <&i2c8_cfg>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	pmic@41 {
+		compatible = "spacemit,p1";
+		reg = <0x41>;
+		interrupts = <64>;
+		vin1-supply = <&reg_vcc_4v0>;
+		vin2-supply = <&reg_vcc_4v0>;
+		vin3-supply = <&reg_vcc_4v0>;
+		vin4-supply = <&reg_vcc_4v0>;
+		vin5-supply = <&reg_vcc_4v0>;
+		vin6-supply = <&reg_vcc_4v0>;
+		aldoin-supply = <&reg_vcc_4v0>;
+		dldoin1-supply = <&buck5>;
+		dldoin2-supply = <&buck5>;
+
+		regulators {
+			buck1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck5: buck5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			aldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			aldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			dldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo7 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+		};
+	};
+};
+
 &uart0 {
 	pinctrl-0 = <&uart0_2_cfg>;
 	pinctrl-names = "default";
Signature · 1 line
2.53.0
Signature · 1 line
Yixun Lan (dlan)
#4 lore raw

Re: [PATCH v2 1/6] riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

Quoted 29 lines · Yixun Lan

Hi Andre,

Quoted 25 lines · Andre Heider

Enable i2c8 and add the connected SpacemiT P1 PMIC with its related regulators for the board's power infrastructure and voltage regulation support.

---
  .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 144 ++++++++++++++++++
  1 file changed, 144 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
index 29e333b670cf0..88c35ad1ef2ae 100644
@@ -17,6 +17,7 @@ / {
  	aliases {
  		ethernet0 = &eth0;
  		serial0 = &uart0;
+		i2c8 = &i2c8;
  	};
 
  	chosen {
@@ -33,6 +34,25 @@ led1 {
  			default-state = "on";
  		};
  	};
+

..

Quoted 10 lines

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts led1 { · line 45

Quoted 8 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +8 -0
+	reg_usb_vbus: regulator-usb-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USBVBUS";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};

I think you can further drop above regulator, which merely serve as vin-supply and not used by devices, plus it's a non-controllable fixed regulator

It is, but as mentioned on the cover letter I left this one as it's consistent with the other k1 boards. I don't care either way, so I'll just drop it.

Thanks,
Andre

Quoted 150 lines
Quoted 149 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +134 -0
+
+	reg_vcc_4v0: regulator-vcc-40v {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
  };
 
  &emmc {
@@ -72,6 +92,130 @@ &pdma {
  	status = "okay";
  };
 
+&i2c8 {
+	pinctrl-0 = <&i2c8_cfg>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	pmic@41 {
+		compatible = "spacemit,p1";
+		reg = <0x41>;
+		interrupts = <64>;
+		vin1-supply = <&reg_vcc_4v0>;
+		vin2-supply = <&reg_vcc_4v0>;
+		vin3-supply = <&reg_vcc_4v0>;
+		vin4-supply = <&reg_vcc_4v0>;
+		vin5-supply = <&reg_vcc_4v0>;
+		vin6-supply = <&reg_vcc_4v0>;
+		aldoin-supply = <&reg_vcc_4v0>;
+		dldoin1-supply = <&buck5>;
+		dldoin2-supply = <&buck5>;
+
+		regulators {
+			buck1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck5: buck5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3450000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			aldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			aldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			aldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo1 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-boot-on;
+			};
+
+			dldo2 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo4 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo5 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+
+			dldo6 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+				regulator-always-on;
+			};
+
+			dldo7 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <3400000>;
+			};
+		};
+	};
+};
+
  &uart0 {
  	pinctrl-0 = <&uart0_2_cfg>;
  	pinctrl-names = "default";
Signature · 1 line
2.53.0
maintainer
#5 lore raw

Re: [PATCH v2 1/6] riscv: dts: spacemit: k1-musepi-pro: add PMIC and power infrastructure

Hi Andre,

Quoted 41 lines · Andre Heider
Quoted 29 lines · Yixun Lan

Hi Andre,

Quoted 25 lines · Andre Heider

Enable i2c8 and add the connected SpacemiT P1 PMIC with its related regulators for the board's power infrastructure and voltage regulation support.

---
  .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 144 ++++++++++++++++++
  1 file changed, 144 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
index 29e333b670cf0..88c35ad1ef2ae 100644
@@ -17,6 +17,7 @@ / {
  	aliases {
  		ethernet0 = &eth0;
  		serial0 = &uart0;
+		i2c8 = &i2c8;
  	};
 
  	chosen {
@@ -33,6 +34,25 @@ led1 {
  			default-state = "on";
  		};
  	};
+

..

Quoted 10 lines

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts led1 { · line 45

Quoted 8 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +8 -0
+	reg_usb_vbus: regulator-usb-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USBVBUS";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};

I think you can further drop above regulator, which merely serve as vin-supply and not used by devices, plus it's a non-controllable fixed regulator

Quoted 3 lines

It is, but as mentioned on the cover letter I left this one as it's consistent with the other k1 boards. I don't care either way, so I'll just drop it.

Please drop

It's a historical reason that we instroduced the unnecessary regulator before Krzysztof's comment, in other words, we should also fix that too..

Signature · 1 line
Yixun Lan (dlan)
#6 lore raw

PATCH v2 2/6 riscv: dts: spacemit: k1-musepi-pro: add 24c04 eeprom

In reply to Andre Heider

Enable i2c2 and add the connected 24c04 EEPROM.

It contains an ONIE TLV table:
=> tlv_eeprom
TLV: 0

[  12.162] TlvInfo Header:
[  12.162]    Id String:    TlvInfo
[  12.165]    Version:      1
[  12.168]    Total Length: 58
[  12.171] TLV Name             Code Len Value
[  12.175] -------------------- ---- --- -----
[  12.179] Product Name         0x21  16 k1-x_MUSE-Pi-Pro
[  12.184] Serial Number        0x23  17 BPMIMXXXXXXXXXXXX
[  12.189] Unknown              0x41   1  0x02
[  12.194] Base MAC Address     0x24   6 FE:FE:FE:XX:XX:XX
[  12.199] MAC Addresses        0x2A   2 2
[  12.203] CRC-32               0xFE   4 0x395ECD34
[  12.207] Checksum is valid.

(With 0x41 as TLV_CODE_DDR_CSNUM)

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 35 ++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +34 -1
index 88c35ad1ef2ae..79415d760f162 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c2 = &i2c2;
 		i2c8 = &i2c8;
 	};
 
@@ -92,6 +93,38 @@ &pdma {
 	status = "okay";
 };
 
+&i2c2 {
+	pinctrl-0 = <&i2c2_0_cfg>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	eeprom@50 {
+		compatible = "atmel,24c02";
+		reg = <0x50>;
+		vcc-supply = <&buck3_1v8>; /* EEPROM_VCC1V8 */
+		pagesize = <8>;
+		read-only;
+		size = <256>;
+
+		nvmem-layout {
+			compatible = "onie,tlv-layout";
+
+			product-name {
+			};
+
+			serial-number {
+			};
+
+			mac-address {
+				#nvmem-cell-cells = <1>;
+			};
+
+			num-macs {
+			};
+		};
+	};
+};
+
 &i2c8 {
 	pinctrl-0 = <&i2c8_cfg>;
 	pinctrl-names = "default";
@@ -126,7 +159,7 @@ buck2 {
 				regulator-always-on;
 			};
 
-			buck3 {
+			buck3_1v8: buck3 {
 				regulator-min-microvolt = <500000>;
 				regulator-max-microvolt = <1800000>;
 				regulator-ramp-delay = <5000>;
Signature · 1 line
2.53.0
#7 lore raw

Re: [PATCH v2 2/6] riscv: dts: spacemit: k1-musepi-pro: add 24c04 eeprom

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Mismatch between commit message specifying 24C04 EEPROM and the device tree implementation…

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Mismatch between commit message specifying 24C04 EEPROM and the device tree implementation specifying 24C02. --

commit 8474b79f5a61bfe2629e2e2bdbab9bc9128b8502
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: add 24c04 eeprom

This commit enables i2c2 and adds a connected EEPROM containing an ONIE TLV table.

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0
index 88c35ad1ef2ae..79415d760f162 100644

[ ... ]

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
@@ -92,6 +93,38 @@ &pdma {
 	status = "okay";
 };
 
+&i2c2 {
+	pinctrl-0 = <&i2c2_0_cfg>;

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts &pdma { · line 107

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+	pinctrl-names = "default";
+	status = "okay";
+
+	eeprom@50 {
+		compatible = "atmel,24c02";
+		reg = <0x50>;
+		vcc-supply = <&buck3_1v8>; /* EEPROM_VCC1V8 */
+		pagesize = <8>;
+		read-only;
+		size = <256>;

The commit message states "add 24c04 eeprom", but the device tree uses the atmel,24c02 compatible string, a page size of 8, and a total size of 256 bytes.

Since a 24c04 EEPROM is typically 512 bytes with a 16-byte page size, is this hardware actually a 24c02, or does the device tree node need to be updated to fully describe a 24c04?

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
#8 lore raw

PATCH v2 3/6 riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

In reply to Andre Heider

Add the QSPI controller node and describe the attached SPI NOR flash (Winbond W25Q64FWSSAQ).

Add a corresponding vendor flash partition layout.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 43 ++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +42 -1
index 79415d760f162..7ebace0e46edb 100644
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
 				regulator-always-on;
 			};
 
-			buck4 {
+			buck4_3v3: buck4 {
 				regulator-min-microvolt = <500000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-ramp-delay = <5000>;
@@ -249,6 +249,47 @@ dldo7 {
 	};
 };
 
+&qspi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&qspi_cfg>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <26500000>;
+		spi-rx-bus-width = <4>;
+		spi-tx-bus-width = <4>;
+		vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			bootinfo@0 {
+				reg = <0x0 0x10000>;
+			};
+			private@10000 {
+				reg = <0x10000 0x10000>;
+			};
+			fsbl@20000 {
+				reg = <0x20000 0x40000>;
+			};
+			env@60000 {
+				reg = <0x60000 0x10000>;
+			};
+			opensbi@70000 {
+				reg = <0x70000 0x30000>;
+			};
+			uboot@a00000 {
+				reg = <0xa0000 0x760000>;
+			};
+		};
+	};
+};
+
 &uart0 {
 	pinctrl-0 = <&uart0_2_cfg>;
 	pinctrl-names = "default";
Signature · 1 line
2.53.0
#9 lore raw

Re: [PATCH v2 3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] Potential overvoltage risk for the W25Q64FW SPI NOR flash via the 'buck4_3v3' supply. - [Low] The…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Potential overvoltage risk for the W25Q64FW SPI NOR flash via the 'buck4_3v3' supply.
- [Low] The unit-address in the 'uboot' partition node name does not match the base address in its 'reg' property. --

commit 470f9c74bd3cfec41ed69dd8c4e22535a7e8164f
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

This commit adds the QSPI controller node and describes the attached SPI NOR flash. It also provides a corresponding vendor flash partition layout.

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0

[ ... ]

Quoted 9 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
 				regulator-always-on;
 			};
 
-			buck4 {
+			buck4_3v3: buck4 {
 				regulator-min-microvolt = <500000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-ramp-delay = <5000>;

[ ... ]

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
@@ -249,6 +249,47 @@ dldo7 {
 	};
 };
 
+&qspi {
+	pinctrl-names = "default";

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 263

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+	pinctrl-0 = <&qspi_cfg>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <26500000>;
+		spi-rx-bus-width = <4>;
+		spi-tx-bus-width = <4>;
+		vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */

The commit message notes this flash is a Winbond W25Q64FWSSAQ, which is a strict 1.8V part. Could this vcc-supply assignment cause hardware damage?

The buck4 regulator has a maximum voltage of 3.3V. If the regulator defaults to 3.3V or is configured to 3.3V dynamically, it exceeds the absolute maximum ratings for the 1.8V W25Q series flash.

Is the board actually using the 3V equivalent (W25Q64JV), or does the regulator need stricter constraints if it exclusively powers this flash?

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +6 -0
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;

[ ... ]

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 287

Quoted 5 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +5 -0
+			opensbi@70000 {
+				reg = <0x70000 0x30000>;
+			};
+			uboot@a00000 {
+				reg = <0xa0000 0x760000>;

This isn't a regression, but there is a mismatch between the unit-address in the node name and the base address in the reg property.

Should the node be named uboot@a0000 to match the 0xa0000 address and prevent a compiler warning?

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +4 -0
+			};
+		};
+	};
+};
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
#10 lore raw

Re: [PATCH v2 3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

Quoted 52 lines · On 12.05.26 4:28 AM, [email protected] wrote:

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Potential overvoltage risk for the W25Q64FW SPI NOR flash via the 'buck4_3v3' supply.
- [Low] The unit-address in the 'uboot' partition node name does not match the base address in its 'reg' property. --

commit 470f9c74bd3cfec41ed69dd8c4e22535a7e8164f
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

This commit adds the QSPI controller node and describes the attached SPI NOR flash. It also provides a corresponding vendor flash partition layout.

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0

[ ... ]

Quoted 9 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
  				regulator-always-on;
  			};
 
-			buck4 {
+			buck4_3v3: buck4 {
  				regulator-min-microvolt = <500000>;
  				regulator-max-microvolt = <3300000>;
  				regulator-ramp-delay = <5000>;

[ ... ]

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
@@ -249,6 +249,47 @@ dldo7 {
  	};
  };
 
+&qspi {
+	pinctrl-names = "default";

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 263

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+	pinctrl-0 = <&qspi_cfg>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <26500000>;
+		spi-rx-bus-width = <4>;
+		spi-tx-bus-width = <4>;
+		vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */

The commit message notes this flash is a Winbond W25Q64FWSSAQ, which is a strict 1.8V part. Could this vcc-supply assignment cause hardware damage?

Quoted 3 lines

The buck4 regulator has a maximum voltage of 3.3V. If the regulator defaults to 3.3V or is configured to 3.3V dynamically, it exceeds the absolute maximum ratings for the 1.8V W25Q series flash.

As per the comment, there's a the non controllable regulator QSPI_VCC1833 in between. k1-milkv-jupiter.dts matches in this regard.
I'll keep it unchanged unless someone has an idea how to express that in a better way.

Quoted 30 lines

Is the board actually using the 3V equivalent (W25Q64JV), or does the regulator need stricter constraints if it exclusively powers this flash?

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +6 -0
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;

[ ... ]

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 287

Quoted 5 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +5 -0
+			opensbi@70000 {
+				reg = <0x70000 0x30000>;
+			};
+			uboot@a00000 {
+				reg = <0xa0000 0x760000>;

This isn't a regression, but there is a mismatch between the unit-address in the node name and the base address in the reg property.

Should the node be named uboot@a0000 to match the 0xa0000 address and prevent a compiler warning?

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +4 -0
+			};
+		};
+	};
+};
maintainer
#11 lore raw

Re: [PATCH v2 3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

Quoted 54 lines · Andre Heider
Quoted 52 lines · On 12.05.26 4:28 AM, [email protected] wrote:

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Potential overvoltage risk for the W25Q64FW SPI NOR flash via the 'buck4_3v3' supply.
- [Low] The unit-address in the 'uboot' partition node name does not match the base address in its 'reg' property. --

commit 470f9c74bd3cfec41ed69dd8c4e22535a7e8164f
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

This commit adds the QSPI controller node and describes the attached SPI NOR flash. It also provides a corresponding vendor flash partition layout.

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0

[ ... ]

Quoted 9 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
                             regulator-always-on;
                     };
 
-                    buck4 {
+                    buck4_3v3: buck4 {
                             regulator-min-microvolt = <500000>;
                             regulator-max-microvolt = <3300000>;
                             regulator-ramp-delay = <5000>;

[ ... ]

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
@@ -249,6 +249,47 @@ dldo7 {
     };
  };
 
+&qspi {
+    pinctrl-names = "default";

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 263

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+    pinctrl-0 = <&qspi_cfg>;
+    status = "okay";
+
+    flash@0 {
+            compatible = "jedec,spi-nor";
+            reg = <0>;
+            spi-max-frequency = <26500000>;
+            spi-rx-bus-width = <4>;
+            spi-tx-bus-width = <4>;
+            vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */

The commit message notes this flash is a Winbond W25Q64FWSSAQ, which is a strict 1.8V part. Could this vcc-supply assignment cause hardware damage?

Quoted 7 lines
Quoted 3 lines

The buck4 regulator has a maximum voltage of 3.3V. If the regulator defaults to 3.3V or is configured to 3.3V dynamically, it exceeds the absolute maximum ratings for the 1.8V W25Q series flash.

As per the comment, there's a the non controllable regulator QSPI_VCC1833 in between. k1-milkv-jupiter.dts matches in this regard.
I'll keep it unchanged unless someone has an idea how to express that in a better way.

That's what we have fixed-regulator binding for. It can take an input supply.

Rob

#12 lore raw

Re: [PATCH v2 3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

Quoted 59 lines · Rob Herring
Quoted 58 lines · Andre Heider
Quoted 55 lines · On 12.05.26 4:28 AM, [email protected] wrote:

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Potential overvoltage risk for the W25Q64FW SPI NOR flash via the 'buck4_3v3' supply.
- [Low] The unit-address in the 'uboot' partition node name does not match the base address in its 'reg' property. --

commit 470f9c74bd3cfec41ed69dd8c4e22535a7e8164f
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

This commit adds the QSPI controller node and describes the attached SPI NOR flash. It also provides a corresponding vendor flash partition layout.

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0

[ ... ]

Quoted 9 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
                              regulator-always-on;
                      };
 
-                    buck4 {
+                    buck4_3v3: buck4 {
                              regulator-min-microvolt = <500000>;
                              regulator-max-microvolt = <3300000>;
                              regulator-ramp-delay = <5000>;

[ ... ]

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
@@ -249,6 +249,47 @@ dldo7 {
      };
   };
 
+&qspi {
+    pinctrl-names = "default";

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 263

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+    pinctrl-0 = <&qspi_cfg>;
+    status = "okay";
+
+    flash@0 {
+            compatible = "jedec,spi-nor";
+            reg = <0>;
+            spi-max-frequency = <26500000>;
+            spi-rx-bus-width = <4>;
+            spi-tx-bus-width = <4>;
+            vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */

The commit message notes this flash is a Winbond W25Q64FWSSAQ, which is a strict 1.8V part. Could this vcc-supply assignment cause hardware damage?

The buck4 regulator has a maximum voltage of 3.3V. If the regulator defaults to 3.3V or is configured to 3.3V dynamically, it exceeds the absolute maximum ratings for the 1.8V W25Q series flash.

Quoted 5 lines
Quoted 3 lines

As per the comment, there's a the non controllable regulator QSPI_VCC1833 in between. k1-milkv-jupiter.dts matches in this regard.
I'll keep it unchanged unless someone has an idea how to express that in a better way.

That's what we have fixed-regulator binding for. It can take an input supply.

Yeah, I was just trying to avoid the "non controllable" comment with a request to get rid of it ;) But I guess if I have a consumer that's fine.

Note that dtbs_check passes, AFAICT sashiko is the only instance noticing it.

Thanks,
Andre

maintainer
#13 lore raw

Re: [PATCH v2 3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR

In reply to Andre Heider

Hi Andre,

Quoted 15 lines · Andre Heider

Add the QSPI controller node and describe the attached SPI NOR flash (Winbond W25Q64FWSSAQ).

Add a corresponding vendor flash partition layout.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 43 ++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0
index 79415d760f162..7ebace0e46edb 100644

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts buck3_1v8: buck3 { · line 169

Quoted 5 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
@@ -166,7 +166,7 @@ buck3_1v8: buck3 {
 				regulator-always-on;
 			};
 
-			buck4 {
+			buck4_3v3: buck4 {

I'd prefer you make it right once in the first patch [1/6] which introduced this regulator.. please fix all similar issues in this series..

Quoted 54 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +41 -0
 				regulator-min-microvolt = <500000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-ramp-delay = <5000>;
@@ -249,6 +249,47 @@ dldo7 {
 	};
 };
 
+&qspi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&qspi_cfg>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <26500000>;
+		spi-rx-bus-width = <4>;
+		spi-tx-bus-width = <4>;
+		vcc-supply = <&buck4_3v3>; /* QSPI_VCC1833 */
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			bootinfo@0 {
+				reg = <0x0 0x10000>;
+			};
+			private@10000 {
+				reg = <0x10000 0x10000>;
+			};
+			fsbl@20000 {
+				reg = <0x20000 0x40000>;
+			};
+			env@60000 {
+				reg = <0x60000 0x10000>;
+			};
+			opensbi@70000 {
+				reg = <0x70000 0x30000>;
+			};
+			uboot@a00000 {
+				reg = <0xa0000 0x760000>;
+			};
+		};
+	};
+};
+
 &uart0 {
 	pinctrl-0 = <&uart0_2_cfg>;
 	pinctrl-names = "default";
Signature · 1 line
2.53.0
Signature · 1 line
Yixun Lan (dlan)
#14 lore raw

PATCH v2 4/6 riscv: dts: spacemit: k1-musepi-pro: enable USB 3 ports

In reply to Andre Heider

Enable the DWC3 USB 3.0 controller, its associated combo_phy (USB 3 PHY) and usbphy2 (USB 2 PHY) on the MusePi Pro board.

The board uses a VLI VL817 hub, providing four ports.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +54 -0
index 7ebace0e46edb..9c90c2817ecb7 100644
@@ -54,6 +54,28 @@ reg_vcc_4v0: regulator-vcc-40v {
 		regulator-always-on;
 		vin-supply = <&reg_usb_vbus>;
 	};
+
+	reg_5v_vbus: regulator-5v-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "5V_VBUS";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+		gpio = <&gpio K1_GPIO(79) GPIO_ACTIVE_HIGH>; /* USB3_PWREN */
+		enable-active-high;
+	};
+
+	reg_vcc5v_hub: regulator-vcc5v-hub {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC5V0_HUB";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+		gpio = <&gpio K1_GPIO(127) GPIO_ACTIVE_HIGH>; /* HUB_PWREN */
+		enable-active-high;
+	};
 };
 
 &emmc {
@@ -66,6 +88,10 @@ &emmc {
 	status = "okay";
 };
 
+&combo_phy {
+	status = "okay";
+};
+
 &eth0 {
 	phy-handle = <&rgmii0>;
 	phy-mode = "rgmii-id";
@@ -295,3 +321,31 @@ &uart0 {
 	pinctrl-names = "default";
 	status = "okay";
 };
+
+&usbphy2 {
+	status = "okay";
+};
+
+&usb_dwc3 {
+	dr_mode = "host";
+	#address-cells = <1>;
+	#size-cells = <0>;
+	vbus-supply = <&reg_5v_vbus>;
+	status = "okay";
+
+	hub_2_0: hub@1 {
+		compatible = "usb2109,2817";
+		reg = <0x1>;
+		vdd-supply = <&reg_vcc5v_hub>;
+		peer-hub = <&hub_3_0>;
+		reset-gpios = <&gpio K1_GPIO(123) GPIO_ACTIVE_LOW>; /* HUB_RST */
+	};
+
+	hub_3_0: hub@2 {
+		compatible = "usb2109,817";
+		reg = <0x2>;
+		vdd-supply = <&reg_vcc5v_hub>;
+		peer-hub = <&hub_2_0>;
+		reset-gpios = <&gpio K1_GPIO(123) GPIO_ACTIVE_LOW>; /* HUB_RST */
+	};
+};
Signature · 1 line
2.53.0
#15 lore raw

PATCH v2 5/6 riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports

In reply to Andre Heider

Enable the two PCIe controller along with and their associated PHYs. They are routed to the M.2 M-key connector and to the PCIe slot.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +50 -0
index 9c90c2817ecb7..2d3e30f0bd806 100644
@@ -36,6 +36,24 @@ led1 {
 		};
 	};
 
+	pcie_vcc_3v3: regulator-pcie-vcc3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "PCIE_VCC3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
+
+	mpcie_vcc_3v3: regulator-mpcie-vcc3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "MPCIE_VCC3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
+
 	reg_usb_vbus: regulator-usb-vbus {
 		compatible = "regulator-fixed";
 		regulator-name = "USBVBUS";
@@ -275,6 +293,38 @@ dldo7 {
 	};
 };
 
+&pcie1_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_3_cfg>;
+	status = "okay";
+};
+
+&pcie1_port {
+	phys = <&pcie1_phy>;
+	vpcie3v3-supply = <&pcie_vcc_3v3>;
+};
+
+&pcie1 {
+	vpcie3v3-supply = <&pcie_vcc_3v3>;
+	status = "okay";
+};
+
+&pcie2_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie2_4_cfg>;
+	status = "okay";
+};
+
+&pcie2_port {
+	phys = <&pcie2_phy>;
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;
+};
+
+&pcie2 {
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;
+	status = "okay";
+};
+
 &qspi {
 	pinctrl-names = "default";
 	pinctrl-0 = <&qspi_cfg>;
Signature · 1 line
2.53.0
#16 lore raw

Re: [PATCH v2 5/6] riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] The `vpcie3v3-supply` property is incorrectly assigned to the top-level PCIe host controller…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The vpcie3v3-supply property is incorrectly assigned to the top-level PCIe host controller nodes (&pcie1 and &pcie2), which will cause a dtbs_check schema validation failure.
- [Low] Grammar and phrasing errors in the commit message.
--

commit 2a8e8221b4fb4ddc072a4a8a753e3e9b7e8f1d06
Author: Andre Heider <[email protected]>

riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports

This commit enables the two PCIe controllers and their PHYs for the SpacemiT K1 MusePI Pro board. The PCIe ports are routed to the M.2 M-key connector and the PCIe slot, and fixed regulators are provided for the 3.3V supplies.

Quoted 2 lines

Enable the two PCIe controller along with and their associated PHYs. They are routed to the M.2 M-key connector and to the PCIe slot.

This isn't a bug, but there's a typo in the commit message. The word "controller" should be plural, and there is an extra "and" after "with".

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0
index 9c90c2817ecb7..2d3e30f0bd806 100644

[ ... ]

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 308

Quoted 13 lines

+&pcie1_phy {

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +12 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_3_cfg>;
+	status = "okay";
+};
+
+&pcie1_port {
+	phys = <&pcie1_phy>;
+	vpcie3v3-supply = <&pcie_vcc_3v3>;
+};
+
+&pcie1 {
+	vpcie3v3-supply = <&pcie_vcc_3v3>;

Does this cause a dtbs_check schema validation failure?

According to the SpacemiT PCIe device tree binding schema, the vpcie3v3-supply property is strictly defined under the patternProperties for the child PCI bridge node. The top-level host controller node specifies unevaluatedProperties: false and does not define vpcie3v3-supply.

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +6 -0
+	status = "okay";
+};
+
+&pcie2_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie2_4_cfg>;

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 324

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+	status = "okay";
+};
+
+&pcie2_port {
+	phys = <&pcie2_phy>;
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;
+};
+
+&pcie2 {
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;

Is this redundancy added to work around an existing issue in the SpacemiT K1 PCIe driver?

The driver currently fetches the regulator from the root controller device instead of the port node, but duplicating the property in the device tree violates the bindings.

Should the driver be updated to parse the child node instead of duplicating the property here in the root nodes?

Quoted 2 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
+	status = "okay";
+};
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=5
maintainer
#17 lore raw

Re: [PATCH v2 5/6] riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports

In reply to Andre Heider

Hi Andre,

Quoted 53 lines · Andre Heider

Enable the two PCIe controller along with and their associated PHYs. They are routed to the M.2 M-key connector and to the PCIe slot.

---
 .../riscv/boot/dts/spacemit/k1-musepi-pro.dts | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +30 -0
index 9c90c2817ecb7..2d3e30f0bd806 100644
@@ -36,6 +36,24 @@ led1 {
 		};
 	};
 
+	pcie_vcc_3v3: regulator-pcie-vcc3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "PCIE_VCC3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
+
+	mpcie_vcc_3v3: regulator-mpcie-vcc3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "MPCIE_VCC3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+		vin-supply = <&reg_usb_vbus>;
+	};
+
 	reg_usb_vbus: regulator-usb-vbus {
 		compatible = "regulator-fixed";
 		regulator-name = "USBVBUS";
@@ -275,6 +293,38 @@ dldo7 {
 	};
 };
 
+&pcie1_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_3_cfg>;
+	status = "okay";
+};
+
+&pcie1_port {
+	phys = <&pcie1_phy>;
+	vpcie3v3-supply = <&pcie_vcc_3v3>;
+};
+
+&pcie1 {

..

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts

Quoted 1 line
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -0
+	vpcie3v3-supply = <&pcie_vcc_3v3>;

drop vpcie3v3-supply which not needed

Quoted 6 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +6 -0
+	status = "okay";
+};
+
+&pcie2_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie2_4_cfg>;

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts dldo7 { · line 324

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+	status = "okay";
+};
+
+&pcie2_port {
+	phys = <&pcie2_phy>;
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;
+};
+
+&pcie2 {
+	vpcie3v3-supply = <&mpcie_vcc_3v3>;

same here

Quoted 9 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +3 -0
+	status = "okay";
+};
+
 &qspi {
 	pinctrl-names = "default";
 	pinctrl-0 = <&qspi_cfg>;
Signature · 1 line
2.53.0
Signature · 1 line
Yixun Lan (dlan)
#18 lore raw

PATCH v2 6/6 riscv: dts: spacemit: k1-musepi-pro: set default console baud rate

In reply to Andre Heider

Allow serial output with the same uboot/opensbi settings so the console works without providing a cmdline.

---
 arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
index 2d3e30f0bd806..c8bf776511c94 100644
@@ -22,7 +22,7 @@ aliases {
 	};
 
 	chosen {
-		stdout-path = "serial0";
+		stdout-path = "serial0:115200n8";
 	};
 
 	leds {
Signature · 1 line
2.53.0
maintainer Reviewed-by on v2 6/6
#19 lore raw

Re: [PATCH v2 6/6] riscv: dts: spacemit: k1-musepi-pro: set default console baud rate

Quoted 4 lines · Andre Heider

Allow serial output with the same uboot/opensbi settings so the console works without providing a cmdline.

Quoted 20 lines
---
 arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +1 -1
index 2d3e30f0bd806..c8bf776511c94 100644
@@ -22,7 +22,7 @@ aliases {
 	};
 
 	chosen {
-		stdout-path = "serial0";
+		stdout-path = "serial0:115200n8";
 	};
 
 	leds {
Signature · 1 line
2.53.0
Signature · 1 line
Yixun Lan (dlan)