/*
 * Support for imx6 based Advantech DMS-BA16 Qseven module
 *
 * Copyright 2015 Timesys Corporation.
 * Copyright 2015 General Electric Company
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This file 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.
 *
 *     This file is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

#include "imx6q.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	memory@10000000 {
		reg = <0x10000000 0x40000000>;
	};

	backlight_lvds: backlight {
		compatible = "pwm-backlight";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_display>;
		pwms = <&pwm1 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 101 102 103 104 105 106 107 108 109
				     110 111 112 113 114 115 116 117 118 119
				     120 121 122 123 124 125 126 127 128 129
				     130 131 132 133 134 135 136 137 138 139
				     140 141 142 143 144 145 146 147 148 149
				     150 151 152 153 154 155 156 157 158 159
				     160 161 162 163 164 165 166 167 168 169
				     170 171 172 173 174 175 176 177 178 179
				     180 181 182 183 184 185 186 187 188 189
				     190 191 192 193 194 195 196 197 198 199
				     200 201 202 203 204 205 206 207 208 209
				     210 211 212 213 214 215 216 217 218 219
				     220 221 222 223 224 225 226 227 228 229
				     230 231 232 233 234 235 236 237 238 239
				     240 241 242 243 244 245 246 247 248 249
				     250 251 252 253 254 255>;
		default-brightness-level = <255>;
		enable-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
	};

	reg_1p8v: regulator-1p8v {
		compatible = "regulator-fixed";
		regulator-name = "1P8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};

	reg_3p3v: regulator-3p3v {
		compatible = "regulator-fixed";
		regulator-name = "3P3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	reg_lvds: regulator-lvds {
		compatible = "regulator-fixed";
		regulator-name = "lvds_ppen";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_usb_h1_vbus: regulator-usbh1vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_h1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	reg_usb_otg_vbus: regulator-usbotgvbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_otg_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};
};

&audmux {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_audmux>;
	status = "okay";
};

&ecspi1 {
	cs-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi1>;
	status = "okay";

	flash: n25q032@0 {
		compatible = "jedec,spi-nor";
		#address-cells = <1>;
		#size-cells = <1>;
		spi-max-frequency = <20000000>;
		reg = <0>;

		partition@0 {
			label = "U-Boot";
			reg = <0x0 0xc0000>;
		};

		partition@c0000 {
			label = "env";
			reg = <0xc0000 0x10000>;
		};

		partition@d0000 {
			label = "spare";
			reg = <0xd0000 0x320000>;
		};

		partition@3f0000 {
			label = "mfg";
			reg = <0x3f0000 0x10000>;
		};
	};
};

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet>;
	phy-mode = "rgmii";
	status = "okay";
};

&hdmi {
	ddc-i2c-bus = <&i2c2>;
	status = "okay";
};

&i2c1 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";
};

&i2c2 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";
};

&i2c3 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c3>;
	status = "okay";

	pmic@58 {
		compatible = "dlg,da9063";
		reg = <0x58>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_pmic>;
		interrupt-parent = <&gpio7>;
		interrupts = <13 IRQ_TYPE_LEVEL_LOW>;

		onkey {
			compatible = "dlg,da9063-onkey";
		};

		regulators {
			vdd_bcore1: bcore1 {
				regulator-min-microvolt = <1420000>;
				regulator-max-microvolt = <1420000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_bcore2: bcore2 {
				regulator-min-microvolt = <1420000>;
				regulator-max-microvolt = <1420000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_bpro: bpro {
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_bmem: bmem {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_bio: bio {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_bperi: bperi {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vdd_ldo1: ldo1 {
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1860000>;
			};

			vdd_ldo2: ldo2 {
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1860000>;
			};

			vdd_ldo3: ldo3 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3440000>;
			};

			vdd_ldo4: ldo4 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3440000>;
			};

			vdd_ldo5: ldo5 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo6: ldo6 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo7: ldo7 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo8: ldo8 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo9: ldo9 {
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo10: ldo10 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
			};

			vdd_ldo11: ldo11 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3600000>;
				regulator-always-on;
				regulator-boot-on;
			};
		};
	};

	rtc@32 {
		compatible = "epson,rx8010";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_rtc>;
		reg = <0x32>;
		interrupt-parent = <&gpio4>;
		interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
	};
};

&pcie {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pcie>;
	reset-gpio = <&gpio7 12 GPIO_ACTIVE_LOW>;
	fsl,tx-swing-full = <103>;
	fsl,tx-swing-low = <103>;
	status = "okay";
};

&pwm1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm1>;
	status = "okay";
};

&pwm2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm2>;
	status = "disabled";
};

&sata {
	status = "okay";
};

&ssi1 {
	status = "okay";
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	uart-has-rtscts;
	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4>;
	status = "okay";
};

&usbh1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbhub>;
	vbus-supply = <&reg_usb_h1_vbus>;
	reset-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&usbotg {
	vbus-supply = <&reg_usb_otg_vbus>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg>;
	disable-over-current;
	status = "okay";
};

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2>;
	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
	no-1-8-v;
	keep-power-in-suspend;
	wakeup-source;
	status = "okay";
};

&usdhc3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc3 &pinctrl_usdhc3_reset>;
	bus-width = <8>;
	vmmc-supply = <&vdd_bperi>;
	non-removable;
	keep-power-in-suspend;
	status = "okay";
};

&wdog1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_wdog>;
	fsl,ext-reset-output;
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>;

	pinctrl_audmux: audmuxgrp {
		fsl,pins = <
			MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
			MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0
			MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
			MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
		>;
	};

	pinctrl_display: dispgrp {
		fsl,pins = <
			/* BLEN_OUT */
			MX6QDL_PAD_GPIO_0__GPIO1_IO00    0x1b0b0
			/* LVDS_PPEN_OUT */
			MX6QDL_PAD_EIM_D22__GPIO3_IO22   0x1b0b0
		>;
	};

	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX6QDL_PAD_EIM_D17__ECSPI1_MISO	0x100b1
			MX6QDL_PAD_EIM_D18__ECSPI1_MOSI	0x100b1
			MX6QDL_PAD_EIM_D16__ECSPI1_SCLK	0x100b1
			/* SPI1 CS */
			MX6QDL_PAD_EIM_EB2__GPIO2_IO30	0x1b0b0
		>;
	};

	pinctrl_ecspi5: ecspi5grp {
		fsl,pins = <
			MX6QDL_PAD_SD1_DAT0__ECSPI5_MISO	0x1b0b0
			MX6QDL_PAD_SD1_CMD__ECSPI5_MOSI		0x1b0b0
			MX6QDL_PAD_SD1_CLK__ECSPI5_SCLK		0x1b0b0
			MX6QDL_PAD_SD1_DAT1__GPIO1_IO17		0x1b0b0
		>;
	};

	pinctrl_enet: enetgrp {
		fsl,pins = <
			MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x100b0
			MX6QDL_PAD_ENET_MDC__ENET_MDC         0x100b0
			MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x10030
			MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x10030
			MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x10030
			MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x10030
			MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x10030
			MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x10030
			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x100b0
			MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b030
			MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b030
			MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b030
			MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b030
			MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b030
			MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b030
			/* FEC Reset */
			MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28     0x1b0b0
			/* AR8033 Interrupt */
			MX6QDL_PAD_GPIO_19__GPIO4_IO05        0x1b0b0
		>;
	};

	pinctrl_hog: hoggrp {
		fsl,pins = <
			/* GPIO 0-7 */
			MX6QDL_PAD_NANDF_D0__GPIO2_IO00  0x1b0b0
			MX6QDL_PAD_NANDF_D1__GPIO2_IO01  0x1b0b0
			MX6QDL_PAD_NANDF_D2__GPIO2_IO02  0x1b0b0
			MX6QDL_PAD_NANDF_D3__GPIO2_IO03  0x1b0b0
			MX6QDL_PAD_NANDF_D4__GPIO2_IO04  0x1b0b0
			MX6QDL_PAD_NANDF_D5__GPIO2_IO05  0x1b0b0
			MX6QDL_PAD_NANDF_D6__GPIO2_IO06  0x1b0b0
			MX6QDL_PAD_NANDF_D7__GPIO2_IO07  0x1b0b0
			/* SUS_S3_OUT to CPLD */
			MX6QDL_PAD_KEY_ROW2__GPIO4_IO11  0x1b0b0
		>;
	};

	pinctrl_i2c1: i2c1grp {
		fsl,pins = <
			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA	0x4001b8b1
			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL	0x4001b8b1
		>;
	};

	pinctrl_i2c2: i2c2grp {
		fsl,pins = <
			MX6QDL_PAD_KEY_COL3__I2C2_SCL	0x4001b8b1
			MX6QDL_PAD_KEY_ROW3__I2C2_SDA	0x4001b8b1
		>;
	};

	pinctrl_i2c3: i2c3grp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_3__I2C3_SCL	0x4001b8b1
			MX6QDL_PAD_GPIO_6__I2C3_SDA	0x4001b8b1
		>;
	};

	pinctrl_pcie: pciegrp {
		fsl,pins = <
			/* PCIe Reset */
			MX6QDL_PAD_GPIO_17__GPIO7_IO12	0x1b0b0
			/* PCIe Wake */
			MX6QDL_PAD_GPIO_5__GPIO1_IO05	0x1b0b0
		>;
	};

	pinctrl_pmic: pmicgrp {
		fsl,pins = <
			/* PMIC Interrupt */
			MX6QDL_PAD_GPIO_18__GPIO7_IO13	0x1b0b0
		>;
	};

	pinctrl_pwm1: pwm1grp {
		fsl,pins = <
			MX6QDL_PAD_SD1_DAT3__PWM1_OUT	0x1b0b1
		>;
	};

	pinctrl_pwm2: pwm2grp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_1__PWM2_OUT	0x1b0b1
		>;
	};

	pinctrl_rtc: rtcgrp {
		fsl,pins = <
			/* RTC_INT */
			MX6QDL_PAD_KEY_COL2__GPIO4_IO10	0x1b0b0
		>;
	};

	pinctrl_uart3: uart3grp {
		fsl,pins = <
			MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
			MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
			MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b1
			MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b1
		>;
	};

	pinctrl_uart4: uart4grp {
		fsl,pins = <
			MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
			MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
		>;
	};

	pinctrl_usbhub: usbhubgrp {
		fsl,pins = <
			/* HUB_RESET */
			MX6QDL_PAD_GPIO_16__GPIO7_IO11	0x1b0b0
		>;
	};

	pinctrl_usbotg: usbotggrp {
		fsl,pins = <
			MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
		>;
	};

	pinctrl_usdhc2: usdhc2grp {
		fsl,pins = <
			MX6QDL_PAD_SD2_CMD__SD2_CMD	0x17059
			MX6QDL_PAD_SD2_CLK__SD2_CLK	0x10059
			MX6QDL_PAD_SD2_DAT0__SD2_DATA0	0x17059
			MX6QDL_PAD_SD2_DAT1__SD2_DATA1	0x17059
			MX6QDL_PAD_SD2_DAT2__SD2_DATA2	0x17059
			MX6QDL_PAD_SD2_DAT3__SD2_DATA3	0x17059
			/* uSDHC2 CD */
			MX6QDL_PAD_GPIO_4__GPIO1_IO04	0x1b0b0
		>;
	};

	pinctrl_usdhc3: usdhc3grp {
		fsl,pins = <
			MX6QDL_PAD_SD3_CMD__SD3_CMD	0x17059
			MX6QDL_PAD_SD3_CLK__SD3_CLK	0x10059
			MX6QDL_PAD_SD3_DAT0__SD3_DATA0	0x17059
			MX6QDL_PAD_SD3_DAT1__SD3_DATA1	0x17059
			MX6QDL_PAD_SD3_DAT2__SD3_DATA2	0x17059
			MX6QDL_PAD_SD3_DAT3__SD3_DATA3	0x17059
			MX6QDL_PAD_SD3_DAT4__SD3_DATA4	0x17059
			MX6QDL_PAD_SD3_DAT5__SD3_DATA5	0x17059
			MX6QDL_PAD_SD3_DAT6__SD3_DATA6	0x17059
			MX6QDL_PAD_SD3_DAT7__SD3_DATA7	0x17059
		>;
	};

	pinctrl_usdhc3_reset: usdhc3grp-reset {
		fsl,pins = <
			MX6QDL_PAD_SD3_RST__SD3_RESET   0x170F9
		>;
	};

	pinctrl_usdhc4: usdhc4grp {
		fsl,pins = <
			MX6QDL_PAD_SD4_CMD__SD4_CMD	0x17059
			MX6QDL_PAD_SD4_CLK__SD4_CLK	0x17059
			MX6QDL_PAD_SD4_DAT0__SD4_DATA0	0x17059
			MX6QDL_PAD_SD4_DAT1__SD4_DATA1	0x17059
			MX6QDL_PAD_SD4_DAT2__SD4_DATA2	0x17059
			MX6QDL_PAD_SD4_DAT3__SD4_DATA3	0x17059
			MX6QDL_PAD_SD4_DAT4__SD4_DATA4	0x17059
			MX6QDL_PAD_SD4_DAT5__SD4_DATA5	0x17059
			MX6QDL_PAD_SD4_DAT6__SD4_DATA6	0x17059
			MX6QDL_PAD_SD4_DAT7__SD4_DATA7	0x17059
			/* uSDHC4 CD */
			MX6QDL_PAD_NANDF_CS0__GPIO6_IO11 0x1b0b0
			/* uSDHC4 SDIO PWR */
			MX6QDL_PAD_NANDF_CS1__GPIO6_IO14 0x1b0b0
			/* uSDHC4 SDIO WP */
			MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1b0b0
			/* uSDHC4 SDIO LED */
			MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x1b0b0
		>;
	};

	pinctrl_wdog: wdoggrp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_9__WDOG1_B	0x1b0b0
		>;
	};
};
