Devicetree
 help / color / mirror / Atom feed
* [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230
@ 2024-03-04 15:14 Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 1/7] dt-bindings: riscv: Add T-HEAD C908 compatible Yangyu Chen
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:14 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

K230 is an ideal chip for testing RISC-V Vector 1.0 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 factory SDK [1] with
k230_evb_only_linux_defconfig and patched mainline opensbi [2] to skip
locked pmp and successfully booted to busybox on initrd with this log [3].

[1] https://github.com/kendryte/k230_sdk
[2] https://github.com/cyyself/opensbi/tree/k230
[3] https://gist.github.com/cyyself/b9445f38cc3ba1094924bd41c9086176

Changes since v1:
- Patch dt-bindings in clint and plic
- Use enum in K230 compatible dt bindings
- Fix dts to pass `make dtbs_check`
- Add more details in commit message

v1: https://lore.kernel.org/linux-riscv/tencent_E15F8FE0B6769E6338AE690C7F4844A31706@qq.com/

Yangyu Chen (7):
  dt-bindings: riscv: Add T-HEAD C908 compatible
  dt-bindings: add Canaan K230 boards compatible strings
  dt-bindings: timer: Add Canaan K230 CLINT
  dt-bindings: interrupt-controller: Add Canaan K230 PLIC
  riscv: Kconfig.socs: Allow SOC_CANAAN with MMU for K230
  riscv: dts: add initial canmv-k230 and k230-evb dts
  riscv: config: enable SOC_CANAAN in defconfig

 .../sifive,plic-1.0.0.yaml                    |   1 +
 .../devicetree/bindings/riscv/canaan.yaml     |   8 +-
 .../devicetree/bindings/riscv/cpus.yaml       |   1 +
 .../bindings/timer/sifive,clint.yaml          |   1 +
 arch/riscv/Kconfig.socs                       |   5 +-
 arch/riscv/boot/dts/canaan/Makefile           |   2 +
 arch/riscv/boot/dts/canaan/canmv-k230.dts     |  24 +++
 arch/riscv/boot/dts/canaan/k230-evb.dts       |  24 +++
 arch/riscv/boot/dts/canaan/k230.dtsi          | 140 ++++++++++++++++++
 arch/riscv/configs/defconfig                  |   1 +
 10 files changed, 203 insertions(+), 4 deletions(-)
 create mode 100644 arch/riscv/boot/dts/canaan/canmv-k230.dts
 create mode 100644 arch/riscv/boot/dts/canaan/k230-evb.dts
 create mode 100644 arch/riscv/boot/dts/canaan/k230.dtsi

base-commit: 45e0b0fd6dc574101825ac2738b890da024e4cda
prerequisite-patch-id: 2374c56c0032e616e45854d2bc2bb1073996313d

Dependencies: https://lore.kernel.org/linux-riscv/tencent_88FEE0A2C5E0852436A2F1A1087E6803380A@qq.com/
-- 
2.43.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/7] dt-bindings: riscv: Add T-HEAD C908 compatible
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings Yangyu Chen
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen, Conor Dooley

The thead,c908 is a RISC-V CPU core from T-HEAD Semiconductor which used
in Canaan Kendryte K230 SoC.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
 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 9d8670c00e3b..e853a7fcee8a 100644
--- a/Documentation/devicetree/bindings/riscv/cpus.yaml
+++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
@@ -47,6 +47,7 @@ properties:
               - sifive,u74
               - sifive,u74-mc
               - thead,c906
