diff options
author | Dong Aisheng <aisheng.dong@nxp.com> | 2016-09-01 20:49:45 +0800 |
---|---|---|
committer | Anson Huang <Anson.Huang@nxp.com> | 2017-06-08 19:24:35 +0800 |
commit | 633da685566341315fd207a7950d903c8a4a43eb (patch) | |
tree | 0ffdeae919bb0344aa379a6f5f0510fb8abf1533 /drivers/net/wireless/bcmdhd/dhd_sdio.c | |
parent | 1501f4c004c8830b67942f2d1f900a5ad2354b64 (diff) |
MLK-13179-3 bcmdhd: add OOB support for all IMX6 and IMX7 platforms
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>
Diffstat (limited to 'drivers/net/wireless/bcmdhd/dhd_sdio.c')
-rw-r--r-- | drivers/net/wireless/bcmdhd/dhd_sdio.c | 16 |
1 files changed, 15 insertions, 1 deletions
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; } |