/*
 * Copyright 2016 Freescale Semiconductor, Inc.
 * Copyright 2017-2018 NXP.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;

#include "imx7ulp.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "NXP i.MX7ULP EVK";
	compatible = "fsl,imx7ulp-evk", "fsl,imx7ulp", "Generic DT based system";

	aliases {
		gpio4 = &rpmsg_gpio0;
		gpio5 = &rpmsg_gpio1;
	};

	chosen {
		stdout-path = &lpuart4;
	};

	memory {
		device_type = "memory";
		reg = <0x60000000 0x40000000>;
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm0 1 50000>;
		brightness-levels = <0 20 25 30 35 40 100>;
		default-brightness-level = <6>;
		status = "okay";
	};

	mipi_dsi_reset: mipi-dsi-reset {
		compatible = "gpio-reset";
		reset-gpios = <&gpio_ptc 19 GPIO_ACTIVE_LOW>;
		reset-delay-us = <1000>;
		#reset-cells = <0>;
	};

	modem_reset: modem-reset {
		compatible = "gpio-reset";
		reset-gpios = <&rpmsg_gpio0 15 GPIO_ACTIVE_LOW>;
		reset-delay-us = <1000>;
		#reset-cells = <0>;
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb_otg1_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&pinctrl_usbotg1_vbus>;
			pinctrl-1 = <&pinctrl_usbotg1_vbus>;
			regulator-name = "usb_otg1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio_ptc 0 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};

		reg_vsd_3v3: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "VSD_3V3";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio_ptd 0 GPIO_ACTIVE_HIGH>;
			off-on-delay = <20000>;
			enable-active-high;
		};

		reg_sd1_vmmc: sd1_regulator {
			compatible = "regulator-fixed";
			regulator-name = "WLAN_EN";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&rpmsg_gpio0 14 GPIO_ACTIVE_HIGH>;
			off-on-delay = <20000>;
			startup-delay-us = <100>;
			enable-active-high;
		};
	};

	pf1550-rpmsg {
		compatible = "fsl,pf1550-rpmsg";
		sw1_reg: SW1 {
				regulator-name = "SW1";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1387500>;
				regulator-boot-on;
				regulator-always-on;
		};

		sw2_reg: SW2 {
				regulator-name = "SW2";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1387500>;
				regulator-boot-on;
				regulator-always-on;
		};

		sw3_reg: SW3 {
				regulator-name = "SW3";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
		};

		vref_reg: VREFDDR {
				regulator-name = "VREFDDR";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-boot-on;
				regulator-always-on;
		};

		vldo1_reg: LDO1 {
				regulator-name = "LDO1";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
		};

		vldo2_reg: LDO2 {
				regulator-name = "LDO2";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
		};

		vldo3_reg: LDO3 {
				regulator-name = "LDO3";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
		};
	};

	rpmsg_i2s: rpmsg-i2s {
		compatible = "fsl,imx7ulp-rpmsg-i2s";
		/* the audio device index in m4 domain */
		fsl,audioindex = <0> ;
		status = "okay";
	};

	rpmsg_gpio0: rpmsg-gpio0 {
		compatible = "fsl,imx-rpmsg-gpio";
		port_idx = <0>;
		gpio-controller;
		#gpio-cells = <2>;
		#interrupt-cells = <2>;
		interrupt-controller;
		interrupt-parent = <&rpmsg_gpio0>;
		status = "okay";
	};

	rpmsg_gpio1: rpmsg-gpio1 {
		compatible = "fsl,imx-rpmsg-gpio";
		port_idx = <1>;
		gpio-controller;
		#gpio-cells = <2>;
		#interrupt-cells = <2>;
		interrupt-controller;
		interrupt-parent = <&rpmsg_gpio1>;
		status = "okay";
	};

	rpmsg_keys: rpmsg-keys {
		compatible = "fsl,rpmsg-keys";

		volume-up {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
		};

		volume-down {
			label = "Volume Down";
			linux,code = <KEY_VOLUMEDOWN>;
		};

		power-on {
			label = "PowerOn";
			linux,code = <KEY_POWER>;
			rpmsg-key,wakeup;
		};
	};

	rpmsg_sensor: rpmsg-sensor {
		compatible = "fsl,rpmsg-input";
	};

	sound-rpmsg {
		compatible = "fsl,imx-audio-rpmsg";
		model = "rpmsg-audio";
		cpu-dai = <&rpmsg_i2s>;
		rpmsg-out;
		rpmsg-in;
		audio-routing =
			"Headphone Jack", "HP_L",
			"Headphone Jack", "HP_R",
			"Ext Spk", "SPK_LP",
			"Ext Spk", "SPK_LN",
			"Ext Spk", "SPK_RP",
			"Ext Spk", "SPK_RN",
			"LINPUT2", "Mic Jack",
			"LINPUT3", "Mic Jack",
			"RINPUT1", "Main MIC",
			"RINPUT2", "Main MIC",
			"Mic Jack", "MICB",
			"Main MIC", "MICB",
			"Playback", "CPU-Playback",
			"CPU-Capture", "Capture";
	};
};

