/*
 * Copyright (c) 2021 Henrik Brix Andersen <henrik@brixandersen.dk>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <skeleton.dtsi>
#include <zephyr/dt-bindings/gpio/gpio.h>

/ {
	chosen {
		zephyr,entropy = &trng;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu0: cpu@0 {
			compatible = "neorv32-cpu", "riscv";
			riscv,isa = "rv32imc_zicsr";
			reg = <0>;
			device_type = "cpu";

			intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#address-cells = <1>;
				#interrupt-cells = <1>;

				firq: firq {
					#address-cells = <1>;
					interrupt-map-mask = <0x0 0xffffffff>;
					interrupt-map = <
						0  0 &intc 0 16
						0  1 &intc 0 17
						0  2 &intc 0 18
						0  3 &intc 0 19
						0  4 &intc 0 20
						0  5 &intc 0 21
						0  6 &intc 0 22
						0  7 &intc 0 23
						0  8 &intc 0 24
						0  9 &intc 0 25
						0 10 &intc 0 26
						0 11 &intc 0 27
						0 12 &intc 0 28
						0 13 &intc 0 29
						0 14 &intc 0 30
						0 15 &intc 0 31
					>;
					#interrupt-cells = <1>;
				};
			};
		};
	};

	soc {
		compatible = "simple-bus";
		interrupt-parent = <&firq>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		mtimer: timer@ffffff90 {
			compatible = "neorv32-machine-timer";
			reg = <0xffffff90 0x10>;
			interrupts = <7>;
		};

		uart0: serial@ffffffa0 {
			compatible = "neorv32-uart";
			status = "disabled";
			reg = <0xffffffa0 8>;
			interrupts = <2>, <3>;
			interrupt-names = "RX", "TX";
			syscon = <&sysinfo>;
		};

		trng: rng@ffffffb8 {
			compatible = "neorv32-trng";
			status = "disabled";
			reg = <0xffffffb8 4>;
			syscon = <&sysinfo>;
		};

		gpio: gpio {
			compatible = "simple-bus";
			gpio-map-mask = <0xffffffe0 0xffffffc0>;
			gpio-map-pass-thru = <0x1f 0x3f>;
			gpio-map = <
				0x00 0x0 &gpio_lo 0x0 0x0
				0x20 0x0 &gpio_hi 0x0 0x0
			>;
			#gpio-cells = <2>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			gpio_lo: gpio@ffffffc0 {
				compatible = "neorv32-gpio";
				status = "disabled";
				reg = <0xffffffc0 4 0xffffffc8 4>;
				reg-names = "input", "output";
				gpio-controller;
				ngpios = <32>;
				syscon = <&sysinfo>;
				#gpio-cells = <2>;
			};

			gpio_hi: gpio@ffffffc4 {
				compatible = "neorv32-gpio";
				status = "disabled";
				reg = <0xffffffc4 4 0xffffffcc 4>;
				reg-names = "input", "output";
				gpio-controller;
				ngpios = <32>;
				syscon = <&sysinfo>;
				#gpio-cells = <2>;
			};
		};

		uart1: serial@ffffffd0 {
			compatible = "neorv32-uart";
			status = "disabled";
			reg = <0xffffffd0 8>;
			interrupts = <4>, <5>;
			interrupt-names = "RX", "TX";
			syscon = <&sysinfo>;
		};

		sysinfo: syscon@ffffffe0 {
			compatible = "neorv-sysinfo", "syscon";
			status = "okay";
			reg = <0xffffffe0 32>;
		};
	};
};
