Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

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