&cpu0 {
	arm-supply= <&sw1_reg>;
};

&iomuxc1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1>;

	imx7ulp-evk {
		pinctrl_hog_1: hoggrp-1 {
			fsl,pins = <
				IMX7ULP_PAD_PTC1__PTC1		0x20000
			>;
		};

		pinctrl_pwm0: pwm0_grp {
			fsl,pins = <
				IMX7ULP_PAD_PTF2__TPM4_CH1	0x3
			>;
		};

		pinctrl_lpi2c5: lpi2c5grp {
			fsl,pins = <
				IMX7ULP_PAD_PTC4__LPI2C5_SCL	0x27
				IMX7ULP_PAD_PTC5__LPI2C5_SDA	0x27
			>;
		};

		pinctrl_mipi_dsi_reset: mipi_dsi_reset_grp {
			fsl,pins = <
				IMX7ULP_PAD_PTC19__PTC19	0x20003
			>;
		};

		pinctrl_lpuart4: lpuart4grp {
			fsl,pins = <
				IMX7ULP_PAD_PTC3__LPUART4_RX	0x3
				IMX7ULP_PAD_PTC2__LPUART4_TX	0x3
			>;
		};

		pinctrl_lpuart6: lpuart6grp {
			fsl,pins = <
				IMX7ULP_PAD_PTE10__LPUART6_TX	0x3
				IMX7ULP_PAD_PTE11__LPUART6_RX	0x3
				IMX7ULP_PAD_PTE9__LPUART6_RTS_B	0x3
				IMX7ULP_PAD_PTE8__LPUART6_CTS_B	0x3
				IMX7ULP_PAD_PTE7__PTE7		0x20000	/* BT_REG_ON */
			>;
		};

		pinctrl_lpuart7: lpuart7grp {
			fsl,pins = <
				IMX7ULP_PAD_PTF14__LPUART7_TX		0x3
				IMX7ULP_PAD_PTF15__LPUART7_RX		0x3
				IMX7ULP_PAD_PTF13__LPUART7_RTS_B	0x3
				IMX7ULP_PAD_PTF12__LPUART7_CTS_B	0x3
			>;
		};

		pinctrl_usdhc0: usdhc0grp {
			fsl,pins = <
				IMX7ULP_PAD_PTD1__SDHC0_CMD	0x43
				IMX7ULP_PAD_PTD2__SDHC0_CLK	0x10042
				IMX7ULP_PAD_PTD7__SDHC0_D3	0x43
				IMX7ULP_PAD_PTD8__SDHC0_D2	0x43
				IMX7ULP_PAD_PTD9__SDHC0_D1	0x43
				IMX7ULP_PAD_PTD10__SDHC0_D0	0x43
				IMX7ULP_PAD_PTC10__PTC10	0x10000	/* USDHC0 CD */
				IMX7ULP_PAD_PTD0__PTD0		0x20000	/* USDHC0 RST */
			>;
		};

		pinctrl_usdhc0_8bit: usdhc0grp_8bit {
			fsl,pins = <
				IMX7ULP_PAD_PTD1__SDHC0_CMD	0x43
				IMX7ULP_PAD_PTD2__SDHC0_CLK	0x10042
				IMX7ULP_PAD_PTD3__SDHC0_D7	0x43
				IMX7ULP_PAD_PTD4__SDHC0_D6	0x43
				IMX7ULP_PAD_PTD5__SDHC0_D5	0x43
				IMX7ULP_PAD_PTD6__SDHC0_D4	0x43
				IMX7ULP_PAD_PTD7__SDHC0_D3	0x43
				IMX7ULP_PAD_PTD8__SDHC0_D2	0x43
				IMX7ULP_PAD_PTD9__SDHC0_D1	0x43
				IMX7ULP_PAD_PTD10__SDHC0_D0	0x43
				IMX7ULP_PAD_PTD11__SDHC0_DQS	0x42
			>;
		};

		pinctrl_lpi2c7: lpi2c7grp {
			fsl,pins = <
				IMX7ULP_PAD_PTF12__LPI2C7_SCL	0x27
				IMX7ULP_PAD_PTF13__LPI2C7_SDA	0x27
			>;
		};

		pinctrl_lpspi3: lpspi3grp {
			fsl,pins = <
				IMX7ULP_PAD_PTF16__LPSPI3_SIN	0x0
				IMX7ULP_PAD_PTF17__LPSPI3_SOUT	0x0
				IMX7ULP_PAD_PTF18__LPSPI3_SCK	0x0
				IMX7ULP_PAD_PTF19__LPSPI3_PCS0	0x0
			>;
		};

		pinctrl_usbotg1_vbus: otg1vbusgrp {
			fsl,pins = <
				IMX7ULP_PAD_PTC0__PTC0		0x20000
			>;
		};

		pinctrl_usbotg1_id: otg1idgrp {
			fsl,pins = <
				IMX7ULP_PAD_PTC13__USB0_ID	0x10003
			>;
		};

		pinctrl_touch_io: touchiogrp {
			fsl,pins = <
				IMX7ULP_PAD_PTF0__PTF0		0x10043
				IMX7ULP_PAD_PTF1__PTF1		0x20043
			>;
		};

		pinctrl_usdhc1: usdhc1grp {
			fsl,pins = <
				IMX7ULP_PAD_PTE3__SDHC1_CMD	0x43
				IMX7ULP_PAD_PTE2__SDHC1_CLK	0x10042
				IMX7ULP_PAD_PTE1__SDHC1_D0	0x43
				IMX7ULP_PAD_PTE0__SDHC1_D1	0x43
				IMX7ULP_PAD_PTE5__SDHC1_D2	0x43
				IMX7ULP_PAD_PTE4__SDHC1_D3	0x43
			>;
		};

		pinctrl_usdhc1_rst: usdhc1grp_rst {
			fsl,pins = <
				IMX7ULP_PAD_PTE11__PTE11	0x20000	/* USDHC1 RST */
				IMX7ULP_PAD_PTE13__PTE13	0x10003	/* USDHC1 CD */
				IMX7ULP_PAD_PTE12__PTE12	0x10003	/* USDHC1 WP */
				IMX7ULP_PAD_PTE14__SDHC1_VS	0x43	/* USDHC1 VSEL */
			>;
		};

		pinctrl_dsi_hdmi: dsi_hdmi_grp {
			fsl,pins = <
				IMX7ULP_PAD_PTC18__PTC18	0x10003	/* DSI_HDMI_INT */
			>;
		};
	};
};

