* RE: Fix wake GPE enabling
@ 2004-04-08 20:38 Moore, Robert
[not found] ` <37F890616C995246BE76B3E6B2DBE0554F1C5F-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Moore, Robert @ 2004-04-08 20:38 UTC (permalink / raw)
To: Nate Lawson
Cc: Dominik Brodowski, Brown, Len,
acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Grover, Andrew
Nate,
Yes, the code below looks good. This is the model that we have in mind
for the ACPI CA code, OSPM, and individual drivers.
Bob
> -----Original Message-----
> From: Nate Lawson [mailto:nate-Y6VGUYTwhu0@public.gmane.org]
> Sent: Thursday, April 08, 2004 10:48 AM
> To: Moore, Robert
> Cc: Dominik Brodowski; Brown, Len; acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org;
> Grover, Andrew
> Subject: RE: [ACPI] Fix wake GPE enabling
>
> On Thu, 8 Apr 2004, Moore, Robert wrote:
> > Linux needs a user interface and some additional OSPM software to
> > identify and program the wake devices, as well as handle the other
> > information in the _PRW methods.
> >
> > The ACPI CA core subsystem will only identify wake vs. runtime GPEs.
> >
> > > -> wake_enable is not touched directly,
> > > -> events/evgpeblk.c does not care, and according to your opinion,
> > should
> > > not care.
> > > -> acpi_enable_gpe is _only_ called by drivers/acpi/ec.c, which
means
> > it
> > > is
> > > _not_ called for buttons, which are very clearly needed in most
> > cases
> > > to
> > > wake up a system.
> > >
> > > At least for buttons, the ACPI subsystem should enable their wake
> > > functionality, e.g. the wake GPEs, unconditionally. Having to
manually
> > > enter
> > > "echo powerbutton > /proc/acpi/wakeup_devices", as the patch in
bug
> > #1415
> > > suggests, seems to be overly complicated. However, having this
file as
> > > override might be a valid option, I agree.
> > >
> >
> > The ACPI CA core subsystem does NOT scan for particular devices (via
the
> > _HID, _UID, etc.) The upper OSPM software already does this and is
thus
> > responsible for enabling individual devices and GPEs for wake-up,
> > including the power button, lid button, etc. This code apparently
still
> > needs to be written.
>
> You mean like this code snippet?
>
> -Nate
>
> acpi_button_attach(device_t dev)
> {
> if (sc->fixed) {
> AcpiClearEvent(event);
> status = AcpiInstallFixedEventHandler(event,
> acpi_button_fixed_handler, sc);
> } else {
> status = AcpiInstallNotifyHandler(sc->button_handle,
> ACPI_DEVICE_NOTIFY,
acpi_button_notify_handler,
> sc);
> }
>
> acpi_device_enable_wake_capability(sc->button_handle, 1);
> }
>
> acpi_button_suspend(device_t dev)
> {
> struct acpi_button_softc *sc;
>
> sc = device_get_softc(dev);
> acpi_device_enable_wake_event(sc->button_handle);
> return (0);
> }
>
> acpi_device_enable_wake_capability(ACPI_HANDLE h, int enable)
> {
> /*
> * All Power Resources referenced by elements 2 through N
> * of the _PRW object are put into the ON state.
> */
>
> (void)acpi_SetInteger(h, "_PSW", enable);
> }
>
> acpi_device_enable_wake_event(ACPI_HANDLE h)
> {
> status = AcpiEvaluateObject(h, "_PRW", NULL, &prw_buffer);
> if (ACPI_FAILURE(status))
> return;
>
> switch (res->Package.Elements[0].Type) {
> case ACPI_TYPE_INTEGER:
> /*
> * If the data type of this package element is numeric, then
this
> * _PRW package element is the bit index in the GPEx_EN, in
the
> * GPE blocks described in the FADT, of the enable bit that is
> * enabled for the wake event.
> */
> status = AcpiEnableGpe(NULL, res-
> >Package.Elements[0].Integer.Value,
> ACPI_EVENT_WAKE_ENABLE);
> }
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id\x1470&alloc_id638&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: Fix wake GPE enabling
[not found] ` <37F890616C995246BE76B3E6B2DBE0554F1C5F-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2004-04-08 22:20 ` Nate Lawson
[not found] ` <20040409061527.GA8572@dominikbrodowski.de>
0 siblings, 1 reply; 3+ messages in thread
From: Nate Lawson @ 2004-04-08 22:20 UTC (permalink / raw)
To: Moore, Robert
Cc: Dominik Brodowski, Brown, Len,
acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Grover, Andrew
It's cut/pasted from FreeBSD, been around since July 2002 and tested as
working.
-Nate
On Thu, 8 Apr 2004, Moore, Robert wrote:
> Nate,
>
> Yes, the code below looks good. This is the model that we have in mind
> for the ACPI CA code, OSPM, and individual drivers.
>
> Bob
>
>
> > -----Original Message-----
> > From: Nate Lawson [mailto:nate-Y6VGUYTwhu0@public.gmane.org]
> > Sent: Thursday, April 08, 2004 10:48 AM
> > To: Moore, Robert
> > Cc: Dominik Brodowski; Brown, Len; acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org;
> > Grover, Andrew
> > Subject: RE: [ACPI] Fix wake GPE enabling
> >
> > On Thu, 8 Apr 2004, Moore, Robert wrote:
> > > Linux needs a user interface and some additional OSPM software to
> > > identify and program the wake devices, as well as handle the other
> > > information in the _PRW methods.
> > >
> > > The ACPI CA core subsystem will only identify wake vs. runtime GPEs.
> > >
> > > > -> wake_enable is not touched directly,
> > > > -> events/evgpeblk.c does not care, and according to your opinion,
> > > should
> > > > not care.
> > > > -> acpi_enable_gpe is _only_ called by drivers/acpi/ec.c, which
> means
> > > it
> > > > is
> > > > _not_ called for buttons, which are very clearly needed in most
> > > cases
> > > > to
> > > > wake up a system.
> > > >
> > > > At least for buttons, the ACPI subsystem should enable their wake
> > > > functionality, e.g. the wake GPEs, unconditionally. Having to
> manually
> > > > enter
> > > > "echo powerbutton > /proc/acpi/wakeup_devices", as the patch in
> bug
> > > #1415
> > > > suggests, seems to be overly complicated. However, having this
> file as
> > > > override might be a valid option, I agree.
> > > >
> > >
> > > The ACPI CA core subsystem does NOT scan for particular devices (via
> the
> > > _HID, _UID, etc.) The upper OSPM software already does this and is
> thus
> > > responsible for enabling individual devices and GPEs for wake-up,
> > > including the power button, lid button, etc. This code apparently
> still
> > > needs to be written.
> >
> > You mean like this code snippet?
> >
> > -Nate
> >
> > acpi_button_attach(device_t dev)
> > {
> > if (sc->fixed) {
> > AcpiClearEvent(event);
> > status = AcpiInstallFixedEventHandler(event,
> > acpi_button_fixed_handler, sc);
> > } else {
> > status = AcpiInstallNotifyHandler(sc->button_handle,
> > ACPI_DEVICE_NOTIFY,
> acpi_button_notify_handler,
> > sc);
> > }
> >
> > acpi_device_enable_wake_capability(sc->button_handle, 1);
> > }
> >
> > acpi_button_suspend(device_t dev)
> > {
> > struct acpi_button_softc *sc;
> >
> > sc = device_get_softc(dev);
> > acpi_device_enable_wake_event(sc->button_handle);
> > return (0);
> > }
> >
> > acpi_device_enable_wake_capability(ACPI_HANDLE h, int enable)
> > {
> > /*
> > * All Power Resources referenced by elements 2 through N
> > * of the _PRW object are put into the ON state.
> > */
> >
> > (void)acpi_SetInteger(h, "_PSW", enable);
> > }
> >
> > acpi_device_enable_wake_event(ACPI_HANDLE h)
> > {
> > status = AcpiEvaluateObject(h, "_PRW", NULL, &prw_buffer);
> > if (ACPI_FAILURE(status))
> > return;
> >
> > switch (res->Package.Elements[0].Type) {
> > case ACPI_TYPE_INTEGER:
> > /*
> > * If the data type of this package element is numeric, then
> this
> > * _PRW package element is the bit index in the GPEx_EN, in
> the
> > * GPE blocks described in the FADT, of the enable bit that is
> > * enabled for the wake event.
> > */
> > status = AcpiEnableGpe(NULL, res-
> > >Package.Elements[0].Integer.Value,
> > ACPI_EVENT_WAKE_ENABLE);
> > }
>
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: S3-resume in FreeBSD
[not found] ` <20040409061527.GA8572-X3ehHDuj6sIIGcDfoQAp7BvVK+yQ3ZXh@public.gmane.org>
@ 2004-04-09 22:58 ` Nate Lawson
0 siblings, 0 replies; 3+ messages in thread
From: Nate Lawson @ 2004-04-09 22:58 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Fri, 9 Apr 2004, Dominik Brodowski wrote:
> Do you know, by chance, if FreeBSD's resume process from S3 equals
> acpi_sleep=s3_mode, s3_bios or none of these special hacks?
>
> Many thanks,
> Dominik
I don't actually know what those flags do on Linux. You can see the path
taken for suspend/resume by following these functions in the linked files:
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/dev/acpica/acpi.c?rev=1.136&content-type=text/plain
acpi_SetSleepState()
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/i386/acpica/acpi_wakeup.c?rev=1.31&content-type=text/plain
acpi_sleep_machdep()
[sleep S3, wakeup]
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/i386/acpica/acpi_wakecode.S?rev=1.9
acpi wakecode runs and returns to acpi_restorecpu() (in acpi_wakeup.c)
We just committed code to save/restore BARs for PCI devices. That should
fix some problems. We support _PRW/_PSW so lid switch wakes devices.
Things left to do include _SxD support and I think there are some problems
with the ACPI-CA path for suspend/resume (i.e. it doesn't always clear
wake status).
-Nate
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-04-09 22:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-08 20:38 Fix wake GPE enabling Moore, Robert
[not found] ` <37F890616C995246BE76B3E6B2DBE0554F1C5F-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2004-04-08 22:20 ` Nate Lawson
[not found] ` <20040409061527.GA8572@dominikbrodowski.de>
[not found] ` <20040409061527.GA8572-X3ehHDuj6sIIGcDfoQAp7BvVK+yQ3ZXh@public.gmane.org>
2004-04-09 22:58 ` S3-resume in FreeBSD Nate Lawson
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.