/*
 * 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 SD1
 * slot using Murata i.MX InterConnect Ver 1.0 Adapter AND wiring in control
 * signals with SD Card Extender on SD3 slot.
 * Bluetooth UART connect via SD1 EMMC/MMC Plus pinout.
 * WL_REG_ON/BT_REG_ON/WL_HOST_WAKE are connected from SD Card Extender on SD3
 * slot.
 */
#include "imx6sl-evk.dts"

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

	usdhc1_pwrseq: usdhc1_pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpio5 16 GPIO_ACTIVE_LOW>;
	};
};

&iomuxc {
	imx6sl-evk-murata-v1_sdext {
		/* Only MUX SD1_DAT0..3 lines so UART4 can be MUXed on higher data lines. */
		pinctrl_btreg: btreggrp {
			fsl,pins = <
				MX6SL_PAD_SD3_DAT3__GPIO5_IO17          0x13069 /* BT_REG_ON */
			>;
		};

		pinctrl_wifi: wifigrp {
			fsl,pins = <
				MX6SL_PAD_SD1_CMD__SD1_CMD		0x17059
				MX6SL_PAD_SD1_CLK__SD1_CLK		0x10059
				MX6SL_PAD_SD1_DAT0__SD1_DATA0		0x17059
				MX6SL_PAD_SD1_DAT1__SD1_DATA1		0x17059
				MX6SL_PAD_SD1_DAT2__SD1_DATA2		0x17059
				MX6SL_PAD_SD1_DAT3__SD1_DATA3		0x17059
				MX6SL_PAD_SD3_DAT1__GPIO5_IO20		0x13069 /* WL_HOST_WAKE */
				MX6SL_PAD_SD3_DAT2__GPIO5_IO16		0x13069 /* WL_REG_ON */
			>;
		};

		pinctrl_usdhc3_1: usdhc3grp-1 {
			fsl,pins = <
				MX6SL_PAD_SD3_CMD__SD3_CMD		0x17059
				MX6SL_PAD_SD3_CLK__SD3_CLK		0x10059
				MX6SL_PAD_SD3_DAT0__SD3_DATA0		0x17059
			>;
		};
	};
};
/* Murata: declare UART4 interface for Bluetooth. */
&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4_1
		     &pinctrl_btreg>;
	fsl,uart-has-rtscts;
	resets = <&modem_reset>;
	status = "okay";
	/* for DTE mode, add below change */
	/* fsl,dte-mode; */
	/* pinctrl-0 = <&pinctrl_uart4dte_1>; */
};

&usdhc1 {
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_wifi>;
	bus-width = <4>;
	no-1-8-v;
	non-removable;
	mmc-pwrseq = <&usdhc1_pwrseq>;
	pm-ignore-notify;
	cap-power-off-card;

	brcmf: bcrmf@1 {
		reg = <1>;
		compatible = "brcm,bcm4329-fmac";
	};
};

&usdhc3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc3_1>;
	bus-width = <1>;
	no-1-8-v;
};
