/*
 * Copyright (c) 2016 Andreas Färber
 *
 * 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 library is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This library 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 "imx6sx.dtsi"

/ {
	compatible = "fsl,imx6sx";

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

	leds {
		compatible = "gpio-leds";

		red {
			label = "udoo-neo:red:mmc";
			gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>;
			default-state = "off";
			linux,default-trigger = "mmc0";
		};

		orange {
			label = "udoo-neo:orange:user";
			gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
			default-state = "keep";
		};
	};

	reg_sdio_pwr: regulator-sdio-pwr {
		compatible = "regulator-fixed";
		gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-name = "SDIO_PWR";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
	};

	reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_otg1_reg>;
		regulator-name = "usb_otg1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_otg2_reg>;
		regulator-name = "usb_otg2_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio4 12 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_wlan: regulator-wlan {
		compatible = "regulator-fixed";
		regulator-name = "wlan-en-regulator";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <70000>;
		enable-active-high;
	};

	reg_bt: regulator-bt {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_bt_reg>;
		enable-active-high;
		gpio = <&gpio2 17 GPIO_ACTIVE_HIGH>;
		regulator-name = "bt_reg";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};
};

&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet1>;
	phy-mode = "rmii";
	phy-reset-duration = <10>;
	phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
};

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

	pmic: pmic@08 {
		compatible = "fsl,pfuze3000";
		reg = <0x08>;

		regulators {
			sw1a_reg: sw1a {
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1475000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <6250>;
			};

			sw1c_reg: sw1b {
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1475000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <6250>;
			};

			sw2_reg: sw2 {
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1850000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw3a_reg: sw3 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1650000>;
				regulator-boot-on;
				regulator-always-on;
			};

			swbst_reg: swbst {
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5150000>;
			};

			snvs_reg: vsnvs {
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3000000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vref_reg: vrefddr {
				regulator-boot-on;
				regulator-always-on;
			};

			vgen1_reg: vldo1 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen2_reg: vldo2 {
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <1550000>;
			};

			vgen3_reg: vccsd {
				regulator-min-microvolt = <2850000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen4_reg: v33 {
				regulator-min-microvolt = <2850000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen5_reg: vldo3 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen6_reg: vldo4 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};
		};
	};
};

&iomuxc {
	pinctrl_bt_reg: btreggrp {
		fsl,pins =
			<MX6SX_PAD_KEY_ROW2__GPIO2_IO_17        0x15059>;
	};

	pinctrl_enet1: enet1grp {
		fsl,pins =
			<MX6SX_PAD_ENET1_CRS__GPIO2_IO_1	0xa0b1>,
			<MX6SX_PAD_ENET1_MDC__ENET1_MDC		0xa0b1>,
			<MX6SX_PAD_ENET1_MDIO__ENET1_MDIO	0xa0b1>,
			<MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0	0xa0b1>,
			<MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1	0xa0b1>,
			<MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN	0xa0b1>,

			<MX6SX_PAD_ENET1_TX_CLK__ENET1_REF_CLK1	0x3081>,
			<MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9	0x3081>,
			<MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0	0x3081>,
			<MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1	0x3081>,
			<MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN	0x3081>,
			<MX6SX_PAD_RGMII1_RXC__ENET1_RX_ER	0x3081>,

			<MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M	0x91>;
	};

	pinctrl_i2c1: i2c1grp {
		fsl,pins =
			<MX6SX_PAD_GPIO1_IO00__I2C1_SCL		0x4001b8b1>,
			<MX6SX_PAD_GPIO1_IO01__I2C1_SDA		0x4001b8b1>;
	};

	pinctrl_uart1: uart1grp {
		fsl,pins =
			<MX6SX_PAD_GPIO1_IO04__UART1_TX		0x1b0b1>,
			<MX6SX_PAD_GPIO1_IO05__UART1_RX		0x1b0b1>;
	};

	pinctrl_uart2: uart2grp {
		fsl,pins =
			<MX6SX_PAD_GPIO1_IO06__UART2_TX		0x1b0b1>,
			<MX6SX_PAD_GPIO1_IO07__UART2_RX		0x1b0b1>;
	};

	pinctrl_uart3: uart3grp {
		fsl,pins =
			<MX6SX_PAD_SD3_DATA4__UART3_RX          0x13059>,
			<MX6SX_PAD_SD3_DATA5__UART3_TX          0x13059>,
			<MX6SX_PAD_SD3_DATA6__UART3_RTS_B       0x13059>,
			<MX6SX_PAD_SD3_DATA7__UART3_CTS_B       0x13059>;
	};

	pinctrl_uart5: uart5grp {
		fsl,pins =
			<MX6SX_PAD_SD4_DATA4__UART5_RX		0x1b0b1>,
			<MX6SX_PAD_SD4_DATA5__UART5_TX		0x1b0b1>;
	};

	pinctrl_uart6: uart6grp {
		fsl,pins =
			<MX6SX_PAD_CSI_DATA00__UART6_RI_B	0x1b0b1>,
			<MX6SX_PAD_CSI_DATA01__UART6_DSR_B	0x1b0b1>,
			<MX6SX_PAD_CSI_DATA02__UART6_DTR_B	0x1b0b1>,
			<MX6SX_PAD_CSI_DATA03__UART6_DCD_B	0x1b0b1>,
			<MX6SX_PAD_CSI_DATA04__UART6_RX		0x1b0b1>,
			<MX6SX_PAD_CSI_DATA05__UART6_TX		0x1b0b1>,
			<MX6SX_PAD_CSI_DATA06__UART6_RTS_B	0x1b0b1>,
			<MX6SX_PAD_CSI_DATA07__UART6_CTS_B	0x1b0b1>;
	};

	pinctrl_otg1_reg: otg1grp {
		fsl,pins =
			<MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9        0x10b0>;
	};


	pinctrl_otg2_reg: otg2grp {
		fsl,pins =
			<MX6SX_PAD_NAND_RE_B__GPIO4_IO_12        0x10b0>;
	};

	pinctrl_usb_otg1: usbotg1grp {
		fsl,pins =
			<MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID    0x17059>,
			<MX6SX_PAD_GPIO1_IO08__USB_OTG1_OC       0x10b0>;
	};

	pinctrl_usb_otg2: usbot2ggrp {
		fsl,pins =
			<MX6SX_PAD_QSPI1A_DATA0__USB_OTG2_OC     0x10b0>;
	};

	pinctrl_usdhc2: usdhc2grp {
		fsl,pins =
			<MX6SX_PAD_SD2_CMD__USDHC2_CMD		0x17059>,
			<MX6SX_PAD_SD2_CLK__USDHC2_CLK		0x10059>,
			<MX6SX_PAD_SD2_DATA0__USDHC2_DATA0	0x17059>,
			<MX6SX_PAD_SD2_DATA1__USDHC2_DATA1	0x17059>,
			<MX6SX_PAD_SD2_DATA2__USDHC2_DATA2	0x17059>,
			<MX6SX_PAD_SD2_DATA3__USDHC2_DATA3	0x17059>,
			<MX6SX_PAD_SD1_DATA0__GPIO6_IO_2	0x17059>; /* CD */
	};

	pinctrl_usdhc3: usdhc3grp {
		fsl,pins =
			<MX6SX_PAD_KEY_COL2__GPIO2_IO_12	0x15059>,
			<MX6SX_PAD_KEY_ROW1__GPIO2_IO_16	0x13059>,
			<MX6SX_PAD_SD3_DATA0__USDHC3_DATA0	0x17069>,
			<MX6SX_PAD_SD3_DATA1__USDHC3_DATA1	0x17069>,
			<MX6SX_PAD_SD3_DATA2__USDHC3_DATA2	0x17069>,
			<MX6SX_PAD_SD3_DATA3__USDHC3_DATA3	0x17069>,
			<MX6SX_PAD_SD3_CMD__USDHC3_CMD		0x17069>,
			<MX6SX_PAD_SD3_CLK__USDHC3_CLK		0x10069>,
			<MX6SX_PAD_CSI_MCLK__OSC32K_32K_OUT	0x10059>;
	};
};

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	status = "okay";
};

