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

/dts-v1/;

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

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

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

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

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

				firq: firq {
					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;

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

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

		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>;
				label = "GPIO_LO";
				#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>;
				label = "GPIO_HI";
				#gpio-cells = <2>;
			};
		};

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

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