Skip to contentSkip to conversation

spacemit: k1-musepi-pro: add missing devices

PATCH Applied Andre Heider 3 participants 14 messages May 13 – May 16

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v3 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].

v3:
- drop reg_usb_vbus, non-controllable and served only as vin-supply
- fixed regulator-vcc-4v0 typo
- fold addition of pmic regulator labels into the pmic patch
- eeprom is a GT24C02B, fixed commit message
- added reg_qspi_vcc1v833
- fixed uboot nor name offset
- add missing "reg_" prefix for reg_pcie_vcc_3v3
- drop pcie{1,2}'s vpcie3v3-supply, it's already specified on the root ports

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

$ 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
 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
    ca800000.pcie-vpcie3v3        1                                 0mA     0mV     0mV
    ca400000.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
       d4280000.mmc-vmmc          0                                 0mA  3300mV  3300mV
       QSPI_VCC1833               2    1      0 unknown  1833mV     0mA  1833mV  1833mV
          spi0.0-vcc              1                                 0mA     0mV     0mV
    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 24c02 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 | 309 +++++++++++++++++-
 1 file changed, 308 insertions(+), 1 deletion(-)
Signature · 1 line
2.53.0
#1 lore raw

PATCH v3 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 | 134 ++++++++++++++++++
 1 file changed, 134 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +134 -0
index 29e333b670cf0..e0b585c50014b 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c8 = &i2c8;
 	};
 
 	chosen {
@@ -33,6 +34,15 @@ led1 {
 			default-state = "on";
 		};
 	};
+
+	reg_vcc_4v0: regulator-vcc-4v0 {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
 };
 
 &emmc {
@@ -72,6 +82,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_1v8: buck3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+
+			buck4_3v3: 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
#2 lore raw

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

Quoted 1 line · Andre Heider

Enable i2c8 and add the connected SpacemiT P1 PMIC with its related regulators

got a warning here, commit message should limit to 75 characters..

Quoted 3 lines

for the board's power infrastructure and voltage regulation support.

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

Re: [PATCH v3 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 | 134 ++++++++++++++++++
 1 file changed, 134 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +2 -0
index 29e333b670cf0..e0b585c50014b 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c8 = &i2c8;
 	};
 
 	chosen {
@@ -33,6 +34,15 @@ led1 {
 			default-state = "on";
 		};
 	};
+

..

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

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

I prefer to keep this name same as other boards, so let's change it to reg_vcc_4v ..

Quoted 8 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +7 -0
+		compatible = "regulator-fixed";
+		regulator-name = "VCC4V0";
+		regulator-min-microvolt = <4000000>;
+		regulator-max-microvolt = <4000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
 };
Signature · 1 line
Yixun Lan (dlan)
#4 lore raw

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

In reply to Andre Heider
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Regulator minimum voltage constraints are set too loosely on fixed board rails, risking hardware…

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Regulator minimum voltage constraints are set too loosely on fixed board rails, risking hardware brownouts. --

commit 823adf1d7b0f1286cdd0e228119b713b02c36d2e
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 and voltage regulation support.

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0
index 29e333b670cf0..e0b585c50014b 100644

[ ... ]

Quoted 13 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +9 -0
@@ -72,6 +82,130 @@ &pdma {
 	status = "okay";
 };
 
