/*
 * 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/display/panel.h>
#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;
		zephyr,flash-controller = &s26ks512s0;
		zephyr,flash = &s26ks512s0;
		zephyr,code-partition = &slot0_partition;
		zephyr,display = &lcdif;
	};

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

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

	lvgl_pointer {
		compatible = "zephyr,lvgl-pointer-input";
		input = <&ft5336>;
	};

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

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

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

&flexspi {
	status = "okay";
	ahb-prefetch;
	ahb-read-addr-opt;
	pinctrl-0 = <&pinmux_flexspi1>;
	pinctrl-names = "default";
	ahb-bufferable;
	ahb-cacheable;
	sck-differential-clock;
	combination-mode;
	rx-clock-source = <3>;
	reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(64)>;
	s26ks512s0: s26ks512s@0 {
		compatible = "nxp,imx-flexspi-hyperflash";
		size = <DT_SIZE_M(64*8)>;
		reg = <0>;
		spi-max-frequency = <166000000>;
		word-addressable;
		cs-interval-unit = <1>;
		cs-interval = <2>;
		cs-hold-time = <0>;
		cs-setup-time = <3>;
		data-valid-time = <1>;
		column-space = <3>;
		ahb-write-wait-unit = <2>;
		ahb-write-wait-interval = <20>;
		status = "okay";
		erase-block-size = <4096>;
		write-block-size = <16>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			boot_partition: partition@0 {
				label = "mcuboot";
				reg = <0x00000000 DT_SIZE_K(256)>;
			};
			slot0_partition: partition@40000 {
				label = "image-0";
				reg = <0x00040000 DT_SIZE_M(3)>;
			};
			slot1_partition: partition@340000 {
				label = "image-1";
				reg = <0x00340000 DT_SIZE_M(3)>;
			};
			scratch_partition: partition@640000 {
				label = "image-scratch";
				reg = <0x00640000 DT_SIZE_K(768)>;
			};
			storage_partition: partition@700000 {
				label = "storage";
				reg = <0x00700000 DT_SIZE_M(57)>;
			};
		};
	};
};

&lcdif {
	status = "okay";
	width = <480>;
	height = <272>;
	display-timings {
		compatible = "zephyr,panel-timing";
		hsync-len = <41>;
		hfront-porch = <4>;
		hback-porch = <8>;
		vsync-len = <10>;
		vfront-porch = <4>;
		vback-porch = <2>;
		de-active= <1>;
		pixelclk-active = <1>;
		hsync-active = <0>;
		vsync-active = <0>;
		clock-frequency = <9210240>;
	};
	pixel-format = <PANEL_PIXEL_FORMAT_BGR_565>;
	data-bus-width = "16-bit";
	pinctrl-0 = <&pinmux_lcdif>;
	pinctrl-names = "default";
	backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
	port {
		lcd_panel_out: endpoint {
			remote-endpoint = <&lcd_panel_in>;
		};
	};
};

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

	ft5336: ft5336@38 {
		compatible = "focaltech,ft5336";
		reg = <0x38>;
		int-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 {
	status = "okay";
	pinctrl-0 = <&pinmux_enet>;
	pinctrl-names = "default";
	int-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
	reset-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
	ptp {
		pinctrl-0 = <&pinmux_ptp>;
		pinctrl-names = "default";
		status = "okay";
	};
};

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

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