/*
 * Copyright (C) 2013,2014 Russell King
 *
 * 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 <dt-bindings/sound/fsl-imx-audmux.h>

/ {
	aliases {
		rtc0 = &carrier_rtc;
		rtc1 = &snvs_rtc;
	};

	/* Will be filled by the bootloader */
	memory@10000000 {
		device_type = "memory";
		reg = <0x10000000 0>;
	};

	chosen {
		stdout-path = &uart1;
	};

	ir_recv: ir-receiver {
		compatible = "gpio-ir-receiver";
		gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_gpio3_5>;
	};

	v_3v2: regulator-v-3v2 {
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "v_3v2";
		vin-supply = <&v_5v0>;
	};

	v_5v0: regulator-v-5v0 {
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-max-microvolt = <5000000>;
		regulator-min-microvolt = <5000000>;
		regulator-name = "v_5v0";
	};

	v_sd: regulator-v-sd {
		compatible = "regulator-fixed";
		gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_vmmc>;
		regulator-boot-on;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "v_sd";
		startup-delay-us = <1000>;
		vin-supply = <&v_3v2>;
	};

	v_usb2: regulator-v-usb2 {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_usbh1_vbus>;
		regulator-max-microvolt = <5000000>;
		regulator-min-microvolt = <5000000>;
		regulator-name = "v_usb2";
		vin-supply = <&v_5v0>;
	};

	v_usb1: regulator-v-usb1 {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_usbotg_vbus>;
		regulator-max-microvolt = <5000000>;
		regulator-min-microvolt = <5000000>;
		regulator-name = "v_usb1";
		vin-supply = <&v_5v0>;
	};

	audio: sound-sgtl5000 {
		compatible = "simple-audio-card";
		simple-audio-card,name = "On-board Codec";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&sound_codec>;
		simple-audio-card,frame-master = <&sound_codec>;
		simple-audio-card,widgets =
			"Microphone", "Headphone Jack",
			"Headphone", "Headphone Jack";
		simple-audio-card,routing =
			"MIC_IN", "Headphone Jack",
			"Headphone Jack", "Mic Bias",
			"Headphone Jack", "HP_OUT";

		sound_cpu: simple-audio-card,cpu {
			sound-dai = <&ssi1>;
		};

		sound_codec: simple-audio-card,codec {
			sound-dai = <&sgtl5000>;
		};
	};

	sound-spdif {
		compatible = "fsl,imx-audio-spdif";
		model = "On-board SPDIF";
		/* IMX6 doesn't implement this yet */
		spdif-controller = <&spdif>;
		spdif-out;
	};
};

&audmux {
	status = "okay";

	mux-ssi1 {
		fsl,audmux-port = <0>;
		fsl,port-config = <
			(IMX_AUDMUX_V2_PTCR_SYN |
			 IMX_AUDMUX_V2_PTCR_TFSEL(4) |
			 IMX_AUDMUX_V2_PTCR_TCSEL(4) |
			 IMX_AUDMUX_V2_PTCR_TFSDIR |
			 IMX_AUDMUX_V2_PTCR_TCLKDIR)
			 IMX_AUDMUX_V2_PDCR_RXDSEL(4)
		>;
	};

	mux-pins5 {
		fsl,audmux-port = <4>;
		fsl,port-config = <
			IMX_AUDMUX_V2_PTCR_SYN
			IMX_AUDMUX_V2_PDCR_RXDSEL(0)
		>;
	};
};

&can1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_flexcan1>;
	status = "okay";
};

&hdmi {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_hdmi>;
	ddc-i2c-bus = <&i2c2>;
	status = "okay";
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_i2c1>;
	status = "okay";

	/* Pro baseboard model */
	carrier_rtc: rtc@68 {
		compatible = "nxp,pcf8523";
		reg = <0x68>;
	};

	/* Pro baseboard model */
	sgtl5000: codec@a {
		clocks = <&clks IMX6QDL_CLK_CKO>;
		compatible = "fsl,sgtl5000";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hummingboard_sgtl5000>;
		#sound-dai-cells = <0>;
		reg = <0x0a>;
		VDDA-supply = <&v_3v2>;
		VDDIO-supply = <&v_3v2>;
	};
};

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

&iomuxc {
	hummingboard {
		pinctrl_hummingboard_flexcan1: hummingboard-flexcan1 {
			fsl,pins = <
				MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
				MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
			>;
		};

		pinctrl_hummingboard_gpio3_5: hummingboard-gpio3_5 {
			fsl,pins = <
				MX6QDL_PAD_EIM_DA5__GPIO3_IO05 0x1b0b1
			>;
		};

		pinctrl_hummingboard_hdmi: hummingboard-hdmi {
			fsl,pins = <
				MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
			>;
		};

		pinctrl_hummingboard_i2c1: hummingboard-i2c1 {
			fsl,pins = <
				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
			>;
		};

		pinctrl_hummingboard_i2c2: hummingboard-i2c2 {
			fsl,pins = <
				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
			>;
		};

		pinctrl_hummingboard_pcie_reset: hummingboard-pcie-reset {
			fsl,pins = <
				MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x1b0b1
			>;
		};

		pinctrl_hummingboard_pwm1: pwm1grp {
			fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1>;
		};

		pinctrl_hummingboard_sgtl5000: hummingboard-sgtl5000 {
			fsl,pins = <
				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
				MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
				MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
				MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
				MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
			>;
		};

		pinctrl_hummingboard_spdif: hummingboard-spdif {
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
		};

		pinctrl_hummingboard_usbh1_vbus: hummingboard-usbh1-vbus {
			fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>;
		};

		pinctrl_hummingboard_usbotg_id: hummingboard-usbotg-id {
			/*
			 * We want it pulled down for a fixed host connection.
			 */
			fsl,pins = <MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x13059>;
		};

		pinctrl_hummingboard_usbotg_vbus: hummingboard-usbotg-vbus {
			fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>;
		};

		pinctrl_hummingboard_usdhc2_aux: hummingboard-usdhc2-aux {
			fsl,pins = <
				MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
			>;
		};

		pinctrl_hummingboard_usdhc2: hummingboard-usdhc2 {
			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 0x13059
			>;
		};
		pinctrl_hummingboard_vmmc: hummingboard-vmmc {
			fsl,pins = <
				MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
			>;
		};
	};
};

&pcie {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_pcie_reset>;
	reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>;
	status = "okay";
};

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

&pwm2 {
	 pinctrl-names = "default";
	 status = "okay";
};

&spdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hummingboard_spdif>;
	status = "okay";
};

&ssi1 {
	status = "okay";
};

&usbh1 {
	disable-over-current;
	vbus-supply = <&v_usb2>;
	status = "okay";
};

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

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <
		&pinctrl_hummingboard_usdhc2_aux
		&pinctrl_hummingboard_usdhc2
	>;
	vmmc-supply = <&v_sd>;
	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&vcc_3v3 {
	vin-supply = <&v_3v2>;
};
