diff options
Diffstat (limited to 'package/kernel/mac80211/patches/366-brcmfmac-prohibit-ACPI-power-management-for-brcmfmac.patch')
-rw-r--r-- | package/kernel/mac80211/patches/366-brcmfmac-prohibit-ACPI-power-management-for-brcmfmac.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/366-brcmfmac-prohibit-ACPI-power-management-for-brcmfmac.patch b/package/kernel/mac80211/patches/366-brcmfmac-prohibit-ACPI-power-management-for-brcmfmac.patch new file mode 100644 index 0000000000..d46b300daa --- /dev/null +++ b/package/kernel/mac80211/patches/366-brcmfmac-prohibit-ACPI-power-management-for-brcmfmac.patch @@ -0,0 +1,47 @@ +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; |