RE: 2.6.19: ACPI reports AC not present after resume from STD

Karasyov, Konstantin A
2006-12-07T19:07:05Z

[-- Attachment #1: Type: text/plain, Size: 2309 bytes --]

Hi,

Unfortunately, I cannot reproduce this bug on my system, but the problem
could be solved by adding a resume handler for AC adapter device. Could
you try the attached patch to see if it helps.

Regards.
Konstantin.
>-----Original Message-----
>From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
>owner@vger.kernel.org] On Behalf Of Andrey Borzenkov
>Sent: Sunday, December 03, 2006 7:01 PM
>To: Alexey Starikovskiy
>Cc: Pavel Machek; linux-acpi@vger.kernel.org;
linux-kernel@vger.kernel.org
>Subject: Re: 2.6.19: ACPI reports AC not present after resume from STD
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>On Sunday 03 December 2006 17:35, Alexey Starikovskiy wrote:
>> Andrey Borzenkov wrote:
>> > -----BEGIN PGP SIGNED MESSAGE-----
>> > Hash: SHA1
>> >
>> > On Sunday 03 December 2006 16:11, Pavel Machek wrote:
>> >> Hi!
>> >>
>> >>> I started to notice it some time ago; I can't say exactly if this
was
>> >>> not present in earlier versions because recently I switched from
STR
>> >>> (which gave me no end of troubles) to STD. So I may have not seen
it
>> >>> before.
>> >>>
>> >>> Suspend to disk while on battery. Plug in AC, resume. ACPI
continues
>to
>> >>> show AC adapter as not present:
>> >>>
>> >>> {pts/0}% cat /proc/acpi/ac_adapter/ADP1/state
>> >>> state: off-line
>> >>>
>> >>> replugging AC correctly changes state to on-line.
>> >>
>> >> try echo platform > /sys/power/disk.
>> >
>> > Nope.
>> >
>> > {pts/0}% pmsuspend disk
>> > ... after resume
>> > {pts/0}% cat /sys/power/disk
>> > platform
>> > {pts/0}% cat /proc/acpi/ac_adapter/ADP1/state
>> > state: off-line
>>
>> please look if patches in 7122 work for you.
>
>No. I applied patches from comments 38 and 52 (modified, it did not
apply
>cleanly to 2.6.19). As far as I understood, those two were final.
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.4.5 (GNU/Linux)
>
>iD8DBQFFcvS3R6LMutpd94wRAp9oAKCM7+6G4SsgFEGLgkW1jxM3VMQHqQCdFSDQ
>14w+QsgDtxWusmfdzCMOdqo=
>=QDyt
>-----END PGP SIGNATURE-----
>-
>To unsubscribe from this list: send the line "unsubscribe linux-acpi"
in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html

[-- Attachment #2: ac_resume.patch --]
[-- Type: application/octet-stream, Size: 1080 bytes --]

Index: linux-2.6/drivers/acpi/ac.c
===================================================================
--- linux-2.6.orig/drivers/acpi/ac.c 2006-09-20 07:42:06.000000000 +0400
+++ linux-2.6/drivers/acpi/ac.c 2006-12-07 22:52:00.000000000 +0300
@@ -55,6 +55,7 @@

static int acpi_ac_add(struct acpi_device *device);
static int acpi_ac_remove(struct acpi_device *device, int type);
+static int acpi_ac_resume(struct acpi_device *device, int state);
static int acpi_ac_open_fs(struct inode *inode, struct file *file);

static struct acpi_driver acpi_ac_driver = {
@@ -64,6 +65,7 @@
.ops = {
.add = acpi_ac_add,
.remove = acpi_ac_remove,
+ .resume = acpi_ac_resume,
},
};

@@ -281,6 +283,22 @@
return 0;
}

+static int acpi_ac_resume(struct acpi_device *device, int state)
+{
+ int result = 0;
+ struct acpi_ac *ac = NULL;
+
+
+ if (!device || !acpi_driver_data(device))
+ return -EINVAL;
+
+ ac = (struct acpi_ac *)acpi_driver_data(device);
+
+ result = acpi_ac_get_state(ac);
+
+ return (result);
+}
+
static int __init acpi_ac_init(void)
{
int result;