RISC-V SpacemiT DT changes for 7.3

For K3 SoC
 - Enable SD card support
 - Enable QSPI
 - Fix reset delay of ETH PHY
 - Fix PHY ID of ETH
 - Symbolic PDAM ID
 - Add SPI controller support
 - Add USB and PHY support
 - Add I2S nodes
 
 For K1 SoC
 - Symbolic PDAM ID
 - Enable cpufreq support
 - Fix max CPU core voltage
 
 For boards of K3
 - Pico-ITX
   - Enable ALDPS on RTL8211F PHY
   - Disable 125MHz clock on RTL8211F PHY
   - Enable NOR flash
   - Add EEPROM support
 - CoM260
   - Add EEPROM support
 
 For boards of K1
 - Milk-V Jupiter
   - Enable CPU DVFS
 - Banana Pi BPI-CM6
   - Add initial support
 - OrangePi R2S
   - Enable PCIe
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQKvBAABCgCZFiEEtbq4ycMbcRVnAiPcMarqR1lNu+0FAmpupawbFIAAAAAABAAO
 bWFudTIsMi41KzEuMTIsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z
 Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCNUJBQjhDOUMzMUI3MTE1NjcwMjIz
 REMzMUFBRUE0NzU5NERCQkVEAAoJEDGq6kdZTbvtuDgP/0+IIPDo/U7U0IhT+dAx
 Mxr1fWX1M4h5nEmirD8Zsx8TSfvZrpZr5MvazjrHxZ5U2U4ntkqrcoByhIqEy6Dn
 wz3A8arOEe3BU1zXf4UAPAW0CZA3Bp9rEDgwbgsTfyelSLyeDqaMX8l/8XQLU8Sl
 f28L5p+5AQota4Cutl36yE/KP6cK+7SBSgXA2Rnb9SXzvwC9cQGuOUq71zUsS7jI
 FdpYcvyCbLFmUiq2XoeFAdGB04nYs28VWiFnHg7FNdrCqWH6pgi/zxd3QtlTxjd6
 oIrp/NsBnx9WAyx9GDhckpqOLt+sA49BjMTArBHmytVBI0ku2kbueQXJIS2J2OEq
 Cj4jkMD36Mbk21UP/3OOohARxPYWDDsRQ6NzvAMqNnmFdGa2lTCGA2pBsXF6pzYA
 cgFoSQq3s37ArNWaFxeCgnAnzyUWtEUEA3wcp+04xh4s9a90khxuU/rpF+GuyZwp
 5Bfppy9L9dI6BogmfAcMsVHcLd0UhDoC6nokx8QLCtrVKEnpvWHfAtWProzEINfX
 k9K+f+fLtvL4aWGevKfZZfbMwFRrDaARI03HqW/flUjLBVggoC2FFo63WOfEmvZr
 ldCmIWM2iDgr7gBTSy8FSX+3FNROyc2xDFhM189crVvK0+LCCMyqGhHFNnk6NYbU
 NRf7S+rwIN9yrBSUgrX6GCXs
 =WKqT
 -----END PGP SIGNATURE-----

Merge tag 'spacemit-dt-for-7.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/spacemit/linux into soc/dt

RISC-V SpacemiT DT changes for 7.3

For K3 SoC
- Enable SD card support
- Enable QSPI
- Fix reset delay of ETH PHY
- Fix PHY ID of ETH
- Symbolic PDAM ID
- Add SPI controller support
- Add USB and PHY support
- Add I2S nodes

For K1 SoC
- Symbolic PDAM ID
- Enable cpufreq support
- Fix max CPU core voltage

For boards of K3
- Pico-ITX
  - Enable ALDPS on RTL8211F PHY
  - Disable 125MHz clock on RTL8211F PHY
  - Enable NOR flash
  - Add EEPROM support
- CoM260
  - Add EEPROM support

For boards of K1
- Milk-V Jupiter
  - Enable CPU DVFS
- Banana Pi BPI-CM6
  - Add initial support
- OrangePi R2S
  - Enable PCIe

* tag 'spacemit-dt-for-7.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/spacemit/linux: (33 commits)
  riscv: dts: spacemit: Add cpu scaling for Milk-V Jupiter
  riscv: dts: spacemit: k1-bananapi-cm6: fix maximum CPU core voltage
  riscv: dts: spacemit: k1-orangepi-r2s: fix maximum CPU core voltage
  riscv: dts: spacemit: k1-musepi-pro: fix maximum CPU core voltage
  riscv: dts: spacemit: k1-orangepi-rv2: fix maximum CPU core voltage
  riscv: dts: spacemit: k1-milkv-jupiter: fix maximum CPU core voltage
  riscv: dts: spacemit: k1-bananapi-f3: fix maximum CPU core voltage
  riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 com260 board
  riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 pico-itx board
  riscv: dts: spacemit: k3: add i2s0-i2s5 nodes
  riscv: dts: spacemit: k3: add USB controller and USB phy support
  riscv: dts: spacemit: enable PCIe on OrangePi R2S
  riscv: dts: spacemit: k3-com260-ifx: add eeprom on i2c1
  riscv: dts: spacemit: k3-com260: add eeprom on i2c2
  riscv: dts: spacemit: add SPI controllers for K3
  riscv: dts: spacemit: add K3 PDMA request numbers
  riscv: dts: spacemit: Fix phy id check for the phy on com260 board
  riscv: dts: spacemit: Fix phy id check for the phy on pico-itx board
  riscv: dts: spacemit: Add enough deassert time for the PHY on com260 board
  riscv: dts: spacemit: Add enough deassert time for the PHY on PICO ITX
  ...

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
Alexandre Belloni 2026-08-08 18:51:39 +02:00
commit 0b02b8f941
20 changed files with 1308 additions and 32 deletions

View File

