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

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

	aliases {
		led0 = &green_led;
		sw0 = &user_button;
		kscan0 = &kscan_input;
		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;
		zephyr,keyboard-scan = &kscan_input;
	};

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

	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@38 {
		compatible = "focaltech,ft5336";
		reg = <0x38>;
		int-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;

		kscan_input: kscan-input {
			compatible = "zephyr,kscan-input";
		};
	};
};

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