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

	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";
		sjw = <1>;
		sample-point = <875>;
		bus-speed = <125000>;
	};

	can0: can {
		status = "disabled";
		compatible = "zephyr,native-posix-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";
		sjw = <1>;
		sample-point = <875>;
		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";
	};
};
