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

/dts-v1/;

#include <nxp/nxp_rt1064.dtsi>

/ {
	model = "NXP MIMXRT1064-EVK board";
	compatible = "nxp,mimxrt1064";

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

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

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

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

	pwmleds {
		compatible = "pwm-leds";

		green_pwm_led: green_pwm_led {
			pwms = <&flexpwm2_pwm3 0>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button-1 {
			label = "User SW8";
			gpios = <&gpio5 0 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 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_i2c: &i2c1 {};

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

&i2c1 {
	status = "okay";

	mt9m114@48 {
		compatible = "aptina,mt9m114";
		reg = <0x48>;
		label = "MT9M114";
		status = "okay";

		port {
			mt9m114_ep_out: endpoint {
				remote-endpoint = <&csi_ep_in>;
			};
		};
	};
};

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

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

&usbd1 {
	status = "okay";
};

&csi {
	status = "okay";
	sensor-label = "MT9M114";

	port {
		csi_ep_in: endpoint {
			remote-endpoint = <&mt9m114_ep_out>;
		};
	};
};
