/*
 * Copyright (C) 2016 Freescale Semiconductor, Inc.
 *
 * This program 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.
 */

/ {
	modem_reset: modem-reset {
		compatible = "gpio-reset";
		reset-gpios = <&gpio6 1 GPIO_ACTIVE_LOW>;
		reset-delay-us = <1000>;
		#reset-cells = <0>;
	};

	regulators {
		wlreg_on: fixedregulator@100 {
			compatible = "regulator-fixed";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-name = "wlreg_on";
			gpio = <&gpio6 5 0>;
			startup-delay-us = <100>;
			enable-active-high;
		};
	};

	bcmdhd_wlan_0: bcmdhd_wlan@0 {
		compatible = "android,bcmdhd_wlan";
		wlreg_on-supply = <&wlreg_on>;
		gpios = <&gpio6 4 0>; /* WL_HOST_WAKE */
	};
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4
		     &pinctrl_bt>;
	fsl,uart-has-rtscts;
	resets = <&modem_reset>;
	status = "okay";
};

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_wifi>;
	bus-width = <4>;
	no-1-8-v;
	non-removable;
	cd-post;
	pm-ignore-notify;
	wifi-host;
};

&iomuxc {
	imx6dqscm-murata-v2 {
		 pinctrl_bt: btgrp {
			fsl,pins = <
				MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01	0x13069
				MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00	0x13069
			>;
		};

		pinctrl_wifi: wifigrp {
			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
				MX6QDL_PAD_CSI0_DAT19__GPIO6_IO05	0x13069
				MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04	0x13069
			>;
		};
		pinctrl_uart4: uart4grp {
			fsl,pins = <
				MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA	0x1f0b1
				MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA	0x1f0b1
				MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B	0x1b0b1
				MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B	0x1b0b1
			>;
		};
	};
};
