/*
 * Copyright 2019,2023 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_rt1015.dtsi>
#include "mimxrt1015_evk-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "NXP MIMXRT1015-EVK board";
	compatible = "nxp,mimxrt1015";

	aliases {
		led0 = &green_led;
		sw0 = &user_button;
	};

	chosen {
		zephyr,sram = &ocram;
		zephyr,itcm = &itcm;
		zephyr,dtcm = &dtcm;
		zephyr,console = &lpuart1;
		zephyr,shell-uart = &lpuart1;
		zephyr,flash = &at25sf128a;
		zephyr,flash-controller = &at25sf128a;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		green_led: led-1 {
			gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button-1 {
			label = "User SW4";
			gpios = <&gpio2 9 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio1 29 0>,	/* A0 */
			   <1 0 &gpio1 14 0>,	/* A1 */
			   <2 0 &gpio1 28 0>,	/* A2 */
			   <3 0 &gpio1 26 0>,	/* A3 */
			   <4 0 &gpio1 31 0>,	/* A4 */
			   <5 0 &gpio1 30 0>,	/* A5 */
			   <6 0 &gpio3 1 0>,	/* D0 */
			   <7 0 &gpio3 0 0>,	/* D1 */
			   <8 0 &gpio2 20 0>,	/* D2 */
			   <9 0 &gpio2 26 0>,	/* D3 */
			   <10 0 &gpio3 2 0>,	/* D4 */
			   <11 0 &gpio2 27 0>,	/* D5 */
			   <12 0 &gpio1 27 0>,	/* D6 */
			   <13 0 &gpio1 15 0>,	/* D7 */
			   <14 0 &gpio2 21 0>,	/* D8 */
			   <15 0 &gpio2 22 0>,	/* D9 */
			   <16 0 &gpio1 11 0>,	/* D10 */
			   <17 0 &gpio1 12 0>,	/* D11 */
			   <18 0 &gpio1 13 0>,	/* D12 */
			   <19 0 &gpio1 10 0>,	/* D13 */
			   <20 0 &gpio1 31 0>,	/* D14 */
			   <21 0 &gpio1 30 0>;	/* D15 */
	};
};

arduino_serial: &lpuart4 {
	pinctrl-0 = <&pinmux_lpuart4>;
	pinctrl-1 = <&pinmux_lpuart4_sleep>;
	pinctrl-names = "default", "sleep";
};

&flexspi {
	status = "okay";
	reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(16)>;
	at25sf128a: at25sf128a@0 {
		compatible = "nxp,imx-flexspi-nor";
		size = <DT_SIZE_M(16 * 8)>;
		reg = <0>;
		spi-max-frequency = <133000000>;
		status = "okay";
		jedec-id = [1f 89 01];
		erase-block-size = <4096>;
		write-block-size = <1>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;
			boot_partition: partition@0 {
				label = "mcuboot";
				reg = <0x00000000 DT_SIZE_K(64)>;
			};
			slot0_partition: partition@10000 {
				label = "image-0";
				reg = <0x00010000 DT_SIZE_M(7)>;
			};
			slot1_partition: partition@710000 {
				label = "image-1";
				reg = <0x00710000 DT_SIZE_M(7)>;
			};
			storage_partition: partition@E10000 {
				label = "storage";
				reg = <0x00E10000 DT_SIZE_K(1984)>;
			};
		};
	};
};

&lpi2c1 {
	status = "okay";
	pinctrl-0 = <&pinmux_lpi2c1>;
	pinctrl-names = "default";
};

&lpuart1 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&pinmux_lpuart1>;
	pinctrl-1 = <&pinmux_lpuart1_sleep>;
	pinctrl-names = "default", "sleep";
};

&lpspi1 {
	status = "okay";
	/* DMA channels 0 and 1, muxed to LPSPI1 RX and TX */
	dmas = <&edma0 0 13>, <&edma0 1 14>;
	dma-names = "rx", "tx";
	pinctrl-0 = <&pinmux_lpspi1>;
	pinctrl-names = "default";
};

zephyr_udc0: &usb1 {
	status = "okay";
};

&adc1 {
	status = "okay";
	pinctrl-0 = <&pinmux_adc1>;
	pinctrl-names = "default";
};

&edma0 {
	status = "okay";
};

&sai1 {
	pinctrl-0 = <&pinmux_sai1>;
	pinctrl-names = "default";
};

/* GPT and Systick are enabled. If power management is enabled, the GPT
 * timer will be used instead of systick, as allows the core clock to
 * be gated.
 */
&gpt_hw_timer {
	status = "okay";
};

&systick {
	status = "okay";
};
