/*
 * 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.
 */

/*
 * NOTE: This DTS file is written for plugging in Murata Wi-Fi/BT EVK into Slot
 * SD1 and using Murata i.MX InterConnect Ver 2.0 Adapter. Bluetooth UART &
 * control signals are connected via ribbon cable (J4 connector).
 */

#include "imx6sll-evk.dts"

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

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

&iomuxc {
	imx6sll-evk-murata-v2 {
		pinctrl_wifi: wifigrp {
			fsl,pins = <
				MX6SLL_PAD_SD3_CMD__SD3_CMD     0x170b9
				MX6SLL_PAD_SD3_CLK__SD3_CLK     0x130b9
				MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x170b9
				MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x170b9
				MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x170b9
				MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x170b9

				MX6SLL_PAD_KEY_COL0__GPIO3_IO24 0x17059 /* WL_REG_ON */
				MX6SLL_PAD_KEY_COL1__GPIO3_IO26 0x17059 /* WL_HOST_WAKE */
			>;
		};
	};
};

&lcdif {
	status = "disabled";
};

&reg_sd3_vmmc {
	regulator-always-on;
};

&uart5 {
	resets = <&modem_reset>;
	status = "okay";
};

&usdhc3 {
	#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";
	};
};
