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
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
>
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
>>
>