2011-07-27 16:19:06

by Daniel Drake

[permalink] [raw]
Subject: [PATCH] libertas_usb: program OLPC EC wakeup mask for wake-on-WLAN

OLPC power management code has recently gone upstream. This piece
completes the puzzle for libertas_usb, which now programs the OLPC EC
for wlan wakeups when they have been requested.

Signed-off-by: Daniel Drake <[email protected]>
---
drivers/net/wireless/libertas/if_usb.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)

Depends on some patches that were into Linus's tree yesterday.

diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
index b5acc39..8f73e80 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -1112,6 +1112,15 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
if (priv->psstate != PS_STATE_FULL_POWER)
return -1;

+#ifdef CONFIG_OLPC
+ if (machine_is_olpc()) {
+ if (priv->wol_criteria == EHS_REMOVE_WAKEUP)
+ olpc_ec_wakeup_clear(EC_SCI_SRC_WLAN);
+ else
+ olpc_ec_wakeup_set(EC_SCI_SRC_WLAN);
+ }
+#endif
+
ret = lbs_suspend(priv);
if (ret)
goto out;
--
1.7.6



2011-07-27 19:13:24

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] libertas_usb: program OLPC EC wakeup mask for wake-on-WLAN

On Wed, 2011-07-27 at 17:19 +0100, Daniel Drake wrote:
> OLPC power management code has recently gone upstream. This piece
> completes the puzzle for libertas_usb, which now programs the OLPC EC
> for wlan wakeups when they have been requested.
>
> Signed-off-by: Daniel Drake <[email protected]>

Acked-by: Dan Williams <[email protected]>

> ---
> drivers/net/wireless/libertas/if_usb.c | 9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
>
> Depends on some patches that were into Linus's tree yesterday.
>
> diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
> index b5acc39..8f73e80 100644
> --- a/drivers/net/wireless/libertas/if_usb.c
> +++ b/drivers/net/wireless/libertas/if_usb.c
> @@ -1112,6 +1112,15 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
> if (priv->psstate != PS_STATE_FULL_POWER)
> return -1;
>
> +#ifdef CONFIG_OLPC
> + if (machine_is_olpc()) {
> + if (priv->wol_criteria == EHS_REMOVE_WAKEUP)
> + olpc_ec_wakeup_clear(EC_SCI_SRC_WLAN);
> + else
> + olpc_ec_wakeup_set(EC_SCI_SRC_WLAN);
> + }
> +#endif
> +
> ret = lbs_suspend(priv);
> if (ret)
> goto out;