@ -19,6 +19,11 @@ properties:
const: '/'
compatible:
oneOf:
- items:
- enum:
- bananapi,bpi-cm6-io
- const: bananapi,bpi-cm6
- const: spacemit,k1
- items:
- enum:
- bananapi,bpi-f3

View File

@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_SPACEMIT) += k1-bananapi-cm6-io.dtb
dtb-$(CONFIG_ARCH_SPACEMIT) += k1-bananapi-f3.dtb
dtb-$(CONFIG_ARCH_SPACEMIT) += k1-milkv-jupiter.dtb
dtb-$(CONFIG_ARCH_SPACEMIT) += k1-musepi-pro.dtb

View File

@ -0,0 +1,177 @@
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (C) 2026 Junhui Liu <junhui.liu@pigmoral.tech>
*/
#include "k1-bananapi-cm6.dtsi"
#include <dt-bindings/leds/common.h>
/ {
model = "Banana Pi BPI-CM6 IO Board";
compatible = "bananapi,bpi-cm6-io", "bananapi,bpi-cm6", "spacemit,k1";
aliases {
ethernet0 = &eth0;
ethernet1 = &eth1;
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
leds {
compatible = "gpio-leds";
led0 {
color = <LED_COLOR_ID_RED>;
gpios = <&gpio K1_GPIO(96) GPIO_ACTIVE_LOW>;
};
led1 {
color = <LED_COLOR_ID_BLUE>;
gpios = <&gpio K1_GPIO(97) GPIO_ACTIVE_LOW>;
};
};
pcie_vcc_3v3: regulator-pcie-vcc-3v3 {
compatible = "regulator-fixed";
regulator-name = "NGFF_KEYM_VDD";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
usb_vbus_5v: regulator-usb-vbus-5v {
compatible = "regulator-fixed";
regulator-name = "VBUS_A_B";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio K1_GPIO(124) GPIO_ACTIVE_HIGH>;
enable-active-high;
};
sd_vcc_3v3: regulator-sd-vcc-3v3 {
compatible = "regulator-fixed";
regulator-name = "3.3VS_CARD";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio K1_GPIO(127) GPIO_ACTIVE_HIGH>;
enable-active-high;
};
};
&combo_phy {
status = "okay";
};
&eth0 {
status = "okay";
};
&eth1 {
nvmem-cells = <&mac_address 1>;
nvmem-cell-names = "mac-address";
phy-handle = <&rgmii1>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac1_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <250>;
status = "okay";
mdio-bus {
#address-cells = <0x1>;
#size-cells = <0x0>;
reset-gpios = <&gpio K1_GPIO(46) GPIO_ACTIVE_LOW>;
reset-delay-us = <10000>;
reset-post-delay-us = <100000>;
rgmii1: phy@1 {
reg = <0x1>;
};
};
};
&i2c2 {
eeprom@54 {
compatible = "atmel,24c08";
reg = <0x54>;
vcc-supply = <&buck3_1v8>;
pagesize = <16>;
size = <1024>;
};
};
&pcie1_phy {
pinctrl-names = "default";
pinctrl-0 = <&pcie1_3_cfg>;
status = "okay";
};
&pcie1_port {
phys = <&pcie1_phy>;
vpcie3v3-supply = <&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 = <&pcie_vcc_3v3>;
};
&pcie2 {
status = "okay";
};
&qspi {
pinctrl-names = "default";
pinctrl-0 = <&qspi_cfg>;
status = "okay";
};
&sdhci0 {
pinctrl-names = "default", "uhs";
pinctrl-0 = <&mmc1_cfg>;
pinctrl-1 = <&mmc1_uhs_cfg>;
bus-width = <4>;
cd-gpios = <&gpio K1_GPIO(80) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
no-mmc;
no-sdio;
disable-wp;
cap-sd-highspeed;
vmmc-supply = <&sd_vcc_3v3>;
vqmmc-supply = <&aldo1>;
sd-uhs-sdr25;
sd-uhs-sdr50;
sd-uhs-sdr104;
status = "okay";
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_2_cfg>;
status = "okay";
};
&usbphy2 {
status = "okay";
};
&usb_dwc3 {
dr_mode = "host";
vbus-supply = <&usb_vbus_5v>;
status = "okay";
};

View File

@ -0,0 +1,217 @@
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (C) 2026 Junhui Liu <junhui.liu@pigmoral.tech>
*/
#include "k1.dtsi"
#include "k1-pinctrl.dtsi"
/ {
model = "Banana Pi BPI-CM6 Module";
compatible = "bananapi,bpi-cm6", "spacemit,k1";
aliases {
i2c2 = &i2c2;
i2c8 = &i2c8;
};
reg_vcc_4v: regulator-vcc-4v {
compatible = "regulator-fixed";
regulator-name = "VCC4V0_SYS";
regulator-min-microvolt = <4000000>;
regulator-max-microvolt = <4000000>;
regulator-boot-on;
regulator-always-on;
};
};
&emmc {
bus-width = <8>;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
non-removable;
no-sd;
no-sdio;
status = "okay";
};
&eth0 {
nvmem-cells = <&mac_address 0>;
nvmem-cell-names = "mac-address";
phy-handle = <&rgmii0>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac0_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
mdio-bus {
#address-cells = <0x1>;
#size-cells = <0x0>;
reset-gpios = <&gpio K1_GPIO(45) GPIO_ACTIVE_LOW>;
reset-delay-us = <10000>;
reset-post-delay-us = <100000>;
rgmii0: phy@1 {
reg = <0x1>;
};
};
};
&pdma {
status = "okay";
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_0_cfg>;
status = "okay";
eeprom@50 {
compatible = "atmel,24c02";
reg = <0x50>;
vcc-supply = <&buck3_1v8>;
pagesize = <16>;
read-only;
size = <256>;
nvmem-layout {
compatible = "onie,tlv-layout";
mac_address: mac-address {
#nvmem-cell-cells = <1>;
};
num-macs {
};
serial-number {
};
};
};
};
&i2c8 {
pinctrl-names = "default";
pinctrl-0 = <&i2c8_cfg>;
status = "okay";
pmic@41 {
compatible = "spacemit,p1";
reg = <0x41>;
interrupts = <64>;
vin1-supply = <&reg_vcc_4v>;
vin2-supply = <&reg_vcc_4v>;
vin3-supply = <&reg_vcc_4v>;
vin4-supply = <&reg_vcc_4v>;
vin5-supply = <&reg_vcc_4v>;
vin6-supply = <&reg_vcc_4v>;
aldoin-supply = <&reg_vcc_4v>;
dldoin1-supply = <&buck5>;
dldoin2-supply = <&buck5>;
regulators {
buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
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 {
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: 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>;
};
};
};
};

View File

@ -4,6 +4,7 @@
*/
#include "k1.dtsi"
#include "k1-opp.dtsi"
#include "k1-pinctrl.dtsi"
/ {
@ -87,6 +88,38 @@ &combo_phy {
status = "okay";
};
&cpu_0 {
cpu-supply = <&buck1_0v9>;
};
&cpu_1 {
cpu-supply = <&buck1_0v9>;
};
&cpu_2 {
cpu-supply = <&buck1_0v9>;
};
&cpu_3 {
cpu-supply = <&buck1_0v9>;
};
&cpu_4 {
cpu-supply = <&buck1_0v9>;
};
&cpu_5 {
cpu-supply = <&buck1_0v9>;
};
&cpu_6 {
cpu-supply = <&buck1_0v9>;
};
&cpu_7 {
cpu-supply = <&buck1_0v9>;
};
&emmc {
bus-width = <8>;
mmc-hs400-1_8v;
@ -101,7 +134,7 @@ &eth0 {
phy-handle = <&rgmii0>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac0_cfg>;
pinctrl-0 = <&gmac0_cfg>, <&gmac0_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
status = "okay";
@ -124,7 +157,7 @@ &eth1 {
phy-handle = <&rgmii1>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac1_cfg>;
pinctrl-0 = <&gmac1_cfg>, <&gmac1_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <250>;
status = "okay";
@ -202,16 +235,16 @@ pmic@41 {
dldoin2-supply = <&buck5>;
regulators {
buck1 {
buck1_0v9: buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};

View File

@ -5,6 +5,7 @@
*/
#include "k1.dtsi"
#include "k1-opp.dtsi"
#include "k1-pinctrl.dtsi"
/ {
@ -107,6 +108,38 @@ &combo_phy {
status = "okay";
};
&cpu_0 {
cpu-supply = <&buck1_0v9>;
};
&cpu_1 {
cpu-supply = <&buck1_0v9>;
};
&cpu_2 {
cpu-supply = <&buck1_0v9>;
};
&cpu_3 {
cpu-supply = <&buck1_0v9>;
};
&cpu_4 {
cpu-supply = <&buck1_0v9>;
};
&cpu_5 {
cpu-supply = <&buck1_0v9>;
};
&cpu_6 {
cpu-supply = <&buck1_0v9>;
};
&cpu_7 {
cpu-supply = <&buck1_0v9>;
};
&emmc {
bus-width = <8>;
mmc-hs400-1_8v;
@ -121,7 +154,7 @@ &eth0 {
phy-handle = <&rgmii0>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac0_cfg>;
pinctrl-0 = <&gmac0_cfg>, <&gmac0_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
status = "okay";
@ -144,7 +177,7 @@ &eth1 {
phy-handle = <&rgmii1>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac1_cfg>;
pinctrl-0 = <&gmac1_cfg>, <&gmac1_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <250>;
status = "okay";
@ -209,16 +242,16 @@ pmic@41 {
dldoin2-supply = <&buck5>;
regulators {
buck1 {
buck1_0v9: buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};

View File

@ -102,7 +102,7 @@ &combo_phy {
&eth0 {
phy-handle = <&rgmii0>;
phy-mode = "rgmii-id";
pinctrl-0 = <&gmac0_cfg>;
pinctrl-0 = <&gmac0_cfg>, <&gmac0_clk_ref_cfg>;
pinctrl-names = "default";
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
@ -180,14 +180,14 @@ pmic@41 {
regulators {
buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};

View File

@ -0,0 +1,105 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/ {
cluster0_opp_table: opp-table-cluster0 {
compatible = "operating-points-v2";
opp-shared;
opp-614400000 {
opp-hz = /bits/ 64 <614400000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-819000000 {
opp-hz = /bits/ 64 <819000000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1000000000 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1228800000 {
opp-hz = /bits/ 64 <1228800000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1600000000 {
opp-hz = /bits/ 64 <1600000000>;
opp-microvolt = <1050000 1050000 1050000>;
clock-latency-ns = <200000>;
};
};
cluster1_opp_table: opp-table-cluster1 {
compatible = "operating-points-v2";
opp-shared;
opp-614400000 {
opp-hz = /bits/ 64 <614400000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-819000000 {
opp-hz = /bits/ 64 <819000000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1000000000 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1228800000 {
opp-hz = /bits/ 64 <1228800000>;
opp-microvolt = <950000 950000 1050000>;
clock-latency-ns = <200000>;
};
opp-1600000000 {
opp-hz = /bits/ 64 <1600000000>;
opp-microvolt = <1050000 1050000 1050000>;
clock-latency-ns = <200000>;
};
};
};
&cpu_0 {
operating-points-v2 = <&cluster0_opp_table>;
};
&cpu_1 {
operating-points-v2 = <&cluster0_opp_table>;
};
&cpu_2 {
operating-points-v2 = <&cluster0_opp_table>;
};
&cpu_3 {
operating-points-v2 = <&cluster0_opp_table>;
};
&cpu_4 {
operating-points-v2 = <&cluster1_opp_table>;
};
&cpu_5 {
operating-points-v2 = <&cluster1_opp_table>;
};
&cpu_6 {
operating-points-v2 = <&cluster1_opp_table>;
};
&cpu_7 {
operating-points-v2 = <&cluster1_opp_table>;
};

View File

@ -23,6 +23,14 @@ chosen {
stdout-path = "serial0";
};
pcie_vcc3v3: regulator-pcie-vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "pcie_vcc3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vcc4v0: regulator-vcc4v0 {
compatible = "regulator-fixed";
regulator-name = "vcc4v0";
@ -60,7 +68,7 @@ &eth0 {
phy-handle = <&rgmii0>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac0_cfg>;
pinctrl-0 = <&gmac0_cfg>, <&gmac0_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <0>;
status = "okay";
@ -84,7 +92,7 @@ &eth1 {
phy-handle = <&rgmii1>;
phy-mode = "rgmii-id";
pinctrl-names = "default";
pinctrl-0 = <&gmac1_cfg>;
pinctrl-0 = <&gmac1_cfg>, <&gmac1_clk_ref_cfg>;
rx-internal-delay-ps = <0>;
tx-internal-delay-ps = <250>;
status = "okay";
@ -126,14 +134,14 @@ pmic@41 {
regulators {
buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
@ -228,6 +236,36 @@ dldo7 {
};
};
&pcie1_phy {
pinctrl-names = "default";
pinctrl-0 = <&pcie1_3_cfg>;
status = "okay";
};
&pcie1_port {
phys = <&pcie1_phy>;
vpcie3v3-supply = <&pcie_vcc3v3>;
};
&pcie1 {
status = "okay";
};
&pcie2_phy {
pinctrl-names = "default";
pinctrl-0 = <&pcie2_4_cfg>;
status = "okay";
};
&pcie2_port {
phys = <&pcie2_phy>;
vpcie3v3-supply = <&pcie_vcc3v3>;
};
&pcie2 {
status = "okay";
};
&pdma {
status = "okay";
};

View File

@ -164,14 +164,14 @@ pmic@41 {
regulators {
buck1 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};
buck2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <3450000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <5000>;
regulator-always-on;
};

View File

@ -0,0 +1,56 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* DMA request number (DRQ) definitions for non-secure peripherals of
* the SpacemiT K1 PDMA.
*
* Copyright (c) 2026 Guodong Xu <docular.xu@gmail.com>
*/
#ifndef _DTS_SPACEMIT_K1_PDMA_H
#define _DTS_SPACEMIT_K1_PDMA_H
#define K1_PDMA_UART0_TX 3
#define K1_PDMA_UART0_RX 4
#define K1_PDMA_UART2_TX 5
#define K1_PDMA_UART2_RX 6
#define K1_PDMA_UART3_TX 7
#define K1_PDMA_UART3_RX 8
#define K1_PDMA_UART4_TX 9
#define K1_PDMA_UART4_RX 10
#define K1_PDMA_I2C0_TX 11
#define K1_PDMA_I2C0_RX 12
#define K1_PDMA_I2C1_TX 13
#define K1_PDMA_I2C1_RX 14
#define K1_PDMA_I2C2_TX 15
#define K1_PDMA_I2C2_RX 16
#define K1_PDMA_I2C4_TX 17
#define K1_PDMA_I2C4_RX 18
#define K1_PDMA_SPI3_TX 19
#define K1_PDMA_SPI3_RX 20
#define K1_PDMA_I2S0_TX 21
#define K1_PDMA_I2S0_RX 22
#define K1_PDMA_I2S1_TX 23
#define K1_PDMA_I2S1_RX 24
#define K1_PDMA_UART5_TX 25
#define K1_PDMA_UART5_RX 26
#define K1_PDMA_UART6_TX 27
#define K1_PDMA_UART6_RX 28
#define K1_PDMA_UART7_TX 29
#define K1_PDMA_UART7_RX 30
#define K1_PDMA_UART8_TX 31
#define K1_PDMA_UART8_RX 32
#define K1_PDMA_UART9_TX 33
#define K1_PDMA_UART9_RX 34
#define K1_PDMA_I2C5_TX 35
#define K1_PDMA_I2C5_RX 36
#define K1_PDMA_I2C6_TX 37
#define K1_PDMA_I2C6_RX 38
#define K1_PDMA_I2C7_TX 39
#define K1_PDMA_I2C7_RX 40
#define K1_PDMA_I2C8_TX 41
#define K1_PDMA_I2C8_RX 42
#define K1_PDMA_CAN0_RX 43
#define K1_PDMA_QSPI_RX 44
#define K1_PDMA_QSPI_TX 45
#endif /* _DTS_SPACEMIT_K1_PDMA_H */

View File

@ -27,8 +27,16 @@ gmac0-pins {
<K1_PADCONF(11, 1)>, /* gmac0_tx_en */
<K1_PADCONF(12, 1)>, /* gmac0_mdc */
<K1_PADCONF(13, 1)>, /* gmac0_mdio */
<K1_PADCONF(14, 1)>, /* gmac0_int_n */
<K1_PADCONF(45, 1)>; /* gmac0_clk_ref */
<K1_PADCONF(14, 1)>; /* gmac0_int_n */
bias-pull-up = <0>;
drive-strength = <21>;
};
};
gmac0_clk_ref_cfg: gmac0-clk-ref-cfg {
gmac0-clk-ref-pins {
pinmux = <K1_PADCONF(45, 1)>; /* gmac0_clk_ref */
bias-pull-up = <0>;
drive-strength = <21>;
@ -51,8 +59,16 @@ gmac1-pins {
<K1_PADCONF(40, 1)>, /* gmac1_tx_en */
<K1_PADCONF(41, 1)>, /* gmac1_mdc */
<K1_PADCONF(42, 1)>, /* gmac1_mdio */
<K1_PADCONF(43, 1)>, /* gmac1_int_n */
<K1_PADCONF(46, 1)>; /* gmac1_clk_ref */
<K1_PADCONF(43, 1)>; /* gmac1_int_n */
bias-pull-up = <0>;
drive-strength = <21>;
};
};
gmac1_clk_ref_cfg: gmac1-clk-ref-cfg {
gmac1-clk-ref-pins {
pinmux = <K1_PADCONF(46, 1)>; /* gmac1_clk_ref */
bias-pull-up = <0>;
drive-strength = <21>;

View File

@ -6,6 +6,8 @@
#include <dt-bindings/clock/spacemit,k1-syscon.h>
#include <dt-bindings/phy/phy.h>
#include "k1-pdma.h"
/dts-v1/;
/ {
#address-cells = <2>;
@ -54,6 +56,7 @@ cpu_0: cpu@0 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <0>;
clocks = <&syscon_apmu CLK_CPU_C0_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -84,6 +87,7 @@ cpu_1: cpu@1 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <1>;
clocks = <&syscon_apmu CLK_CPU_C0_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -114,6 +118,7 @@ cpu_2: cpu@2 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <2>;
clocks = <&syscon_apmu CLK_CPU_C0_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -144,6 +149,7 @@ cpu_3: cpu@3 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <3>;
clocks = <&syscon_apmu CLK_CPU_C0_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -174,6 +180,7 @@ cpu_4: cpu@4 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <4>;
clocks = <&syscon_apmu CLK_CPU_C1_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -204,6 +211,7 @@ cpu_5: cpu@5 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <5>;
clocks = <&syscon_apmu CLK_CPU_C1_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -234,6 +242,7 @@ cpu_6: cpu@6 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <6>;
clocks = <&syscon_apmu CLK_CPU_C1_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -264,6 +273,7 @@ cpu_7: cpu@7 {
compatible = "spacemit,x60", "riscv";
device_type = "cpu";
reg = <7>;
clocks = <&syscon_apmu CLK_CPU_C1_CORE>;
riscv,isa = "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt";
riscv,isa-base = "rv64i";
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "zicbom",
@ -1094,7 +1104,7 @@ spi3: spi@d401c000 {
clock-names = "core", "bus";
resets = <&syscon_apbc RESET_SSP3>;
interrupts = <55>;
dmas = <&pdma 20>, <&pdma 19>;
dmas = <&pdma K1_PDMA_SPI3_RX>, <&pdma K1_PDMA_SPI3_TX>;
dma-names = "rx", "tx";
status = "disabled";
};

View File

@ -19,3 +19,36 @@ chosen {
stdout-path = "serial0:115200n8";
};
};
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_1_cfg>;
status = "okay";
eeprom@50 {
compatible = "atmel,24c02";
pagesize = <8>;
reg = <0x50>;
read-only;
size = <256>;
status = "okay";
};
};
&sdhci0 {
pinctrl-names = "default","uhs";
pinctrl-0 = <&mmc1_cfg>;
pinctrl-1 = <&mmc1_uhs_cfg>;
bus-width = <4>;
cd-gpios = <&gpio K3_GPIO(4) GPIO_ACTIVE_HIGH>;
no-mmc;
no-sdio;
disable-wp;
cap-sd-highspeed;
vmmc-supply = <&aldo4>;
vqmmc-supply = <&aldo1>;
sd-uhs-sdr25;
sd-uhs-sdr50;
sd-uhs-sdr104;
status = "okay";
};

View File

@ -26,6 +26,38 @@ reg_5v_sys: regulator-5v-sys {
};
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_1_cfg>;
status = "okay";
eeprom@50 {
compatible = "atmel,24c02";
pagesize = <8>;
reg = <0x50>;
read-only;
size = <256>;
status = "okay";
nvmem-layout {
compatible = "onie,tlv-layout";
mac-address {
#nvmem-cell-cells = <1>;
};
num-macs {
};
product-name {
};
serial-number {
};
};
};
};
&i2c8 {
pinctrl-names = "default";
pinctrl-0 = <&i2c8_cfg>;
@ -173,12 +205,12 @@ &eth1 {
status = "okay";
mdio {
phy1: phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
phy1: ethernet-phy@1 {
compatible = "ethernet-phy-id001c.c916";
reg = <1>;
reset-gpios = <&gpio 1 5 GPIO_ACTIVE_LOW>;
reset-assert-us = <10000>;
reset-deassert-us = <10000>;
reset-deassert-us = <50000>;
};
};
};

View File

@ -0,0 +1,83 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* DMA request number (DRQ) definitions for non-secure peripherals of
* the SpacemiT K3 PDMA.
*
* Copyright (c) 2025 SpacemiT
* Copyright (c) 2026 Guodong Xu <docular.xu@gmail.com>
*/
#ifndef _DTS_SPACEMIT_K3_PDMA_H
#define _DTS_SPACEMIT_K3_PDMA_H
/* UART DMA request numbers */
#define K3_PDMA_UART0_TX 3
#define K3_PDMA_UART0_RX 4
#define K3_PDMA_UART2_TX 5
#define K3_PDMA_UART2_RX 6
#define K3_PDMA_UART3_TX 7
#define K3_PDMA_UART3_RX 8
#define K3_PDMA_UART4_TX 9
#define K3_PDMA_UART4_RX 10
#define K3_PDMA_UART5_TX 25
#define K3_PDMA_UART5_RX 26
#define K3_PDMA_UART6_TX 27
#define K3_PDMA_UART6_RX 28
#define K3_PDMA_UART7_TX 29
#define K3_PDMA_UART7_RX 30
#define K3_PDMA_UART8_TX 31
#define K3_PDMA_UART8_RX 32
#define K3_PDMA_UART9_TX 33
#define K3_PDMA_UART9_RX 34
#define K3_PDMA_UART10_TX 53
#define K3_PDMA_UART10_RX 54
/* I2C DMA request numbers */
#define K3_PDMA_I2C0_TX 11
#define K3_PDMA_I2C0_RX 12
#define K3_PDMA_I2C1_TX 13
#define K3_PDMA_I2C1_RX 14
#define K3_PDMA_I2C2_TX 15
#define K3_PDMA_I2C2_RX 16
#define K3_PDMA_I2C4_TX 17
#define K3_PDMA_I2C4_RX 18
#define K3_PDMA_I2C5_TX 35
#define K3_PDMA_I2C5_RX 36
#define K3_PDMA_I2C6_TX 37
#define K3_PDMA_I2C6_RX 38
#define K3_PDMA_I2C8_TX 41
#define K3_PDMA_I2C8_RX 42
/* SSP/SPI DMA request numbers */
#define K3_PDMA_SSP3_TX 19
#define K3_PDMA_SSP3_RX 20
#define K3_PDMA_SSPA0_TX 21
#define K3_PDMA_SSPA0_RX 22
#define K3_PDMA_SSPA1_TX 23
#define K3_PDMA_SSPA1_RX 24
#define K3_PDMA_SSPA2_TX 56
#define K3_PDMA_SSPA2_RX 57
#define K3_PDMA_SSPA3_TX 58
#define K3_PDMA_SSPA3_RX 59
#define K3_PDMA_SSPA4_TX 60
#define K3_PDMA_SSPA4_RX 61
#define K3_PDMA_SSPA5_TX 62
#define K3_PDMA_SSPA5_RX 63
/* CAN DMA request numbers */
#define K3_PDMA_CAN0_RX 43
#define K3_PDMA_CAN1_RX 44
#define K3_PDMA_CAN2_RX 51
#define K3_PDMA_CAN3_RX 52
/* SSP0/1 DMA request numbers */
#define K3_PDMA_SSP0_TX 64
#define K3_PDMA_SSP0_RX 65
#define K3_PDMA_SSP1_TX 66
#define K3_PDMA_SSP1_RX 67
/* QSPI DMA request numbers */
#define K3_PDMA_QSPI_RX 84
#define K3_PDMA_QSPI_TX 85
#endif /* _DTS_SPACEMIT_K3_PDMA_H */

View File

@ -14,11 +14,13 @@ / {
aliases {
ethernet0 = &eth0;
i2c2 = &i2c2;
i2c8 = &i2c8;
serial0 = &uart0;
};
chosen {
stdout-path = "serial0";
stdout-path = "serial0:115200n8";
};
memory@100000000 {
@ -43,6 +45,42 @@ reg_aux_vcc5v: regulator-aux-vcc5v {
};
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_1_cfg>;
status = "okay";
eeprom@50 {
compatible = "atmel,24c02";
reg = <0x50>;
pagesize = <8>;
read-only;
size = <256>;
status = "okay";
nvmem-layout {
compatible = "onie,tlv-layout";
mac-address {
#nvmem-cell-cells = <1>;
};
num-macs {
};
part-number {
};
product-name {
};
serial-number {
};
};
};
};
&i2c8 {
pinctrl-names = "default";
pinctrl-0 = <&i2c8_cfg>;
@ -182,6 +220,11 @@ dldo7: dldo7 {
};
};
&combophy {
spacemit,apmu = <&syscon_apmu 0x11>;
status = "okay";
};
&eth0 {
pinctrl-names = "default";
pinctrl-0 = <&gmac0_rgmii_0_cfg>, <&gmac0_phy_0_cfg>;
@ -190,12 +233,70 @@ &eth0 {
status = "okay";
mdio {
phy0: phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
phy0: ethernet-phy@1 {
compatible = "ethernet-phy-id001c.c916";
reg = <1>;
reset-gpios = <&gpio 0 15 GPIO_ACTIVE_LOW>;
reset-assert-us = <10000>;
reset-deassert-us = <10000>;
reset-deassert-us = <50000>;
realtek,aldps-enable;
realtek,clkout-disable;
};
};
};
&qspi_cfg {
qspi-pins {
power-source = <1800>;
};
qspi-cs0-pins {
power-source = <1800>;
};
};
&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 = <&aldo2>; /* PMIC_VCC1V8_QSPI */
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
bootinfo@0 {
reg = <0x0 0x20000>;
};
fsbl@20000 {
reg = <0x20000 0x80000>;
};
env@a0000 {
reg = <0xa0000 0x10000>;
};
esos@b0000 {
reg = <0xb0000 0x100000>;
};
opensbi@1b0000 {
reg = <0x1b0000 0x60000>;
};
uboot@210000 {
reg = <0x210000 0x5f0000>;
};
};
};
};
@ -221,3 +322,11 @@ hub@1 {
&usb2_phy {
status = "okay";
};
&usb3d_u2phy {
status = "okay";
};
&usb3d {
status = "okay";
};

View File

@ -78,6 +78,29 @@ gmac1-phy-0-pins {
};
};
/omit-if-no-ref/
i2c1_1_cfg: i2c1-1-cfg {
i2c1-1-pins {
pinmux = <K3_PADCONF(54, 5)>, /* i2c1 scl */
<K3_PADCONF(55, 5)>; /* i2c1 sda */
bias-pull-up = <1>;
drive-strength = <25>;
power-source = <1800>;
};
};
/omit-if-no-ref/
i2c2_1_cfg: i2c2-1-cfg {
i2c2-1-pins {
pinmux = <K3_PADCONF(46, 5)>, /* i2c2 scl */
<K3_PADCONF(47, 5)>; /* i2c2 sda */
bias-pull-up = <0>;
drive-strength = <25>;
};
};
/omit-if-no-ref/
i2c8_cfg: i2c8-cfg {
i2c8-pins {
@ -679,6 +702,27 @@ pwm19-2-pins {
};
};
/omit-if-no-ref/
qspi_cfg: qspi-cfg {
qspi-pins {
pinmux = <K3_PADCONF(138, 0)>, /* qspi dat0 */
<K3_PADCONF(139, 0)>, /* qspi dat1 */
<K3_PADCONF(140, 0)>, /* qspi dat2 */
<K3_PADCONF(141, 0)>, /* qspi dat3 */
<K3_PADCONF(144, 0)>; /* qspi clk */
bias-disable;
drive-strength = <25>;
};
qspi-cs0-pins {
pinmux = <K3_PADCONF(142, 0)>; /* qspi cs0 */
bias-disable;
drive-strength = <25>;
};
};
/omit-if-no-ref/
uart0_0_cfg: uart0-0-cfg {
uart0-0-pins {
@ -689,4 +733,48 @@ uart0-0-pins {
drive-strength = <25>;
};
};
mmc1_cfg: mmc1-cfg {
mmc1-data-cmd-pins {
pinmux = <K3_PADCONF(132, 0)>, /* mmc1 dat3 */
<K3_PADCONF(133, 0)>, /* mmc1 dat2 */
<K3_PADCONF(134, 0)>, /* mmc1 dat1 */
<K3_PADCONF(135, 0)>, /* mmc1 dat0 */
<K3_PADCONF(136, 0)>; /* mmc1 cmd */
bias-pull-up = <0>;
drive-strength = <25>;
power-source = <3300>;
};
mmc1-clk-pins {
pinmux = <K3_PADCONF(137, 0)>; /* mmc1 clk */
bias-pull-down;
drive-strength = <25>;
power-source = <3300>;
};
};
mmc1_uhs_cfg: mmc1-uhs-cfg {
mmc1-uhs-data-cmd-pins {
pinmux = <K3_PADCONF(132, 0)>, /* mmc1 dat3 */
<K3_PADCONF(133, 0)>, /* mmc1 dat2 */
<K3_PADCONF(134, 0)>, /* mmc1 dat1 */
<K3_PADCONF(135, 0)>, /* mmc1 dat0 */
<K3_PADCONF(136, 0)>; /* mmc1 cmd */
bias-pull-up = <0>;
drive-strength = <21>;
power-source = <1800>;
};
mmc1-uhs-clk-pins {
pinmux = <K3_PADCONF(137, 0)>; /* mmc1 clk */
bias-pull-down;
drive-strength = <21>;
power-source = <1800>;
};
};
};

View File

@ -5,8 +5,11 @@
*/
#include <dt-bindings/clock/spacemit,k3-clocks.h>
#include <dt-bindings/reset/spacemit,k3-resets.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/reset/spacemit,k3-resets.h>
#include <dt-bindings/phy/phy.h>
#include "k3-pdma.h"
/dts-v1/;
@ -438,6 +441,47 @@ soc: soc {
dma-noncoherent;
ranges;
usb3d: usb@81a00000 {
compatible = "spacemit,k3-dwc3";
reg = <0x0 0x81a00000 0x0 0x10000>;
interrupts = <149 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&saplic>;
clocks = <&syscon_apmu CLK_APMU_USB3_PORTD_BUS>;
clock-names = "usbdrd30";
resets = <&syscon_apmu RESET_APMU_USB3_D_AHB>,
<&syscon_apmu RESET_APMU_USB3_D_VCC>,
<&syscon_apmu RESET_APMU_USB3_D_PHY>;
reset-names = "ahb", "vcc", "phy";
phys = <&usb3d_u2phy>,
<&combophy 4 PHY_TYPE_USB3>;
phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi";
snps,dis_enblslpm_quirk;
snps,dis_u2_susphy_quirk;
snps,dis_u3_susphy_quirk;
snps,dis-del-phy-power-chg-quirk;
snps,dis-tx-ipgap-linecheck-quirk;
snps,parkmode-disable-ss-quirk;
dr_mode = "host";
status = "disabled";
};
usb3d_u2phy: phy@81b00000 {
compatible = "spacemit,k3-usb2-phy";
reg = <0x0 0x81b00000 0x0 0x200>;
clocks = <&syscon_apmu CLK_APMU_USB3_PORTD_BUS>;
#phy-cells = <0>;
status = "disabled";
};
combophy: phy@81d00000 {
compatible = "spacemit,k3-combo-phy";
reg = <0x0 0x81d00000 0x0 0x600000>;
#phy-cells = <2>;
spacemit,apb-spare = <&pll>;
status = "disabled";
};
usb2_host: usb@c0a00000 {
compatible = "spacemit,k3-dwc3";
reg = <0x0 0xc0a00000 0x0 0x10000>;
@ -927,6 +971,21 @@ pwm7: pwm@d401bc00 {
status = "disabled";
};
spi3: spi@d401c000 {
compatible = "spacemit,k3-spi", "spacemit,k1-spi";
reg = <0x0 0xd401c000 0x0 0x30>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&syscon_apbc CLK_APBC_SPI3>,
<&syscon_apbc CLK_APBC_SPI3_BUS>;
clock-names = "core", "bus";
resets = <&syscon_apbc RESET_APBC_SPI3>;
interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&pdma K3_PDMA_SSP3_RX>, <&pdma K3_PDMA_SSP3_TX>;
dma-names = "rx", "tx";
status = "disabled";
};
pwm8: pwm@d4020000 {
compatible = "spacemit,k3-pwm", "marvell,pxa910-pwm";
reg = <0x0 0xd4020000 0x0 0x10>;
@ -1081,6 +1140,155 @@ uart10: serial@d401f000 {
status = "disabled";
};
spi0: spi@d4040000 {
compatible = "spacemit,k3-spi", "spacemit,k1-spi";
reg = <0x0 0xd4040000 0x0 0x30>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&syscon_apbc CLK_APBC_SPI0>,
<&syscon_apbc CLK_APBC_SPI0_BUS>;
clock-names = "core", "bus";
resets = <&syscon_apbc RESET_APBC_SPI0>;
interrupts = <283 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&pdma K3_PDMA_SSP0_RX>, <&pdma K3_PDMA_SSP0_TX>;
dma-names = "rx", "tx";
status = "disabled";
};
spi1: spi@d4040800 {
compatible = "spacemit,k3-spi", "spacemit,k1-spi";
reg = <0x0 0xd4040800 0x0 0x30>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&syscon_apbc CLK_APBC_SPI1>,
<&syscon_apbc CLK_APBC_SPI1_BUS>;
clock-names = "core", "bus";
resets = <&syscon_apbc RESET_APBC_SPI1>;
interrupts = <282 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&pdma K3_PDMA_SSP1_RX>, <&pdma K3_PDMA_SSP1_TX>;
dma-names = "rx", "tx";
status = "disabled";
};
i2s0: i2s@d4026000 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4026000 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S0_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S0_BCLK>,
<&syscon_apbc CLK_APBC_I2S0_BUS>,
<&syscon_apbc CLK_APBC_I2S0>,
<&syscon_mpmu CLK_MPMU_I2S0_SYSCLK_DIV>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"sysclk_div", "c_sysclk", "c_bclk";
dmas = <&pdma 21>, <&pdma 22>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S0>;
#sound-dai-cells = <0>;
status = "disabled";
};
i2s1: i2s@d4026800 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4026800 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S1_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S1_BCLK>,
<&syscon_apbc CLK_APBC_I2S1_BUS>,
<&syscon_apbc CLK_APBC_I2S1>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"c_sysclk", "c_bclk";
dmas = <&pdma 23>, <&pdma 24>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S1>;
#sound-dai-cells = <0>;
status = "disabled";
};
i2s2: i2s@d4027000 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4027000 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S2_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S2_BCLK>,
<&syscon_apbc CLK_APBC_I2S2_BUS>,
<&syscon_apbc CLK_APBC_I2S2>,
<&syscon_mpmu CLK_MPMU_I2S2_SYSCLK_DIV>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"sysclk_div", "c_sysclk", "c_bclk";
dmas = <&pdma 56>, <&pdma 57>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S2>;
#sound-dai-cells = <0>;
status = "disabled";
};
i2s3: i2s@d4027800 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4027800 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S3_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S3_BCLK>,
<&syscon_apbc CLK_APBC_I2S3_BUS>,
<&syscon_apbc CLK_APBC_I2S3>,
<&syscon_mpmu CLK_MPMU_I2S3_SYSCLK_DIV>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"sysclk_div", "c_sysclk", "c_bclk";
dmas = <&pdma 58>, <&pdma 59>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S3>;
#sound-dai-cells = <0>;
status = "disabled";
};
i2s4: i2s@d4041000 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4041000 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S4_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S4_BCLK>,
<&syscon_apbc CLK_APBC_I2S4_BUS>,
<&syscon_apbc CLK_APBC_I2S4>,
<&syscon_mpmu CLK_MPMU_I2S4_SYSCLK_DIV>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"sysclk_div", "c_sysclk", "c_bclk";
dmas = <&pdma 60>, <&pdma 61>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S4>;
#sound-dai-cells = <0>;
status = "disabled";
};
i2s5: i2s@d4041800 {
compatible = "spacemit,k3-i2s";
reg = <0x0 0xd4041800 0x0 0x30>;
clocks = <&syscon_mpmu CLK_MPMU_I2S5_SYSCLK>,
<&syscon_apbc CLK_APBC_I2S5_BCLK>,
<&syscon_apbc CLK_APBC_I2S5_BUS>,
<&syscon_apbc CLK_APBC_I2S5>,
<&syscon_mpmu CLK_MPMU_I2S5_SYSCLK_DIV>,
<&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
<&syscon_mpmu CLK_MPMU_I2S_BCLK>;
clock-names = "sysclk", "bclk", "bus", "func",
"sysclk_div", "c_sysclk", "c_bclk";
dmas = <&pdma 62>, <&pdma 63>;
dma-names = "tx", "rx";
resets = <&syscon_apbc RESET_APBC_I2S5>;
#sound-dai-cells = <0>;
status = "disabled";
};
syscon_mpmu: system-controller@d4050000 {
compatible = "spacemit,k3-syscon-mpmu";
reg = <0x0 0xd4050000 0x0 0x10000>;
@ -1099,6 +1307,36 @@ pll: clock-controller@d4090000 {
#clock-cells = <1>;
};
qspi: spi@d420c000 {
compatible = "spacemit,k3-qspi",
"spacemit,k1-qspi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x0 0xd420c000 0x0 0x1000>,
<0x0 0xb8000000 0x0 0xc00000>;
reg-names = "QuadSPI", "QuadSPI-memory";
clocks = <&syscon_apmu CLK_APMU_QSPI_BUS>,
<&syscon_apmu CLK_APMU_QSPI>;
clock-names = "qspi_en", "qspi";
resets = <&syscon_apmu RESET_APMU_QSPI>,
<&syscon_apmu RESET_APMU_QSPI_BUS>;
interrupts = <117 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
sdhci0: mmc@d4280000 {
compatible = "spacemit,k3-sdhci";
reg = <0x0 0xd4280000 0x0 0x200>;
clocks = <&syscon_apmu CLK_APMU_SDH_AXI>,
<&syscon_apmu CLK_APMU_SDH0>;
clock-names = "core", "io";
resets = <&syscon_apmu RESET_APMU_SDH_AXI>,
<&syscon_apmu RESET_APMU_SDH0>;
reset-names = "axi", "sdh";
interrupts = <99 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
syscon_apmu: system-controller@d4282800 {
compatible = "spacemit,k3-syscon-apmu";
reg = <0x0 0xd4282800 0x0 0x400>;

View File

@ -81,6 +81,8 @@ static const struct of_device_id allowlist[] __initconst = {
{ .have_governor_per_policy = true, },
},
{ .compatible = "spacemit,k1", },
{ .compatible = "st-ericsson,u8500", },
{ .compatible = "st-ericsson,u8540", },
{ .compatible = "st-ericsson,u9500", },