All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corentin Chary <corentincj@iksaif.net>
To: lenb@kernel.org
Cc: linux-acpi@vger.kernel.org, alan-jenkins@tuffmail.co.uk,
	Corentin Chary <corentincj@iksaif.net>
Subject: [PATCH 09/24] eeepc-laptop: switch to dev_pm_ops
Date: Fri, 28 Aug 2009 14:56:40 +0200	[thread overview]
Message-ID: <1251464215-6540-10-git-send-email-corentincj@iksaif.net> (raw)
In-Reply-To: <1251464215-6540-9-git-send-email-corentincj@iksaif.net>

From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>

This also involves switching the resume handler from the acpi device
to the platform device.  Using the more fine grained handlers allows
two improvements:

1. We only need to recheck rfkill state after resume from hibernation.

2. The wireless LED workaround accounts for up to 1.1s out of 1.7s
resuming devices (when wireless is enabled).  We can limit the
workaround to thaw(), so that it only delays suspend to disk.

The workaround is only likely to help when hibernation is aborted.
Suspend to ram cannot be aborted by the user.  Device suspend errors may
well happen before eeepc-laptop would even be frozen.  Suspend errors
which happen after that could be pretty funky anyway.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
---
 drivers/platform/x86/eeepc-laptop.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index df68ae6..1c94860 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -150,10 +150,19 @@ struct eeepc_hotk {
 static struct eeepc_hotk *ehotk;
 
 /* Platform device/driver */
+static int eeepc_hotk_thaw(struct device *device);
+static int eeepc_hotk_restore(struct device *device);
+
+static struct dev_pm_ops eeepc_pm_ops = {
+	.thaw = eeepc_hotk_thaw,
+	.restore = eeepc_hotk_restore,
+};
+
 static struct platform_driver platform_driver = {
 	.driver = {
 		.name = EEEPC_HOTK_FILE,
 		.owner = THIS_MODULE,
+		.pm = &eeepc_pm_ops,
 	}
 };
 
@@ -192,7 +201,6 @@ static struct key_entry eeepc_keymap[] = {
  */
 static int eeepc_hotk_add(struct acpi_device *device);
 static int eeepc_hotk_remove(struct acpi_device *device, int type);
-static int eeepc_hotk_resume(struct acpi_device *device);
 static void eeepc_hotk_notify(struct acpi_device *device, u32 event);
 
 static const struct acpi_device_id eeepc_device_ids[] = {
@@ -209,7 +217,6 @@ static struct acpi_driver eeepc_hotk_driver = {
 	.ops = {
 		.add = eeepc_hotk_add,
 		.remove = eeepc_hotk_remove,
-		.resume = eeepc_hotk_resume,
 		.notify = eeepc_hotk_notify,
 	},
 };
@@ -821,7 +828,7 @@ error_slot:
 	return ret;
 }
 
-static int eeepc_hotk_resume(struct acpi_device *device)
+static int eeepc_hotk_thaw(struct device *device)
 {
 	if (ehotk->wlan_rfkill) {
 		bool wlan;
@@ -829,14 +836,20 @@ static int eeepc_hotk_resume(struct acpi_device *device)
 		/*
 		 * 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 suspend is aborted.
+		 * we should kick it ourselves in case hibernation is aborted.
 		 */
 		wlan = get_acpi(CM_ASL_WLAN);
 		set_acpi(CM_ASL_WLAN, wlan);
+	}
+
+	return 0;
+}
 
-		/* Refresh both rfkill state and pci hotplug */
+static int eeepc_hotk_restore(struct device *device)
+{
+	/* Refresh both wlan rfkill state and pci hotplug */
+	if (ehotk->wlan_rfkill)
 		eeepc_rfkill_hotplug();
-	}
 
 	if (ehotk->bluetooth_rfkill)
 		rfkill_set_sw_state(ehotk->bluetooth_rfkill,
-- 
1.6.4



  reply	other threads:[~2009-08-28 13:03 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-28 12:56 [PATCH 00/24] acpi4asus updates Corentin Chary
2009-08-28 12:56 ` [PATCH 01/24] eeepc-laptop: don't touch the pci slot if it was claimed by a different driver Corentin Chary
2009-08-28 12:56   ` [PATCH 02/24] eeepc-laptop: use a mutex to serialize pci hotplug (resume vs. notify) Corentin Chary
2009-08-28 12:56     ` [PATCH 03/24] eeepc-laptop: fix pci hotplug race on load and unload Corentin Chary
2009-08-28 12:56       ` [PATCH 04/24] eeepc-laptop: fix ordering of init and exit functions Corentin Chary
2009-08-28 12:56         ` [PATCH 05/24] eeepc-laptop: make input device a child of the platform device Corentin Chary
2009-08-28 12:56           ` [PATCH 06/24] eeepc-laptop: remove redundant rfkill_set_sw_state in resume handler Corentin Chary
2009-08-28 12:56             ` [PATCH 07/24] eeepc-laptop: check the 3G rfkill state on resume Corentin Chary
2009-08-28 12:56               ` [PATCH 08/24] eeepc-laptop: correct the description of the hibernation abort bug Corentin Chary
2009-08-28 12:56                 ` Corentin Chary [this message]
2009-08-28 12:56                   ` [PATCH 10/24] eeepc-laptop: add rfkill support for the Wimax in ASUS Eee PC 1000HG Corentin Chary
2009-08-28 12:56                     ` [PATCH 11/24] eeepc-laptop: document sysfs interface Corentin Chary
2009-08-28 12:56                       ` [PATCH 12/24] video/backlight: " Corentin Chary
2009-08-28 12:56                         ` [PATCH 13/24] video/lcd: " Corentin Chary
2009-08-28 12:56                           ` [PATCH 14/24] led: " Corentin Chary
2009-08-28 12:56                             ` [PATCH 15/24] asus-laptop: Show HRWS in infos and fix output format Corentin Chary
2009-08-28 12:56                               ` [PATCH 16/24] asus-laptop: Add *_led_get() functions Corentin Chary
2009-08-28 12:56                                 ` [PATCH 17/24] asus-laptop: Map X50R hotkeys Corentin Chary
2009-08-28 12:56                                   ` [PATCH 18/24] asus-laptop: set maximum led brightness Corentin Chary
2009-08-28 12:56                                     ` [PATCH 19/24] asus-laptop: Add support for Keyboard backlight Corentin Chary
2009-08-28 12:56                                       ` [PATCH 20/24] asus-laptop: handle keyboard backlight keys Corentin Chary
2009-08-28 12:56                                         ` [PATCH 21/24] asus-laptop: Add suport for another "Media" key Corentin Chary
2009-08-28 12:56                                           ` [PATCH 22/24] asus-laptop: Add "calculator" hotkey Corentin Chary
2009-08-28 12:56                                             ` [PATCH 23/24] asus-laptop: document the module Corentin Chary
2009-08-28 12:56                                               ` [PATCH 24/24] asus-laptop: document sysfs interface Corentin Chary
2009-09-01 14:42                             ` [PATCH 14/24] led: " Richard Purdie
2009-09-01 14:43                           ` [PATCH 13/24] video/lcd: " Richard Purdie
2009-08-28 15:02 ` [PATCH 00/24] acpi4asus updates Alan Jenkins
2009-08-29 18:14   ` Len Brown
2009-08-28 19:33 ` [PATCH 00/24] acpi4asus update Len Brown
2009-08-29  8:27   ` Corentin Chary
2009-08-29  8:28   ` [PATCH 1/3] asus-laptop: Fix coding style for comments Corentin Chary
2009-08-29  8:28     ` [PATCH 2/3] eeepc-laptop: fix rfkill memory leak on unload Corentin Chary
2009-08-29  8:28       ` [PATCH 3/3] eeepc-laptop: allow rfkill hotplug to work on the 900A model Corentin Chary
2009-08-29 18:17         ` Len Brown
2009-08-29 18:16       ` [PATCH 2/3] eeepc-laptop: fix rfkill memory leak on unload Len Brown
2009-08-29 18:16     ` [PATCH 1/3] asus-laptop: Fix coding style for comments Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1251464215-6540-10-git-send-email-corentincj@iksaif.net \
    --to=corentincj@iksaif.net \
    --cc=alan-jenkins@tuffmail.co.uk \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.