diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2015-03-18 00:24:52 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-03-18 00:24:52 -0700 |
| commit | 24195cdd261d264e586640c86136ea17d48e6a67 (patch) | |
| tree | 5e27623e4ce09b805f60383f2c083700cd45bc79 | |
| parent | 04ef55e4a14330c87aba62467a3a537bcd587298 (diff) | |
| parent | 115ed414febb4f3885895926be493c4268444ca0 (diff) | |
Merge "Release 4.0.10.56 QCACLD WLAN Driver"
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/USB/if_usb.c | 41 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c | 8 |
3 files changed, 44 insertions, 9 deletions
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index 56866102fc92..447e247393e3 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 10 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 55 +#define QWLAN_VERSION_BUILD 56 -#define QWLAN_VERSIONSTR "4.0.10.55" +#define QWLAN_VERSIONSTR "4.0.10.56" #define AR6320_REV1_VERSION 0x5000000 diff --git a/CORE/SERVICES/HIF/USB/if_usb.c b/CORE/SERVICES/HIF/USB/if_usb.c index a34dcdc1a149..f6259e1a75a8 100644 --- a/CORE/SERVICES/HIF/USB/if_usb.c +++ b/CORE/SERVICES/HIF/USB/if_usb.c @@ -29,6 +29,7 @@ #include <linux/slab.h> #include <linux/interrupt.h> #include <linux/if_arp.h> +#include <linux/usb/hcd.h> #include "if_usb.h" #include "hif_usb_internal.h" #include "bmi_msg.h" /* TARGET_TYPE_ */ @@ -112,6 +113,44 @@ static int hif_usb_reboot(struct notifier_block *nb, unsigned long val, return NOTIFY_DONE; } +/* + * Disable lpm feature of usb2.0. + */ +static int hif_usb_disable_lpm(struct usb_device *udev) +{ + struct usb_hcd *hcd; + int ret = -EPERM; + pr_info("Enter:%s,Line:%d\n", __func__, __LINE__); + if (!udev || !udev->bus) { + pr_err("Invalid input parameters\n"); + } else { + hcd = bus_to_hcd(udev->bus); + if (udev->usb2_hw_lpm_enabled) { + if (hcd->driver->set_usb2_hw_lpm) { + ret = hcd->driver->set_usb2_hw_lpm(hcd, + udev, FALSE); + if (!ret) { + udev->usb2_hw_lpm_enabled = FALSE; + udev->usb2_hw_lpm_capable = FALSE; + pr_info("%s: LPM is disabled\n", + __func__); + } else { + pr_info("%s: Fail to disable LPM\n", + __func__); + } + } else { + pr_info("%s: hcd doesn't support LPM\n", + __func__); + } + } else { + pr_info("%s: LPM isn't enabled\n", __func__); + } + } + + pr_info("Exit:%s,Line:%d\n", __func__, __LINE__); + return ret; +} + static int hif_usb_probe(struct usb_interface *interface, const struct usb_device_id *id) { @@ -159,6 +198,8 @@ hif_usb_probe(struct usb_interface *interface, const struct usb_device_id *id) pr_info("%s[%d]\n\r", __func__, __LINE__); } usb_set_interface(pdev, 0, 0); + /* disable lpm to avoid usb2.0 probe timeout */ + hif_usb_disable_lpm(pdev); if (hif_usb_configure(sc, &ol_sc->hif_hdl, interface)) goto err_config; diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c index 545446821fe0..85c5e03449e1 100644 --- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c @@ -89,16 +89,10 @@ MODULE_PARM_DESC(forcesleepmode, "Set sleep mode: 0-host capbility, 1-force WOW, /* Some laptop with JMicron SDIO host has compitable * issue with asyncintdelay value, - * change default value to 2 under X86 */ -#ifdef CONFIG_X86 + * change default value to 2 */ unsigned int asyncintdelay = 2; module_param(asyncintdelay, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); MODULE_PARM_DESC(asyncintdelay, "Delay clock count for aysnc interrupt, 2 is default, vaild values are 1 and 2"); -#else -unsigned int asyncintdelay = 0; -module_param(asyncintdelay, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); -MODULE_PARM_DESC(asyncintdelay, "Delay clock count for aysnc interrupt, 0 is default, vaild values are 1 and 2"); -#endif unsigned int forcecard = 0; module_param(forcecard, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); |
