* [PATCH v4 00/10] riscv: add initial support for SpacemiT K1
@ 2024-07-09 3:18 Yixun Lan
2024-07-09 3:18 ` [PATCH v4 01/10] dt-bindings: vendor-prefixes: add spacemit Yixun Lan
` (10 more replies)
0 siblings, 11 replies; 17+ messages in thread
From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano,
Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman,
Jiri Slaby, Lubomir Rintel
Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube,
Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang,
Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley,
Matthias Brugger
SpacemiT K1 is an ideal chip for some new extension such as RISC-V Vector
1.0 and Zicond evaluation now. Add initial support for it to allow more
people to participate in building drivers to mainline for it.
This kernel has been tested upon Banana Pi BPI-F3 board on vendor U-Boot
bootflow generated by Armbian SDK[1] and patched OpenSBI[2] to enable
Zicboz, which does not in the vendor dts on its U-Boot. Then successfully
booted to busybox on initrd with this log[3].
As previous discussion in patch v1[4], maintainer expect more basic drivers
ready before really merging it, which would be fine. For other follow-up patches,
that are clk, pinctrl/gpio, reset.. My current goal would target at a headless
system including SD card, emmc, and ethernet.
In this series, the uart node has no 'fifo-size', 'tx-threshold' property populated,
will add them once this patch is resolved, see thread [5]
P.S: talked to Yangyu, I will help and take care of this patch series, thanks
---
Changes in v4:
- add i/d-cache, l2-cache info
- squash uart1 dts node
- update tags
- Link to v3: https://lore.kernel.org/r/20240703-k1-01-basic-dt-v3-0-12f73b47461e@gentoo.org
Changes in v3:
- fix dt_binding_check error
- fix plic compatible
- fix uart node name
- add uart1 dts node
- collect tags
- Link to v2: https://lore.kernel.org/r/20240627-k1-01-basic-dt-v2-0-cc06c7555f07@gentoo.org
Changes in v2:
- fix timebase-frequency according to current setting
- add other uart dt nodes, fix input frequency
- introduce new uart compatible for K1 SoC
- add 'k1' prefix to bananapi-f3.dts
- fix k1-clint compatible
- fix some typos
- Link to v1: https://lore.kernel.org/r/tencent_BC64B7B1876F5D10479BD19112F73F262505@qq.com
Link: https://github.com/BPI-SINOVOIP/armbian-build/tree/v24.04.30 [1]
Link: https://gist.github.com/cyyself/a07096e6e99c949ed13f8fa16d884402 [2]
Link: https://gist.github.com/cyyself/a2201c01f5c8955a119641f97b7d0280 [3]
Link: https://lore.kernel.org/r/20240618-hardwood-footrest-ab5ec5bce3cf@wendy [4]
Link:https://lore.kernel.org/linux-riscv/20240706082928.2238-1-jszhang@kernel.org/ [5]
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Conor Dooley <conor@kernel.org>
To: Paul Walmsley <paul.walmsley@sifive.com>
To: Palmer Dabbelt <palmer@dabbelt.com>
To: Albert Ou <aou@eecs.berkeley.edu>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Thomas Gleixner <tglx@linutronix.de>
To: Samuel Holland <samuel.holland@sifive.com>
To: Anup Patel <anup@brainfault.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Jiri Slaby <jirislaby@kernel.org>
To: Lubomir Rintel <lkundrak@v3.sk>
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-riscv@lists.infradead.org
Cc: linux-serial@vger.kernel.org
Cc: Jesse Taube <jesse@rivosinc.com>
Cc: Jisheng Zhang <jszhang@kernel.org>
Cc: Inochi Amaoto <inochiama@outlook.com>
Cc: Icenowy Zheng <uwu@icenowy.me>
Cc: Meng Zhang <zhangmeng.kevin@spacemit.com>
Cc: Meng Zhang <kevin.z.m@hotmail.com>
Signed-off-by: Yangyu Chen <cyy@cyyself.name>
Signed-off-by: Yixun Lan <dlan@gentoo.org>
---
Yangyu Chen (9):
dt-bindings: vendor-prefixes: add spacemit
dt-bindings: riscv: Add SpacemiT X60 compatibles
dt-bindings: riscv: add SpacemiT K1 bindings
dt-bindings: timer: Add SpacemiT K1 CLINT
dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC
riscv: add SpacemiT SoC family Kconfig support
riscv: dts: add initial SpacemiT K1 SoC device tree
riscv: dts: spacemit: add Banana Pi BPI-F3 board device tree
riscv: defconfig: enable SpacemiT SoC
Yixun Lan (1):
dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible
.../interrupt-controller/sifive,plic-1.0.0.yaml | 1 +
Documentation/devicetree/bindings/riscv/cpus.yaml | 1 +
.../devicetree/bindings/riscv/spacemit.yaml | 28 ++
Documentation/devicetree/bindings/serial/8250.yaml | 4 +-
.../devicetree/bindings/timer/sifive,clint.yaml | 1 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/riscv/Kconfig.socs | 5 +
arch/riscv/boot/dts/Makefile | 1 +
arch/riscv/boot/dts/spacemit/Makefile | 2 +
arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 19 +
arch/riscv/boot/dts/spacemit/k1.dtsi | 459 +++++++++++++++++++++
arch/riscv/configs/defconfig | 1 +
12 files changed, 523 insertions(+), 1 deletion(-)
---
base-commit: 256abd8e550ce977b728be79a74e1729438b4948
change-id: 20240626-k1-01-basic-dt-1aa31eeebcd2
Best regards,
--
Yixun Lan <dlan@gentoo.org>
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH v4 01/10] dt-bindings: vendor-prefixes: add spacemit 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 02/10] dt-bindings: riscv: Add SpacemiT X60 compatibles Yixun Lan ` (9 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> Add new vendor strings to dt bindings for SpacemiT K1 SoC. Link: https://www.spacemit.com/en/spacemit-key-stone-2/ Signed-off-by: Yangyu Chen <cyy@cyyself.name> Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index fbf47f0bacf1a..7ee6e4a89376e 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1362,6 +1362,8 @@ patternProperties: description: Sophgo Technology Inc. "^sourceparts,.*": description: Source Parts Inc. + "^spacemit,.*": + description: SpacemiT (Hangzhou) Technology Co. Ltd "^spansion,.*": description: Spansion Inc. "^sparkfun,.*": -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 02/10] dt-bindings: riscv: Add SpacemiT X60 compatibles 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan 2024-07-09 3:18 ` [PATCH v4 01/10] dt-bindings: vendor-prefixes: add spacemit Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings Yixun Lan ` (8 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> The X60 is RISC-V CPU cores from SpacemiT and currently used in their K1 SoC. Link: https://www.spacemit.com/en/spacemit-x60-core/ Signed-off-by: Yangyu Chen <cyy@cyyself.name> Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- Documentation/devicetree/bindings/riscv/cpus.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml index d87dd50f1a4b5..5ad9cb4103356 100644 --- a/Documentation/devicetree/bindings/riscv/cpus.yaml +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml @@ -46,6 +46,7 @@ properties: - sifive,u7 - sifive,u74 - sifive,u74-mc + - spacemit,x60 - thead,c906 - thead,c910 - thead,c920 -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan 2024-07-09 3:18 ` [PATCH v4 01/10] dt-bindings: vendor-prefixes: add spacemit Yixun Lan 2024-07-09 3:18 ` [PATCH v4 02/10] dt-bindings: riscv: Add SpacemiT X60 compatibles Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 16:34 ` Rob Herring (Arm) 2024-07-09 3:18 ` [PATCH v4 04/10] dt-bindings: timer: Add SpacemiT K1 CLINT Yixun Lan ` (7 subsequent siblings) 10 siblings, 1 reply; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Matthias Brugger From: Yangyu Chen <cyy@cyyself.name> Add DT binding documentation for the SpacemiT K1 SoC[1] and the Banana Pi BPi-F3 board[2] which used it. Link: https://www.spacemit.com/en/spacemit-key-stone-2/ [1] Link: https://docs.banana-pi.org/en/BPI-F3/BananaPi_BPI-F3 [2] Signed-off-by: Yangyu Chen <cyy@cyyself.name> Reviewed-by: Matthias Brugger <matthias.bgg@kernel.org> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- .../devicetree/bindings/riscv/spacemit.yaml | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Documentation/devicetree/bindings/riscv/spacemit.yaml b/Documentation/devicetree/bindings/riscv/spacemit.yaml new file mode 100644 index 0000000000000..52e55077af1ae --- /dev/null +++ b/Documentation/devicetree/bindings/riscv/spacemit.yaml @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/riscv/spacemit.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SpacemiT SoC-based boards + +maintainers: + - Yangyu Chen <cyy@cyyself.name> + - Yixun Lan <dlan@gentoo.org> + +description: + SpacemiT SoC-based boards + +properties: + $nodename: + const: '/' + compatible: + oneOf: + - items: + - enum: + - bananapi,bpi-f3 + - const: spacemit,k1 + +additionalProperties: true + +... -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings 2024-07-09 3:18 ` [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings Yixun Lan @ 2024-07-09 16:34 ` Rob Herring (Arm) 0 siblings, 0 replies; 17+ messages in thread From: Rob Herring (Arm) @ 2024-07-09 16:34 UTC (permalink / raw) To: Yixun Lan Cc: devicetree, Jisheng Zhang, Conor Dooley, Anup Patel, Daniel Lezcano, Paul Walmsley, linux-serial, Albert Ou, Jesse Taube, Palmer Dabbelt, Thomas Gleixner, linux-kernel, Samuel Holland, Krzysztof Kozlowski, Yangyu Chen, Matthias Brugger, Inochi Amaoto, Conor Dooley, Lubomir Rintel, Jiri Slaby, Greg Kroah-Hartman, Meng Zhang, linux-riscv, Icenowy Zheng, Meng Zhang On Tue, 09 Jul 2024 03:18:46 +0000, Yixun Lan wrote: > From: Yangyu Chen <cyy@cyyself.name> > > Add DT binding documentation for the SpacemiT K1 SoC[1] and the Banana > Pi BPi-F3 board[2] which used it. > > Link: https://www.spacemit.com/en/spacemit-key-stone-2/ [1] > Link: https://docs.banana-pi.org/en/BPI-F3/BananaPi_BPI-F3 [2] > Signed-off-by: Yangyu Chen <cyy@cyyself.name> > Reviewed-by: Matthias Brugger <matthias.bgg@kernel.org> > Signed-off-by: Yixun Lan <dlan@gentoo.org> > --- > .../devicetree/bindings/riscv/spacemit.yaml | 28 ++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > Acked-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v4 04/10] dt-bindings: timer: Add SpacemiT K1 CLINT 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (2 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 05/10] dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC Yixun Lan ` (6 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> Add compatible string for SpacemiT K1 CLINT. Signed-off-by: Yangyu Chen <cyy@cyyself.name> Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- Documentation/devicetree/bindings/timer/sifive,clint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/timer/sifive,clint.yaml b/Documentation/devicetree/bindings/timer/sifive,clint.yaml index fced6f2d8ecbb..c2e68587a806a 100644 --- a/Documentation/devicetree/bindings/timer/sifive,clint.yaml +++ b/Documentation/devicetree/bindings/timer/sifive,clint.yaml @@ -31,6 +31,7 @@ properties: - enum: - canaan,k210-clint # Canaan Kendryte K210 - sifive,fu540-c000-clint # SiFive FU540 + - spacemit,k1-clint # SpacemiT K1 - starfive,jh7100-clint # StarFive JH7100 - starfive,jh7110-clint # StarFive JH7110 - starfive,jh8100-clint # StarFive JH8100 -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 05/10] dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (3 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 04/10] dt-bindings: timer: Add SpacemiT K1 CLINT Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 06/10] dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible Yixun Lan ` (5 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> Add compatible string for SpacemiT K1 PLIC. Signed-off-by: Yangyu Chen <cyy@cyyself.name> Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- .../devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml index 709b2211276bd..f473ca3479efd 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml @@ -59,6 +59,7 @@ properties: - enum: - canaan,k210-plic - sifive,fu540-c000-plic + - spacemit,k1-plic - starfive,jh7100-plic - starfive,jh7110-plic - const: sifive,plic-1.0.0 -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 06/10] dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (4 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 05/10] dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 07/10] riscv: add SpacemiT SoC family Kconfig support Yixun Lan ` (4 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley Found SpacemiT's K1 uart controller is compatible with Intel's Xscale uart, but it's still worth to introduce a new compatible. Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- Documentation/devicetree/bindings/serial/8250.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/serial/8250.yaml b/Documentation/devicetree/bindings/serial/8250.yaml index 692aa05500fd5..0bde2379e8647 100644 --- a/Documentation/devicetree/bindings/serial/8250.yaml +++ b/Documentation/devicetree/bindings/serial/8250.yaml @@ -111,7 +111,9 @@ properties: - mediatek,mt7623-btif - const: mediatek,mtk-btif - items: - - const: mrvl,mmp-uart + - enum: + - mrvl,mmp-uart + - spacemit,k1-uart - const: intel,xscale-uart - items: - enum: -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 07/10] riscv: add SpacemiT SoC family Kconfig support 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (5 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 06/10] dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree Yixun Lan ` (3 subsequent siblings) 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> The first SoC in the SpacemiT series is K1, which contains 8 RISC-V cores with RISC-V Vector v1.0 support. Link: https://www.spacemit.com/en/spacemit-key-stone-2/ Signed-off-by: Yangyu Chen <cyy@cyyself.name> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- arch/riscv/Kconfig.socs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs index f51bb24bc84c6..1916cf7ba450e 100644 --- a/arch/riscv/Kconfig.socs +++ b/arch/riscv/Kconfig.socs @@ -24,6 +24,11 @@ config ARCH_SOPHGO help This enables support for Sophgo SoC platform hardware. +config ARCH_SPACEMIT + bool "SpacemiT SoCs" + help + This enables support for SpacemiT SoC platform hardware. + config ARCH_STARFIVE def_bool SOC_STARFIVE -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (6 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 07/10] riscv: add SpacemiT SoC family Kconfig support Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 5:43 ` zhang meng ` (2 more replies) 2024-07-09 3:18 ` [PATCH v4 09/10] riscv: dts: spacemit: add Banana Pi BPI-F3 board " Yixun Lan ` (2 subsequent siblings) 10 siblings, 3 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan From: Yangyu Chen <cyy@cyyself.name> Banana Pi BPI-F3 motherboard is powered by SpacemiT K1[1]. Key features: - 4 cores per cluster, 2 clusters on chip - UART IP is Intel XScale UART Some key considerations: - ISA string is inferred from vendor documentation[2] - Cluster topology is inferred from datasheet[1] and L2 in vendor dts[3] - No coherent DMA on this board Inferred by taking vendor ethernet and MMC drivers to the mainline kernel. Without dma-noncoherent in soc node, the driver fails. - No cache nodes now The parameters from vendor dts are likely to be wrong. It has 512 sets for a 32KiB L1 Cache. In this case, each set is 64B in size. When the size of the cache line is 64B, it is a directly mapped cache rather than a set-associative cache, the latter is commonly used. Thus, I didn't use the parameters from vendor dts. Currently only support booting into console with only uart, other features will be added soon later. Link: https://docs.banana-pi.org/en/BPI-F3/SpacemiT_K1_datasheet [1] Link: https://developer.spacemit.com/#/documentation?token=BWbGwbx7liGW21kq9lucSA6Vnpb [2] Link: https://gitee.com/bianbu-linux/linux-6.1/blob/bl-v1.0.y/arch/riscv/boot/dts/spacemit/k1-x.dtsi [3] Signed-off-by: Yangyu Chen <cyy@cyyself.name> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- Changes in v4: - add i/d-cache, l2-cache info - Link to v3: https://lore.kernel.org/all/20240703-k1-01-basic-dt-v3-8-12f73b47461e@gentoo.org/ --- arch/riscv/boot/dts/spacemit/k1.dtsi | 459 +++++++++++++++++++++++++++++++++++ 1 file changed, 459 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi new file mode 100644 index 0000000000000..22735fc83c843 --- /dev/null +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -0,0 +1,459 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> + */ + +/dts-v1/; +/ { + #address-cells = <2>; + #size-cells = <2>; + model = "SpacemiT K1"; + compatible = "spacemit,k1"; + + aliases { + serial0 = &uart0; + serial1 = &uart2; + serial2 = &uart3; + serial3 = &uart4; + serial4 = &uart5; + serial5 = &uart6; + serial6 = &uart7; + serial7 = &uart8; + serial8 = &uart9; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + timebase-frequency = <24000000>; + + cpu-map { + cluster0 { + core0 { + cpu = <&cpu_0>; + }; + core1 { + cpu = <&cpu_1>; + }; + core2 { + cpu = <&cpu_2>; + }; + core3 { + cpu = <&cpu_3>; + }; + }; + + cluster1 { + core0 { + cpu = <&cpu_4>; + }; + core1 { + cpu = <&cpu_5>; + }; + core2 { + cpu = <&cpu_6>; + }; + core3 { + cpu = <&cpu_7>; + }; + }; + }; + + cpu_0: cpu@0 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <0>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster0_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_1: cpu@1 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <1>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster0_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu1_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_2: cpu@2 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <2>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster0_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu2_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_3: cpu@3 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <3>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster0_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu3_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_4: cpu@4 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <4>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster1_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu4_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_5: cpu@5 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <5>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster1_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu5_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_6: cpu@6 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <6>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster1_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu6_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu_7: cpu@7 { + compatible = "spacemit,x60", "riscv"; + device_type = "cpu"; + reg = <7>; + riscv,isa = "rv64imafdcv_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", "v", "zicbom", + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", + "zifencei", "zihintpause", "zihpm", "zfh", "zba", + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; + riscv,cbom-block-size = <64>; + riscv,cbop-block-size = <64>; + riscv,cboz-block-size = <64>; + i-cache-block-size = <64>; + i-cache-size = <32768>; + i-cache-sets = <512>; + d-cache-block-size = <64>; + d-cache-size = <32768>; + d-cache-sets = <512>; + next-level-cache = <&cluster1_l2_cache>; + mmu-type = "riscv,sv39"; + + cpu7_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cluster0_l2_cache: l2-cache0 { + compatible = "cache"; + cache-block-size = <64>; + cache-level = <2>; + cache-size = <524288>; + cache-sets = <1024>; + cache-unified; + }; + + cluster1_l2_cache: l2-cache1 { + compatible = "cache"; + cache-block-size = <64>; + cache-level = <2>; + cache-size = <524288>; + cache-sets = <1024>; + cache-unified; + }; + }; + + soc { + compatible = "simple-bus"; + interrupt-parent = <&plic>; + #address-cells = <2>; + #size-cells = <2>; + dma-noncoherent; + ranges; + + uart0: serial@d4017000 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017000 0x0 0x100>; + interrupts = <42>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart2: serial@d4017100 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017100 0x0 0x100>; + interrupts = <44>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart3: serial@d4017200 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017200 0x0 0x100>; + interrupts = <45>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart4: serial@d4017300 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017300 0x0 0x100>; + interrupts = <46>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart5: serial@d4017400 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017400 0x0 0x100>; + interrupts = <47>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart6: serial@d4017500 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017500 0x0 0x100>; + interrupts = <48>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart7: serial@d4017600 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017600 0x0 0x100>; + interrupts = <49>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart8: serial@d4017700 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017700 0x0 0x100>; + interrupts = <50>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + uart9: serial@d4017800 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xd4017800 0x0 0x100>; + interrupts = <51>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "disabled"; + }; + + plic: interrupt-controller@e0000000 { + compatible = "spacemit,k1-plic", "sifive,plic-1.0.0"; + reg = <0x0 0xe0000000 0x0 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>, + <&cpu1_intc 11>, <&cpu1_intc 9>, + <&cpu2_intc 11>, <&cpu2_intc 9>, + <&cpu3_intc 11>, <&cpu3_intc 9>, + <&cpu4_intc 11>, <&cpu4_intc 9>, + <&cpu5_intc 11>, <&cpu5_intc 9>, + <&cpu6_intc 11>, <&cpu6_intc 9>, + <&cpu7_intc 11>, <&cpu7_intc 9>; + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <1>; + riscv,ndev = <159>; + }; + + clint: timer@e4000000 { + compatible = "spacemit,k1-clint", "sifive,clint0"; + reg = <0x0 0xe4000000 0x0 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>, + <&cpu5_intc 3>, <&cpu5_intc 7>, + <&cpu6_intc 3>, <&cpu6_intc 7>, + <&cpu7_intc 3>, <&cpu7_intc 7>; + }; + + sec_uart1: serial@f0612000 { + compatible = "spacemit,k1-uart", "intel,xscale-uart"; + reg = <0x0 0xf0612000 0x0 0x100>; + interrupts = <43>; + clock-frequency = <14857000>; + reg-shift = <2>; + reg-io-width = <4>; + status = "reserved"; /* for TEE usage */ + }; + }; +}; -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree 2024-07-09 3:18 ` [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree Yixun Lan @ 2024-07-09 5:43 ` zhang meng 2024-07-11 7:40 ` Yixun Lan [not found] ` <668f8cb0.630a0220.0385.4d00SMTPIN_ADDED_BROKEN@mx.google.com> 2 siblings, 0 replies; 17+ messages in thread From: zhang meng @ 2024-07-09 5:43 UTC (permalink / raw) To: Yixun Lan, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Yangyu Chen 在 2024/7/9 11:18, Yixun Lan 写道: > From: Yangyu Chen <cyy@cyyself.name> > > Banana Pi BPI-F3 motherboard is powered by SpacemiT K1[1]. > > Key features: > - 4 cores per cluster, 2 clusters on chip > - UART IP is Intel XScale UART > > Some key considerations: > - ISA string is inferred from vendor documentation[2] > - Cluster topology is inferred from datasheet[1] and L2 in vendor dts[3] > - No coherent DMA on this board > Inferred by taking vendor ethernet and MMC drivers to the mainline > kernel. Without dma-noncoherent in soc node, the driver fails. > - No cache nodes now > The parameters from vendor dts are likely to be wrong. It has 512 > sets for a 32KiB L1 Cache. In this case, each set is 64B in size. Sets of 32 KiB L1 Cahce should be 128. > When the size of the cache line is 64B, it is a directly mapped > cache rather than a set-associative cache, the latter is commonly > used. Thus, I didn't use the parameters from vendor dts. > > Currently only support booting into console with only uart, other > features will be added soon later. > > Link: https://docs.banana-pi.org/en/BPI-F3/SpacemiT_K1_datasheet [1] > Link: https://developer.spacemit.com/#/documentation?token=BWbGwbx7liGW21kq9lucSA6Vnpb [2] > Link: https://gitee.com/bianbu-linux/linux-6.1/blob/bl-v1.0.y/arch/riscv/boot/dts/spacemit/k1-x.dtsi [3] > Signed-off-by: Yangyu Chen <cyy@cyyself.name> > Signed-off-by: Yixun Lan <dlan@gentoo.org> > > --- > Changes in v4: > - add i/d-cache, l2-cache info > - Link to v3: https://lore.kernel.org/all/20240703-k1-01-basic-dt-v3-8-12f73b47461e@gentoo.org/ > --- > arch/riscv/boot/dts/spacemit/k1.dtsi | 459 +++++++++++++++++++++++++++++++++++ > 1 file changed, 459 insertions(+) > > diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi > new file mode 100644 > index 0000000000000..22735fc83c843 > --- /dev/null > +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi > @@ -0,0 +1,459 @@ > +// SPDX-License-Identifier: GPL-2.0 OR MIT > +/* > + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> > + */ > + > +/dts-v1/; > +/ { > + #address-cells = <2>; > + #size-cells = <2>; > + model = "SpacemiT K1"; > + compatible = "spacemit,k1"; > + > + aliases { > + serial0 = &uart0; > + serial1 = &uart2; > + serial2 = &uart3; > + serial3 = &uart4; > + serial4 = &uart5; > + serial5 = &uart6; > + serial6 = &uart7; > + serial7 = &uart8; > + serial8 = &uart9; > + }; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + timebase-frequency = <24000000>; > + > + cpu-map { > + cluster0 { > + core0 { > + cpu = <&cpu_0>; > + }; > + core1 { > + cpu = <&cpu_1>; > + }; > + core2 { > + cpu = <&cpu_2>; > + }; > + core3 { > + cpu = <&cpu_3>; > + }; > + }; > + > + cluster1 { > + core0 { > + cpu = <&cpu_4>; > + }; > + core1 { > + cpu = <&cpu_5>; > + }; > + core2 { > + cpu = <&cpu_6>; > + }; > + core3 { > + cpu = <&cpu_7>; > + }; > + }; > + }; > + > + cpu_0: cpu@0 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <0>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu0_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_1: cpu@1 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <1>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu1_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_2: cpu@2 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <2>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu2_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_3: cpu@3 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <3>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu3_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_4: cpu@4 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <4>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu4_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_5: cpu@5 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <5>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu5_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_6: cpu@6 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <6>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu6_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_7: cpu@7 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <7>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu7_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cluster0_l2_cache: l2-cache0 { > + compatible = "cache"; > + cache-block-size = <64>; > + cache-level = <2>; > + cache-size = <524288>; > + cache-sets = <1024>; > + cache-unified; > + }; > + > + cluster1_l2_cache: l2-cache1 { > + compatible = "cache"; > + cache-block-size = <64>; > + cache-level = <2>; > + cache-size = <524288>; > + cache-sets = <1024>; > + cache-unified; > + }; > + }; > + > + soc { > + compatible = "simple-bus"; > + interrupt-parent = <&plic>; > + #address-cells = <2>; > + #size-cells = <2>; > + dma-noncoherent; > + ranges; > + > + uart0: serial@d4017000 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017000 0x0 0x100>; > + interrupts = <42>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart2: serial@d4017100 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017100 0x0 0x100>; > + interrupts = <44>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart3: serial@d4017200 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017200 0x0 0x100>; > + interrupts = <45>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart4: serial@d4017300 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017300 0x0 0x100>; > + interrupts = <46>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart5: serial@d4017400 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017400 0x0 0x100>; > + interrupts = <47>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart6: serial@d4017500 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017500 0x0 0x100>; > + interrupts = <48>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart7: serial@d4017600 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017600 0x0 0x100>; > + interrupts = <49>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart8: serial@d4017700 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017700 0x0 0x100>; > + interrupts = <50>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart9: serial@d4017800 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017800 0x0 0x100>; > + interrupts = <51>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + plic: interrupt-controller@e0000000 { > + compatible = "spacemit,k1-plic", "sifive,plic-1.0.0"; > + reg = <0x0 0xe0000000 0x0 0x4000000>; > + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>, > + <&cpu1_intc 11>, <&cpu1_intc 9>, > + <&cpu2_intc 11>, <&cpu2_intc 9>, > + <&cpu3_intc 11>, <&cpu3_intc 9>, > + <&cpu4_intc 11>, <&cpu4_intc 9>, > + <&cpu5_intc 11>, <&cpu5_intc 9>, > + <&cpu6_intc 11>, <&cpu6_intc 9>, > + <&cpu7_intc 11>, <&cpu7_intc 9>; > + interrupt-controller; > + #address-cells = <0>; > + #interrupt-cells = <1>; > + riscv,ndev = <159>; > + }; > + > + clint: timer@e4000000 { > + compatible = "spacemit,k1-clint", "sifive,clint0"; > + reg = <0x0 0xe4000000 0x0 0x10000>; > + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, > + <&cpu1_intc 3>, <&cpu1_intc 7>, > + <&cpu2_intc 3>, <&cpu2_intc 7>, > + <&cpu3_intc 3>, <&cpu3_intc 7>, > + <&cpu4_intc 3>, <&cpu4_intc 7>, > + <&cpu5_intc 3>, <&cpu5_intc 7>, > + <&cpu6_intc 3>, <&cpu6_intc 7>, > + <&cpu7_intc 3>, <&cpu7_intc 7>; > + }; > + > + sec_uart1: serial@f0612000 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xf0612000 0x0 0x100>; > + interrupts = <43>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "reserved"; /* for TEE usage */ > + }; > + }; > +}; > ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree 2024-07-09 3:18 ` [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree Yixun Lan 2024-07-09 5:43 ` zhang meng @ 2024-07-11 7:40 ` Yixun Lan [not found] ` <668f8cb0.630a0220.0385.4d00SMTPIN_ADDED_BROKEN@mx.google.com> 2 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-11 7:40 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen Hi All On 03:18 Tue 09 Jul , Yixun Lan wrote: > From: Yangyu Chen <cyy@cyyself.name> > > Banana Pi BPI-F3 motherboard is powered by SpacemiT K1[1]. > > Key features: > - 4 cores per cluster, 2 clusters on chip > - UART IP is Intel XScale UART > > Some key considerations: > - ISA string is inferred from vendor documentation[2] > - Cluster topology is inferred from datasheet[1] and L2 in vendor dts[3] > - No coherent DMA on this board > Inferred by taking vendor ethernet and MMC drivers to the mainline > kernel. Without dma-noncoherent in soc node, the driver fails. > - No cache nodes now > The parameters from vendor dts are likely to be wrong. It has 512 > sets for a 32KiB L1 Cache. In this case, each set is 64B in size. > When the size of the cache line is 64B, it is a directly mapped > cache rather than a set-associative cache, the latter is commonly > used. Thus, I didn't use the parameters from vendor dts. > > Currently only support booting into console with only uart, other > features will be added soon later. > > Link: https://docs.banana-pi.org/en/BPI-F3/SpacemiT_K1_datasheet [1] > Link: https://developer.spacemit.com/#/documentation?token=BWbGwbx7liGW21kq9lucSA6Vnpb [2] > Link: https://gitee.com/bianbu-linux/linux-6.1/blob/bl-v1.0.y/arch/riscv/boot/dts/spacemit/k1-x.dtsi [3] > Signed-off-by: Yangyu Chen <cyy@cyyself.name> > Signed-off-by: Yixun Lan <dlan@gentoo.org> > > --- > Changes in v4: > - add i/d-cache, l2-cache info > - Link to v3: https://lore.kernel.org/all/20240703-k1-01-basic-dt-v3-8-12f73b47461e@gentoo.org/ > --- > arch/riscv/boot/dts/spacemit/k1.dtsi | 459 +++++++++++++++++++++++++++++++++++ > 1 file changed, 459 insertions(+) > > diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi > new file mode 100644 > index 0000000000000..22735fc83c843 > --- /dev/null > +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi > @@ -0,0 +1,459 @@ > +// SPDX-License-Identifier: GPL-2.0 OR MIT > +/* > + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> > + */ > + > +/dts-v1/; > +/ { > + #address-cells = <2>; > + #size-cells = <2>; > + model = "SpacemiT K1"; > + compatible = "spacemit,k1"; > + > + aliases { > + serial0 = &uart0; > + serial1 = &uart2; > + serial2 = &uart3; > + serial3 = &uart4; > + serial4 = &uart5; > + serial5 = &uart6; > + serial6 = &uart7; > + serial7 = &uart8; > + serial8 = &uart9; > + }; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + timebase-frequency = <24000000>; > + > + cpu-map { > + cluster0 { > + core0 { > + cpu = <&cpu_0>; > + }; > + core1 { > + cpu = <&cpu_1>; > + }; > + core2 { > + cpu = <&cpu_2>; > + }; > + core3 { > + cpu = <&cpu_3>; > + }; > + }; > + > + cluster1 { > + core0 { > + cpu = <&cpu_4>; > + }; > + core1 { > + cpu = <&cpu_5>; > + }; > + core2 { > + cpu = <&cpu_6>; > + }; > + core3 { > + cpu = <&cpu_7>; > + }; > + }; > + }; > + > + cpu_0: cpu@0 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <0>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; sorry, I was wrong here, and Kevin helped to check this.. L1 cache is 4way, 128sets, 32KB, so here should be i/d-cache-sets = <128> will fix in next patch version > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu0_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_1: cpu@1 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <1>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu1_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_2: cpu@2 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <2>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu2_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_3: cpu@3 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <3>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster0_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu3_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_4: cpu@4 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <4>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu4_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_5: cpu@5 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <5>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu5_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_6: cpu@6 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <6>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu6_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cpu_7: cpu@7 { > + compatible = "spacemit,x60", "riscv"; > + device_type = "cpu"; > + reg = <7>; > + riscv,isa = "rv64imafdcv_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", "v", "zicbom", > + "zicbop", "zicboz", "zicntr", "zicond", "zicsr", > + "zifencei", "zihintpause", "zihpm", "zfh", "zba", > + "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", > + "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; > + riscv,cbom-block-size = <64>; > + riscv,cbop-block-size = <64>; > + riscv,cboz-block-size = <64>; > + i-cache-block-size = <64>; > + i-cache-size = <32768>; > + i-cache-sets = <512>; > + d-cache-block-size = <64>; > + d-cache-size = <32768>; > + d-cache-sets = <512>; > + next-level-cache = <&cluster1_l2_cache>; > + mmu-type = "riscv,sv39"; > + > + cpu7_intc: interrupt-controller { > + compatible = "riscv,cpu-intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + }; > + > + cluster0_l2_cache: l2-cache0 { > + compatible = "cache"; > + cache-block-size = <64>; > + cache-level = <2>; > + cache-size = <524288>; > + cache-sets = <1024>; also need to fix here, L2 cache is 16way, 512sets, 512KB > + cache-unified; > + }; > + > + cluster1_l2_cache: l2-cache1 { > + compatible = "cache"; > + cache-block-size = <64>; > + cache-level = <2>; > + cache-size = <524288>; > + cache-sets = <1024>; > + cache-unified; > + }; > + }; > + > + soc { > + compatible = "simple-bus"; > + interrupt-parent = <&plic>; > + #address-cells = <2>; > + #size-cells = <2>; > + dma-noncoherent; > + ranges; > + > + uart0: serial@d4017000 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017000 0x0 0x100>; > + interrupts = <42>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart2: serial@d4017100 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017100 0x0 0x100>; > + interrupts = <44>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart3: serial@d4017200 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017200 0x0 0x100>; > + interrupts = <45>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart4: serial@d4017300 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017300 0x0 0x100>; > + interrupts = <46>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart5: serial@d4017400 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017400 0x0 0x100>; > + interrupts = <47>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart6: serial@d4017500 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017500 0x0 0x100>; > + interrupts = <48>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart7: serial@d4017600 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017600 0x0 0x100>; > + interrupts = <49>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart8: serial@d4017700 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017700 0x0 0x100>; > + interrupts = <50>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + uart9: serial@d4017800 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xd4017800 0x0 0x100>; > + interrupts = <51>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "disabled"; > + }; > + > + plic: interrupt-controller@e0000000 { > + compatible = "spacemit,k1-plic", "sifive,plic-1.0.0"; > + reg = <0x0 0xe0000000 0x0 0x4000000>; > + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>, > + <&cpu1_intc 11>, <&cpu1_intc 9>, > + <&cpu2_intc 11>, <&cpu2_intc 9>, > + <&cpu3_intc 11>, <&cpu3_intc 9>, > + <&cpu4_intc 11>, <&cpu4_intc 9>, > + <&cpu5_intc 11>, <&cpu5_intc 9>, > + <&cpu6_intc 11>, <&cpu6_intc 9>, > + <&cpu7_intc 11>, <&cpu7_intc 9>; > + interrupt-controller; > + #address-cells = <0>; > + #interrupt-cells = <1>; > + riscv,ndev = <159>; > + }; > + > + clint: timer@e4000000 { > + compatible = "spacemit,k1-clint", "sifive,clint0"; > + reg = <0x0 0xe4000000 0x0 0x10000>; > + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, > + <&cpu1_intc 3>, <&cpu1_intc 7>, > + <&cpu2_intc 3>, <&cpu2_intc 7>, > + <&cpu3_intc 3>, <&cpu3_intc 7>, > + <&cpu4_intc 3>, <&cpu4_intc 7>, > + <&cpu5_intc 3>, <&cpu5_intc 7>, > + <&cpu6_intc 3>, <&cpu6_intc 7>, > + <&cpu7_intc 3>, <&cpu7_intc 7>; > + }; > + > + sec_uart1: serial@f0612000 { > + compatible = "spacemit,k1-uart", "intel,xscale-uart"; > + reg = <0x0 0xf0612000 0x0 0x100>; > + interrupts = <43>; > + clock-frequency = <14857000>; > + reg-shift = <2>; > + reg-io-width = <4>; > + status = "reserved"; /* for TEE usage */ > + }; > + }; > +}; > > -- > 2.45.2 -- Yixun Lan (dlan) Gentoo Linux Developer GPG Key ID AABEFD55 ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <668f8cb0.630a0220.0385.4d00SMTPIN_ADDED_BROKEN@mx.google.com>]
* Re: [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree [not found] ` <668f8cb0.630a0220.0385.4d00SMTPIN_ADDED_BROKEN@mx.google.com> @ 2024-07-11 10:03 ` Conor Dooley 0 siblings, 0 replies; 17+ messages in thread From: Conor Dooley @ 2024-07-11 10:03 UTC (permalink / raw) To: Yixun Lan Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel, devicetree, linux-serial, linux-kernel, Jesse Taube, Yangyu Chen, Inochi Amaoto, Meng Zhang, Jisheng Zhang, Meng Zhang, linux-riscv [-- Attachment #1: Type: text/plain, Size: 288 bytes --] On Thu, Jul 11, 2024 at 07:40:53AM +0000, Yixun Lan wrote: > Hi All > > On 03:18 Tue 09 Jul , Yixun Lan wrote: > > From: Yangyu Chen <cyy@cyyself.name> > > > > Banana Pi BPI-F3 motherboard is powered by SpacemiT K1[1]. I seem to have got this message in my inbox 4 times. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v4 09/10] riscv: dts: spacemit: add Banana Pi BPI-F3 board device tree 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (7 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-09 3:18 ` [PATCH v4 10/10] riscv: defconfig: enable SpacemiT SoC Yixun Lan 2024-07-11 16:08 ` [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Conor Dooley 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan From: Yangyu Chen <cyy@cyyself.name> Banana Pi BPI-F3 [1] is a industrial grade RISC-V development board, it design with SpacemiT K1 8 core RISC-V chip [2]. Currently only support booting into console with only uart enabled, other features will be added soon later. Link: https://docs.banana-pi.org/en/BPI-F3/BananaPi_BPI-F3 [1] Link: https://www.spacemit.com/en/spacemit-key-stone-2/ [2] Signed-off-by: Yangyu Chen <cyy@cyyself.name> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- arch/riscv/boot/dts/Makefile | 1 + arch/riscv/boot/dts/spacemit/Makefile | 2 ++ arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/arch/riscv/boot/dts/Makefile b/arch/riscv/boot/dts/Makefile index fdae05bbf5563..bff887d38abe4 100644 --- a/arch/riscv/boot/dts/Makefile +++ b/arch/riscv/boot/dts/Makefile @@ -5,6 +5,7 @@ subdir-y += microchip subdir-y += renesas subdir-y += sifive subdir-y += sophgo +subdir-y += spacemit subdir-y += starfive subdir-y += thead diff --git a/arch/riscv/boot/dts/spacemit/Makefile b/arch/riscv/boot/dts/spacemit/Makefile new file mode 100644 index 0000000000000..ac617319a5742 --- /dev/null +++ b/arch/riscv/boot/dts/spacemit/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +dtb-$(CONFIG_ARCH_SPACEMIT) += k1-bananapi-f3.dtb diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts new file mode 100644 index 0000000000000..023274189b492 --- /dev/null +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name> + */ + +#include "k1.dtsi" + +/ { + model = "Banana Pi BPI-F3"; + compatible = "bananapi,bpi-f3", "spacemit,k1"; + + chosen { + stdout-path = "serial0"; + }; +}; + +&uart0 { + status = "okay"; +}; -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 10/10] riscv: defconfig: enable SpacemiT SoC 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (8 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 09/10] riscv: dts: spacemit: add Banana Pi BPI-F3 board " Yixun Lan @ 2024-07-09 3:18 ` Yixun Lan 2024-07-11 16:08 ` [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Conor Dooley 10 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-09 3:18 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel Cc: devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Yixun Lan, Conor Dooley From: Yangyu Chen <cyy@cyyself.name> Enable SpacemiT SoC config in defconfig to allow the default upstream kernel to boot on Banana Pi BPI-F3 board. Signed-off-by: Yangyu Chen <cyy@cyyself.name> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Tested-by: Jesse Taube <jesse@rivosinc.com> Signed-off-by: Yixun Lan <dlan@gentoo.org> --- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig index 12dc8c73a8acf..5287ae81bbb78 100644 --- a/arch/riscv/configs/defconfig +++ b/arch/riscv/configs/defconfig @@ -29,6 +29,7 @@ CONFIG_ARCH_MICROCHIP=y CONFIG_ARCH_RENESAS=y CONFIG_ARCH_SIFIVE=y CONFIG_ARCH_SOPHGO=y +CONFIG_ARCH_SPACEMIT=y CONFIG_SOC_STARFIVE=y CONFIG_ARCH_SUNXI=y CONFIG_ARCH_THEAD=y -- 2.45.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan ` (9 preceding siblings ...) 2024-07-09 3:18 ` [PATCH v4 10/10] riscv: defconfig: enable SpacemiT SoC Yixun Lan @ 2024-07-11 16:08 ` Conor Dooley 2024-07-12 9:13 ` Yixun Lan 10 siblings, 1 reply; 17+ messages in thread From: Conor Dooley @ 2024-07-11 16:08 UTC (permalink / raw) To: Yixun Lan Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel, devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Conor Dooley, Matthias Brugger [-- Attachment #1: Type: text/plain, Size: 1045 bytes --] On Tue, Jul 09, 2024 at 03:18:43AM +0000, Yixun Lan wrote: > SpacemiT K1 is an ideal chip for some new extension such as RISC-V Vector > 1.0 and Zicond evaluation now. Add initial support for it to allow more > people to participate in building drivers to mainline for it. > > This kernel has been tested upon Banana Pi BPI-F3 board on vendor U-Boot > bootflow generated by Armbian SDK[1] and patched OpenSBI[2] to enable > Zicboz, which does not in the vendor dts on its U-Boot. Then successfully > booted to busybox on initrd with this log[3]. > > As previous discussion in patch v1[4], maintainer expect more basic drivers > ready before really merging it, which would be fine. For other follow-up patches, > that are clk, pinctrl/gpio, reset.. My current goal would target at a headless > system including SD card, emmc, and ethernet. This stuff is already too late for 6.11 as I already sent my PRs, so there's no immediate rush. Is there any progress made on creating the clock or pinctrl drivers? Cheers, Conor. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 2024-07-11 16:08 ` [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Conor Dooley @ 2024-07-12 9:13 ` Yixun Lan 0 siblings, 0 replies; 17+ messages in thread From: Yixun Lan @ 2024-07-12 9:13 UTC (permalink / raw) To: Conor Dooley Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou, Daniel Lezcano, Thomas Gleixner, Samuel Holland, Anup Patel, Greg Kroah-Hartman, Jiri Slaby, Lubomir Rintel, devicetree, linux-kernel, linux-riscv, linux-serial, Jesse Taube, Jisheng Zhang, Inochi Amaoto, Icenowy Zheng, Meng Zhang, Meng Zhang, Yangyu Chen, Conor Dooley, Matthias Brugger, Haylen Chu Hi Conor: On 17:08 Thu 11 Jul , Conor Dooley wrote: > On Tue, Jul 09, 2024 at 03:18:43AM +0000, Yixun Lan wrote: > > SpacemiT K1 is an ideal chip for some new extension such as RISC-V Vector > > 1.0 and Zicond evaluation now. Add initial support for it to allow more > > people to participate in building drivers to mainline for it. > > > > This kernel has been tested upon Banana Pi BPI-F3 board on vendor U-Boot > > bootflow generated by Armbian SDK[1] and patched OpenSBI[2] to enable > > Zicboz, which does not in the vendor dts on its U-Boot. Then successfully > > booted to busybox on initrd with this log[3]. > > > > As previous discussion in patch v1[4], maintainer expect more basic drivers > > ready before really merging it, which would be fine. For other follow-up patches, > > that are clk, pinctrl/gpio, reset.. My current goal would target at a headless > > system including SD card, emmc, and ethernet. > > This stuff is already too late for 6.11 as I already sent my PRs, so understood, no worry, let's target 6.12, I will send an updated version once next -rc1 tagged. > there's no immediate rush. Is there any progress made on creating the > clock or pinctrl drivers? I'm working on pinctrl, probably will send an initial version next week (ideally should include gpio/gpio-irq, or at least will push pinctrl part out..) for clk, I think Haylen is working on this.. > > Cheers, > Conor. -- Yixun Lan (dlan) Gentoo Linux Developer GPG Key ID AABEFD55 ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-07-12 9:13 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-09 3:18 [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Yixun Lan
2024-07-09 3:18 ` [PATCH v4 01/10] dt-bindings: vendor-prefixes: add spacemit Yixun Lan
2024-07-09 3:18 ` [PATCH v4 02/10] dt-bindings: riscv: Add SpacemiT X60 compatibles Yixun Lan
2024-07-09 3:18 ` [PATCH v4 03/10] dt-bindings: riscv: add SpacemiT K1 bindings Yixun Lan
2024-07-09 16:34 ` Rob Herring (Arm)
2024-07-09 3:18 ` [PATCH v4 04/10] dt-bindings: timer: Add SpacemiT K1 CLINT Yixun Lan
2024-07-09 3:18 ` [PATCH v4 05/10] dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC Yixun Lan
2024-07-09 3:18 ` [PATCH v4 06/10] dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible Yixun Lan
2024-07-09 3:18 ` [PATCH v4 07/10] riscv: add SpacemiT SoC family Kconfig support Yixun Lan
2024-07-09 3:18 ` [PATCH v4 08/10] riscv: dts: add initial SpacemiT K1 SoC device tree Yixun Lan
2024-07-09 5:43 ` zhang meng
2024-07-11 7:40 ` Yixun Lan
[not found] ` <668f8cb0.630a0220.0385.4d00SMTPIN_ADDED_BROKEN@mx.google.com>
2024-07-11 10:03 ` Conor Dooley
2024-07-09 3:18 ` [PATCH v4 09/10] riscv: dts: spacemit: add Banana Pi BPI-F3 board " Yixun Lan
2024-07-09 3:18 ` [PATCH v4 10/10] riscv: defconfig: enable SpacemiT SoC Yixun Lan
2024-07-11 16:08 ` [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Conor Dooley
2024-07-12 9:13 ` Yixun Lan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox