/*
 * Copyright (c) 2019 Jan Van Winkel (jan.van_winkel@dxplore.eu)
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <posix/posix.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/gpio/gpio.h>

/ {
	model = "Native Sim Board";
	compatible = "zephyr,posix";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
		zephyr,flash = &flash0;
		zephyr,entropy = &rng;
		zephyr,flash-controller = &flashcontroller0;
		zephyr,display = &sdl_dc;
		zephyr,canbus = &can_loopback0;
		zephyr,code-partition = &slot0_partition;
	};

	aliases {
		eeprom-0 = &eeprom0;
		i2c-0 = &i2c0;
		spi-0 = &spi0;
		led0 = &led0;
		rtc = &rtc;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
			label = "Green LED";
		};
	};

	lvgl_pointer {
		compatible = "zephyr,lvgl-pointer-input";
		input = <&input_sdl_touch>;
	};

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

		cpu0: cpu@0 {
			compatible = "zephyr,native-posix-cpu";
			reg = <0>;
		};
	};

	flashcontroller0: flash-controller@0 {
		compatible = "zephyr,sim-flash";
		reg = <0x00000000 DT_SIZE_K(2048)>;

		#address-cells = <1>;
		#size-cells = <1>;
		erase-value = <0xff>;

		flash0: flash@0 {
			status = "okay";
			compatible = "soc-nv-flash";
			erase-block-size = <4096>;
			write-block-size = <1>;
			reg = <0x00000000 DT_SIZE_K(2048)>;

			partitions {
				compatible = "fixed-partitions";
				#address-cells = <1>;
				#size-cells = <1>;

				boot_partition: partition@0 {
					label = "mcuboot";
					reg = <0x00000000 0x0000C000>;
				};
				slot0_partition: partition@c000 {
					label = "image-0";
					reg = <0x0000C000 0x00069000>;
				};
				slot1_partition: partition@75000 {
					label = "image-1";
					reg = <0x00075000 0x00069000>;
				};
				scratch_partition: partition@de000 {
					label = "image-scratch";
					reg = <0x000de000 0x0001e000>;
				};
				storage_partition: partition@fc000 {
					label = "storage";
					reg = <0x000fc000 0x00004000>;
				};
			};
		};
	};

	eeprom0: eeprom {
		status = "okay";
		compatible = "zephyr,sim-eeprom";
		size = <DT_SIZE_K(32)>;
	};

	i2c0: i2c@100 {
		status = "okay";
		compatible = "zephyr,i2c-emul-controller";
		clock-frequency = <I2C_BITRATE_STANDARD>;
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x100 4>;
	};

	spi0: spi@200 {
		status = "okay";
		compatible = "zephyr,spi-emul-controller";
		clock-frequency = <50000000>;
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x200 4>;
	};

	espi0: espi@300 {
		status = "okay";
		compatible = "zephyr,espi-emul-controller";
		reg = <0x300 4>;
		#address-cells = <1>;
		#size-cells = <0>;
	};

	uart0: uart {
		status = "okay";
		compatible = "zephyr,native-posix-uart";
		/* Dummy current-speed entry to comply with serial
		 * DTS binding
		 */
		current-speed = <0>;
	};

	uart1: uart_1 {
		status = "okay";
		compatible = "zephyr,native-posix-uart";
		/* Dummy current-speed entry to comply with serial
		 * DTS binding
		 */
		current-speed = <0>;
	};

	rng: rng {
		status = "okay";
		compatible = "zephyr,native-posix-rng";
	};

	counter0: counter {
		status = "okay";
		compatible = "zephyr,native-posix-counter";
	};

	gpio0: gpio@800 {
		status = "okay";
		compatible = "zephyr,gpio-emul";
		reg = <0x800 0x4>;
		rising-edge;
		falling-edge;
		high-level;
		low-level;
		gpio-controller;
		#gpio-cells = <2>;
	};

	zephyr_udc0: udc0 {
		compatible = "zephyr,native-posix-udc";
	};

	sdl_dc: sdl_dc {
		compatible = "zephyr,sdl-dc";
		height = <240>;
		width = <320>;
	};

	input_sdl_touch: input-sdl-touch {
		compatible = "zephyr,input-sdl-touch";
	};

	can_loopback0: can_loopback0 {
		status = "okay";
		compatible = "zephyr,can-loopback";
		bus-speed = <125000>;
	};

	can0: can {
		status = "disabled";
		compatible = "zephyr,native-linux-can";
		/* adjust zcan0 to desired host interface or create an alternative
		 * name, e.g.: sudo ip link property add dev vcan0 altname zcan0
		 */
		host-interface = "zcan0";
		bus-speed = <125000>;
	};

	rtc: rtc {
		status = "okay";
		compatible = "zephyr,rtc-emul";
		alarms-count = <2>;
	};

	adc0: adc {
		compatible = "zephyr,adc-emul";
		nchannels = <2>;
		#io-channel-cells = <1>;
		status = "okay";
	};

	dma: dma {
		compatible = "zephyr,dma-emul";
		#dma-cells = <1>;
		stack-size = <4096>;
	};
};
