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

/dts-v1/;

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

/ {
	model = "NXP MIMXRT1050-EVK board";
	compatible = "nxp,mimxrt1052";

	aliases {
		led0 = &green_led;
		sw0 = &user_button;
		watchdog0 = &wdog0;
		magn0 = &fxos8700;
		accel0 = &fxos8700;
		sdhc0 = &usdhc1;
	};

	chosen {
		zephyr,sram = &sdram0;
		zephyr,itcm = &itcm;
		zephyr,dtcm = &dtcm;
		zephyr,console = &lpuart1;
		zephyr,shell-uart = &lpuart1;
	};

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

	/*
	 * This node describes the GPIO pins of the parallel FPC interface,
	 * This interface is standard to several NXP EVKs, and is used with
	 * several parallel LCD displays (available as zephyr shields)
	 */
	nxp_parallel_lcd_connector: parallel-connector {
		compatible = "nxp,parallel-lcd-connector";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<0  0 &gpio2 31 0>;	/* Pin 1, BL+ */
	};

	/*
	 * This node describes the GPIO pins of the I2C display FPC interface,
	 * This interface is standard to several NXP EVKs, and is used with
	 * several parallel LCD displays (available as zephyr shields)
	 */
	nxp_i2c_touch_fpc: i2c-touch-connector {
		compatible = "nxp,i2c-tsc-fpc";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<1  0 &gpio1 2 0>,	/* Pin 2, LCD touch RST */
				<2  0 &gpio1 11 0>;	/* Pin 3, LCD touch INT */
	};

	leds {
		compatible = "gpio-leds";
		green_led: led_0 {
			gpios = <&gpio1 9 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 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 1 0>,	/* D14 */
			   <21 0 &gpio1 0 0>;	/* D15 */
	};
};

arduino_serial: &lpuart3 {
	pinctrl-0 = <&pinmux_lpuart3>;
	pinctrl-1 = <&pinmux_lpuart3_sleep>;
	pinctrl-names = "default", "sleep";
};

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

nxp_touch_i2c: &lpi2c1 {};

zephyr_lcdif: &lcdif {
	pinctrl-0 = <&pinmux_lcdif>;
	pinctrl-names = "default";
};

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

	fxos8700: fxos8700@1f {
		compatible = "nxp,fxos8700";
		reg = <0x1f>;

		/* Two zero ohm resistors (R263 and R264) isolate sensor
		 * interrupt gpios from the soc and are unpopulated by default.
		 * Note that if you populate them, they conflict with LCD and
		 * Ethernet interrupt gpios.
		 */
		int1-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
	};
};

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

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

&lpspi3 {
	status = "okay";
	/* DMA channels 2 and 3, muxed to LPSPI3 RX and TX */
	dmas = <&edma0 2 15>, <&edma0 3 16>;
	dma-names = "rx", "tx";
	pinctrl-0 = <&pinmux_lpspi3>;
	pinctrl-names = "default";
};

&enet_mac {
	status = "okay";
	pinctrl-0 = <&pinmux_enet>;
	pinctrl-names = "default";
	phy-handle = <&phy>;
	zephyr,random-mac-address;
	phy-connection-type = "rmii";
};

&enet_mdio {
	status = "okay";
	pinctrl-0 = <&pinmux_enet_mdio>;
	pinctrl-names = "default";
	phy: phy@0 {
		compatible = "microchip,ksz8081";
		reg = <0>;
		status = "okay";
		reset-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
		int-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
		microchip,interface-type = "rmii";
	};
};

&enet_ptp_clock {
	status = "okay";
	pinctrl-0 = <&pinmux_ptp>;
	pinctrl-names = "default";
};

zephyr_udc0: &usb1 {
	status = "okay";
};

&usdhc1 {
	status = "okay";
	pwr-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&pinmux_usdhc1>;
	pinctrl-1 = <&pinmux_usdhc1_slow>;
	pinctrl-2 = <&pinmux_usdhc1_med>;
	pinctrl-3 = <&pinmux_usdhc1_fast>;
	pinctrl-names = "default", "slow", "med", "fast";
	sdmmc {
		compatible = "zephyr,sdmmc-disk";
		status = "okay";
	};
};

&wdog0 {
	status = "okay";
};

&edma0 {
	status = "okay";
};

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