[PATCH 3/3] riscv: dts: spacemit: add QSPI support for K3 Pico-ITX
Zhengyu He
hezhy472013 at gmail.com
Mon May 18 23:15:57 PDT 2026
Describe the K3 QSPI controller and the pin configuration needed by
boards.
Enable the bus on Pico-ITX because the board wires QSPI to NOR flash
powered from the board 1.8 V QSPI rail.
Signed-off-by: Zhengyu He <hezhy472013 at gmail.com>
Signed-off-by: Cody Kang <cody.kang.hk at outlook.com>
---
arch/riscv/boot/dts/spacemit/k3-pico-itx.dts | 58 ++++++++++++++++++++++++++++
arch/riscv/boot/dts/spacemit/k3-pinctrl.dtsi | 21 ++++++++++
arch/riscv/boot/dts/spacemit/k3.dtsi | 16 ++++++++
3 files changed, 95 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
index 4486dc1fe114..61cbf924830b 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
+++ b/arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
@@ -192,6 +192,64 @@ phy0: phy at 1 {
};
};
+&pinctrl {
+ qspi-cfg {
+ qspi-pins {
+ power-source = <1800>;
+ };
+
+ qspi-cs0-pins {
+ power-source = <1800>;
+ };
+ };
+};
+
+&qspi {
+ pinctrl-names = "default";
+ pinctrl-0 = <&qspi_cfg>;
+ status = "okay";
+
+ flash at 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 at 0 {
+ reg = <0x0 0x20000>;
+ };
+
+ fsbl at 20000 {
+ reg = <0x20000 0x80000>;
+ };
+
+ env at a0000 {
+ reg = <0xa0000 0x10000>;
+ };
+
+ esos at b0000 {
+ reg = <0xb0000 0x100000>;
+ };
+
+ opensbi at 1b0000 {
+ reg = <0x1b0000 0x60000>;
+ };
+
+ uboot at 210000 {
+ reg = <0x210000 0x5f0000>;
+ };
+ };
+ };
+};
+
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_0_cfg>;
diff --git a/arch/riscv/boot/dts/spacemit/k3-pinctrl.dtsi b/arch/riscv/boot/dts/spacemit/k3-pinctrl.dtsi
index 23899d3f308a..5d9763791180 100644
--- a/arch/riscv/boot/dts/spacemit/k3-pinctrl.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3-pinctrl.dtsi
@@ -56,6 +56,27 @@ i2c8-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 {
diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spacemit/k3.dtsi
index 815debd16409..800efc2929a4 100644
--- a/arch/riscv/boot/dts/spacemit/k3.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
@@ -836,6 +836,22 @@ pll: clock-controller at d4090000 {
#clock-cells = <1>;
};
+ qspi: spi at d420c000 {
+ compatible = "spacemit,k3-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";
+ };
+
syscon_apmu: system-controller at d4282800 {
compatible = "spacemit,k3-syscon-apmu";
reg = <0x0 0xd4282800 0x0 0x400>;
--
2.53.0
More information about the linux-riscv
mailing list