* [PATCH v3 1/9] dt-bindings: spi: fsl-qspi: support SpacemiT K1
2025-10-24 19:15 [PATCH v3 0/9] spi: enable the SpacemiT K1 SoC QSPI Alex Elder
@ 2025-10-24 19:15 ` Alex Elder
2025-10-24 19:15 ` [PATCH v3 2/9] dt-bindings: spi: fsl-qspi: add optional resets Alex Elder
2025-10-24 19:15 ` [PATCH v3 8/9] riscv: dts: spacemit: enable K1 SoC QSPI on BPI-F3 Alex Elder
2 siblings, 0 replies; 5+ messages in thread
From: Alex Elder @ 2025-10-24 19:15 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, han.xu, broonie
Cc: dlan, Frank.li, guodong, devicetree, linux-spi, imx, spacemit,
linux-riscv, linux-kernel, Conor Dooley, Frank Li
Add the SpacemiT K1 SoC QSPI IP to the list of supported hardware. This
is the first non-Freescale device represented here. It has a nearly
identidal register set, and this binding correctly describes the hardware.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Alex Elder <elder@riscstar.com>
---
v3: - Added Acked-by from Conor Dooley
- Added Reviewed-by from Frank Li
Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
index f2dd20370dbb3..5e6aff1bc2ed3 100644
--- a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
+++ b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
@@ -22,6 +22,7 @@ properties:
- fsl,imx6ul-qspi
- fsl,ls1021a-qspi
- fsl,ls2080a-qspi
+ - spacemit,k1-qspi
- items:
- enum:
- fsl,ls1043a-qspi
--
2.48.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v3 2/9] dt-bindings: spi: fsl-qspi: add optional resets
2025-10-24 19:15 [PATCH v3 0/9] spi: enable the SpacemiT K1 SoC QSPI Alex Elder
2025-10-24 19:15 ` [PATCH v3 1/9] dt-bindings: spi: fsl-qspi: support SpacemiT K1 Alex Elder
@ 2025-10-24 19:15 ` Alex Elder
2025-10-24 21:23 ` Frank Li
2025-10-24 19:15 ` [PATCH v3 8/9] riscv: dts: spacemit: enable K1 SoC QSPI on BPI-F3 Alex Elder
2 siblings, 1 reply; 5+ messages in thread
From: Alex Elder @ 2025-10-24 19:15 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, han.xu, broonie
Cc: dlan, Frank.li, guodong, linux-spi, imx, devicetree, spacemit,
linux-riscv, linux-kernel, Conor Dooley
Allow two resets to be defined to support the SpacemiT K1 SoC QSPI IP.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Alex Elder <elder@riscstar.com>
---
v3: - The reset property conditional is now under allOf
.../devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
index 5e6aff1bc2ed3..46e5db25fb107 100644
--- a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
+++ b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
@@ -11,6 +11,15 @@ maintainers:
allOf:
- $ref: spi-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ not:
+ contains:
+ const: spacemit,k1-qspi
+ then:
+ properties:
+ resets: false
properties:
compatible:
@@ -55,6 +64,11 @@ properties:
- const: qspi_en
- const: qspi
+ resets:
+ items:
+ - description: SoC QSPI reset
+ - description: SoC QSPI bus reset
+
required:
- compatible
- reg
--
2.48.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v3 2/9] dt-bindings: spi: fsl-qspi: add optional resets
2025-10-24 19:15 ` [PATCH v3 2/9] dt-bindings: spi: fsl-qspi: add optional resets Alex Elder
@ 2025-10-24 21:23 ` Frank Li
0 siblings, 0 replies; 5+ messages in thread
From: Frank Li @ 2025-10-24 21:23 UTC (permalink / raw)
To: Alex Elder
Cc: robh, krzk+dt, conor+dt, han.xu, broonie, dlan, guodong,
linux-spi, imx, devicetree, spacemit, linux-riscv, linux-kernel,
Conor Dooley
On Fri, Oct 24, 2025 at 02:15:42PM -0500, Alex Elder wrote:
> Allow two resets to be defined to support the SpacemiT K1 SoC QSPI IP.
>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Alex Elder <elder@riscstar.com>
> ---
> v3: - The reset property conditional is now under allOf
>
> .../devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
> index 5e6aff1bc2ed3..46e5db25fb107 100644
> --- a/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
> +++ b/Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
> @@ -11,6 +11,15 @@ maintainers:
>
> allOf:
> - $ref: spi-controller.yaml#
> + - if:
> + properties:
> + compatible:
> + not:
> + contains:
> + const: spacemit,k1-qspi
> + then:
> + properties:
> + resets: false
I am fine here now. If have next version, move it after required. More
if-else may be added in future.
Reviewed-by: Frank Li <Frank.Li@nxp.com>
>
> properties:
> compatible:
> @@ -55,6 +64,11 @@ properties:
> - const: qspi_en
> - const: qspi
>
> + resets:
> + items:
> + - description: SoC QSPI reset
> + - description: SoC QSPI bus reset
> +
> required:
> - compatible
> - reg
> --
> 2.48.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 8/9] riscv: dts: spacemit: enable K1 SoC QSPI on BPI-F3
2025-10-24 19:15 [PATCH v3 0/9] spi: enable the SpacemiT K1 SoC QSPI Alex Elder
2025-10-24 19:15 ` [PATCH v3 1/9] dt-bindings: spi: fsl-qspi: support SpacemiT K1 Alex Elder
2025-10-24 19:15 ` [PATCH v3 2/9] dt-bindings: spi: fsl-qspi: add optional resets Alex Elder
@ 2025-10-24 19:15 ` Alex Elder
2 siblings, 0 replies; 5+ messages in thread
From: Alex Elder @ 2025-10-24 19:15 UTC (permalink / raw)
To: dlan, robh, krzk+dt, conor+dt
Cc: Frank.li, guodong, pjw, palmer, aou, alex, devicetree, spacemit,
linux-riscv, linux-kernel
Define DTS nodes to enable support for QSPI on the K1 SoC, including the
pin control configuration used. Enable QSPI on the Banana Pi BPI-F3 board.
Signed-off-by: Alex Elder <elder@riscstar.com>
---
.../boot/dts/spacemit/k1-bananapi-f3.dts | 6 ++++++
arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 21 +++++++++++++++++++
arch/riscv/boot/dts/spacemit/k1.dtsi | 16 ++++++++++++++
3 files changed, 43 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
index 33ca816bfd4b3..02f218a16318e 100644
--- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
@@ -113,6 +113,12 @@ &pdma {
status = "okay";
};
+&qspi {
+ pinctrl-names = "default";
+ pinctrl-0 = <&qspi_cfg>;
+ status = "okay";
+};
+
&i2c2 {
pinctrl-0 = <&i2c2_0_cfg>;
pinctrl-names = "default";
diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
index 4eef81d583f3d..e922e05ff856d 100644
--- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
@@ -73,6 +73,27 @@ i2c8-0-pins {
};
};
+ qspi_cfg: qspi-cfg {
+ qspi-pins {
+ pinmux = <K1_PADCONF(98, 0)>, /* QSPI_DATA3 */
+ <K1_PADCONF(99, 0)>, /* QSPI_DATA2 */
+ <K1_PADCONF(100, 0)>, /* QSPI_DATA1 */
+ <K1_PADCONF(101, 0)>, /* QSPI_DATA0 */
+ <K1_PADCONF(102, 0)>; /* QSPI_CLK */
+
+ bias-disable;
+ drive-strength = <19>;
+ power-source = <3300>;
+ };
+
+ qspi-cs1-pins {
+ pinmux = <K1_PADCONF(103, 0)>; /* QSPI_CS1 */
+ bias-pull-up = <0>;
+ drive-strength = <19>;
+ power-source = <3300>;
+ };
+ };
+
/omit-if-no-ref/
uart0_0_cfg: uart0-0-cfg {
uart0-0-pins {
diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
index af35f9cd64351..47f97105bff0b 100644
--- a/arch/riscv/boot/dts/spacemit/k1.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1.dtsi
@@ -823,6 +823,22 @@ uart9: serial@d4017800 {
status = "disabled";
};
+ qspi: spi@d420c000 {
+ compatible = "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_QSPI_BUS>,
+ <&syscon_apmu CLK_QSPI>;
+ clock-names = "qspi_en", "qspi";
+ resets = <&syscon_apmu RESET_QSPI>,
+ <&syscon_apmu RESET_QSPI_BUS>;
+ interrupts = <117>;
+ status = "disabled";
+ };
+
/* sec_uart1: 0xf0612000, not available from Linux */
};
--
2.48.1
^ permalink raw reply related [flat|nested] 5+ messages in thread