/*
 * Copyright (c) 2023 TiaC Systems
 * Copyright (c) 2019, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

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

/ {
	model = "NXP MIMXRT1010-EVK board";
	compatible = "nxp,mimxrt1010";

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

	chosen {
		zephyr,sram = &ocram;
		zephyr,itcm = &itcm;
		zephyr,console = &lpuart1;
		zephyr,shell-uart = &lpuart1;
		zephyr,flash = &at25sf128a;
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button-1 {
			label = "User SW4";
			gpios = <&gpio2 5 (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 21 0>,	/* A0 */
			   <1 0 &gpio1 23 0>,	/* A1 */
			   <2 0 &gpio1 24 0>,	/* A2 */
			   <3 0 &gpio1 28 0>,	/* A3 */
			   <4 0 &gpio1 15 0>,	/* A4 (shared with D6) */
			   <5 0 &gpio1 16 0>,	/* A5 (shared with D7) */
			   <6 0 &gpio1 9 0>,	/* D0 */
			   <7 0 &gpio1 10 0>,	/* D1 */
			   <8 0 &gpio1 19 0>,	/* D2 (shared with D10) */
			   <9 0 &gpio1 20 0>,	/* D3 (shared with D13) */
			   /* R800 not populated,  D4 */
			   /* R793 not populated,  D5 (shared with D14) */
			   <12 0 &gpio1 15 0>,	/* D6 (shared with A4) */
			   <13 0 &gpio1 16 0>,	/* D7 (shared with A5) */
			   <14 0 &gpio2 2 0>,	/* D8 */
			   /* R795 not populated,  D9 */
			   <16 0 &gpio1 19 0>,	/* D10 (shared with D2) */
			   <17 0 &gpio1 18 0>,	/* D11 */
			   <18 0 &gpio1 17 0>,	/* D12 */
			   <19 0 &gpio1 20 0>,	/* D13 (shared with D3) */
			   <20 0 &gpio1 1 0>,	/* D14 */
			   <21 0 &gpio1 2 0>;	/* D15 */
	};
};

arduino_serial: &lpuart1 {};

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

&flexspi {
	status = "okay";
	reg = <0x400a0000 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];
	};
};

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

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

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

&edma0 {
	status = "okay";
};

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