summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-03-18 00:24:52 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-03-18 00:24:52 -0700
commit24195cdd261d264e586640c86136ea17d48e6a67 (patch)
tree5e27623e4ce09b805f60383f2c083700cd45bc79
parent04ef55e4a14330c87aba62467a3a537bcd587298 (diff)
parent115ed414febb4f3885895926be493c4268444ca0 (diff)
Merge "Release 4.0.10.56 QCACLD WLAN Driver"
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/SERVICES/HIF/USB/if_usb.c41
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c8
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);