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

/dts-v1/;

#include <neorv32.dtsi>
#include <freq.h>
#include <mem.h>

/ {
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		led3 = &led3;
	};

	chosen {
		zephyr,flash = &imem;
		zephyr,sram = &dmem;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-pipe = &uart0;
	};

	soc {
		imem: memory@0 {
			compatible = "soc-nv-flash", "mmio-sram";
			reg = <0x0 DT_SIZE_K(64)>;
		};

		bootrom: memory@ffff0000 {
			compatible = "soc-nv-flash", "mmio-sram";
			reg = <0xffff0000 DT_SIZE_K(4)>;
		};

		dmem: memory@80000000 {
			compatible = "mmio-sram";
			reg = <0x80000000 DT_SIZE_K(32)>;
		};
	};

	leds {
		compatible = "gpio-leds";
		led0: led0 {
			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
			label = "LED_0";
		};

		led1: led1 {
			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
			label = "LED_1";
		};

		led2: led2 {
			gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
			label = "LED_2";
		};

		led3: led3 {
			gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
			label = "LED_3";
		};
	};
};

&cpu0 {
	clock-frequency = <DT_FREQ_M(100)>;
};

&uart0 {
	status = "okay";
	current-speed = <19200>;
};

&gpio_lo {
	status = "okay";
};

&gpio_hi {
	status = "okay";
};