+              - thead,c908
               - thead,c910
               - thead,c920
           - const: riscv
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 1/7] dt-bindings: riscv: Add T-HEAD C908 compatible Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 15:32   ` Krzysztof Kozlowski
  2024-03-04 15:16 ` [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT Yangyu Chen
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

Since K230 was released, K210 is no longer the only SoC in the Kendryte
series, so remove the K210 string from the description. Also, add two
boards based on k230 to compatible strings to allow them to be used in the
dt.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
---
 Documentation/devicetree/bindings/riscv/canaan.yaml | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/riscv/canaan.yaml b/Documentation/devicetree/bindings/riscv/canaan.yaml
index 41fd11f70a49..12a78bc95992 100644
--- a/Documentation/devicetree/bindings/riscv/canaan.yaml
+++ b/Documentation/devicetree/bindings/riscv/canaan.yaml
@@ -10,7 +10,7 @@ maintainers:
   - Damien Le Moal <dlemoal@kernel.org>
 
 description:
-  Canaan Kendryte K210 SoC-based boards
+  Canaan Kendryte SoC-based boards
 
 properties:
   $nodename:
@@ -42,6 +42,12 @@ properties:
       - items:
           - const: canaan,kendryte-k210
 
+      - items:
+          - enum:
+              - canaan,k230-usip-lp3-evb
+              - canaan,canmv-k230
+          - const: canaan,kendryte-k230
+
 additionalProperties: true
 
 ...
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 1/7] dt-bindings: riscv: Add T-HEAD C908 compatible Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 20:33   ` Conor Dooley
  2024-03-04 15:16 ` [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC Yangyu Chen
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

Add compatible string for Canaan K230 CLINT.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
---
 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 fced6f2d8ecb..9840a21c40ca 100644
--- a/Documentation/devicetree/bindings/timer/sifive,clint.yaml
+++ b/Documentation/devicetree/bindings/timer/sifive,clint.yaml
@@ -37,6 +37,7 @@ properties:
           - const: sifive,clint0        # SiFive CLINT v0 IP block
       - items:
           - enum:
+              - canaan,k230-clint
               - allwinner,sun20i-d1-clint
               - sophgo,cv1800b-clint
               - sophgo,cv1812h-clint
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
                   ` (2 preceding siblings ...)
  2024-03-04 15:16 ` [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 20:33   ` Conor Dooley
  2024-03-04 15:16 ` [PATCH v2 5/7] riscv: Kconfig.socs: Allow SOC_CANAAN with MMU for K230 Yangyu Chen
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

Add compatible string for Canaan K230 PLIC.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
---
 .../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 709b2211276b..da147faf32bd 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
@@ -69,6 +69,7 @@ properties:
               - sophgo,cv1812h-plic
               - sophgo,sg2042-plic
               - thead,th1520-plic
+              - canaan,k230-plic
           - const: thead,c900-plic
       - items:
           - const: sifive,plic-1.0.0
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 5/7] riscv: Kconfig.socs: Allow SOC_CANAAN with MMU for K230
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
                   ` (3 preceding siblings ...)
  2024-03-04 15:16 ` [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts Yangyu Chen
  2024-03-04 15:16 ` [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig Yangyu Chen
  6 siblings, 0 replies; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen, Conor Dooley

Since K230 was released, SOC_CANAAN is no longer only referred to the K210.
Remove it depends on !MMU will allow building dts for K230 and remove the
K210 string from the help message.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
---
 arch/riscv/Kconfig.socs | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs
index 623de5f8a208..b4e9b7f75510 100644
--- a/arch/riscv/Kconfig.socs
+++ b/arch/riscv/Kconfig.socs
@@ -75,13 +75,12 @@ config ARCH_CANAAN
 	def_bool SOC_CANAAN
 
 config SOC_CANAAN
-	bool "Canaan Kendryte K210 SoC"
-	depends on !MMU
+	bool "Canaan Kendryte SoC"
 	select CLINT_TIMER if RISCV_M_MODE
 	select ARCH_HAS_RESET_CONTROLLER
 	select PINCTRL
 	select COMMON_CLK
 	help
-	  This enables support for Canaan Kendryte K210 SoC platform hardware.
+	  This enables support for Canaan Kendryte SoC platform hardware.
 
 endmenu # "SoC selection"
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
                   ` (4 preceding siblings ...)
  2024-03-04 15:16 ` [PATCH v2 5/7] riscv: Kconfig.socs: Allow SOC_CANAAN with MMU for K230 Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 20:35   ` Conor Dooley
  2024-03-04 15:16 ` [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig Yangyu Chen
  6 siblings, 1 reply; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

Add initial dts for CanMV-K230 and K230-EVB powered by Canaan Kendryte
K230 SoC [1].

Some key consideration:
- Only place BigCore which is 1.6GHz RV64GCBV

The existence of cache coherence between the two cores remains unknown
since they have dedicated L2 caches. And the factory SDK uses it for
other OS by default. I don't know whether the two CPUs on K230 SoC
can be used in one system. So only place BigCore here.

Meanwhile, although docs from Canaan said 1.6GHz Core with Vector is
CPU1, the csr.mhartid of this core is 0.

- Support for "zba" "zbb" "zbc" "zbs" are tested by hand

The user manual of C908 from T-Head does not document it specifically.
It just said it supports B extension V1.0-rc1. [2]

I have tested it by using this [3] which attempts to execute "add.uw",
"andn", "clmulr", "bclr" and they doesn't traps on K230. But on JH7110,
"clmulr" and "bclr" will trap.

- Support for "zicbom" is tested by hand

Have tested with some out-of-tree drivers that need DMA and they do not
come to the dts currently.

- Cache parameters are inferred from T-Head docs [2] and Canaan docs [1]

L1i: 32KB, VIPT 4-Way set-associative, 64B Cacheline
L1d: 32KB, VIPT 4-Way set-associative, 64B Cacheline
L2: 256KB, PIPT 16-way set-associative, 64B Cacheline

The numbers of cache sets are calculated from these parameters.

- MMU only supports Sv39

Since T-Head docs [2] say C908 should support Sv48. However, it will fail
during the kernel probe when running Linux on K230. I also tested it by
hand on M-Mode software, writing Sv48 to satp.mode will not trap but will
leave the csr unchanged. While writing Sv39 it will take effect. It shows
that this CPU does not support Sv48.

- Svpbmt and T-Head MAEE both supported

T-Head C908 does support both Svpbmt and T-Head MAEE for page-based memory
attributes and is controlled by csr.mxstatus. If the kernel wants to use
svpbmt, the m-mode software should set BIT(21) of csr.mxstatus to zero
before entering the s-mode kernel. Otherwise, the kernel will not boot as 0
on T-Head MAEE represent to NonCachable Memory and it will lose dirty cache
lines modification that haven't been written back to the memory.

[1] https://developer.canaan-creative.com/k230/dev/zh/00_hardware/K230_datasheet.html#chapter-1-introduction
[2] https://occ-intl-prod.oss-ap-southeast-1.aliyuncs.com/resource//1699268369347/XuanTie-C908-UserManual.pdf
[3] https://github.com/cyyself/rvb_test

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
---
 arch/riscv/boot/dts/canaan/Makefile       |   2 +
 arch/riscv/boot/dts/canaan/canmv-k230.dts |  24 ++++
 arch/riscv/boot/dts/canaan/k230-evb.dts   |  24 ++++
 arch/riscv/boot/dts/canaan/k230.dtsi      | 140 ++++++++++++++++++++++
 4 files changed, 190 insertions(+)
 create mode 100644 arch/riscv/boot/dts/canaan/canmv-k230.dts
 create mode 100644 arch/riscv/boot/dts/canaan/k230-evb.dts
 create mode 100644 arch/riscv/boot/dts/canaan/k230.dtsi

diff --git a/arch/riscv/boot/dts/canaan/Makefile b/arch/riscv/boot/dts/canaan/Makefile
index 987d1f0c41f0..9befd088c0e5 100644
--- a/arch/riscv/boot/dts/canaan/Makefile
+++ b/arch/riscv/boot/dts/canaan/Makefile
@@ -5,3 +5,5 @@ dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_bit.dtb
 dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_dock.dtb
 dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maix_go.dtb
 dtb-$(CONFIG_ARCH_CANAAN) += sipeed_maixduino.dtb
+dtb-$(CONFIG_ARCH_CANAAN) += k230-evb.dtb
+dtb-$(CONFIG_ARCH_CANAAN) += canmv-k230.dtb
diff --git a/arch/riscv/boot/dts/canaan/canmv-k230.dts b/arch/riscv/boot/dts/canaan/canmv-k230.dts
new file mode 100644
index 000000000000..740ce80ccc07
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/canmv-k230.dts
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
+ */
+
+#include "k230.dtsi"
+
+/ {
+	model = "Canaan CanMV-K230";
+	compatible = "canaan,canmv-k230", "canaan,kendryte-k230";
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	ddr: memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x1fdff000>;
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/arch/riscv/boot/dts/canaan/k230-evb.dts b/arch/riscv/boot/dts/canaan/k230-evb.dts
new file mode 100644
index 000000000000..c3db44934aa2
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/k230-evb.dts
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
+ */
+
+#include "k230.dtsi"
+
+/ {
+	model = "Kendryte K230 EVB";
+	compatible = "canaan,k230-usip-lp3-evb", "canaan,kendryte-k230";
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	ddr: memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x1fdff000>;
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/arch/riscv/boot/dts/canaan/k230.dtsi b/arch/riscv/boot/dts/canaan/k230.dtsi
new file mode 100644
index 000000000000..a384e2dfa277
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/k230.dtsi
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/dts-v1/;
+/ {
+	#address-cells = <2>;
+	#size-cells = <2>;
+	compatible = "canaan,kendryte-k230";
+
+	aliases {
+		serial0 = &uart0;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		timebase-frequency = <27000000>;
+
+		cpu@0 {
+			compatible = "thead,c908", "riscv";
+			device_type = "cpu";
+			reg = <0>;
+			riscv,isa = "rv64imafdcv_zba_zbb_zbc_zbs_zicbom_svpbmt";
+			riscv,isa-base = "rv64i";
+			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "v", "zba", "zbb",
+					       "zbc", "zbs", "zicbom", "zicntr", "zicsr",
+					       "zifencei", "zihpm", "svpbmt";
+			riscv,cbom-block-size = <64>;
+			d-cache-block-size = <64>;
+			d-cache-sets = <128>;
+			d-cache-size = <32768>;
+			i-cache-block-size = <64>;
+			i-cache-sets = <128>;
+			i-cache-size = <32768>;
+			next-level-cache = <&l2_cache>;
+			mmu-type = "riscv,sv39";
+
+			cpu0_intc: interrupt-controller {
+				compatible = "riscv,cpu-intc";
+				interrupt-controller;
+				#interrupt-cells = <1>;
+			};
+		};
+
+		l2_cache: l2-cache {
+			compatible = "cache";
+			cache-block-size = <64>;
+			cache-level = <2>;
+			cache-size = <262144>;
+			cache-sets = <256>;
+			cache-unified;
+		};
+	};
+
+	apb_clk: apb-clk-clock {
+		compatible = "fixed-clock";
+		clock-frequency = <50000000>;
+		clock-output-names = "apb_clk";
+		#clock-cells = <0>;
+	};
+
+	soc {
+		compatible = "simple-bus";
+		interrupt-parent = <&plic>;
+		#address-cells = <2>;
+		#size-cells = <2>;
+		dma-noncoherent;
+		ranges;
+
+		plic: interrupt-controller@f00000000 {
+			compatible = "canaan,k230-plic" ,"thead,c900-plic";
+			reg = <0xf 0x00000000 0x0 0x04000000>;
+			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
+			interrupt-controller;
+			#address-cells = <0>;
+			#interrupt-cells = <2>;
+			riscv,ndev = <208>;
+		};
+
+		clint: timer@f04000000 {
+			compatible = "canaan,k230-clint", "thead,c900-clint";
+			reg = <0xf 0x04000000 0x0 0x04000000>;
+			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
+		};
+
+		uart0: serial@91400000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x0 0x91400000 0x0 0x1000>;
+			clocks = <&apb_clk>;
+			interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
+			reg-io-width = <4>;
+			reg-shift = <2>;
+			status = "disabled";
+		};
+
+		uart1: serial@91401000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x0 0x91401000 0x0 0x1000>;
+			clocks = <&apb_clk>;
+			interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
+			reg-io-width = <4>;
+			reg-shift = <2>;
+			status = "disabled";
+		};
+
+		uart2: serial@91402000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x0 0x91402000 0x0 0x1000>;
+			clocks = <&apb_clk>;
+			interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
+			reg-io-width = <4>;
+			reg-shift = <2>;
+			status = "disabled";
+		};
+
+		uart3: serial@91403000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x0 0x91403000 0x0 0x1000>;
+			clocks = <&apb_clk>;
+			interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
+			reg-io-width = <4>;
+			reg-shift = <2>;
+			status = "disabled";
+		};
+
+		uart4: serial@91404000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x0 0x91404000 0x0 0x1000>;
+			clocks = <&apb_clk>;
+			interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+			reg-io-width = <4>;
+			reg-shift = <2>;
+			status = "disabled";
+		};
+	};
+};
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig
  2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
                   ` (5 preceding siblings ...)
  2024-03-04 15:16 ` [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts Yangyu Chen
@ 2024-03-04 15:16 ` Yangyu Chen
  2024-03-04 20:36   ` Conor Dooley
  6 siblings, 1 reply; 13+ messages in thread
From: Yangyu Chen @ 2024-03-04 15:16 UTC (permalink / raw)
  To: linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel, Yangyu Chen

Since K230 has been supported, allow SOC_CANAAN to be selected to build dt
and drivers for it in defconfig.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>
---
 arch/riscv/configs/defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
index 89a009a580fe..20b557ec28df 100644
--- a/arch/riscv/configs/defconfig
+++ b/arch/riscv/configs/defconfig
@@ -33,6 +33,7 @@ CONFIG_SOC_STARFIVE=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_ARCH_THEAD=y
 CONFIG_SOC_VIRT=y
+CONFIG_SOC_CANAAN=y
 CONFIG_SMP=y
 CONFIG_HOTPLUG_CPU=y
 CONFIG_PM=y
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings
  2024-03-04 15:16 ` [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings Yangyu Chen
@ 2024-03-04 15:32   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2024-03-04 15:32 UTC (permalink / raw)
  To: Yangyu Chen, linux-riscv
  Cc: Conor Dooley, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel

On 04/03/2024 16:16, Yangyu Chen wrote:
> Since K230 was released, K210 is no longer the only SoC in the Kendryte
> series, so remove the K210 string from the description. Also, add two
> boards based on k230 to compatible strings to allow them to be used in the
> dt.
> 
> Signed-off-by: Yangyu Chen <cyy@cyyself.name>
> ---
>  Documentation/devicetree/bindings/riscv/canaan.yaml | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)


Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC
  2024-03-04 15:16 ` [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC Yangyu Chen
@ 2024-03-04 20:33   ` Conor Dooley
  0 siblings, 0 replies; 13+ messages in thread
From: Conor Dooley @ 2024-03-04 20:33 UTC (permalink / raw)
  To: Yangyu Chen
  Cc: linux-riscv, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1027 bytes --]

On Mon, Mar 04, 2024 at 11:16:23PM +0800, Yangyu Chen wrote:
> Add compatible string for Canaan K230 PLIC.
> 
> Signed-off-by: Yangyu Chen <cyy@cyyself.name>
> ---
>  .../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 709b2211276b..da147faf32bd 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
> @@ -69,6 +69,7 @@ properties:
>                - sophgo,cv1812h-plic
>                - sophgo,sg2042-plic
>                - thead,th1520-plic
> +              - canaan,k230-plic

Add this in alphanumerical order please.

>            - const: thead,c900-plic
>        - items:
>            - const: sifive,plic-1.0.0
> -- 
> 2.43.0
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT
  2024-03-04 15:16 ` [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT Yangyu Chen
@ 2024-03-04 20:33   ` Conor Dooley
  0 siblings, 0 replies; 13+ messages in thread
From: Conor Dooley @ 2024-03-04 20:33 UTC (permalink / raw)
  To: Yangyu Chen
  Cc: linux-riscv, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1145 bytes --]

