diff mbox

[2/2] brcmfmac: keep WiFi chip's power during system suspension

Message ID 553DC3E3.5050802@linux.intel.com (mailing list archive)
State Rejected
Delegated to: Kalle Valo
Headers show

Commit Message

Fu, Zhonghui April 27, 2015, 5:06 a.m. UTC
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 <zhonghui.fu@linux.intel.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

-- 1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Arend van Spriel April 27, 2015, 8:53 a.m. UTC | #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<zhonghui.fu@linux.intel.com>
> ---
>   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
>

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Fu, Zhonghui May 1, 2015, 6:26 a.m. UTC | #2
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<zhonghui.fu@linux.intel.com>
>> ---
>>   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
>>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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