/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright (c) 2019 Intel Corp. */

/dts-v1/;

#include <mem.h>

#ifndef DT_DRAM_BASE
#define DT_DRAM_BASE		0
#endif
#ifndef DT_DRAM_SIZE
#define DT_DRAM_SIZE		DT_SIZE_M(32)
#endif
#define DT_FLASH_SIZE		DT_SIZE_K(4096)

#include <intel/atom.dtsi>
#include <zephyr/dt-bindings/pcie/pcie.h>

/ {
	model = "QEMU X86 emulator";
	compatible = "qemu,x86_emulator";

	flash0: flash@500000 {
		compatible = "soc-nv-flash";
		reg = <0x00500000 DT_FLASH_SIZE>;
	};

	aliases {
		uart-0 = &uart0;
		uart-1 = &uart1;
		eeprom-0 = &eeprom0;
		eeprom-1 = &eeprom1;
		rtc = &rtc;
	};

	chosen {
		zephyr,sram = &dram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,bt-uart = &uart1;
		zephyr,uart-pipe = &uart1;
		zephyr,bt-mon-uart = &uart1;
		zephyr,code-partition = &slot0_partition;
		zephyr,flash-controller = &sim_flash;
		zephyr,ieee802154 = &ieee802154;
		zephyr,canbus = &can0;
	};

	pcie0: pcie0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "pcie-controller";
		acpi-hid = "PNP0A08";
		ranges;

		can0: can0 {
			compatible = "kvaser,pcican";
			status = "okay";
			vendor-id = <0x10e8>;
			device-id = <0x8406>;
			interrupts = <11 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			bus-speed = <125000>;

			can-transceiver {
				max-bitrate = <1000000>;
			};
		};

		eth0: eth0 {
			compatible = "intel,e1000";

			vendor-id = <0x8086>;
			device-id = <0x100e>;

			interrupts = <11 IRQ_TYPE_LOWEST_EDGE_RISING 3>;
			interrupt-parent = <&intc>;

			status = "okay";
		};
	};

	sim_flash: sim_flash {
		compatible = "zephyr,sim-flash";

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

		flash_sim0: flash_sim@0 {
			compatible = "soc-nv-flash";
			reg = <0x00000000 DT_SIZE_K(1024)>;

			erase-block-size = <1024>;
			write-block-size = <4>;
		};
	};

	eeprom1: eeprom1 {
		status = "okay";
		compatible = "zephyr,emu-eeprom";
		size = <DT_SIZE_K(4)>;
		pagesize = <DT_SIZE_K(8)>;
		partition = <&eepromemu_partition>;
		rambuf;
	};

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

	ieee802154: ieee802154 {
		compatible = "zephyr,ieee802154-uart-pipe";
	};

};

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

&uart1 {
	status = "okay";
	current-speed = <115200>;
};

&hpet {
	status = "okay";
};

&flash_sim0 {

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

		/*
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled.
		 */
		storage_partition: partition@1000 {
			label = "storage";
			reg = <0x00001000 0x00010000>;
		};

		slot0_partition: partition@11000 {
			label = "image-0";
			reg = <0x00011000 0x00010000>;
		};
		slot1_partition: partition@21000 {
			label = "image-1";
			reg = <0x00021000 0x00010000>;
		};
		eepromemu_partition: partition@31000 {
			label = "eeprom-emu";
			reg = <0x00031000 0x00010000>;
		};
	};
};