On Mon, Mar 04, 2024 at 11:16:22PM +0800, Yangyu Chen wrote:
> Add compatible string for Canaan K230 CLINT.
> 
> Signed-off-by: Yangyu Chen <cyy@cyyself.name>
> ---
>  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 fced6f2d8ecb..9840a21c40ca 100644
> --- a/Documentation/devicetree/bindings/timer/sifive,clint.yaml
> +++ b/Documentation/devicetree/bindings/timer/sifive,clint.yaml
> @@ -37,6 +37,7 @@ properties:
>            - const: sifive,clint0        # SiFive CLINT v0 IP block
>        - items:
>            - enum:
> +              - canaan,k230-clint

Same here, alphanumerically sorted please.

>                - allwinner,sun20i-d1-clint
>                - sophgo,cv1800b-clint
>                - sophgo,cv1812h-clint
> -- 
> 2.43.0
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts
  2024-03-04 15:16 ` [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts Yangyu Chen
@ 2024-03-04 20:35   ` Conor Dooley
  0 siblings, 0 replies; 13+ messages in thread
From: Conor Dooley @ 2024-03-04 20:35 UTC (permalink / raw)
  To: Yangyu Chen
  Cc: linux-riscv, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 279 bytes --]

On Mon, Mar 04, 2024 at 11:16:25PM +0800, Yangyu Chen wrote:
> Add initial dts for CanMV-K230 and K230-EVB powered by Canaan Kendryte
> K230 SoC [1].

