xref: /freebsd/sys/contrib/device-tree/src/riscv/canaan/k210.dtsi (revision b97ee269eae3cbaf35c18f51a459aea581c2a7dc)
15def4c47SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+
25def4c47SEmmanuel Vadot/*
35def4c47SEmmanuel Vadot * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
45def4c47SEmmanuel Vadot * Copyright (C) 2020 Western Digital Corporation or its affiliates.
55def4c47SEmmanuel Vadot */
65def4c47SEmmanuel Vadot#include <dt-bindings/clock/k210-clk.h>
75def4c47SEmmanuel Vadot#include <dt-bindings/pinctrl/k210-fpioa.h>
85def4c47SEmmanuel Vadot#include <dt-bindings/reset/k210-rst.h>
95def4c47SEmmanuel Vadot
105def4c47SEmmanuel Vadot/ {
115def4c47SEmmanuel Vadot	/*
125def4c47SEmmanuel Vadot	 * Although the K210 is a 64-bit CPU, the address bus is only 32-bits
135def4c47SEmmanuel Vadot	 * wide, and the upper half of all addresses is ignored.
145def4c47SEmmanuel Vadot	 */
155def4c47SEmmanuel Vadot	#address-cells = <1>;
165def4c47SEmmanuel Vadot	#size-cells = <1>;
175def4c47SEmmanuel Vadot	compatible = "canaan,kendryte-k210";
185def4c47SEmmanuel Vadot
195def4c47SEmmanuel Vadot	aliases {
205def4c47SEmmanuel Vadot		serial0 = &uarths0;
215def4c47SEmmanuel Vadot		serial1 = &uart1;
225def4c47SEmmanuel Vadot		serial2 = &uart2;
235def4c47SEmmanuel Vadot		serial3 = &uart3;
245def4c47SEmmanuel Vadot	};
255def4c47SEmmanuel Vadot
265def4c47SEmmanuel Vadot	/*
275def4c47SEmmanuel Vadot	 * The K210 has an sv39 MMU following the privileged specification v1.9.
285def4c47SEmmanuel Vadot	 * Since this is a non-ratified draft specification, the kernel does not
295def4c47SEmmanuel Vadot	 * support it and the K210 support enabled only for the !MMU case.
305def4c47SEmmanuel Vadot	 * Be consistent with this by setting the CPUs MMU type to "none".
315def4c47SEmmanuel Vadot	 */
325def4c47SEmmanuel Vadot	cpus {
335def4c47SEmmanuel Vadot		#address-cells = <1>;
345def4c47SEmmanuel Vadot		#size-cells = <0>;
355def4c47SEmmanuel Vadot		timebase-frequency = <7800000>;
365def4c47SEmmanuel Vadot		cpu0: cpu@0 {
375def4c47SEmmanuel Vadot			device_type = "cpu";
385def4c47SEmmanuel Vadot			compatible = "canaan,k210", "riscv";
395def4c47SEmmanuel Vadot			reg = <0>;
405def4c47SEmmanuel Vadot			riscv,isa = "rv64imafdc";
415def4c47SEmmanuel Vadot			mmu-type = "riscv,none";
425def4c47SEmmanuel Vadot			i-cache-block-size = <64>;
435def4c47SEmmanuel Vadot			i-cache-size = <0x8000>;
445def4c47SEmmanuel Vadot			d-cache-block-size = <64>;
455def4c47SEmmanuel Vadot			d-cache-size = <0x8000>;
465def4c47SEmmanuel Vadot			cpu0_intc: interrupt-controller {
475def4c47SEmmanuel Vadot				#interrupt-cells = <1>;
485def4c47SEmmanuel Vadot				interrupt-controller;
495def4c47SEmmanuel Vadot				compatible = "riscv,cpu-intc";
505def4c47SEmmanuel Vadot			};
515def4c47SEmmanuel Vadot		};
525def4c47SEmmanuel Vadot		cpu1: cpu@1 {
535def4c47SEmmanuel Vadot			device_type = "cpu";
545def4c47SEmmanuel Vadot			compatible = "canaan,k210", "riscv";
555def4c47SEmmanuel Vadot			reg = <1>;
565def4c47SEmmanuel Vadot			riscv,isa = "rv64imafdc";
575def4c47SEmmanuel Vadot			mmu-type = "riscv,none";
585def4c47SEmmanuel Vadot			i-cache-block-size = <64>;
595def4c47SEmmanuel Vadot			i-cache-size = <0x8000>;
605def4c47SEmmanuel Vadot			d-cache-block-size = <64>;
615def4c47SEmmanuel Vadot			d-cache-size = <0x8000>;
625def4c47SEmmanuel Vadot			cpu1_intc: interrupt-controller {
635def4c47SEmmanuel Vadot				#interrupt-cells = <1>;
645def4c47SEmmanuel Vadot				interrupt-controller;
655def4c47SEmmanuel Vadot				compatible = "riscv,cpu-intc";
665def4c47SEmmanuel Vadot			};
675def4c47SEmmanuel Vadot		};
68*b97ee269SEmmanuel Vadot
69*b97ee269SEmmanuel Vadot		cpu-map {
70*b97ee269SEmmanuel Vadot			cluster0 {
71*b97ee269SEmmanuel Vadot				core0 {
72*b97ee269SEmmanuel Vadot					cpu = <&cpu0>;
73*b97ee269SEmmanuel Vadot				};
74*b97ee269SEmmanuel Vadot
75*b97ee269SEmmanuel Vadot				core1 {
76*b97ee269SEmmanuel Vadot					cpu = <&cpu1>;
77*b97ee269SEmmanuel Vadot				};
78*b97ee269SEmmanuel Vadot			};
79*b97ee269SEmmanuel Vadot		};
805def4c47SEmmanuel Vadot	};
815def4c47SEmmanuel Vadot
825def4c47SEmmanuel Vadot	sram: memory@80000000 {
835def4c47SEmmanuel Vadot		device_type = "memory";
84*b97ee269SEmmanuel Vadot		reg = <0x80000000 0x400000>, /* sram0 4 MiB */
85*b97ee269SEmmanuel Vadot		      <0x80400000 0x200000>, /* sram1 2 MiB */
86*b97ee269SEmmanuel Vadot		      <0x80600000 0x200000>; /* aisram 2 MiB */
87*b97ee269SEmmanuel Vadot	};
88*b97ee269SEmmanuel Vadot
89*b97ee269SEmmanuel Vadot	sram_controller: memory-controller {
905def4c47SEmmanuel Vadot		compatible = "canaan,k210-sram";
915def4c47SEmmanuel Vadot		clocks = <&sysclk K210_CLK_SRAM0>,
925def4c47SEmmanuel Vadot			 <&sysclk K210_CLK_SRAM1>,
935def4c47SEmmanuel Vadot			 <&sysclk K210_CLK_AI>;
945def4c47SEmmanuel Vadot		clock-names = "sram0", "sram1", "aisram";
955def4c47SEmmanuel Vadot	};
965def4c47SEmmanuel Vadot
975def4c47SEmmanuel Vadot	clocks {
985def4c47SEmmanuel Vadot		in0: oscillator {
995def4c47SEmmanuel Vadot			compatible = "fixed-clock";
1005def4c47SEmmanuel Vadot			#clock-cells = <0>;
1015def4c47SEmmanuel Vadot			clock-frequency = <26000000>;
1025def4c47SEmmanuel Vadot		};
1035def4c47SEmmanuel Vadot	};
1045def4c47SEmmanuel Vadot
1055def4c47SEmmanuel Vadot	soc {
1065def4c47SEmmanuel Vadot		#address-cells = <1>;
1075def4c47SEmmanuel Vadot		#size-cells = <1>;
1085def4c47SEmmanuel Vadot		compatible = "simple-bus";
1095def4c47SEmmanuel Vadot		ranges;
1105def4c47SEmmanuel Vadot		interrupt-parent = <&plic0>;
1115def4c47SEmmanuel Vadot
1125def4c47SEmmanuel Vadot		rom0: nvmem@1000 {
1135def4c47SEmmanuel Vadot			reg = <0x1000 0x1000>;
1145def4c47SEmmanuel Vadot			read-only;
1155def4c47SEmmanuel Vadot		};
1165def4c47SEmmanuel Vadot
1175def4c47SEmmanuel Vadot		clint0: timer@2000000 {
1185def4c47SEmmanuel Vadot			compatible = "canaan,k210-clint", "sifive,clint0";
1195def4c47SEmmanuel Vadot			reg = <0x2000000 0xC000>;
120e67e8565SEmmanuel Vadot			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
121e67e8565SEmmanuel Vadot					      <&cpu1_intc 3>, <&cpu1_intc 7>;
1225def4c47SEmmanuel Vadot		};
1235def4c47SEmmanuel Vadot
1245def4c47SEmmanuel Vadot		plic0: interrupt-controller@c000000 {
1255def4c47SEmmanuel Vadot			#interrupt-cells = <1>;
1265def4c47SEmmanuel Vadot			#address-cells = <0>;
1275def4c47SEmmanuel Vadot			compatible = "canaan,k210-plic", "sifive,plic-1.0.0";
1285def4c47SEmmanuel Vadot			reg = <0xC000000 0x4000000>;
1295def4c47SEmmanuel Vadot			interrupt-controller;
130e67e8565SEmmanuel Vadot			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
131e67e8565SEmmanuel Vadot					      <&cpu1_intc 11>, <&cpu1_intc 9>;
1325def4c47SEmmanuel Vadot			riscv,ndev = <65>;
1335def4c47SEmmanuel Vadot		};
1345def4c47SEmmanuel Vadot
1355def4c47SEmmanuel Vadot		uarths0: serial@38000000 {
1365def4c47SEmmanuel Vadot			compatible = "canaan,k210-uarths", "sifive,uart0";
1375def4c47SEmmanuel Vadot			reg = <0x38000000 0x1000>;
1385def4c47SEmmanuel Vadot			interrupts = <33>;
1395def4c47SEmmanuel Vadot			clocks = <&sysclk K210_CLK_CPU>;
1405def4c47SEmmanuel Vadot		};
1415def4c47SEmmanuel Vadot
1425def4c47SEmmanuel Vadot		gpio0: gpio-controller@38001000 {
1435def4c47SEmmanuel Vadot			#interrupt-cells = <2>;
1445def4c47SEmmanuel Vadot			#gpio-cells = <2>;
1455def4c47SEmmanuel Vadot			compatible = "canaan,k210-gpiohs", "sifive,gpio0";
1465def4c47SEmmanuel Vadot			reg = <0x38001000 0x1000>;
1475def4c47SEmmanuel Vadot			interrupt-controller;
148e67e8565SEmmanuel Vadot			interrupts = <34>, <35>, <36>, <37>, <38>, <39>, <40>,
149e67e8565SEmmanuel Vadot				     <41>, <42>, <43>, <44>, <45>, <46>, <47>,
150e67e8565SEmmanuel Vadot				     <48>, <49>, <50>, <51>, <52>, <53>, <54>,
151e67e8565SEmmanuel Vadot				     <55>, <56>, <57>, <58>, <59>, <60>, <61>,
152e67e8565SEmmanuel Vadot				     <62>, <63>, <64>, <65>;
1535def4c47SEmmanuel Vadot			gpio-controller;
1545def4c47SEmmanuel Vadot			ngpios = <32>;
1555def4c47SEmmanuel Vadot		};
1565def4c47SEmmanuel Vadot
1575def4c47SEmmanuel Vadot		dmac0: dma-controller@50000000 {
1585def4c47SEmmanuel Vadot			compatible = "snps,axi-dma-1.01a";
1595def4c47SEmmanuel Vadot			reg = <0x50000000 0x1000>;
160e67e8565SEmmanuel Vadot			interrupts = <27>, <28>, <29>, <30>, <31>, <32>;
1615def4c47SEmmanuel Vadot			#dma-cells = <1>;
1625def4c47SEmmanuel Vadot			clocks = <&sysclk K210_CLK_DMA>, <&sysclk K210_CLK_DMA>;
1635def4c47SEmmanuel Vadot			clock-names = "core-clk", "cfgr-clk";
1645def4c47SEmmanuel Vadot			resets = <&sysrst K210_RST_DMA>;
1655def4c47SEmmanuel Vadot			dma-channels = <6>;
1665def4c47SEmmanuel Vadot			snps,dma-masters = <2>;
1675def4c47SEmmanuel Vadot			snps,priority = <0 1 2 3 4 5>;
1685def4c47SEmmanuel Vadot			snps,data-width = <5>;
1695def4c47SEmmanuel Vadot			snps,block-size = <0x200000 0x200000 0x200000
1705def4c47SEmmanuel Vadot					   0x200000 0x200000 0x200000>;
1715def4c47SEmmanuel Vadot			snps,axi-max-burst-len = <256>;
1725def4c47SEmmanuel Vadot		};
1735def4c47SEmmanuel Vadot
1745def4c47SEmmanuel Vadot		apb0: bus@50200000 {
1755def4c47SEmmanuel Vadot			#address-cells = <1>;
1765def4c47SEmmanuel Vadot			#size-cells = <1>;
1775def4c47SEmmanuel Vadot			compatible = "simple-pm-bus";
178*b97ee269SEmmanuel Vadot			ranges = <0x50200000 0x50200000 0x200000>;
1795def4c47SEmmanuel Vadot			clocks = <&sysclk K210_CLK_APB0>;
1805def4c47SEmmanuel Vadot
1815def4c47SEmmanuel Vadot			gpio1: gpio@50200000 {
1825def4c47SEmmanuel Vadot				#address-cells = <1>;
1835def4c47SEmmanuel Vadot				#size-cells = <0>;
1845def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-gpio";
1855def4c47SEmmanuel Vadot				reg = <0x50200000 0x80>;
1865def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_APB0>,
1875def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_GPIO>;
1885def4c47SEmmanuel Vadot				clock-names = "bus", "db";
1895def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_GPIO>;
1905def4c47SEmmanuel Vadot
1915def4c47SEmmanuel Vadot				gpio1_0: gpio-port@0 {
1925def4c47SEmmanuel Vadot					#gpio-cells = <2>;
1935def4c47SEmmanuel Vadot					#interrupt-cells = <2>;
1945def4c47SEmmanuel Vadot					compatible = "snps,dw-apb-gpio-port";
1955def4c47SEmmanuel Vadot					reg = <0>;
1965def4c47SEmmanuel Vadot					interrupt-controller;
1975def4c47SEmmanuel Vadot					interrupts = <23>;
1985def4c47SEmmanuel Vadot					gpio-controller;
1995def4c47SEmmanuel Vadot					ngpios = <8>;
2005def4c47SEmmanuel Vadot				};
2015def4c47SEmmanuel Vadot			};
2025def4c47SEmmanuel Vadot
2035def4c47SEmmanuel Vadot			uart1: serial@50210000 {
2045def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-uart";
2055def4c47SEmmanuel Vadot				reg = <0x50210000 0x100>;
2065def4c47SEmmanuel Vadot				interrupts = <11>;
2075def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_UART1>,
2085def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
2095def4c47SEmmanuel Vadot				clock-names = "baudclk", "apb_pclk";
2105def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_UART1>;
2115def4c47SEmmanuel Vadot				reg-io-width = <4>;
2125def4c47SEmmanuel Vadot				reg-shift = <2>;
2135def4c47SEmmanuel Vadot				dcd-override;
2145def4c47SEmmanuel Vadot				dsr-override;
2155def4c47SEmmanuel Vadot				cts-override;
2165def4c47SEmmanuel Vadot				ri-override;
2175def4c47SEmmanuel Vadot			};
2185def4c47SEmmanuel Vadot
2195def4c47SEmmanuel Vadot			uart2: serial@50220000 {
2205def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-uart";
2215def4c47SEmmanuel Vadot				reg = <0x50220000 0x100>;
2225def4c47SEmmanuel Vadot				interrupts = <12>;
2235def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_UART2>,
2245def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
2255def4c47SEmmanuel Vadot				clock-names = "baudclk", "apb_pclk";
2265def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_UART2>;
2275def4c47SEmmanuel Vadot				reg-io-width = <4>;
2285def4c47SEmmanuel Vadot				reg-shift = <2>;
2295def4c47SEmmanuel Vadot				dcd-override;
2305def4c47SEmmanuel Vadot				dsr-override;
2315def4c47SEmmanuel Vadot				cts-override;
2325def4c47SEmmanuel Vadot				ri-override;
2335def4c47SEmmanuel Vadot			};
2345def4c47SEmmanuel Vadot
2355def4c47SEmmanuel Vadot			uart3: serial@50230000 {
2365def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-uart";
2375def4c47SEmmanuel Vadot				reg = <0x50230000 0x100>;
2385def4c47SEmmanuel Vadot				interrupts = <13>;
2395def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_UART3>,
2405def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
2415def4c47SEmmanuel Vadot				clock-names = "baudclk", "apb_pclk";
2425def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_UART3>;
2435def4c47SEmmanuel Vadot				reg-io-width = <4>;
2445def4c47SEmmanuel Vadot				reg-shift = <2>;
2455def4c47SEmmanuel Vadot				dcd-override;
2465def4c47SEmmanuel Vadot				dsr-override;
2475def4c47SEmmanuel Vadot				cts-override;
2485def4c47SEmmanuel Vadot				ri-override;
2495def4c47SEmmanuel Vadot			};
2505def4c47SEmmanuel Vadot
2515def4c47SEmmanuel Vadot			spi2: spi@50240000 {
2525def4c47SEmmanuel Vadot				compatible = "canaan,k210-spi";
2535def4c47SEmmanuel Vadot				spi-slave;
2545def4c47SEmmanuel Vadot				reg = <0x50240000 0x100>;
2555def4c47SEmmanuel Vadot				#address-cells = <0>;
2565def4c47SEmmanuel Vadot				#size-cells = <0>;
2575def4c47SEmmanuel Vadot				interrupts = <3>;
2585def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_SPI2>,
2595def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
2605def4c47SEmmanuel Vadot				clock-names = "ssi_clk", "pclk";
2615def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_SPI2>;
2625def4c47SEmmanuel Vadot				spi-max-frequency = <25000000>;
2635def4c47SEmmanuel Vadot			};
2645def4c47SEmmanuel Vadot
2655def4c47SEmmanuel Vadot			i2s0: i2s@50250000 {
266*b97ee269SEmmanuel Vadot				compatible = "canaan,k210-i2s", "snps,designware-i2s";
2675def4c47SEmmanuel Vadot				reg = <0x50250000 0x200>;
2685def4c47SEmmanuel Vadot				interrupts = <5>;
2695def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2S0>;
2705def4c47SEmmanuel Vadot				clock-names = "i2sclk";
2715def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2S0>;
2725def4c47SEmmanuel Vadot			};
2735def4c47SEmmanuel Vadot
2745def4c47SEmmanuel Vadot			i2s1: i2s@50260000 {
275*b97ee269SEmmanuel Vadot				compatible = "canaan,k210-i2s", "snps,designware-i2s";
2765def4c47SEmmanuel Vadot				reg = <0x50260000 0x200>;
2775def4c47SEmmanuel Vadot				interrupts = <6>;
2785def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2S1>;
2795def4c47SEmmanuel Vadot				clock-names = "i2sclk";
2805def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2S1>;
2815def4c47SEmmanuel Vadot			};
2825def4c47SEmmanuel Vadot
2835def4c47SEmmanuel Vadot			i2s2: i2s@50270000 {
284*b97ee269SEmmanuel Vadot				compatible = "canaan,k210-i2s", "snps,designware-i2s";
2855def4c47SEmmanuel Vadot				reg = <0x50270000 0x200>;
2865def4c47SEmmanuel Vadot				interrupts = <7>;
2875def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2S2>;
2885def4c47SEmmanuel Vadot				clock-names = "i2sclk";
2895def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2S2>;
2905def4c47SEmmanuel Vadot			};
2915def4c47SEmmanuel Vadot
2925def4c47SEmmanuel Vadot			i2c0: i2c@50280000 {
2935def4c47SEmmanuel Vadot				compatible = "snps,designware-i2c";
2945def4c47SEmmanuel Vadot				reg = <0x50280000 0x100>;
2955def4c47SEmmanuel Vadot				interrupts = <8>;
2965def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2C0>,
2975def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
2985def4c47SEmmanuel Vadot				clock-names = "ref", "pclk";
2995def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2C0>;
3005def4c47SEmmanuel Vadot			};
3015def4c47SEmmanuel Vadot
3025def4c47SEmmanuel Vadot			i2c1: i2c@50290000 {
3035def4c47SEmmanuel Vadot				compatible = "snps,designware-i2c";
3045def4c47SEmmanuel Vadot				reg = <0x50290000 0x100>;
3055def4c47SEmmanuel Vadot				interrupts = <9>;
3065def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2C1>,
3075def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3085def4c47SEmmanuel Vadot				clock-names = "ref", "pclk";
3095def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2C1>;
3105def4c47SEmmanuel Vadot			};
3115def4c47SEmmanuel Vadot
3125def4c47SEmmanuel Vadot			i2c2: i2c@502a0000 {
3135def4c47SEmmanuel Vadot				compatible = "snps,designware-i2c";
3145def4c47SEmmanuel Vadot				reg = <0x502A0000 0x100>;
3155def4c47SEmmanuel Vadot				interrupts = <10>;
3165def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_I2C2>,
3175def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3185def4c47SEmmanuel Vadot				clock-names = "ref", "pclk";
3195def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_I2C2>;
3205def4c47SEmmanuel Vadot			};
3215def4c47SEmmanuel Vadot
3225def4c47SEmmanuel Vadot			fpioa: pinmux@502b0000 {
3235def4c47SEmmanuel Vadot				compatible = "canaan,k210-fpioa";
3245def4c47SEmmanuel Vadot				reg = <0x502B0000 0x100>;
3255def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_FPIOA>,
3265def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3275def4c47SEmmanuel Vadot				clock-names = "ref", "pclk";
3285def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_FPIOA>;
3295def4c47SEmmanuel Vadot				canaan,k210-sysctl-power = <&sysctl 108>;
3305def4c47SEmmanuel Vadot			};
3315def4c47SEmmanuel Vadot
3325def4c47SEmmanuel Vadot			timer0: timer@502d0000 {
3335def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
334*b97ee269SEmmanuel Vadot				reg = <0x502D0000 0x14>;
335*b97ee269SEmmanuel Vadot				interrupts = <14>;
3365def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER0>,
3375def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3385def4c47SEmmanuel Vadot				clock-names = "timer", "pclk";
3395def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER0>;
3405def4c47SEmmanuel Vadot			};
3415def4c47SEmmanuel Vadot
342*b97ee269SEmmanuel Vadot			timer1: timer@502d0014 {
3435def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
344*b97ee269SEmmanuel Vadot				reg = <0x502D0014 0x14>;
345*b97ee269SEmmanuel Vadot				interrupts = <15>;
346*b97ee269SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER0>,
347*b97ee269SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
348*b97ee269SEmmanuel Vadot				clock-names = "timer", "pclk";
349*b97ee269SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER0>;
350*b97ee269SEmmanuel Vadot			};
351*b97ee269SEmmanuel Vadot
352*b97ee269SEmmanuel Vadot			timer2: timer@502e0000 {
353*b97ee269SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
354*b97ee269SEmmanuel Vadot				reg = <0x502E0000 0x14>;
355*b97ee269SEmmanuel Vadot				interrupts = <16>;
3565def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER1>,
3575def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3585def4c47SEmmanuel Vadot				clock-names = "timer", "pclk";
3595def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER1>;
3605def4c47SEmmanuel Vadot			};
3615def4c47SEmmanuel Vadot
362*b97ee269SEmmanuel Vadot			timer3: timer@502e0014 {
3635def4c47SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
364*b97ee269SEmmanuel Vadot				reg = <0x502E0014 0x114>;
365*b97ee269SEmmanuel Vadot				interrupts = <17>;
366*b97ee269SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER1>,
367*b97ee269SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
368*b97ee269SEmmanuel Vadot				clock-names = "timer", "pclk";
369*b97ee269SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER1>;
370*b97ee269SEmmanuel Vadot			};
371*b97ee269SEmmanuel Vadot
372*b97ee269SEmmanuel Vadot			timer4: timer@502f0000 {
373*b97ee269SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
374*b97ee269SEmmanuel Vadot				reg = <0x502F0000 0x14>;
375*b97ee269SEmmanuel Vadot				interrupts = <18>;
376*b97ee269SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER2>,
377*b97ee269SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
378*b97ee269SEmmanuel Vadot				clock-names = "timer", "pclk";
379*b97ee269SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER2>;
380*b97ee269SEmmanuel Vadot			};
381*b97ee269SEmmanuel Vadot
382*b97ee269SEmmanuel Vadot			timer5: timer@502f0014 {
383*b97ee269SEmmanuel Vadot				compatible = "snps,dw-apb-timer";
384*b97ee269SEmmanuel Vadot				reg = <0x502F0014 0x14>;
385*b97ee269SEmmanuel Vadot				interrupts = <19>;
3865def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_TIMER2>,
3875def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB0>;
3885def4c47SEmmanuel Vadot				clock-names = "timer", "pclk";
3895def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_TIMER2>;
3905def4c47SEmmanuel Vadot			};
3915def4c47SEmmanuel Vadot		};
3925def4c47SEmmanuel Vadot
3935def4c47SEmmanuel Vadot		apb1: bus@50400000 {
3945def4c47SEmmanuel Vadot			#address-cells = <1>;
3955def4c47SEmmanuel Vadot			#size-cells = <1>;
3965def4c47SEmmanuel Vadot			compatible = "simple-pm-bus";
397*b97ee269SEmmanuel Vadot			ranges = <0x50400000 0x50400000 0x40100>;
3985def4c47SEmmanuel Vadot			clocks = <&sysclk K210_CLK_APB1>;
3995def4c47SEmmanuel Vadot
4005def4c47SEmmanuel Vadot			wdt0: watchdog@50400000 {
4015def4c47SEmmanuel Vadot				compatible = "snps,dw-wdt";
4025def4c47SEmmanuel Vadot				reg = <0x50400000 0x100>;
4035def4c47SEmmanuel Vadot				interrupts = <21>;
4045def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_WDT0>,
4055def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB1>;
4065def4c47SEmmanuel Vadot				clock-names = "tclk", "pclk";
4075def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_WDT0>;
4085def4c47SEmmanuel Vadot			};
4095def4c47SEmmanuel Vadot
4105def4c47SEmmanuel Vadot			wdt1: watchdog@50410000 {
4115def4c47SEmmanuel Vadot				compatible = "snps,dw-wdt";
4125def4c47SEmmanuel Vadot				reg = <0x50410000 0x100>;
4135def4c47SEmmanuel Vadot				interrupts = <22>;
4145def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_WDT1>,
4155def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB1>;
4165def4c47SEmmanuel Vadot				clock-names = "tclk", "pclk";
4175def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_WDT1>;
4185def4c47SEmmanuel Vadot			};
4195def4c47SEmmanuel Vadot
4205def4c47SEmmanuel Vadot			sysctl: syscon@50440000 {
4215def4c47SEmmanuel Vadot				compatible = "canaan,k210-sysctl",
4225def4c47SEmmanuel Vadot					     "syscon", "simple-mfd";
4235def4c47SEmmanuel Vadot				reg = <0x50440000 0x100>;
4245def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_APB1>;
4255def4c47SEmmanuel Vadot				clock-names = "pclk";
4265def4c47SEmmanuel Vadot
4275def4c47SEmmanuel Vadot				sysclk: clock-controller {
4285def4c47SEmmanuel Vadot					#clock-cells = <1>;
4295def4c47SEmmanuel Vadot					compatible = "canaan,k210-clk";
4305def4c47SEmmanuel Vadot					clocks = <&in0>;
4315def4c47SEmmanuel Vadot				};
4325def4c47SEmmanuel Vadot
4335def4c47SEmmanuel Vadot				sysrst: reset-controller {
4345def4c47SEmmanuel Vadot					compatible = "canaan,k210-rst";
4355def4c47SEmmanuel Vadot					#reset-cells = <1>;
4365def4c47SEmmanuel Vadot				};
4375def4c47SEmmanuel Vadot
4385def4c47SEmmanuel Vadot				reboot: syscon-reboot {
4395def4c47SEmmanuel Vadot					compatible = "syscon-reboot";
4405def4c47SEmmanuel Vadot					regmap = <&sysctl>;
4415def4c47SEmmanuel Vadot					offset = <48>;
4425def4c47SEmmanuel Vadot					mask = <1>;
4435def4c47SEmmanuel Vadot					value = <1>;
4445def4c47SEmmanuel Vadot				};
4455def4c47SEmmanuel Vadot			};
4465def4c47SEmmanuel Vadot		};
4475def4c47SEmmanuel Vadot
4485def4c47SEmmanuel Vadot		apb2: bus@52000000 {
4495def4c47SEmmanuel Vadot			#address-cells = <1>;
4505def4c47SEmmanuel Vadot			#size-cells = <1>;
4515def4c47SEmmanuel Vadot			compatible = "simple-pm-bus";
452*b97ee269SEmmanuel Vadot			ranges = <0x52000000 0x52000000 0x2000200>;
4535def4c47SEmmanuel Vadot			clocks = <&sysclk K210_CLK_APB2>;
4545def4c47SEmmanuel Vadot
4555def4c47SEmmanuel Vadot			spi0: spi@52000000 {
4565def4c47SEmmanuel Vadot				#address-cells = <1>;
4575def4c47SEmmanuel Vadot				#size-cells = <0>;
4585def4c47SEmmanuel Vadot				compatible = "canaan,k210-spi";
4595def4c47SEmmanuel Vadot				reg = <0x52000000 0x100>;
4605def4c47SEmmanuel Vadot				interrupts = <1>;
4615def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_SPI0>,
4625def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB2>;
4635def4c47SEmmanuel Vadot				clock-names = "ssi_clk", "pclk";
4645def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_SPI0>;
4655def4c47SEmmanuel Vadot				reset-names = "spi";
4665def4c47SEmmanuel Vadot				num-cs = <4>;
4675def4c47SEmmanuel Vadot				reg-io-width = <4>;
4685def4c47SEmmanuel Vadot			};
4695def4c47SEmmanuel Vadot
4705def4c47SEmmanuel Vadot			spi1: spi@53000000 {
4715def4c47SEmmanuel Vadot				#address-cells = <1>;
4725def4c47SEmmanuel Vadot				#size-cells = <0>;
4735def4c47SEmmanuel Vadot				compatible = "canaan,k210-spi";
4745def4c47SEmmanuel Vadot				reg = <0x53000000 0x100>;
4755def4c47SEmmanuel Vadot				interrupts = <2>;
4765def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_SPI1>,
4775def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB2>;
4785def4c47SEmmanuel Vadot				clock-names = "ssi_clk", "pclk";
4795def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_SPI1>;
4805def4c47SEmmanuel Vadot				reset-names = "spi";
4815def4c47SEmmanuel Vadot				num-cs = <4>;
4825def4c47SEmmanuel Vadot				reg-io-width = <4>;
4835def4c47SEmmanuel Vadot			};
4845def4c47SEmmanuel Vadot
4855def4c47SEmmanuel Vadot			spi3: spi@54000000 {
4865def4c47SEmmanuel Vadot				#address-cells = <1>;
4875def4c47SEmmanuel Vadot				#size-cells = <0>;
4885def4c47SEmmanuel Vadot				compatible = "snps,dwc-ssi-1.01a";
4895def4c47SEmmanuel Vadot				reg = <0x54000000 0x200>;
4905def4c47SEmmanuel Vadot				interrupts = <4>;
4915def4c47SEmmanuel Vadot				clocks = <&sysclk K210_CLK_SPI3>,
4925def4c47SEmmanuel Vadot					 <&sysclk K210_CLK_APB2>;
4935def4c47SEmmanuel Vadot				clock-names = "ssi_clk", "pclk";
4945def4c47SEmmanuel Vadot				resets = <&sysrst K210_RST_SPI3>;
4955def4c47SEmmanuel Vadot				reset-names = "spi";
496*b97ee269SEmmanuel Vadot
4975def4c47SEmmanuel Vadot				num-cs = <4>;
4985def4c47SEmmanuel Vadot				reg-io-width = <4>;
4995def4c47SEmmanuel Vadot			};
5005def4c47SEmmanuel Vadot		};
5015def4c47SEmmanuel Vadot	};
5025def4c47SEmmanuel Vadot};
503