/*
 * Copyright (C) 2015 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.
 */

/*
 * NOTE: This DTS file is written for plugging in Murata Wi-Fi/BT EVK into SD2
 * slot using Murata i.MX InterConnect Ver 2.0 Adapter & connecting Bluetooth
 * UART & control signals via ribbon cable.
 * This configuration supports both WLAN and Bluetooth.
 * WL_REG_ON/BT_REG_ON/WL_HOST_WAKE are connected via ribbon cable (J13 connector
 * on board).
 * ==> Hardware modification is required. Refer to schematic.
 */

/ {
	leds {
		compatible = "gpio-leds";
		status = "disabled";
	};

	modem_reset: modem-reset {
		compatible = "gpio-reset";
		reset-gpios = <&gpio1 2 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 = <&gpio4 7 0>;
			startup-delay-us = <100>;
			enable-active-high;
		};
	};

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

&ecspi1 {
	status = "disabled";
};

&iomuxc {
	imx6qdl-sabresd-murata-v2 {
		pinctrl_btreg: btreggrp {
			fsl,pins = <
				MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x1b0b0
			>;
		};

		/* add MUXing entry for SD2 4-bit interface and configure control pins */
		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_KEY_ROW0__GPIO4_IO07		0x13069	/* WL_REG_ON */
				MX6QDL_PAD_KEY_COL0__GPIO4_IO06		0x13069	/* WL_HOST_WAKE */
			>;
		};
	};
};

&pinctrl_gpio_leds {
	fsl,pins = <
	>;
};

&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5_1
		     &pinctrl_btreg>;
	fsl,uart-has-rtscts;
	resets = <&modem_reset>;
	status = "okay";
	/* for DTE mode, add below change */
	/* fsl,dte-mode; */
	/* pinctrl-0 = <&pinctrl_uart5dte_1>; */
};

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