// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2018 B&R Industrial Automation GmbH
 * Copyright 2012 Freescale Semiconductor, Inc.
 * Copyright 2011 Linaro Ltd.
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;

#include "imx6dl.dtsi"
#include "imx6qdl-u-boot.dtsi"
#include <dt-bindings/pwm/pwm.h>
#include <include/dt-bindings/gpio/gpio.h>

/ {
	model = "PPT50";
	compatible = "fsl,imx6dl";

	config {
		u-boot,spl-payload-offset = <0x100000>;
	};

	fset: factory-settings {
		bl-version	= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		order-no	= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		hw-revision	= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		serial-no	= <0>;
		device-id	= <0x0>;
		parent-id	= <0x0>;
		hw-variant	= <0x0>;
	};

	aliases {
		ds1timing0 = &timing0;
		ds1timing1 = &timing1;
		ds1bkl = &backlight;
		fset = &fset;
		mxcfb0 = &mxcfb0;
		touch0 = &touch0;
		touch1 = &touch1;
		touch2 = &touch2;
		display_regulator = &display_regulator;
		ldb = &ldb;
		mmc0 = &usdhc4;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	mxcfb0: fb@0 {
		compatible = "fsl,mxc_sdc_fb";
		disp_dev = "ldb";
		interface_pix_fmt = "RGB24";
		default_bpp = <32>;
		int_clk = <0>;
		late_init = <0>;
		rotation = <0>;
		status = "okay";
	};

	lcd@0 {
		compatible = "fsl,lcd";
		vlcd-supply = <&display_regulator>;
		ipu_id = <0>;
		disp_id = <0>;
		default_ifmt = "RGB24";
		status = "disabled";

		display-timings {
			native-mode = <&timing1>;
			timing1: lcd {
			};
		};
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm4 0 5000000>;
		brightness-levels = <0   1   2   3   4   5   6   7
			  8   9  10  11  12  13  14  15
			 16  17  18  19  20  21  22  23
			 24  25  26  27  28  29  30  31
			 32  33  34  35  36  37  38  39
			 40  41  42  43  44  45  46  47
			 48  49  50  51  52  53  54  55
			 56  57  58  59  60  61  62  63
			 64  65  66  67  68  69  70  71
			 72  73  74  75  76  77  78  79
			 80  81  82  83  84  85  86  87
			 88  89  90  91  92  93  94  95
			 96  97  98  99 100>;
		default-brightness-level = <0>;
		status = "okay";

		enable-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
	};

	beeper: pwm-beep {
		compatible = "pwm-beeper";
		pwms = <&pwm3 0 0 0>;
	};

	vbus1_regulator: regulator@1 {
		u-boot,dm-preloc;
		compatible = "regulator-fixed";
		regulator-name = "vbus1_regulator";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
	vbus2_regulator: regulator@2 {
		compatible = "regulator-fixed";
		regulator-name = "vbus2_regulator";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
	usbhub_regulator: gpio-regulator@3 {
		compatible = "regulator-gpio";
		regulator-name = "ushbub_regulator";
		enable-gpio = <&gpio1 16 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		enable-at-boot;
		states = <0 0 1 1>;
	};
	display_regulator: regulator@4 {
		compatible = "regulator-fixed";
		regulator-name = "display_regulator";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		startup-delay-us = <1000>;
	};
};

&fec {
	phy-mode = "rgmii-id";
	status = "okay";

	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

&uart1 {
	u-boot,dm-spl;
	u-boot,dm-preloc;
	status = "okay";
};

&pwm3 {
	status = "okay";
};

&pwm4 {
	#pwm-cells = <2>;
	status = "okay";
};

&ldb {
	status = "disabled";
	vldb-supply = <&display_regulator>;

	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <24>;
		primary;
		status = "okay";
		crtc = "ipu1-di0";

		display-timings {
			native-mode = <&timing0>;
			timing0: lcd {
			};
		};
	};
};

&usdhc4 {
	non-removable;
	bus-width = <8>;
	status = "okay";
};

&usbotg {
	vbus-supply = <&vbus1_regulator>;
	dr_mode = "host";
	status = "okay";
};

&usbh1 {
	vbus-supply = <&vbus2_regulator>;
	dr_mode = "host";
	status = "okay";
};

&i2c3 {
	clock-frequency = <400000>;
	status = "okay";

	touch0: egalax_i2c@2a {
		compatible = "eeti,egalax_i2c";
		reg = <0x2a>;
		interrupt-parent = <&gpio4>;
		interrupts = <9 2>;
		int-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
	};

	touch1: gt911@5d {
		compatible = "goodix,gt911";
		reg = <0x5d>;
		interrupt-parent = <&gpio4>;
		interrupts = <9 2>;
		irq-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>;
		status = "disabled";
	};

	touch2: i2c-hid-dev@2c {
		compatible = "hid-over-i2c";
		reg = <0x2c>;
		hid-descr-addr = <0x0001>;
		interrupt-parent = <&gpio4>;
		interrupts = <9 2>;
		status = "disabled";
	};
};

&gpio1 {
	u-boot,dm-spl;
	status = "okay";
};

&gpio2 {
	u-boot,dm-spl;
	status = "okay";
};

&gpio3 {
	u-boot,dm-spl;
	status = "okay";
};

&gpio4 {
	u-boot,dm-spl;
	status = "okay";
};

&usdhc4 {
	status = "okay";
};

&ecspi1 {
	u-boot,dm-spl;
	cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>, <&gpio3 19 GPIO_ACTIVE_LOW>;
	status = "okay";
	spi-max-frequency = <25000000>;

	m25p32@1 {
		u-boot,dm-spl;
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "st,m25p", "jedec,spi-nor";
		spi-max-frequency = <25000000>;
		reg = <1>;
	};
};
