/*
 * 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";
			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";
		};
	};
};
