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

/dts-v1/;

#include <nxp/nxp_rt1015.dtsi>

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

	aliases {
		gpio-1= &gpio1;
		gpio-2= &gpio2;
		gpio-3= &gpio3;
		gpio-4= &gpio4;
		gpio-5= &gpio5;
		i2c-1 = &i2c1;
		uart-1 = &uart1;
		uart-4 = &uart4;
		led0 = &green_led;
		sw0 = &user_button;
	};

	chosen {
		zephyr,console = &uart1;
		zephyr,shell-uart = &uart1;
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button-1 {
			label = "User SW4";
			gpios = <&gpio2 9 GPIO_INT_ACTIVE_LOW>;
		};
	};

	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: &uart4 {};

&flexspi0 {
	reg = <0x402a8000 0x4000>, <0x60000000 0x1000000>;
	at25sf128a: at25sf128a@0 {
		compatible = "adesto,at25sf128a", "jedec,spi-nor";
		size = <134217728>;
		label = "AT25SF128A";
		reg = <0>;
		spi-max-frequency = <133000000>;
		status = "okay";
		jedec-id = [1f 89 01];
	};
};

&i2c1 {
	status = "okay";
};

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

&usbd1 {
	status = "okay";
};
