Return-path: Received: from mga03.intel.com ([134.134.136.65]:4649 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751537AbbEGCHo (ORCPT ); Wed, 6 May 2015 22:07:44 -0400 Message-ID: <554AC8EB.9040403@linux.intel.com> (sfid-20150507_040805_556801_A71E3A05) Date: Thu, 07 May 2015 10:07:39 +0800 From: "Fu, Zhonghui" MIME-Version: 1.0 To: "brudley@broadcom.com" , Arend van Spriel , Franky Lin , "meuleman@broadcom.com" , Kalle Valo , "pieterpg@broadcom.com" , "hdegoede@redhat.com" , "linux-wireless@vger.kernel.org" , "brcm80211-dev-list@broadcom.com" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v2] brcmfmac: prohibit ACPI power management for brcmfmac driver References: <55463E19.7070709@linux.intel.com> In-Reply-To: <55463E19.7070709@linux.intel.com> Content-Type: text/plain; charset=utf-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: Hi, Any comments are welcome. Thanks, Zhonghui On 2015/5/3 23:26, Fu, Zhonghui wrote: > 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 > --- > Changes in v2: > - Another implementation. > > drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c > index 9b508bd..6c519e3 100644 > --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c > +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c > @@ -33,6 +33,7 @@ > #include > #include > #include > +#include > #include > > #include > @@ -1114,6 +1115,8 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func, > 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); > @@ -1121,6 +1124,11 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func, > 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; > + if (adev = ACPI_COMPANION(dev)) > + adev->flags.power_manageable = 0; > + > /* Consume func num 1 but dont do anything with it. */ > if (func->num == 1) > return 0; > -- 1.7.1 >