18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2019 Sean Anderson <seanga2@gmail.com>
48c2ecf20Sopenharmony_ci * Copyright (C) 2020 Western Digital Corporation or its affiliates.
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci#include <dt-bindings/clock/k210-clk.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/ {
98c2ecf20Sopenharmony_ci	/*
108c2ecf20Sopenharmony_ci	 * Although the K210 is a 64-bit CPU, the address bus is only 32-bits
118c2ecf20Sopenharmony_ci	 * wide, and the upper half of all addresses is ignored.
128c2ecf20Sopenharmony_ci	 */
138c2ecf20Sopenharmony_ci	#address-cells = <1>;
148c2ecf20Sopenharmony_ci	#size-cells = <1>;
158c2ecf20Sopenharmony_ci	compatible = "kendryte,k210";
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci	aliases {
188c2ecf20Sopenharmony_ci		serial0 = &uarths0;
198c2ecf20Sopenharmony_ci	};
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	/*
228c2ecf20Sopenharmony_ci	 * The K210 has an sv39 MMU following the priviledge specification v1.9.
238c2ecf20Sopenharmony_ci	 * Since this is a non-ratified draft specification, the kernel does not
248c2ecf20Sopenharmony_ci	 * support it and the K210 support enabled only for the !MMU case.
258c2ecf20Sopenharmony_ci	 * Be consistent with this by setting the CPUs MMU type to "none".
268c2ecf20Sopenharmony_ci	 */
278c2ecf20Sopenharmony_ci	cpus {
288c2ecf20Sopenharmony_ci		#address-cells = <1>;
298c2ecf20Sopenharmony_ci		#size-cells = <0>;
308c2ecf20Sopenharmony_ci		timebase-frequency = <7800000>;
318c2ecf20Sopenharmony_ci		cpu0: cpu@0 {
328c2ecf20Sopenharmony_ci			device_type = "cpu";
338c2ecf20Sopenharmony_ci			reg = <0>;
348c2ecf20Sopenharmony_ci			compatible = "kendryte,k210", "sifive,rocket0", "riscv";
358c2ecf20Sopenharmony_ci			riscv,isa = "rv64imafdc";
368c2ecf20Sopenharmony_ci			mmu-type = "none";
378c2ecf20Sopenharmony_ci			i-cache-size = <0x8000>;
388c2ecf20Sopenharmony_ci			i-cache-block-size = <64>;
398c2ecf20Sopenharmony_ci			d-cache-size = <0x8000>;
408c2ecf20Sopenharmony_ci			d-cache-block-size = <64>;
418c2ecf20Sopenharmony_ci			clocks = <&sysctl K210_CLK_CPU>;
428c2ecf20Sopenharmony_ci			clock-frequency = <390000000>;
438c2ecf20Sopenharmony_ci			cpu0_intc: interrupt-controller {
448c2ecf20Sopenharmony_ci				#interrupt-cells = <1>;
458c2ecf20Sopenharmony_ci				interrupt-controller;
468c2ecf20Sopenharmony_ci				compatible = "riscv,cpu-intc";
478c2ecf20Sopenharmony_ci			};
488c2ecf20Sopenharmony_ci		};
498c2ecf20Sopenharmony_ci		cpu1: cpu@1 {
508c2ecf20Sopenharmony_ci			device_type = "cpu";
518c2ecf20Sopenharmony_ci			reg = <1>;
528c2ecf20Sopenharmony_ci			compatible = "kendryte,k210", "sifive,rocket0", "riscv";
538c2ecf20Sopenharmony_ci			riscv,isa = "rv64imafdc";
548c2ecf20Sopenharmony_ci			mmu-type = "none";
558c2ecf20Sopenharmony_ci			i-cache-size = <0x8000>;
568c2ecf20Sopenharmony_ci			i-cache-block-size = <64>;
578c2ecf20Sopenharmony_ci			d-cache-size = <0x8000>;
588c2ecf20Sopenharmony_ci			d-cache-block-size = <64>;
598c2ecf20Sopenharmony_ci			clocks = <&sysctl K210_CLK_CPU>;
608c2ecf20Sopenharmony_ci			clock-frequency = <390000000>;
618c2ecf20Sopenharmony_ci			cpu1_intc: interrupt-controller {
628c2ecf20Sopenharmony_ci				#interrupt-cells = <1>;
638c2ecf20Sopenharmony_ci				interrupt-controller;
648c2ecf20Sopenharmony_ci				compatible = "riscv,cpu-intc";
658c2ecf20Sopenharmony_ci			};
668c2ecf20Sopenharmony_ci		};
678c2ecf20Sopenharmony_ci	};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci	sram: memory@80000000 {
708c2ecf20Sopenharmony_ci		device_type = "memory";
718c2ecf20Sopenharmony_ci		reg = <0x80000000 0x400000>,
728c2ecf20Sopenharmony_ci		      <0x80400000 0x200000>,
738c2ecf20Sopenharmony_ci		      <0x80600000 0x200000>;
748c2ecf20Sopenharmony_ci		reg-names = "sram0", "sram1", "aisram";
758c2ecf20Sopenharmony_ci	};
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci	clocks {
788c2ecf20Sopenharmony_ci		in0: oscillator {
798c2ecf20Sopenharmony_ci			compatible = "fixed-clock";
808c2ecf20Sopenharmony_ci			#clock-cells = <0>;
818c2ecf20Sopenharmony_ci			clock-frequency = <26000000>;
828c2ecf20Sopenharmony_ci		};
838c2ecf20Sopenharmony_ci	};
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci	soc {
868c2ecf20Sopenharmony_ci		#address-cells = <1>;
878c2ecf20Sopenharmony_ci		#size-cells = <1>;
888c2ecf20Sopenharmony_ci		compatible = "kendryte,k210-soc", "simple-bus";
898c2ecf20Sopenharmony_ci		ranges;
908c2ecf20Sopenharmony_ci		interrupt-parent = <&plic0>;
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci		sysctl: sysctl@50440000 {
938c2ecf20Sopenharmony_ci			compatible = "kendryte,k210-sysctl", "simple-mfd";
948c2ecf20Sopenharmony_ci			reg = <0x50440000 0x1000>;
958c2ecf20Sopenharmony_ci			#clock-cells = <1>;
968c2ecf20Sopenharmony_ci		};
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci		clint0: clint@2000000 {
998c2ecf20Sopenharmony_ci			#interrupt-cells = <1>;
1008c2ecf20Sopenharmony_ci			compatible = "riscv,clint0";
1018c2ecf20Sopenharmony_ci			reg = <0x2000000 0xC000>;
1028c2ecf20Sopenharmony_ci			interrupts-extended =  <&cpu0_intc 3 &cpu0_intc 7
1038c2ecf20Sopenharmony_ci						&cpu1_intc 3 &cpu1_intc 7>;
1048c2ecf20Sopenharmony_ci			clocks = <&sysctl K210_CLK_ACLK>;
1058c2ecf20Sopenharmony_ci		};
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci		plic0: interrupt-controller@c000000 {
1088c2ecf20Sopenharmony_ci			#interrupt-cells = <1>;
1098c2ecf20Sopenharmony_ci			interrupt-controller;
1108c2ecf20Sopenharmony_ci			compatible = "kendryte,k210-plic0", "riscv,plic0";
1118c2ecf20Sopenharmony_ci			reg = <0xC000000 0x4000000>;
1128c2ecf20Sopenharmony_ci			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 0xffffffff>,
1138c2ecf20Sopenharmony_ci					      <&cpu1_intc 11>, <&cpu1_intc 0xffffffff>;
1148c2ecf20Sopenharmony_ci			riscv,ndev = <65>;
1158c2ecf20Sopenharmony_ci			riscv,max-priority = <7>;
1168c2ecf20Sopenharmony_ci		};
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci		uarths0: serial@38000000 {
1198c2ecf20Sopenharmony_ci			compatible = "kendryte,k210-uarths", "sifive,uart0";
1208c2ecf20Sopenharmony_ci			reg = <0x38000000 0x1000>;
1218c2ecf20Sopenharmony_ci			interrupts = <33>;
1228c2ecf20Sopenharmony_ci			clocks = <&sysctl K210_CLK_CPU>;
1238c2ecf20Sopenharmony_ci		};
1248c2ecf20Sopenharmony_ci	};
1258c2ecf20Sopenharmony_ci};
126