xref: /openbmc/linux/arch/riscv/boot/dts/canaan/k210.dtsi (revision 8056dc04)
108734e05SDamien Le Moal// SPDX-License-Identifier: GPL-2.0+
208734e05SDamien Le Moal/*
367d96729SDamien Le Moal * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
408734e05SDamien Le Moal * Copyright (C) 2020 Western Digital Corporation or its affiliates.
508734e05SDamien Le Moal */
608734e05SDamien Le Moal#include <dt-bindings/clock/k210-clk.h>
767d96729SDamien Le Moal#include <dt-bindings/pinctrl/k210-fpioa.h>
867d96729SDamien Le Moal#include <dt-bindings/reset/k210-rst.h>
908734e05SDamien Le Moal
1008734e05SDamien Le Moal/ {
1108734e05SDamien Le Moal	/*
1208734e05SDamien Le Moal	 * Although the K210 is a 64-bit CPU, the address bus is only 32-bits
1308734e05SDamien Le Moal	 * wide, and the upper half of all addresses is ignored.
1408734e05SDamien Le Moal	 */
1508734e05SDamien Le Moal	#address-cells = <1>;
1608734e05SDamien Le Moal	#size-cells = <1>;
1767d96729SDamien Le Moal	compatible = "canaan,kendryte-k210";
1808734e05SDamien Le Moal
1908734e05SDamien Le Moal	aliases {
2008734e05SDamien Le Moal		serial0 = &uarths0;
2167d96729SDamien Le Moal		serial1 = &uart1;
2267d96729SDamien Le Moal		serial2 = &uart2;
2367d96729SDamien Le Moal		serial3 = &uart3;
2408734e05SDamien Le Moal	};
2508734e05SDamien Le Moal
2608734e05SDamien Le Moal	/*
2767d96729SDamien Le Moal	 * The K210 has an sv39 MMU following the privileged specification v1.9.
2808734e05SDamien Le Moal	 * Since this is a non-ratified draft specification, the kernel does not
2908734e05SDamien Le Moal	 * support it and the K210 support enabled only for the !MMU case.
3008734e05SDamien Le Moal	 * Be consistent with this by setting the CPUs MMU type to "none".
3108734e05SDamien Le Moal	 */
3208734e05SDamien Le Moal	cpus {
3308734e05SDamien Le Moal		#address-cells = <1>;
3408734e05SDamien Le Moal		#size-cells = <0>;
3508734e05SDamien Le Moal		timebase-frequency = <7800000>;
3608734e05SDamien Le Moal		cpu0: cpu@0 {
3708734e05SDamien Le Moal			device_type = "cpu";
3867d96729SDamien Le Moal			compatible = "canaan,k210", "riscv";
3908734e05SDamien Le Moal			reg = <0>;
4008734e05SDamien Le Moal			riscv,isa = "rv64imafdc";
4167d96729SDamien Le Moal			mmu-type = "riscv,none";
4208734e05SDamien Le Moal			i-cache-block-size = <64>;
4367d96729SDamien Le Moal			i-cache-size = <0x8000>;
4408734e05SDamien Le Moal			d-cache-block-size = <64>;
4567d96729SDamien Le Moal			d-cache-size = <0x8000>;
4608734e05SDamien Le Moal			cpu0_intc: interrupt-controller {
4708734e05SDamien Le Moal				#interrupt-cells = <1>;
4808734e05SDamien Le Moal				interrupt-controller;
4908734e05SDamien Le Moal				compatible = "riscv,cpu-intc";
5008734e05SDamien Le Moal			};
5108734e05SDamien Le Moal		};
5208734e05SDamien Le Moal		cpu1: cpu@1 {
5308734e05SDamien Le Moal			device_type = "cpu";
5467d96729SDamien Le Moal			compatible = "canaan,k210", "riscv";
5508734e05SDamien Le Moal			reg = <1>;
5608734e05SDamien Le Moal			riscv,isa = "rv64imafdc";
5767d96729SDamien Le Moal			mmu-type = "riscv,none";
5808734e05SDamien Le Moal			i-cache-block-size = <64>;
5967d96729SDamien Le Moal			i-cache-size = <0x8000>;
6008734e05SDamien Le Moal			d-cache-block-size = <64>;
6167d96729SDamien Le Moal			d-cache-size = <0x8000>;
6208734e05SDamien Le Moal			cpu1_intc: interrupt-controller {
6308734e05SDamien Le Moal				#interrupt-cells = <1>;
6408734e05SDamien Le Moal				interrupt-controller;
6508734e05SDamien Le Moal				compatible = "riscv,cpu-intc";
6608734e05SDamien Le Moal			};
6708734e05SDamien Le Moal		};
68d9d193deSConor Dooley
69d9d193deSConor Dooley		cpu-map {
70d9d193deSConor Dooley			cluster0 {
71d9d193deSConor Dooley				core0 {
72d9d193deSConor Dooley					cpu = <&cpu0>;
73d9d193deSConor Dooley				};
74d9d193deSConor Dooley
75d9d193deSConor Dooley				core1 {
76d9d193deSConor Dooley					cpu = <&cpu1>;
77d9d193deSConor Dooley				};
78d9d193deSConor Dooley			};
79d9d193deSConor Dooley		};
8008734e05SDamien Le Moal	};
8108734e05SDamien Le Moal
8208734e05SDamien Le Moal	sram: memory@80000000 {
8308734e05SDamien Le Moal		device_type = "memory";
84465c1274SConor Dooley		reg = <0x80000000 0x400000>, /* sram0 4 MiB */
85465c1274SConor Dooley		      <0x80400000 0x200000>, /* sram1 2 MiB */
86465c1274SConor Dooley		      <0x80600000 0x200000>; /* aisram 2 MiB */
87465c1274SConor Dooley	};
88465c1274SConor Dooley
89465c1274SConor Dooley	sram_controller: memory-controller {
9067d96729SDamien Le Moal		compatible = "canaan,k210-sram";
9167d96729SDamien Le Moal		clocks = <&sysclk K210_CLK_SRAM0>,
9267d96729SDamien Le Moal			 <&sysclk K210_CLK_SRAM1>,
9367d96729SDamien Le Moal			 <&sysclk K210_CLK_AI>;
9467d96729SDamien Le Moal		clock-names = "sram0", "sram1", "aisram";
9508734e05SDamien Le Moal	};
9608734e05SDamien Le Moal
9708734e05SDamien Le Moal	clocks {
9808734e05SDamien Le Moal		in0: oscillator {
9908734e05SDamien Le Moal			compatible = "fixed-clock";
10008734e05SDamien Le Moal			#clock-cells = <0>;
10108734e05SDamien Le Moal			clock-frequency = <26000000>;
10208734e05SDamien Le Moal		};
10308734e05SDamien Le Moal	};
10408734e05SDamien Le Moal
10508734e05SDamien Le Moal	soc {
10608734e05SDamien Le Moal		#address-cells = <1>;
10708734e05SDamien Le Moal		#size-cells = <1>;
10867d96729SDamien Le Moal		compatible = "simple-bus";
10908734e05SDamien Le Moal		ranges;
11008734e05SDamien Le Moal		interrupt-parent = <&plic0>;
11108734e05SDamien Le Moal
11267d96729SDamien Le Moal		rom0: nvmem@1000 {
11367d96729SDamien Le Moal			reg = <0x1000 0x1000>;
11467d96729SDamien Le Moal			read-only;
11508734e05SDamien Le Moal		};
11608734e05SDamien Le Moal
11767d96729SDamien Le Moal		clint0: timer@2000000 {
11867d96729SDamien Le Moal			compatible = "canaan,k210-clint", "sifive,clint0";
11908734e05SDamien Le Moal			reg = <0x2000000 0xC000>;
12075c0dc04SGeert Uytterhoeven			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
12175c0dc04SGeert Uytterhoeven					      <&cpu1_intc 3>, <&cpu1_intc 7>;
12208734e05SDamien Le Moal		};
12308734e05SDamien Le Moal
12408734e05SDamien Le Moal		plic0: interrupt-controller@c000000 {
12508734e05SDamien Le Moal			#interrupt-cells = <1>;
12667d96729SDamien Le Moal			#address-cells = <0>;
12767d96729SDamien Le Moal			compatible = "canaan,k210-plic", "sifive,plic-1.0.0";
12808734e05SDamien Le Moal			reg = <0xC000000 0x4000000>;
12967d96729SDamien Le Moal			interrupt-controller;
13074583f1bSNiklas Cassel			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
13174583f1bSNiklas Cassel					      <&cpu1_intc 11>, <&cpu1_intc 9>;
13208734e05SDamien Le Moal			riscv,ndev = <65>;
13308734e05SDamien Le Moal		};
13408734e05SDamien Le Moal
13508734e05SDamien Le Moal		uarths0: serial@38000000 {
13667d96729SDamien Le Moal			compatible = "canaan,k210-uarths", "sifive,uart0";
13708734e05SDamien Le Moal			reg = <0x38000000 0x1000>;
13808734e05SDamien Le Moal			interrupts = <33>;
13967d96729SDamien Le Moal			clocks = <&sysclk K210_CLK_CPU>;
14067d96729SDamien Le Moal		};
14167d96729SDamien Le Moal
14267d96729SDamien Le Moal		gpio0: gpio-controller@38001000 {
14367d96729SDamien Le Moal			#interrupt-cells = <2>;
14467d96729SDamien Le Moal			#gpio-cells = <2>;
14567d96729SDamien Le Moal			compatible = "canaan,k210-gpiohs", "sifive,gpio0";
14667d96729SDamien Le Moal			reg = <0x38001000 0x1000>;
14767d96729SDamien Le Moal			interrupt-controller;
14875c0dc04SGeert Uytterhoeven			interrupts = <34>, <35>, <36>, <37>, <38>, <39>, <40>,
14975c0dc04SGeert Uytterhoeven				     <41>, <42>, <43>, <44>, <45>, <46>, <47>,
15075c0dc04SGeert Uytterhoeven				     <48>, <49>, <50>, <51>, <52>, <53>, <54>,
15175c0dc04SGeert Uytterhoeven				     <55>, <56>, <57>, <58>, <59>, <60>, <61>,
15275c0dc04SGeert Uytterhoeven				     <62>, <63>, <64>, <65>;
15367d96729SDamien Le Moal			gpio-controller;
15467d96729SDamien Le Moal			ngpios = <32>;
15567d96729SDamien Le Moal		};
15667d96729SDamien Le Moal
15767d96729SDamien Le Moal		dmac0: dma-controller@50000000 {
15867d96729SDamien Le Moal			compatible = "snps,axi-dma-1.01a";
15967d96729SDamien Le Moal			reg = <0x50000000 0x1000>;
16075c0dc04SGeert Uytterhoeven			interrupts = <27>, <28>, <29>, <30>, <31>, <32>;
16167d96729SDamien Le Moal			#dma-cells = <1>;
16267d96729SDamien Le Moal			clocks = <&sysclk K210_CLK_DMA>, <&sysclk K210_CLK_DMA>;
16367d96729SDamien Le Moal			clock-names = "core-clk", "cfgr-clk";
16467d96729SDamien Le Moal			resets = <&sysrst K210_RST_DMA>;
16567d96729SDamien Le Moal			dma-channels = <6>;
16667d96729SDamien Le Moal			snps,dma-masters = <2>;
16767d96729SDamien Le Moal			snps,priority = <0 1 2 3 4 5>;
16867d96729SDamien Le Moal			snps,data-width = <5>;
16967d96729SDamien Le Moal			snps,block-size = <0x200000 0x200000 0x200000
17067d96729SDamien Le Moal					   0x200000 0x200000 0x200000>;
17167d96729SDamien Le Moal			snps,axi-max-burst-len = <256>;
17267d96729SDamien Le Moal		};
17367d96729SDamien Le Moal
17467d96729SDamien Le Moal		apb0: bus@50200000 {
17567d96729SDamien Le Moal			#address-cells = <1>;
17667d96729SDamien Le Moal			#size-cells = <1>;
17767d96729SDamien Le Moal			compatible = "simple-pm-bus";
178*e19f975aSConor Dooley			ranges = <0x50200000 0x50200000 0x200000>;
17967d96729SDamien Le Moal			clocks = <&sysclk K210_CLK_APB0>;
18067d96729SDamien Le Moal
18167d96729SDamien Le Moal			gpio1: gpio@50200000 {
18267d96729SDamien Le Moal				#address-cells = <1>;
18367d96729SDamien Le Moal				#size-cells = <0>;
18467d96729SDamien Le Moal				compatible = "snps,dw-apb-gpio";
18567d96729SDamien Le Moal				reg = <0x50200000 0x80>;
18667d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_APB0>,
18767d96729SDamien Le Moal					 <&sysclk K210_CLK_GPIO>;
18867d96729SDamien Le Moal				clock-names = "bus", "db";
18967d96729SDamien Le Moal				resets = <&sysrst K210_RST_GPIO>;
19067d96729SDamien Le Moal
19167d96729SDamien Le Moal				gpio1_0: gpio-port@0 {
19267d96729SDamien Le Moal					#gpio-cells = <2>;
19367d96729SDamien Le Moal					#interrupt-cells = <2>;
19467d96729SDamien Le Moal					compatible = "snps,dw-apb-gpio-port";
19567d96729SDamien Le Moal					reg = <0>;
19667d96729SDamien Le Moal					interrupt-controller;
19767d96729SDamien Le Moal					interrupts = <23>;
19867d96729SDamien Le Moal					gpio-controller;
19967d96729SDamien Le Moal					ngpios = <8>;
20067d96729SDamien Le Moal				};
20167d96729SDamien Le Moal			};
20267d96729SDamien Le Moal
20367d96729SDamien Le Moal			uart1: serial@50210000 {
20467d96729SDamien Le Moal				compatible = "snps,dw-apb-uart";
20567d96729SDamien Le Moal				reg = <0x50210000 0x100>;
20667d96729SDamien Le Moal				interrupts = <11>;
20767d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_UART1>,
20867d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
20967d96729SDamien Le Moal				clock-names = "baudclk", "apb_pclk";
21067d96729SDamien Le Moal				resets = <&sysrst K210_RST_UART1>;
21167d96729SDamien Le Moal				reg-io-width = <4>;
21267d96729SDamien Le Moal				reg-shift = <2>;
21367d96729SDamien Le Moal				dcd-override;
21467d96729SDamien Le Moal				dsr-override;
21567d96729SDamien Le Moal				cts-override;
21667d96729SDamien Le Moal				ri-override;
21767d96729SDamien Le Moal			};
21867d96729SDamien Le Moal
21967d96729SDamien Le Moal			uart2: serial@50220000 {
22067d96729SDamien Le Moal				compatible = "snps,dw-apb-uart";
22167d96729SDamien Le Moal				reg = <0x50220000 0x100>;
22267d96729SDamien Le Moal				interrupts = <12>;
22367d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_UART2>,
22467d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
22567d96729SDamien Le Moal				clock-names = "baudclk", "apb_pclk";
22667d96729SDamien Le Moal				resets = <&sysrst K210_RST_UART2>;
22767d96729SDamien Le Moal				reg-io-width = <4>;
22867d96729SDamien Le Moal				reg-shift = <2>;
22967d96729SDamien Le Moal				dcd-override;
23067d96729SDamien Le Moal				dsr-override;
23167d96729SDamien Le Moal				cts-override;
23267d96729SDamien Le Moal				ri-override;
23367d96729SDamien Le Moal			};
23467d96729SDamien Le Moal
23567d96729SDamien Le Moal			uart3: serial@50230000 {
23667d96729SDamien Le Moal				compatible = "snps,dw-apb-uart";
23767d96729SDamien Le Moal				reg = <0x50230000 0x100>;
23867d96729SDamien Le Moal				interrupts = <13>;
23967d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_UART3>,
24067d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
24167d96729SDamien Le Moal				clock-names = "baudclk", "apb_pclk";
24267d96729SDamien Le Moal				resets = <&sysrst K210_RST_UART3>;
24367d96729SDamien Le Moal				reg-io-width = <4>;
24467d96729SDamien Le Moal				reg-shift = <2>;
24567d96729SDamien Le Moal				dcd-override;
24667d96729SDamien Le Moal				dsr-override;
24767d96729SDamien Le Moal				cts-override;
24867d96729SDamien Le Moal				ri-override;
24967d96729SDamien Le Moal			};
25067d96729SDamien Le Moal
25167d96729SDamien Le Moal			spi2: spi@50240000 {
25267d96729SDamien Le Moal				compatible = "canaan,k210-spi";
25367d96729SDamien Le Moal				spi-slave;
25467d96729SDamien Le Moal				reg = <0x50240000 0x100>;
25567d96729SDamien Le Moal				#address-cells = <0>;
25667d96729SDamien Le Moal				#size-cells = <0>;
25767d96729SDamien Le Moal				interrupts = <3>;
25867d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_SPI2>,
25967d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
26067d96729SDamien Le Moal				clock-names = "ssi_clk", "pclk";
26167d96729SDamien Le Moal				resets = <&sysrst K210_RST_SPI2>;
26267d96729SDamien Le Moal			};
26367d96729SDamien Le Moal
26467d96729SDamien Le Moal			i2s0: i2s@50250000 {
2659bd61febSConor Dooley				compatible = "canaan,k210-i2s", "snps,designware-i2s";
26667d96729SDamien Le Moal				reg = <0x50250000 0x200>;
26767d96729SDamien Le Moal				interrupts = <5>;
26867d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2S0>;
26967d96729SDamien Le Moal				clock-names = "i2sclk";
27067d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2S0>;
27167d96729SDamien Le Moal			};
27267d96729SDamien Le Moal
27367d96729SDamien Le Moal			i2s1: i2s@50260000 {
2749bd61febSConor Dooley				compatible = "canaan,k210-i2s", "snps,designware-i2s";
27567d96729SDamien Le Moal				reg = <0x50260000 0x200>;
27667d96729SDamien Le Moal				interrupts = <6>;
27767d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2S1>;
27867d96729SDamien Le Moal				clock-names = "i2sclk";
27967d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2S1>;
28067d96729SDamien Le Moal			};
28167d96729SDamien Le Moal
28267d96729SDamien Le Moal			i2s2: i2s@50270000 {
2839bd61febSConor Dooley				compatible = "canaan,k210-i2s", "snps,designware-i2s";
28467d96729SDamien Le Moal				reg = <0x50270000 0x200>;
28567d96729SDamien Le Moal				interrupts = <7>;
28667d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2S2>;
28767d96729SDamien Le Moal				clock-names = "i2sclk";
28867d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2S2>;
28967d96729SDamien Le Moal			};
29067d96729SDamien Le Moal
29167d96729SDamien Le Moal			i2c0: i2c@50280000 {
29267d96729SDamien Le Moal				compatible = "snps,designware-i2c";
29367d96729SDamien Le Moal				reg = <0x50280000 0x100>;
29467d96729SDamien Le Moal				interrupts = <8>;
29567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2C0>,
29667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
29767d96729SDamien Le Moal				clock-names = "ref", "pclk";
29867d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2C0>;
29967d96729SDamien Le Moal			};
30067d96729SDamien Le Moal
30167d96729SDamien Le Moal			i2c1: i2c@50290000 {
30267d96729SDamien Le Moal				compatible = "snps,designware-i2c";
30367d96729SDamien Le Moal				reg = <0x50290000 0x100>;
30467d96729SDamien Le Moal				interrupts = <9>;
30567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2C1>,
30667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
30767d96729SDamien Le Moal				clock-names = "ref", "pclk";
30867d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2C1>;
30967d96729SDamien Le Moal			};
31067d96729SDamien Le Moal
31167d96729SDamien Le Moal			i2c2: i2c@502a0000 {
31267d96729SDamien Le Moal				compatible = "snps,designware-i2c";
31367d96729SDamien Le Moal				reg = <0x502A0000 0x100>;
31467d96729SDamien Le Moal				interrupts = <10>;
31567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_I2C2>,
31667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
31767d96729SDamien Le Moal				clock-names = "ref", "pclk";
31867d96729SDamien Le Moal				resets = <&sysrst K210_RST_I2C2>;
31967d96729SDamien Le Moal			};
32067d96729SDamien Le Moal
32167d96729SDamien Le Moal			fpioa: pinmux@502b0000 {
32267d96729SDamien Le Moal				compatible = "canaan,k210-fpioa";
32367d96729SDamien Le Moal				reg = <0x502B0000 0x100>;
32467d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_FPIOA>,
32567d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
32667d96729SDamien Le Moal				clock-names = "ref", "pclk";
32767d96729SDamien Le Moal				resets = <&sysrst K210_RST_FPIOA>;
32867d96729SDamien Le Moal				canaan,k210-sysctl-power = <&sysctl 108>;
32967d96729SDamien Le Moal			};
33067d96729SDamien Le Moal
33167d96729SDamien Le Moal			timer0: timer@502d0000 {
33267d96729SDamien Le Moal				compatible = "snps,dw-apb-timer";
3333f64510eSConor Dooley				reg = <0x502D0000 0x14>;
3343f64510eSConor Dooley				interrupts = <14>;
33567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_TIMER0>,
33667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
33767d96729SDamien Le Moal				clock-names = "timer", "pclk";
33867d96729SDamien Le Moal				resets = <&sysrst K210_RST_TIMER0>;
33967d96729SDamien Le Moal			};
34067d96729SDamien Le Moal
3413f64510eSConor Dooley			timer1: timer@502d0014 {
34267d96729SDamien Le Moal				compatible = "snps,dw-apb-timer";
3433f64510eSConor Dooley				reg = <0x502D0014 0x14>;
3443f64510eSConor Dooley				interrupts = <15>;
3453f64510eSConor Dooley				clocks = <&sysclk K210_CLK_TIMER0>,
3463f64510eSConor Dooley					 <&sysclk K210_CLK_APB0>;
3473f64510eSConor Dooley				clock-names = "timer", "pclk";
3483f64510eSConor Dooley				resets = <&sysrst K210_RST_TIMER0>;
3493f64510eSConor Dooley			};
3503f64510eSConor Dooley
3513f64510eSConor Dooley			timer2: timer@502e0000 {
3523f64510eSConor Dooley				compatible = "snps,dw-apb-timer";
3533f64510eSConor Dooley				reg = <0x502E0000 0x14>;
3543f64510eSConor Dooley				interrupts = <16>;
35567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_TIMER1>,
35667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
35767d96729SDamien Le Moal				clock-names = "timer", "pclk";
35867d96729SDamien Le Moal				resets = <&sysrst K210_RST_TIMER1>;
35967d96729SDamien Le Moal			};
36067d96729SDamien Le Moal
3613f64510eSConor Dooley			timer3: timer@502e0014 {
36267d96729SDamien Le Moal				compatible = "snps,dw-apb-timer";
3633f64510eSConor Dooley				reg = <0x502E0014 0x114>;
3643f64510eSConor Dooley				interrupts = <17>;
3653f64510eSConor Dooley				clocks = <&sysclk K210_CLK_TIMER1>,
3663f64510eSConor Dooley					 <&sysclk K210_CLK_APB0>;
3673f64510eSConor Dooley				clock-names = "timer", "pclk";
3683f64510eSConor Dooley				resets = <&sysrst K210_RST_TIMER1>;
3693f64510eSConor Dooley			};
3703f64510eSConor Dooley
3713f64510eSConor Dooley			timer4: timer@502f0000 {
3723f64510eSConor Dooley				compatible = "snps,dw-apb-timer";
3733f64510eSConor Dooley				reg = <0x502F0000 0x14>;
3743f64510eSConor Dooley				interrupts = <18>;
3753f64510eSConor Dooley				clocks = <&sysclk K210_CLK_TIMER2>,
3763f64510eSConor Dooley					 <&sysclk K210_CLK_APB0>;
3773f64510eSConor Dooley				clock-names = "timer", "pclk";
3783f64510eSConor Dooley				resets = <&sysrst K210_RST_TIMER2>;
3793f64510eSConor Dooley			};
3803f64510eSConor Dooley
3813f64510eSConor Dooley			timer5: timer@502f0014 {
3823f64510eSConor Dooley				compatible = "snps,dw-apb-timer";
3833f64510eSConor Dooley				reg = <0x502F0014 0x14>;
3843f64510eSConor Dooley				interrupts = <19>;
38567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_TIMER2>,
38667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB0>;
38767d96729SDamien Le Moal				clock-names = "timer", "pclk";
38867d96729SDamien Le Moal				resets = <&sysrst K210_RST_TIMER2>;
38967d96729SDamien Le Moal			};
39067d96729SDamien Le Moal		};
39167d96729SDamien Le Moal
39267d96729SDamien Le Moal		apb1: bus@50400000 {
39367d96729SDamien Le Moal			#address-cells = <1>;
39467d96729SDamien Le Moal			#size-cells = <1>;
39567d96729SDamien Le Moal			compatible = "simple-pm-bus";
396*e19f975aSConor Dooley			ranges = <0x50400000 0x50400000 0x40100>;
39767d96729SDamien Le Moal			clocks = <&sysclk K210_CLK_APB1>;
39867d96729SDamien Le Moal
39967d96729SDamien Le Moal			wdt0: watchdog@50400000 {
40067d96729SDamien Le Moal				compatible = "snps,dw-wdt";
40167d96729SDamien Le Moal				reg = <0x50400000 0x100>;
40267d96729SDamien Le Moal				interrupts = <21>;
40367d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_WDT0>,
40467d96729SDamien Le Moal					 <&sysclk K210_CLK_APB1>;
40567d96729SDamien Le Moal				clock-names = "tclk", "pclk";
40667d96729SDamien Le Moal				resets = <&sysrst K210_RST_WDT0>;
40767d96729SDamien Le Moal			};
40867d96729SDamien Le Moal
40967d96729SDamien Le Moal			wdt1: watchdog@50410000 {
41067d96729SDamien Le Moal				compatible = "snps,dw-wdt";
41167d96729SDamien Le Moal				reg = <0x50410000 0x100>;
41267d96729SDamien Le Moal				interrupts = <22>;
41367d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_WDT1>,
41467d96729SDamien Le Moal					 <&sysclk K210_CLK_APB1>;
41567d96729SDamien Le Moal				clock-names = "tclk", "pclk";
41667d96729SDamien Le Moal				resets = <&sysrst K210_RST_WDT1>;
41767d96729SDamien Le Moal			};
41867d96729SDamien Le Moal
41967d96729SDamien Le Moal			sysctl: syscon@50440000 {
42067d96729SDamien Le Moal				compatible = "canaan,k210-sysctl",
42167d96729SDamien Le Moal					     "syscon", "simple-mfd";
42267d96729SDamien Le Moal				reg = <0x50440000 0x100>;
42367d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_APB1>;
42467d96729SDamien Le Moal				clock-names = "pclk";
42567d96729SDamien Le Moal
42667d96729SDamien Le Moal				sysclk: clock-controller {
42767d96729SDamien Le Moal					#clock-cells = <1>;
42867d96729SDamien Le Moal					compatible = "canaan,k210-clk";
42967d96729SDamien Le Moal					clocks = <&in0>;
43067d96729SDamien Le Moal				};
43167d96729SDamien Le Moal
43267d96729SDamien Le Moal				sysrst: reset-controller {
43367d96729SDamien Le Moal					compatible = "canaan,k210-rst";
43467d96729SDamien Le Moal					#reset-cells = <1>;
43567d96729SDamien Le Moal				};
43667d96729SDamien Le Moal
43767d96729SDamien Le Moal				reboot: syscon-reboot {
43867d96729SDamien Le Moal					compatible = "syscon-reboot";
43967d96729SDamien Le Moal					regmap = <&sysctl>;
44067d96729SDamien Le Moal					offset = <48>;
44167d96729SDamien Le Moal					mask = <1>;
44267d96729SDamien Le Moal					value = <1>;
44367d96729SDamien Le Moal				};
44467d96729SDamien Le Moal			};
44567d96729SDamien Le Moal		};
44667d96729SDamien Le Moal
44767d96729SDamien Le Moal		apb2: bus@52000000 {
44867d96729SDamien Le Moal			#address-cells = <1>;
44967d96729SDamien Le Moal			#size-cells = <1>;
45067d96729SDamien Le Moal			compatible = "simple-pm-bus";
451*e19f975aSConor Dooley			ranges = <0x52000000 0x52000000 0x2000200>;
45267d96729SDamien Le Moal			clocks = <&sysclk K210_CLK_APB2>;
45367d96729SDamien Le Moal
45467d96729SDamien Le Moal			spi0: spi@52000000 {
45567d96729SDamien Le Moal				#address-cells = <1>;
45667d96729SDamien Le Moal				#size-cells = <0>;
45767d96729SDamien Le Moal				compatible = "canaan,k210-spi";
45867d96729SDamien Le Moal				reg = <0x52000000 0x100>;
45967d96729SDamien Le Moal				interrupts = <1>;
46067d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_SPI0>,
46167d96729SDamien Le Moal					 <&sysclk K210_CLK_APB2>;
46267d96729SDamien Le Moal				clock-names = "ssi_clk", "pclk";
46367d96729SDamien Le Moal				resets = <&sysrst K210_RST_SPI0>;
46467d96729SDamien Le Moal				reset-names = "spi";
46567d96729SDamien Le Moal				num-cs = <4>;
46667d96729SDamien Le Moal				reg-io-width = <4>;
46767d96729SDamien Le Moal			};
46867d96729SDamien Le Moal
46967d96729SDamien Le Moal			spi1: spi@53000000 {
47067d96729SDamien Le Moal				#address-cells = <1>;
47167d96729SDamien Le Moal				#size-cells = <0>;
47267d96729SDamien Le Moal				compatible = "canaan,k210-spi";
47367d96729SDamien Le Moal				reg = <0x53000000 0x100>;
47467d96729SDamien Le Moal				interrupts = <2>;
47567d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_SPI1>,
47667d96729SDamien Le Moal					 <&sysclk K210_CLK_APB2>;
47767d96729SDamien Le Moal				clock-names = "ssi_clk", "pclk";
47867d96729SDamien Le Moal				resets = <&sysrst K210_RST_SPI1>;
47967d96729SDamien Le Moal				reset-names = "spi";
48067d96729SDamien Le Moal				num-cs = <4>;
48167d96729SDamien Le Moal				reg-io-width = <4>;
48267d96729SDamien Le Moal			};
48367d96729SDamien Le Moal
48467d96729SDamien Le Moal			spi3: spi@54000000 {
48567d96729SDamien Le Moal				#address-cells = <1>;
48667d96729SDamien Le Moal				#size-cells = <0>;
48767d96729SDamien Le Moal				compatible = "snps,dwc-ssi-1.01a";
48867d96729SDamien Le Moal				reg = <0x54000000 0x200>;
48967d96729SDamien Le Moal				interrupts = <4>;
49067d96729SDamien Le Moal				clocks = <&sysclk K210_CLK_SPI3>,
49167d96729SDamien Le Moal					 <&sysclk K210_CLK_APB2>;
49267d96729SDamien Le Moal				clock-names = "ssi_clk", "pclk";
49367d96729SDamien Le Moal				resets = <&sysrst K210_RST_SPI3>;
49467d96729SDamien Le Moal				reset-names = "spi";
495719a85a2SConor Dooley
49667d96729SDamien Le Moal				num-cs = <4>;
49767d96729SDamien Le Moal				reg-io-width = <4>;
49867d96729SDamien Le Moal			};
49908734e05SDamien Le Moal		};
50008734e05SDamien Le Moal	};
50108734e05SDamien Le Moal};
502