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

/dts-v1/;

#include <nxp/nxp_rt1060.dtsi>

/ {
	model = "NXP MIMXRT1060-EVK board";
	compatible = "nxp,mimxrt1062";

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

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

	sdram0: memory@80000000 {
		/* Micron MT48LC16M16A2B4-6AIT:G */
		device_type = "memory";
		reg = <0x80000000 0x2000000>;
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button-1 {
			label = "User SW8";
			gpios = <&gpio5 0 GPIO_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 26 0>,	/* A0 */
			   <1 0 &gpio1 27 0>,	/* A1 */
			   <2 0 &gpio1 20 0>,	/* A2 */
			   <3 0 &gpio1 21 0>,	/* A3 */
			   <4 0 &gpio1 17 0>,	/* A4 */
			   <5 0 &gpio1 16 0>,	/* A5 */
			   <6 0 &gpio1 23 0>,	/* D0 */
			   <7 0 &gpio1 22 0>,	/* D1 */
			   <8 0 &gpio1 11 0>,	/* D2 */
			   <9 0 &gpio1 24 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 &gpio1 3 0>,	/* D8 */
			   <15 0 &gpio1 2 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 */
	};

	panel {
		compatible = "rocktech,rk043fn02h-ct";
		port {
			lcd_panel_in: endpoint {
				remote-endpoint = <&lcd_panel_out>;
			};
		};
	};
};

arduino_serial: &lpuart3 {};

&flexspi {
	reg = <0x402a8000 0x4000>, <0x60000000 0x800000>;
	is25wp064: is25wp064@0 {
		compatible = "issi,is25wp064", "jedec,spi-nor";
		size = <67108864>;
		label = "IS25WP064";
		reg = <0>;
		spi-max-frequency = <133000000>;
		status = "okay";
		jedec-id = [9d 70 17];
	};
};

&lcdif {
	status = "okay";
	port {
		lcd_panel_out: endpoint {
			remote-endpoint = <&lcd_panel_in>;
		};
	};
};

&lpi2c1 {
	status = "okay";

	touch_controller: ft5336@38 {
		compatible = "focaltech,ft5336";
		reg = <0x38>;
		label = "FT5336";
		int-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
	};
};

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

&enet {
	status = "okay";
	ptp {
		status = "okay";
	};
};

&usb1 {
	status = "okay";
};

&usdhc1 {
	status = "okay";
	pwr-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&edma0 {
	status = "okay";
};
