summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi2
-rw-r--r--arch/arm/boot/dts/imx6sl-evk-btwifi.dts2
-rw-r--r--arch/arm/boot/dts/imx6sx-sdb-btwifi.dts3
-rw-r--r--arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts2
-rw-r--r--arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts2
-rw-r--r--arch/arm/boot/dts/imx6ull-evk-btwifi.dtsi56
-rw-r--r--arch/arm/boot/dts/imx7d-sdb.dts7
-rw-r--r--arch/arm/configs/imx_v7_defconfig2
-rw-r--r--drivers/net/wireless/bcmdhd/Kconfig4
-rw-r--r--drivers/net/wireless/bcmdhd/Makefile6
-rw-r--r--drivers/net/wireless/bcmdhd/dhd_sdio.c16
11 files changed, 38 insertions, 64 deletions
diff --git a/arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi
index 5c69ece29ed2..5e697a0f8214 100644
--- a/arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi
@@ -36,6 +36,7 @@
bcmdhd_wlan_0: bcmdhd_wlan@0 {
compatible = "android,bcmdhd_wlan";
+ gpios = <&gpio4 6 0>; /* WL_HOST_WAKE */
wlreg_on-supply = <&wlreg_on>;
};
};
@@ -56,6 +57,7 @@
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 */
>;
};
};
diff --git a/arch/arm/boot/dts/imx6sl-evk-btwifi.dts b/arch/arm/boot/dts/imx6sl-evk-btwifi.dts
index 341490d88e56..b740c810176d 100644
--- a/arch/arm/boot/dts/imx6sl-evk-btwifi.dts
+++ b/arch/arm/boot/dts/imx6sl-evk-btwifi.dts
@@ -30,6 +30,7 @@
bcmdhd_wlan_0: bcmdhd_wlan@0 {
compatible = "android,bcmdhd_wlan";
+ gpios = <&gpio5 20 0>; /* WL_HOST_WAKE */
wlreg_on-supply = <&wlreg_on>;
};
};
@@ -45,6 +46,7 @@
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 */
>;
};
diff --git a/arch/arm/boot/dts/imx6sx-sdb-btwifi.dts b/arch/arm/boot/dts/imx6sx-sdb-btwifi.dts
index 09db55464c3f..ba5512e652fe 100644
--- a/arch/arm/boot/dts/imx6sx-sdb-btwifi.dts
+++ b/arch/arm/boot/dts/imx6sx-sdb-btwifi.dts
@@ -30,6 +30,8 @@
bcmdhd_wlan_0: bcmdhd_wlan@0 {
compatible = "android,bcmdhd_wlan";
+ /* WL_HOST_WAKE: SD2_DAT1 (gpio6 9) */
+ gpios = <&gpio6 9 0>;
wlreg_on-supply = <&wlreg_on>;
};
};
@@ -72,6 +74,7 @@
MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x17059 /* CD */
MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x17059 /* WP */
/* Murata Module control signals */
+ MX6SX_PAD_SD2_DATA1__GPIO6_IO_9 0x13069 /* WL_HOST_WAKE */
MX6SX_PAD_SD2_DATA2__GPIO6_IO_10 0x13069 /* WL_REG_ON */
>;
};
diff --git a/arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts b/arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts
index ddca38d0006b..8a0a85d2e197 100644
--- a/arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts
+++ b/arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts
@@ -7,4 +7,4 @@
*/
#include "imx6ull-14x14-evk.dts"
-#include "imx6ull-evk-btwifi.dtsi"
+#include "imx6ul-evk-btwifi.dtsi"
diff --git a/arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts b/arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts
index 9e1882f0b9c9..c8a51006213f 100644
--- a/arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts
+++ b/arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts
@@ -7,4 +7,4 @@
*/
#include "imx6ull-9x9-evk.dts"
-#include "imx6ull-evk-btwifi.dtsi"
+#include "imx6ul-evk-btwifi.dtsi"
diff --git a/arch/arm/boot/dts/imx6ull-evk-btwifi.dtsi b/arch/arm/boot/dts/imx6ull-evk-btwifi.dtsi
deleted file mode 100644
index d97e83252829..000000000000
--- a/arch/arm/boot/dts/imx6ull-evk-btwifi.dtsi
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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 (J1701 connector).
- */
-
-/ {
- regulators {
- wlreg_on: fixedregulator@100 {
- compatible = "regulator-fixed";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- regulator-name = "wlreg_on";
- gpio = <&gpio5 1 0>;
- startup-delay-us = <100>;
- enable-active-high;
- };
- };
-
- bcmdhd_wlan_0: bcmdhd_wlan@0 {
- compatible = "android,bcmdhd_wlan";
- wlreg_on-supply = <&wlreg_on>;
- };
-};
-
-&iomuxc {
- imx6ul-evk-murata-v2 {
- pinctrl_wifi: wifigrp {
- fsl,pins = <
- MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x03029
- >;
- };
- };
-};
-
-&reg_sd1_vmmc {
- regulator-always-on;
-};
-
-&usdhc1 {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_wifi>;
- no-1-8-v;
- non-removable;
- cd-post;
- pm-ignore-notify;
- wifi-host; /* add hook for SD card detect mechanism for BCMDHD driver */
-};
diff --git a/arch/arm/boot/dts/imx7d-sdb.dts b/arch/arm/boot/dts/imx7d-sdb.dts
index 1ba8a12739ff..34ea40ca3816 100644
--- a/arch/arm/boot/dts/imx7d-sdb.dts
+++ b/arch/arm/boot/dts/imx7d-sdb.dts
@@ -110,6 +110,7 @@
regulator-max-microvolt = <5000000>;
regulator-name = "wlreg_on";
gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
+ startup-delay-us = <100>;
enable-active-high;
};
};
@@ -124,6 +125,7 @@
bcmdhd_wlan_0: bcmdhd_wlan@0 {
compatible = "android,bcmdhd_wlan";
+ gpios = <&gpio4 20 0>; /* WL_HOST_WAKE */
wlreg_on-supply = <&wlreg_on>;
};
@@ -818,7 +820,7 @@
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
- MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 0x80000000 /* bt reg on */
+ MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 0x19 /* BIT_REG_ON */
MX7D_PAD_EPDC_BDR0__GPIO2_IO28 0x59 /* headphone detect */
>;
};
@@ -1163,7 +1165,8 @@
MX7D_PAD_SD2_DATA1__SD2_DATA1 0x59
MX7D_PAD_SD2_DATA2__SD2_DATA2 0x59
MX7D_PAD_SD2_DATA3__SD2_DATA3 0x59
- MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21 0x59 /* WL_REG_ON */
+ MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21 0x19 /* WL_REG_ON */
+ MX7D_PAD_ECSPI2_SCLK__GPIO4_IO20 0x19 /* WL_HOST_WAKE */
>;
};
diff --git a/arch/arm/configs/imx_v7_defconfig b/arch/arm/configs/imx_v7_defconfig
index 62a504cb8dc6..04403776d26a 100644
--- a/arch/arm/configs/imx_v7_defconfig
+++ b/arch/arm/configs/imx_v7_defconfig
@@ -147,7 +147,7 @@ CONFIG_USB_NET_CDC_EEM=m
CONFIG_BCMDHD=y
CONFIG_BCMDHD_SDIO=y
CONFIG_BCMDHD_FW_PATH="/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin"
-CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.SDIO.cal"
+CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.OOB.cal"
# CONFIG_RTL_CARDS is not set
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_EVDEV=y
diff --git a/drivers/net/wireless/bcmdhd/Kconfig b/drivers/net/wireless/bcmdhd/Kconfig
index b05d5e5c6b79..2a0856ef135c 100644
--- a/drivers/net/wireless/bcmdhd/Kconfig
+++ b/drivers/net/wireless/bcmdhd/Kconfig
@@ -15,6 +15,10 @@ config BCMDHD_PCIE
bool "PCIe bus interface support"
depends on BCMDHD && PCI && !BCMDHD_SDIO
+config BCM4339
+ tristate "BCM4339 support"
+ depends on BCMDHD
+
config BCM4354
tristate "BCM4354 support"
depends on BCMDHD
diff --git a/drivers/net/wireless/bcmdhd/Makefile b/drivers/net/wireless/bcmdhd/Makefile
index 5ee0fb1271a6..c98a5be7a4f7 100644
--- a/drivers/net/wireless/bcmdhd/Makefile
+++ b/drivers/net/wireless/bcmdhd/Makefile
@@ -133,6 +133,8 @@ ifneq ($(CONFIG_BCM4339),)
# tput enhancement
DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
+ DHDCFLAGS += -DCUSTOM_RXCHAIN=1
+
DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
DHDCFLAGS += -DDHDTCPACK_SUPPRESS
@@ -141,8 +143,8 @@ ifneq ($(CONFIG_BCM4339),)
DHDCFLAGS += -DRXFRAME_THREAD
DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64
DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
- DHDCFLAGS += -DPROP_TXSTATUS_VSDB
- DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32
+# DHDCFLAGS += -DPROP_TXSTATUS_VSDB
+ DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32
# New Features
DHDCFLAGS += -DWL11U
diff --git a/drivers/net/wireless/bcmdhd/dhd_sdio.c b/drivers/net/wireless/bcmdhd/dhd_sdio.c
index 7e0e7ab3b925..1207bb3b494e 100644
--- a/drivers/net/wireless/bcmdhd/dhd_sdio.c
+++ b/drivers/net/wireless/bcmdhd/dhd_sdio.c
@@ -381,6 +381,9 @@ typedef struct dhd_bus {
bool txglom_enable; /* Flag to indicate whether tx glom is enabled/disabled */
uint32 txglomsize; /* Glom size limitation */
void *pad_pkt;
+#ifdef HW_OOB
+ int bus_wake_on_resume; /* addition to fix suspend/resume powersave issue */
+#endif
} dhd_bus_t;
/* clkstate */
@@ -6536,7 +6539,13 @@ dhd_bus_watchdog(dhd_pub_t *dhdp)
DHD_TIMER(("%s: Enter\n", __FUNCTION__));
bus = dhdp->bus;
-
+#ifdef HW_OOB
+ /* this code segment added to fix suspend/resume powersave issue */
+ if (bus->bus_wake_on_resume) {
+ BUS_WAKE(bus);
+ bus->bus_wake_on_resume = 0;
+ }
+#endif
if (bus->dhd->dongle_reset)
return FALSE;
@@ -7508,6 +7517,11 @@ dhdsdio_resume(void *context)
bcmsdh_oob_intr_set(bus->sdh, TRUE);
}
#endif
+#ifdef HW_OOB
+ /* this code segment added to fix suspend/resume powersave issue */
+ bus->bus_wake_on_resume = 1;
+ dhd_os_wd_timer(bus->dhd, 1000);
+#endif
return 0;
}