&lcdif {
	status = "okay";
	disp-dev = "mipi_dsi_northwest";
	display = <&display0>;

	display0: display@0 {
		bits-per-pixel = <16>;
		bus-width = <24>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
			clock-frequency = <9200000>;
			hactive = <480>;
			vactive = <272>;
			hfront-porch = <8>;
			hback-porch = <4>;
			hsync-len = <41>;
			vback-porch = <2>;
			vfront-porch = <4>;
			vsync-len = <10>;

			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <0>;
			};
		};
	};
};

&lpi2c7 {
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-names = "default",  "sleep";
	pinctrl-0 = <&pinctrl_lpi2c7 &pinctrl_touch_io>;
	pinctrl-1 = <&pinctrl_lpi2c7 &pinctrl_touch_io>;
	status = "okay";

	focaltech@38 {
		compatible = "focaltech,fts";
		reg = <0x38>;
		interrupt-parent = <&gpio_ptf>;
		interrupts = <0 0x02>;
		focaltech,panel-type = <FT5426>;
		focaltech,reset-gpio = <&gpio_ptf 1 0x01>;
		focaltech,irq-gpio = <&gpio_ptf 0 0x02>;
		focaltech,max-touch-number = <5>;
		focaltech,display-coords =  <0 0 480 854>;

		focaltech,have-key;
		focaltech,key-number = <3>;
		focaltech,keys = <139 102 158>;
		focaltech,key-y-coord = <2000>;
		focaltech,key-x-coords = <200 600 800>;
	};
};

