48 lines
1.5 KiB
Diff
48 lines
1.5 KiB
Diff
|
From: "Fu, Zhonghui" <zhonghui.fu@linux.intel.com>
|
||
|
Date: Mon, 11 May 2015 10:41:32 +0800
|
||
|
Subject: [PATCH] brcmfmac: prohibit ACPI power management for brcmfmac driver
|
||
|
|
||
|
ACPI will manage WiFi chip's power state during suspend/resume
|
||
|
process on some tablet platforms(such as ASUS T100TA). This is
|
||
|
not supported by brcmfmac driver now, and the context of WiFi
|
||
|
chip will be damaged after resume. This patch informs ACPI not
|
||
|
to manage WiFi chip's power state.
|
||
|
|
||
|
Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
|
||
|
Acked-by: Arend van Spriel <arend@broadcom.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||
|
---
|
||
|
|
||
|
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
|
||
|
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
|
||
|
@@ -33,6 +33,7 @@
|
||
|
#include <linux/suspend.h>
|
||
|
#include <linux/errno.h>
|
||
|
#include <linux/module.h>
|
||
|
+#include <linux/acpi.h>
|
||
|
#include <net/cfg80211.h>
|
||
|
|
||
|
#include <defs.h>
|
||
|
@@ -1122,6 +1123,8 @@ static int brcmf_ops_sdio_probe(struct s
|
||
|
int err;
|
||
|
struct brcmf_sdio_dev *sdiodev;
|
||
|
struct brcmf_bus *bus_if;
|
||
|
+ struct device *dev;
|
||
|
+ struct acpi_device *adev;
|
||
|
|
||
|
brcmf_dbg(SDIO, "Enter\n");
|
||
|
brcmf_dbg(SDIO, "Class=%x\n", func->class);
|
||
|
@@ -1129,6 +1132,12 @@ static int brcmf_ops_sdio_probe(struct s
|
||
|
brcmf_dbg(SDIO, "sdio device ID: 0x%04x\n", func->device);
|
||
|
brcmf_dbg(SDIO, "Function#: %d\n", func->num);
|
||
|
|
||
|
+ /* prohibit ACPI power management for this device */
|
||
|
+ dev = &func->dev;
|
||
|
+ adev = ACPI_COMPANION(dev);
|
||
|
+ if (adev)
|
||
|
+ adev->flags.power_manageable = 0;
|
||
|
+
|
||
|
/* Consume func num 1 but dont do anything with it. */
|
||
|
if (func->num == 1)
|
||
|
return 0;
|