2015-04-27 05:06:47

by Fu, Zhonghui

[permalink] [raw]
Subject: [PATCH 2/2] brcmfmac: keep WiFi chip's power during system suspension

Need to keep the power supply for WiFi chip during system suspension.
Otherwise, the context of WiFi chip will be lost.

Signed-off-by: Zhonghui Fu <[email protected]>
---
drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index fdf8feb..03d3671 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -1251,15 +1251,17 @@ static int brcmf_ops_sdio_suspend(struct device *dev)
brcmf_sdiod_freezer_on(sdiodev);
brcmf_sdio_wd_timer(sdiodev->bus, 0);

+ sdio_flags = MMC_PM_KEEP_POWER;
if (sdiodev->wowl_enabled) {
- sdio_flags = MMC_PM_KEEP_POWER;
if (sdiodev->pdata->oob_irq_supported)
enable_irq_wake(sdiodev->pdata->oob_irq_nr);
else
- sdio_flags = MMC_PM_WAKE_SDIO_IRQ;
- if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
- brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
+ sdio_flags |= MMC_PM_WAKE_SDIO_IRQ;
}
+
+ if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
+ brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
+
return 0;
}

-- 1.7.1



2015-04-27 08:54:00

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH 2/2] brcmfmac: keep WiFi chip's power during system suspension

On 04/27/15 07:06, Fu, Zhonghui wrote:
> Need to keep the power supply for WiFi chip during system suspension.
> Otherwise, the context of WiFi chip will be lost.

I already submitted a patch doing exactly the same thing [1]

Regards,
Arend

[1] https://patchwork.kernel.org/patch/6217391/

> Signed-off-by: Zhonghui Fu<[email protected]>
> ---
> drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 10 ++++++----
> 1 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> index fdf8feb..03d3671 100644
> --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> @@ -1251,15 +1251,17 @@ static int brcmf_ops_sdio_suspend(struct device *dev)
> brcmf_sdiod_freezer_on(sdiodev);
> brcmf_sdio_wd_timer(sdiodev->bus, 0);
>
> + sdio_flags = MMC_PM_KEEP_POWER;
> if (sdiodev->wowl_enabled) {
> - sdio_flags = MMC_PM_KEEP_POWER;
> if (sdiodev->pdata->oob_irq_supported)
> enable_irq_wake(sdiodev->pdata->oob_irq_nr);
> else
> - sdio_flags = MMC_PM_WAKE_SDIO_IRQ;
> - if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
> - brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
> + sdio_flags |= MMC_PM_WAKE_SDIO_IRQ;
> }
> +
> + if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
> + brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
> +
> return 0;
> }
>
> -- 1.7.1
>


2015-05-01 06:26:36

by Fu, Zhonghui

[permalink] [raw]
Subject: Re: [PATCH 2/2] brcmfmac: keep WiFi chip's power during system suspension



On 2015/4/27 16:53, Arend van Spriel wrote:
> On 04/27/15 07:06, Fu, Zhonghui wrote:
>> Need to keep the power supply for WiFi chip during system suspension.
>> Otherwise, the context of WiFi chip will be lost.
>
> I already submitted a patch doing exactly the same thing [1]

OK, please ignore this patch.

What's the target kernel version of your patch?

Thanks,
Zhonghui
>
> Regards,
> Arend
>
> [1] https://patchwork.kernel.org/patch/6217391/
>
>> Signed-off-by: Zhonghui Fu<[email protected]>
>> ---
>> drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 10 ++++++----
>> 1 files changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
>> index fdf8feb..03d3671 100644
>> --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
>> +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
>> @@ -1251,15 +1251,17 @@ static int brcmf_ops_sdio_suspend(struct device *dev)
>> brcmf_sdiod_freezer_on(sdiodev);
>> brcmf_sdio_wd_timer(sdiodev->bus, 0);
>>
>> + sdio_flags = MMC_PM_KEEP_POWER;
>> if (sdiodev->wowl_enabled) {
>> - sdio_flags = MMC_PM_KEEP_POWER;
>> if (sdiodev->pdata->oob_irq_supported)
>> enable_irq_wake(sdiodev->pdata->oob_irq_nr);
>> else
>> - sdio_flags = MMC_PM_WAKE_SDIO_IRQ;
>> - if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
>> - brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
>> + sdio_flags |= MMC_PM_WAKE_SDIO_IRQ;
>> }
>> +
>> + if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags))
>> + brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
>> +
>> return 0;
>> }
>>
>> -- 1.7.1
>>
>