&lpi2c5 {
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpi2c5>;
	pinctrl-1 = <&pinctrl_lpi2c5>;
	status = "okay";

	adv7535: adv7535@3d {
		compatible = "adi,adv7535";
		reg = <0x3d>; /* PD pin is low */
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_dsi_hdmi>;
		interrupt-parent = <&gpio_ptc>;
		interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
		video-mode = <1>; /*
						   * Only support CEA modes.
						   * Reference mxc_edid.c
						   */
		dsi-traffic-mode = <0>;
		bpp = <24>;
		status = "disabled";
	};
};

&lpspi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	fsl,spi-num-chipselects = <1>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpspi3>;
	pinctrl-1 = <&pinctrl_lpspi3>;
	status = "okay";

	spidev0: spi@0 {
		reg = <0>;
		compatible = "rohm,dh2228fv";
		spi-max-frequency = <1000000>;
	};
};


&adv7535 {
	status = "okay";

	port {
		dsi_to_hdmi: endpoint {
			remote-endpoint = <&mipi_dsi_ep>;
		};
	};
};

&mipi_dsi {
	status = "okay";

	port {
		mipi_dsi_ep: endpoint {
			remote-endpoint = <&dsi_to_hdmi>;
		};
	};
};

&lpuart4 { /* console */
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpuart4>;
	pinctrl-1 = <&pinctrl_lpuart4>;
	status = "okay";
};

&lpuart6 { /* BT */
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpuart6>;
	pinctrl-1 = <&pinctrl_lpuart6>;
	resets = <&modem_reset>;
	status = "okay";
};

&lpuart7 { /* Uart test */
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpuart7>;
	pinctrl-1 = <&pinctrl_lpuart7>;
	status = "disabled";
};

&pwm0 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_pwm0>;
	pinctrl-1 = <&pinctrl_pwm0>;
	status = "okay";
};

&rpmsg{
	/*
	 * 64K for one rpmsg instance, default using 2 rpmsg instances:
	 * --0x9FF00000~0x9FF0FFFF: pmic,pm,audio,keys,gpio,sensor
	 * --0x9FF10000~0x9FF1FFFF: pingpong,virtual tty
	 */
	vdev-nums = <2>;
	reg = <0x9FF00000 0x20000>;
	status = "okay";
};

&usbotg1 {
	vbus-supply = <&reg_usb_otg1_vbus>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_usbotg1_id>;
	pinctrl-1 = <&pinctrl_usbotg1_id>;
	srp-disable;
	hnp-disable;
	adp-disable;
	status = "okay";
};

&usbphy1 {
	fsl,tx-d-cal = <88>;
};

&usdhc0 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
	pinctrl-0 = <&pinctrl_usdhc0>;
	pinctrl-1 = <&pinctrl_usdhc0>;
	pinctrl-2 = <&pinctrl_usdhc0>;
	pinctrl-3 = <&pinctrl_usdhc0>;
	cd-gpios = <&gpio_ptc 10 GPIO_ACTIVE_LOW>;
	vmmc-supply = <&reg_vsd_3v3>;
	vqmmc-supply = <&vldo2_reg>;
	status = "okay";
};

&usdhc1 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_usdhc1>;
	pinctrl-1 = <&pinctrl_usdhc1>;
	bus-width = <4>;
	no-1-8-v;
	vmmc-supply = <&reg_sd1_vmmc>;
	pm-ignore-notify;
	keep-power-in-suspend;
	non-removable;
	status = "okay";
};
