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

/dts-v1/;

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

/ {
	model = "NXP MIMXRT1040-EVK board";
	compatible = "nxp,mimxrt1042";

	aliases {
		led0 = &green_led;
		sw0 = &user_button;
		pwm-0 = &flexpwm1_pwm3;
	};

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

	sdram0: memory@80000000 {
		/* Winbond W9825G6KH SDRAM */
		device_type = "memory";
		reg = <0x80000000 DT_SIZE_M(32)>;
	};

	leds {
		compatible = "gpio-leds";
		green_led: led_0 {
			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button_0 {
			label = "User SW8";
			gpios = <&gpio5 0 (GPIO_PULL_UP | 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 14 0>,	/* A0 */
			   <1 0 &gpio1 15 0>,	/* A1 */
			   <2 0 &gpio1 20 0>,	/* A2 */
			   <3 0 &gpio1 21 0>,	/* A3 */
			   <4 0 &gpio1 22 0>,	/* A4 */
			   <5 0 &gpio1 23 0>,	/* A5 */
			   <6 0 &gpio3 1 0>,	/* D0 */
			   <7 0 &gpio3 0 0>,	/* D1 */
			   <8 0 &gpio1 11 0>,	/* D2 */
			   <9 0 &gpio3 2 0>,	/* D3 */
			   <10 0 &gpio1 9 0>,	/* D4 */
			   <11 0 &gpio1 10 0>,	/* D5 */
			   <12 0 &gpio1 18 0>,	/* D6 */
			   <13 0 &gpio1 19 0>,	/* D7 */
			   <14 0 &gpio2 30 0>,	/* D8 */
			   <15 0 &gpio2 31 0>,	/* D9 */
			   <16 0 &gpio3 13 0>,	/* D10 */
			   <17 0 &gpio3 14 0>,	/* D11 */
			   <18 0 &gpio3 15 0>,	/* D12 */
			   <19 0 &gpio3 12 0>,	/* D13 */
			   <20 0 &gpio1 17 0>,	/* D14 */
			   <21 0 &gpio1 16 0>;	/* D15 */
	};
};

&flexspi {
	status = "okay";
	reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
	/* Winbond external flash */
	w25q64jvssiq: w25q64jvssiq@0 {
		compatible = "nxp,imx-flexspi-nor";
		size = <(DT_SIZE_M(8) * 8)>;
		reg = <0>;
		spi-max-frequency = <133000000>;
		status = "okay";
		jedec-id = [ef 40 17];
		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(3)>;
			};
			slot1_partition: partition@310000 {
				label = "image-1";
				reg = <0x00310000 DT_SIZE_M(3)>;
			};
			storage_partition: partition@610000 {
				label = "storage";
				reg = <0x00610000 DT_SIZE_K(1984)>;
			};
		};
	};
};

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

&flexpwm1_pwm3 {
	status = "okay";
	pinctrl-0 = <&pinmux_flexpwm1_pwm3>;
	pinctrl-names = "default";
};

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

&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";
};

&edma0 {
	status = "okay";
};

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

/* Leave LPI2C3 disabled by default, since it conflicts with LPSPI1 pins */
&lpi2c3 {
	pinctrl-0 = <&pinmux_lpi2c3>;
	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";
};
