MLK-13179-3 bcmdhd: add OOB support for all IMX6 and IMX7 platforms
authorDong Aisheng <aisheng.dong@nxp.com>
Thu, 1 Sep 2016 12:49:45 +0000 (20:49 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:52:13 +0000 (14:52 -0500)
Enable OOB feature for MX6Q/DL SDB, MX6SL EVK, MX6SX SDB, MX7D SDB boards.

NOTE: The performance optimization option CONFIG_BCM4339 is disabled
by default due to a WiFi driver issue that it breaks MX6SL EVK.

If user want to test performance on the above platforms (except MX6SL EVK),
CONFIG_BCM4339 has to be enabled manually.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
arch/arm/boot/dts/imx6qdl-sabresd-btwifi.dtsi
arch/arm/boot/dts/imx6sl-evk-btwifi.dts
arch/arm/boot/dts/imx6sx-sdb-btwifi.dts
arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dts
arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dts
arch/arm/boot/dts/imx6ull-evk-btwifi.dtsi [deleted file]
arch/arm/boot/dts/imx7d-sdb.dts
arch/arm/configs/imx_v7_defconfig
drivers/net/wireless/bcmdhd/Kconfig
drivers/net/wireless/bcmdhd/Makefile
drivers/net/wireless/bcmdhd/dhd_sdio.c

index 5c69ece..5e697a0 100644 (file)
@@ -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 */
                        >;
                };
        };
index 341490d..b740c81 100644 (file)
@@ -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 */
                        >;
                };
index 09db554..ba5512e 100644 (file)
@@ -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 */
                        >;
                };
index ddca38d..8a0a85d 100644 (file)
@@ -7,4 +7,4 @@
  */
 
 #include "imx6ull-14x14-evk.dts"
-#include "imx6ull-evk-btwifi.dtsi"
+#include "imx6ul-evk-btwifi.dtsi"
index 9e1882f..c8a5100 100644 (file)
@@ -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 (file)
index d97e832..0000000
+++ /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 */
-};
index 1ba8a12..34ea40c 100644 (file)
                        regulator-max-microvolt = <5000000>;
                        regulator-name = "wlreg_on";
                        gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
+                       startup-delay-us = <100>;
                        enable-active-high;
                };
        };
 
        bcmdhd_wlan_0: bcmdhd_wlan@0 {
                compatible = "android,bcmdhd_wlan";
+               gpios = <&gpio4 20 0>;          /* WL_HOST_WAKE */
                wlreg_on-supply = <&wlreg_on>;
        };
 
 
                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 */
                        >;
                };
                                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 */
                        >;
                };
 
index 62a504c..0440377 100644 (file)
@@ -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
index b05d5e5..2a0856e 100644 (file)
@@ -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
index 5ee0fb1..c98a5be 100644 (file)
@@ -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
index 7e0e7ab..1207bb3 100644 (file)
@@ -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;
 }