/*
 * Copyright (C) 2014 Russell King
 */
#include "imx6qdl-microsom.dtsi"
#include "imx6qdl-microsom-ar8035.dtsi"

/ {
	ir_recv: ir-receiver {
		compatible = "gpio-ir-receiver";
		gpios = <&gpio3 9 1>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_cubox_i_ir>;
	};

	pwmleds {
		compatible = "pwm-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_cubox_i_pwm1>;

		front {
			active-low;
			label = "imx6:red:front";
			max-brightness = <248>;
			pwms = <&pwm1 0 50000>;
		};
	};

	regulators {
		compatible = "simple-bus";

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

		reg_usbh1_vbus: usb-h1-vbus {
			compatible = "regulator-fixed";
			enable-active-high;
			gpio = <&gpio1 0 0>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_cubox_i_usbh1_vbus>;
			regulator-name = "usb_h1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
		};

		reg_usbotg_vbus: usb-otg-vbus {
			compatible = "regulator-fixed";
			enable-active-high;
			gpio = <&gpio3 22 0>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_cubox_i_usbotg_vbus>;
			regulator-name = "usb_otg_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
		};
	};

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

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

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

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cubox_i_i2c3>;

	status = "okay";

	rtc: pcf8523@68 {
		compatible = "nxp,pcf8523";
		reg = <0x68>;
	};
};

&iomuxc {
	cubox_i {
		pinctrl_cubox_i_hdmi: cubox-i-hdmi {
			fsl,pins = <
				MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
			>;
		};

		pinctrl_cubox_i_i2c2: cubox-i-i2c2 {
			fsl,pins = <
				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
			>;
		};

		pinctrl_cubox_i_i2c3: cubox-i-i2c3 {
			fsl,pins = <
				MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
				MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
			>;
		};

		pinctrl_cubox_i_ir: cubox-i-ir {
			fsl,pins = <
				MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x80000000
			>;
		};

		pinctrl_cubox_i_pwm1: cubox-i-pwm1-front-led {
			fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b0>;
		};

		pinctrl_cubox_i_spdif: cubox-i-spdif {
			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
		};

		pinctrl_cubox_i_usbh1_vbus: cubox-i-usbh1-vbus {
			fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x4001b0b0>;
		};

		pinctrl_cubox_i_usbotg_id: cubox-i-usbotg-id {
			/*
			 * The Cubox-i pulls this low, but as it's pointless
			 * leaving it as a pull-up, even if it is just 10uA.
			 */
			fsl,pins = <MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x13059>;
		};

		pinctrl_cubox_i_usbotg_vbus: cubox-i-usbotg-vbus {
			fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x4001b0b0>;
		};

		pinctrl_cubox_i_usdhc2_aux: cubox-i-usdhc2-aux {
			fsl,pins = <
				MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
				MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
			>;
		};

		pinctrl_cubox_i_usdhc2: cubox-i-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
			>;
		};
	};
};

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

&usbh1 {
	vbus-supply = <&reg_usbh1_vbus>;
	status = "okay";
};

&usbotg {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cubox_i_usbotg_id>;
	vbus-supply = <&reg_usbotg_vbus>;
	status = "okay";
};

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>;
	vmmc-supply = <&reg_3p3v>;
	cd-gpios = <&gpio1 4 0>;
	status = "okay";
};