I left some more comments on the v1 before I realised you'd sent another
version. Can you apply the comments from there please?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig
  2024-03-04 15:16 ` [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig Yangyu Chen
@ 2024-03-04 20:36   ` Conor Dooley
  0 siblings, 0 replies; 13+ messages in thread
From: Conor Dooley @ 2024-03-04 20:36 UTC (permalink / raw)
  To: Yangyu Chen
  Cc: linux-riscv, Damien Le Moal, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren, devicetree,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 981 bytes --]

On Mon, Mar 04, 2024 at 11:16:26PM +0800, Yangyu Chen wrote:
> Since K230 has been supported, allow SOC_CANAAN to be selected to build dt
> and drivers for it in defconfig.
> 
> Signed-off-by: Yangyu Chen <cyy@cyyself.name>

Reviewed-by: Conor Dooley <conor.dooley@microchip.com>

Cheers,
Conor.

> ---
>  arch/riscv/configs/defconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> index 89a009a580fe..20b557ec28df 100644
> --- a/arch/riscv/configs/defconfig
> +++ b/arch/riscv/configs/defconfig
> @@ -33,6 +33,7 @@ CONFIG_SOC_STARFIVE=y
>  CONFIG_ARCH_SUNXI=y
>  CONFIG_ARCH_THEAD=y
>  CONFIG_SOC_VIRT=y
> +CONFIG_SOC_CANAAN=y
>  CONFIG_SMP=y
>  CONFIG_HOTPLUG_CPU=y
>  CONFIG_PM=y
> -- 
> 2.43.0
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2024-03-04 20:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-04 15:14 [PATCH v2 0/7] riscv: add initial support for Canaan Kendryte K230 Yangyu Chen
2024-03-04 15:16 ` [PATCH v2 1/7] dt-bindings: riscv: Add T-HEAD C908 compatible Yangyu Chen
2024-03-04 15:16 ` [PATCH v2 2/7] dt-bindings: add Canaan K230 boards compatible strings Yangyu Chen
2024-03-04 15:32   ` Krzysztof Kozlowski
2024-03-04 15:16 ` [PATCH v2 3/7] dt-bindings: timer: Add Canaan K230 CLINT Yangyu Chen
2024-03-04 20:33   ` Conor Dooley
2024-03-04 15:16 ` [PATCH v2 4/7] dt-bindings: interrupt-controller: Add Canaan K230 PLIC Yangyu Chen
2024-03-04 20:33   ` Conor Dooley
2024-03-04 15:16 ` [PATCH v2 5/7] riscv: Kconfig.socs: Allow SOC_CANAAN with MMU for K230 Yangyu Chen
2024-03-04 15:16 ` [PATCH v2 6/7] riscv: dts: add initial canmv-k230 and k230-evb dts Yangyu Chen
2024-03-04 20:35   ` Conor Dooley
2024-03-04 15:16 ` [PATCH v2 7/7] riscv: config: enable SOC_CANAAN in defconfig Yangyu Chen
2024-03-04 20:36   ` Conor Dooley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox