spacemit: k1-musepi-pro: add missing devices
Subsystems (3)
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].
[0] https://github.com/spacemit-com/docs-product/blob/main/en/k1_muse_pi_pro/pi_pro_hw.md
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 4 3 0 unknown 12000mV 0mA 12000mV 12000mV
PCIE_VCC3V3 2 1 0 unknown 3300mV 0mA 3300mV 3300mV
ca400000.pcie-vpcie3v3 1 0mA 0mV 0mV
MPCIE_VCC3V3 2 1 0 unknown 3300mV 0mA 3300mV 3300mV
ca800000.pcie-vpcie3v3 1 0mA 0mV 0mV
VCC5V0_SYS 9 12 0 unknown 5000mV 0mA 5000mV 5000mV
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 1 0 unknown 3300mV 0mA 500mV 3300mV
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 0 0 0 unknown 3300mV 0mA 500mV 3400mV
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
VCC5V0_HUB 2 1 0 unknown 5000mV 0mA 5000mV 5000mV
c0a00000.usb:hub@1-vdd 1 0mA 0mV 0mV
5V_VBUS 2 1 0 unknown 5000mV 0mA 5000mV 5000mV
c0a00000.usb-vbus 1 0mA 0mV 0mVThanks,
Andre
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
PATCH 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
@@ -17,6 +17,7 @@ / { aliases { ethernet0 = ð0; 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_5v0_sys: regulator-vcc5v0-sys { + compatible = "regulator-fixed"; + regulator-name = "VCC5V0_SYS"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-boot-on; + regulator-always-on; + vin-supply = <®_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 = <®_vcc_5v0_sys>; + vin2-supply = <®_vcc_5v0_sys>; + vin3-supply = <®_vcc_5v0_sys>; + vin4-supply = <®_vcc_5v0_sys>; + vin5-supply = <®_vcc_5v0_sys>; + vin6-supply = <®_vcc_5v0_sys>; + aldoin-supply = <®_vcc_5v0_sys>; + 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
PATCH 2/6 riscv: dts: spacemit: k1-musepi-pro: add 24c04 eeprom
In reply to Andre HeiderEnable 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
@@ -17,6 +17,7 @@ / { aliases { ethernet0 = ð0; 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
PATCH 3/6 riscv: dts: spacemit: k1-musepi-pro: enable QSPI and add SPI NOR
In reply to Andre HeiderAdd 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
@@ -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
PATCH 4/6 riscv: dts: spacemit: k1-musepi-pro: enable USB 3 ports
In reply to Andre HeiderEnable 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
@@ -54,6 +54,28 @@ reg_vcc_5v0_sys: regulator-vcc5v0-sys { regulator-always-on; vin-supply = <®_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 = <®_vcc_5v0_sys>; + 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 = <®_vcc_5v0_sys>; + 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"; +}; + ð0 { 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 = <®_5v_vbus>; + status = "okay"; + + hub_2_0: hub@1 { + compatible = "usb2109,2817"; + reg = <0x1>; + vdd-supply = <®_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 = <®_vcc5v_hub>; + peer-hub = <&hub_2_0>; + reset-gpios = <&gpio K1_GPIO(123) GPIO_ACTIVE_LOW>; /* HUB_RST */ + }; +};
Signature · 1 line
2.53.0
PATCH 5/6 riscv: dts: spacemit: k1-musepi-pro: enable PCIe ports
In reply to Andre HeiderEnable 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
@@ -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 = <®_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 = <®_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
PATCH 6/6 riscv: dts: spacemit: k1-musepi-pro: set default console baud rate
In reply to Andre HeiderAllow 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
@@ -22,7 +22,7 @@ aliases { }; chosen { - stdout-path = "serial0"; + stdout-path = "serial0:115200n8"; }; leds {
Signature · 1 line
2.53.0