Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0992ace authored by Fu, Zhonghui's avatar Fu, Zhonghui Committed by Kalle Valo
Browse files

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: default avatarZhonghui Fu <zhonghui.fu@linux.intel.com>
Acked-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent bfe3d2bf
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@
#include <linux/suspend.h>
#include <linux/suspend.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/acpi.h>
#include <net/cfg80211.h>
#include <net/cfg80211.h>


#include <defs.h>
#include <defs.h>
@@ -1122,6 +1123,8 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
	int err;
	int err;
	struct brcmf_sdio_dev *sdiodev;
	struct brcmf_sdio_dev *sdiodev;
	struct brcmf_bus *bus_if;
	struct brcmf_bus *bus_if;
	struct device *dev;
	struct acpi_device *adev;


	brcmf_dbg(SDIO, "Enter\n");
	brcmf_dbg(SDIO, "Enter\n");
	brcmf_dbg(SDIO, "Class=%x\n", func->class);
	brcmf_dbg(SDIO, "Class=%x\n", func->class);
@@ -1129,6 +1132,12 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
	brcmf_dbg(SDIO, "sdio device ID: 0x%04x\n", func->device);
	brcmf_dbg(SDIO, "sdio device ID: 0x%04x\n", func->device);
	brcmf_dbg(SDIO, "Function#: %d\n", func->num);
	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. */
	/* Consume func num 1 but dont do anything with it. */
	if (func->num == 1)
	if (func->num == 1)
		return 0;
		return 0;