+&i2c8 {
+	pinctrl-0 = <&i2c8_cfg>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	pmic@41 {
+		compatible = "spacemit,p1";
+		reg = <0x41>;
+		interrupts = <64>;

[ ... ]

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +4 -0
+		dldoin1-supply = <&buck5>;
+		dldoin2-supply = <&buck5>;
+
+		regulators {

[ ... ]

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

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +3 -0
+			buck3_1v8: buck3 {
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1800000>;

Should these minimum bounds be restricted to match the exact hardware layout of the board?

The labels buck3_1v8 and buck4_3v3 indicate these rails are wired for fixed 1.8V and 3.3V usage, but the regulator-min-microvolt allows them to scale down to 0.5V. Could this loose constraint risk hardware brownouts if a driver attempts dynamic voltage scaling on these rails?

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +4 -0
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
+

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

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+			buck4_3v3: 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>;

Since buck5 is used as the parent supply for the DLDOs (dldoin1-supply and dldoin2-supply), could the wide 0.5V minimum constraint allow the OS to drop its voltage below the necessary headroom needed to power the downstream DLDOs?

Quoted 3 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +3 -0
+				regulator-ramp-delay = <5000>;
+				regulator-always-on;
+			};
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
#5 lore raw

PATCH v3 2/6 riscv: dts: spacemit: k1-musepi-pro: add 24c02 eeprom

In reply to Andre Heider

Enable i2c2 and add the connected GT24C02B 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 | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +33 -0
index e0b585c50014b..41d7d6d20a797 100644
@@ -17,6 +17,7 @@ / {
 	aliases {
 		ethernet0 = &eth0;
 		serial0 = &uart0;
+		i2c2 = &i2c2;
 		i2c8 = &i2c8;
 	};
 
@@ -82,6 +83,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";
Signature · 1 line
2.53.0
#6 lore raw

PATCH v3 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 | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +50 -0
index 41d7d6d20a797..b0f66f49db4b7 100644
@@ -44,6 +44,15 @@ reg_vcc_4v0: regulator-vcc-4v0 {
 		regulator-boot-on;
 		regulator-always-on;
 	};
+
+	reg_qspi_vcc1v833: regulator-qspi-vcc1v833 {
+		compatible = "regulator-fixed";
+		regulator-name = "QSPI_VCC1833";
+		regulator-min-microvolt = <1833000>;
+		regulator-max-microvolt = <1833000>;
+		regulator-always-on;
+		vin-supply = <&buck4_3v3>;
+	};
 };
 
 &emmc {
@@ -239,6 +248,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 = <&reg_qspi_vcc1v833>;
+		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@a0000 {
+				reg = <0xa0000 0x760000>;
+			};
+		};
+	};
+};
+
 &uart0 {
 	pinctrl-0 = <&uart0_2_cfg>;
 	pinctrl-names = "default";
Signature · 1 line
2.53.0
#7 lore raw

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

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Partition nodes use specific functional names instead of generic names. --

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Partition nodes use specific functional names instead of generic names. --

commit ead14b17b1685d70e44f6cab4060557873642eb6
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 adds a corresponding vendor flash partition layout.

Quoted 4 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +0 -0
index 41d7d6d20a797..b0f66f49db4b7 100644

[ ... ]

Quoted 7 lines

+&qspi {

arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +6 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&qspi_cfg>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";

[ ... ]

Quoted 13 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +13 -0
+		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>;

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

Quoted 10 lines
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +10 -0
+			};
+			env@60000 {
+				reg = <0x60000 0x10000>;
+			};
+			opensbi@70000 {
+				reg = <0x70000 0x30000>;
+			};
+			uboot@a0000 {
+				reg = <0xa0000 0x760000>;
+			};

Should these partition nodes use the generic partition@ naming convention instead of specific functional names?

The device tree schema for fixed-partitions expects child nodes to match the pattern ^partition@[0-9a-f]+$. Using specific names like bootinfo@0 might trigger dtc and schema validation warnings.

Could these functional names be provided via the label property instead, while keeping the node names generic?

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

PATCH v3 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 | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +52 -0
index b0f66f49db4b7..b24b378b1b220 100644
@@ -53,6 +53,26 @@ reg_qspi_vcc1v833: regulator-qspi-vcc1v833 {
 		regulator-always-on;
 		vin-supply = <&buck4_3v3>;
 	};
+
+	reg_5v_vbus: regulator-5v-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "5V_VBUS";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		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;
+		gpio = <&gpio K1_GPIO(127) GPIO_ACTIVE_HIGH>; /* HUB_PWREN */
+		enable-active-high;
+	};
 };
 
 &emmc {
@@ -65,6 +85,10 @@ &emmc {
 	status = "okay";
 };
 
+&combo_phy {
+	status = "okay";
+};
+
 &eth0 {
 	phy-handle = <&rgmii0>;
 	phy-mode = "rgmii-id";
@@ -294,3 +318,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
#9 lore raw

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

In reply to Andre Heider

Enable the two PCIe controllers along with 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 | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +38 -0
index b24b378b1b220..953c0ff6a0d34 100644
@@ -36,6 +36,14 @@ led1 {
 		};
 	};
 
+	reg_pcie_vcc_3v3: regulator-pcie-vcc3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "PCIE_VCC3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+	};
+
 	reg_vcc_4v0: regulator-vcc-4v0 {
 		compatible = "regulator-fixed";
 		regulator-name = "VCC4V0";
@@ -272,6 +280,36 @@ dldo7 {
 	};
 };
 
+&pcie1_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_3_cfg>;
+	status = "okay";
+};
+
+&pcie1_port {
+	phys = <&pcie1_phy>;
+	vpcie3v3-supply = <&reg_pcie_vcc_3v3>;
+};
+
+&pcie1 {
+	status = "okay";
+};
+
+&pcie2_phy {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie2_4_cfg>;
+	status = "okay";
+};
+
+&pcie2_port {
+	phys = <&pcie2_phy>;
+	vpcie3v3-supply = <&reg_pcie_vcc_3v3>;
+};
+
+&pcie2 {
+	status = "okay";
+};
+
 &qspi {
 	pinctrl-names = "default";
 	pinctrl-0 = <&qspi_cfg>;
Signature · 1 line
2.53.0
#10 lore raw

PATCH v3 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 953c0ff6a0d34..ce7caf6950dc0 100644
@@ -22,7 +22,7 @@ aliases {
 	};
 
 	chosen {
-		stdout-path = "serial0";
+		stdout-path = "serial0:115200n8";
 	};
 
 	leds {
Signature · 1 line
2.53.0
maintainer
#11 lore raw
In reply to Andre Heider

Andre,

Thanks for pushing this new version, overall, this series looks good to me,
Although there are few quite trivial issues, which I could help to fix it while applying, let's give community some time to test and review..

P.S I haven't run it on musepi board, but trust you tested all functions..

Quoted 76 lines · Andre Heider

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

v3:
- drop reg_usb_vbus, non-controllable and served only as vin-supply
- fixed regulator-vcc-4v0 typo
- fold addition of pmic regulator labels into the pmic patch
- eeprom is a GT24C02B, fixed commit message
- added reg_qspi_vcc1v833
- fixed uboot nor name offset
- add missing "reg_" prefix for reg_pcie_vcc_3v3
- drop pcie{1,2}'s vpcie3v3-supply, it's already specified on the root ports

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

$ 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
 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
    ca800000.pcie-vpcie3v3        1                                 0mA     0mV     0mV
    ca400000.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
       d4280000.mmc-vmmc          0                                 0mA  3300mV  3300mV
       QSPI_VCC1833               2    1      0 unknown  1833mV     0mA  1833mV  1833mV
          spi0.0-vcc              1                                 0mA     0mV     0mV
    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 24c02 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 | 309 +++++++++++++++++-
 1 file changed, 308 insertions(+), 1 deletion(-)
Signature · 1 line
2.53.0
Signature · 1 line
Yixun Lan (dlan)
#12 lore raw

Hi Yixun,

Quoted 5 lines · Yixun Lan

Andre,

Thanks for pushing this new version, overall, this series looks good to me,
Although there are few quite trivial issues, which I could help to fix it while applying, let's give community some time to test and review..

alright, and sorry, my git send-email flow is a bit rusty, didn't notice those issues...

Quoted 1 line

P.S I haven't run it on musepi board, but trust you tested all functions..

I tested the added devices except nvme as I don't have one connected.
But I do have a pci card in there, which works just fine, so generally speaking pcie works and I'd assume/hope nvme would too ;)

Quoted 78 lines · Andre Heider
Quoted 76 lines

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

v3:
- drop reg_usb_vbus, non-controllable and served only as vin-supply
- fixed regulator-vcc-4v0 typo
- fold addition of pmic regulator labels into the pmic patch
- eeprom is a GT24C02B, fixed commit message
- added reg_qspi_vcc1v833
- fixed uboot nor name offset
- add missing "reg_" prefix for reg_pcie_vcc_3v3
- drop pcie{1,2}'s vpcie3v3-supply, it's already specified on the root ports

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

$ 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
  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
     ca800000.pcie-vpcie3v3        1                                 0mA     0mV     0mV
     ca400000.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
        d4280000.mmc-vmmc          0                                 0mA  3300mV  3300mV
        QSPI_VCC1833               2    1      0 unknown  1833mV     0mA  1833mV  1833mV
           spi0.0-vcc              1                                 0mA     0mV     0mV
     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 24c02 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 | 309 +++++++++++++++++-
  1 file changed, 308 insertions(+), 1 deletion(-)
Signature · 1 line
2.53.0
maintainer Applied
#13 lore raw
In reply to Andre Heider
Quoted 13 lines · Andre Heider

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

v3:
- drop reg_usb_vbus, non-controllable and served only as vin-supply
- fixed regulator-vcc-4v0 typo
- fold addition of pmic regulator labels into the pmic patch
- eeprom is a GT24C02B, fixed commit message
- added reg_qspi_vcc1v833
- fixed uboot nor name offset
- add missing "reg_" prefix for reg_pcie_vcc_3v3
- drop pcie{1,2}'s vpcie3v3-supply, it's already specified on the root ports

Quoted 1 line

[...]

Applied, thanks!

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

      https://github.com/spacemit-com/linux/commit/e2dac7c7a3a8970feeeb758f782ce86b89625ebd
[2/6] riscv: dts: spacemit: k1-musepi-pro: add 24c02 eeprom
      https://github.com/spacemit-com/linux/commit/6bc75cfa56e885c2eab80e215f0a610075505846
[3/6] riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR
      https://github.com/spacemit-com/linux/commit/735b1b205d07bf7bfa55b1f50f5485b9cc42a251
[4/6] riscv: dts: spacemit: k1-musepi-pro: enable USB 3 ports
      https://github.com/spacemit-com/linux/commit/83c658c7a82304a2bc944cdd4a5b4f98d19322f0
[5/6] riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports
      https://github.com/spacemit-com/linux/commit/d9ab0a855ba13f1db3ae16539348714c74010a22
[6/6] riscv: dts: spacemit: k1-musepi-pro: set default console baud rate
      https://github.com/spacemit-com/linux/commit/f125c6085fd775f09a316f61cc89a0ae86826895

Best regards,

Signature · 1 line
Yixun Lan <[email protected]>