lkml.org 
[lkml]   [2011]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 07/18] eeepc-wmi: add hibernate/resume callbacks
    Date
    Signed-off-by: Corentin Chary <corentincj@iksaif.net>
    ---
    drivers/platform/x86/eeepc-wmi.c | 49 ++++++++++++++++++++++++++++++++++++++
    1 files changed, 49 insertions(+), 0 deletions(-)
    diff --git a/drivers/platform/x86/eeepc-wmi.c b/drivers/platform/x86/eeepc-wmi.c
    index de501fb..583ba78 100644
    --- a/drivers/platform/x86/eeepc-wmi.c
    +++ b/drivers/platform/x86/eeepc-wmi.c
    @@ -1183,10 +1183,59 @@ static int eeepc_wmi_remove(struct platform_device *device)
    return 0;
    }

    +/*
    + * Platform driver - hibernate/resume callbacks
    + */
    +static int eeepc_hotk_thaw(struct device *device)
    +{
    + struct eeepc_wmi *eeepc = dev_get_drvdata(device);
    +
    + if (eeepc->wlan_rfkill) {
    + bool wlan;
    +
    + /*
    + * Work around bios bug - acpi _PTS turns off the wireless led
    + * during suspend. Normally it restores it on resume, but
    + * we should kick it ourselves in case hibernation is aborted.
    + */
    + wlan = eeepc_wmi_get_devstate_simple(EEEPC_WMI_DEVID_WLAN);
    + eeepc_wmi_set_devstate(EEEPC_WMI_DEVID_WLAN, wlan, NULL);
    + }
    +
    + return 0;
    +}
    +
    +static int eeepc_hotk_restore(struct device *device)
    +{
    + struct eeepc_wmi *eeepc = dev_get_drvdata(device);
    + int bl;
    +
    + /* Refresh both wlan rfkill state and pci hotplug */
    + if (eeepc->wlan_rfkill)
    + eeepc_rfkill_hotplug(eeepc);
    +
    + if (eeepc->bluetooth_rfkill) {
    + bl = !eeepc_wmi_get_devstate_simple(EEEPC_WMI_DEVID_BLUETOOTH);
    + rfkill_set_sw_state(eeepc->bluetooth_rfkill, bl);
    +}
    + if (eeepc->wwan3g_rfkill) {
    + bl = !eeepc_wmi_get_devstate_simple(EEEPC_WMI_DEVID_WWAN3G);
    + rfkill_set_sw_state(eeepc->wwan3g_rfkill, bl);
    + }
    +
    + return 0;
    +}
    +
    +static const struct dev_pm_ops eeepc_pm_ops = {
    + .thaw = eeepc_hotk_thaw,
    + .restore = eeepc_hotk_restore,
    +};
    +
    static struct platform_driver platform_driver = {
    .driver = {
    .name = EEEPC_WMI_FILE,
    .owner = THIS_MODULE,
    + .pm = &eeepc_pm_ops,
    },
    };

    --
    1.7.4.rc3


    \
     
     \ /
      Last update: 2011-02-06 13:33    [from the cache]
    ©2003-2014 Jasper Spaans. Advertise on this site