/* Cortex-M4 serial */
&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	status = "disabled";
};

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

/* Arduino serial */
&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5>;
	status = "disabled";
};

&uart6 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart6>;
	uart-has-rtscts;
	status = "disabled";
};

&usbotg1 { /* J2 micro USB port */
	vbus-supply = <&reg_usb_otg1_vbus>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_otg1>;
	status = "okay";
};

&usbotg2 { /* J3 host USB port */
	vbus-supply = <&reg_usb_otg2_vbus>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_otg2>;
	dr_mode = "host";
	status = "okay";
};

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2>;
	vmmc-supply = <&reg_sdio_pwr>;
	bus-width = <4>;
	cd-gpios = <&gpio6 2 GPIO_ACTIVE_LOW>;
	no-1-8-v;
	keep-power-in-suspend;
	wakeup-source;
	status = "okay";
};

&usdhc3 { /* Wi-Fi */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc3>;
	non-removable;
	vmmc-supply = <&reg_wlan>;
	cap-power-off-card;
	wakeup-source;
	keep-power-in-suspend;
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	wlcore: wlcore@2 {
		compatible = "ti,wl1831";
		reg = <2>;
		interrupt-parent = <&gpio2>;
		interrupts = <16 IRQ_TYPE_EDGE_RISING>;
		ref-clock-frequency = <38400000>;
		tcxo-clock-frequency = <26000000>;
	};
};
