Gateway 200X (again) - No power button events
Hi,
I have another question about my Gateway 200X. ACPI is working much
better now, but I just started playing with the power button, and it turns out that I am not getting any events from it. I looked through the DSDT, and could not find any Notify (\SW.PWRB, 0x80) statements for it, so I imagine that that is the problem. Here (I think) are the relevant DSDT sections:
Scope (_GPE)
{
Method (_L05, 0, NotSerialized)
{
Notify (\_SB.PCI0.MODM, 0x02)
Notify (\_SB.PWRB, 0x02)
}
Method (_L0B, 0, NotSerialized)
{
Notify (\_SB.PCI0.PCIB, 0x02)
Notify (\_SB.PWRB, 0x02)
}
Method (_L1D, 0, NotSerialized)
{
Store (\_SB.PHS1 (0x8E, Zero), Local0)
If (LEqual (Local0, One))
{
Notify (\_SB.PWRB, 0x02)
}
If (LEqual (Local0, 0x02))
{
Notify (\_SB.PWRB, 0x02)
}
}
}
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
Name (_PRW, Package (0x02)
{
0x1D,
0x04
})
}Do I have to add this Notify statement in the _GPE block? I'm also a bit confused by the "Notify (\_SB.PWRB, 0x02)" lines. From the spec, I thought that 0x80 and 0x200 were the expected values from Notify for the power button. Am I missing something here?
Also, the BIOS does not supply an ECDT. I am using the patch at bug 1690 to get around this, could that be related?
The power button does shut the macine down in Windows XP. I have tried passing acpi_os_name="Microsoft Windows XP" to the kernel without success. I did that because I noticed lines like this:
If (LEqual (SizeOf (_OS), 0x14))
In the PCI0 device block after seeing the S3D method emails. I haven't really had the chance to dig into what's going on there yet, so it was a bit of a blind stab.
For reference, the complete DSDT is posted at
http://www.morningdave.org/acpi/dsdt.dsl
Thanks again for any help,
Greg
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
A message that is not in the archive (sent off-list or not yet received): 1074533658.11008.18.camel-bi+AKbBUZKZeoWH0uzbU5w@public.gmane.org
OK, I found the Notify call that I was looking for. It was in the EmbeddedControl region, and they don't specify the \_SB. prefix:
Method (_Q50, 0, NotSerialized)
{
Notify (PWRB, 0x80)
}So, it looks like it is specified in the DSDT. I'm not sure why I don't get an event when I press the button. I do get events from the sleep button, but the two are declared somewhat differently. Here they are for comparison:
Device (SLPB)
{
Name (_HID, EisaId ("PNP0C0E"))
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
}
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
Name (_PRW, Package (0x02)
{
0x1D,
0x04
})
}Thanks again,
Greg
Quoted 79 lines · Greg Sarjeant
Hi,
I have another question about my Gateway 200X. ACPI is working much
better now, but I just started playing with the power button, and it turns out that I am not getting any events from it. I looked through the DSDT, and could not find any Notify (\SW.PWRB,0x80) statements for it, so I imagine that that is the problem. Here (I think) are the relevant DSDT sections:Scope (_GPE) { Method (_L05, 0, NotSerialized) { Notify (\_SB.PCI0.MODM, 0x02) Notify (\_SB.PWRB, 0x02) } Method (_L0B, 0, NotSerialized) { Notify (\_SB.PCI0.PCIB, 0x02) Notify (\_SB.PWRB, 0x02) } Method (_L1D, 0, NotSerialized) { Store (\_SB.PHS1 (0x8E, Zero), Local0) If (LEqual (Local0, One)) { Notify (\_SB.PWRB, 0x02) } If (LEqual (Local0, 0x02)) { Notify (\_SB.PWRB, 0x02) } } } Device (PWRB) { Name (_HID, EisaId ("PNP0C0C")) Name (_PRW, Package (0x02) { 0x1D, 0x04 }) }Do I have to add this Notify statement in the
_GPEblock? I'm also a bit confused by the "Notify (\_SB.PWRB,0x02)" lines. From the spec, I thought that0x80and0x200were the expected values from Notify for the power button. Am I missing something here?Also, the BIOS does not supply an ECDT. I am using the patch at bug 1690 to get around this, could that be related?
The power button does shut the macine down in Windows XP. I have tried passing acpi_os_name="Microsoft Windows XP" to the kernel without success. I did that because I noticed lines like this:
If (LEqual (SizeOf (_OS), 0x14))In the PCI0 device block after seeing the S3D method emails. I haven't really had the chance to dig into what's going on there yet, so it was a bit of a blind stab.
For reference, the complete DSDT is posted at
http://www.morningdave.org/acpi/dsdt.dslThanks again for any help,
Greg
Quoted 10 lines
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Acpi-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
A message that is not in the archive (sent off-list or not yet received): [email protected]
A little more info for the Gateway 200X power button issue. The acpi_button_notify method is not even called for the power button (nor is acpi_button_notify_fixed), so whatever is causing the events not to be raised must be at a lower level than that. I'm still guessing that it's a DSDT issue, but this at least rules out a bug in the acpi_button_notify functions.
Greg
Quoted 130 lines · Greg Sarjeant
OK, I found the Notify call that I was looking for. It was in the EmbeddedControl region, and they don't specify the \_SB. prefix:
Method (_Q50, 0, NotSerialized) { Notify (PWRB, 0x80) }So, it looks like it is specified in the DSDT. I'm not sure why I don't get an event when I press the button. I do get events from the sleep button, but the two are declared somewhat differently. Here they are for comparison:
Device (SLPB) { Name (_HID, EisaId ("PNP0C0E")) Method (_STA, 0, NotSerialized) { Return (0x0F) } } Device (PWRB) { Name (_HID, EisaId ("PNP0C0C")) Name (_PRW, Package (0x02) { 0x1D, 0x04 }) }Thanks again,
GregQuoted 79 lines · Greg Sarjeant
Hi,
I have another question about my Gateway 200X. ACPI is working much
better now, but I just started playing with the power button, and it turns out that I am not getting any events from it. I looked through the DSDT, and could not find any Notify (\SW.PWRB,0x80) statements for it, so I imagine that that is the problem. Here (I think) are the relevant DSDT sections:Scope (_GPE) { Method (_L05, 0, NotSerialized) { Notify (\_SB.PCI0.MODM, 0x02) Notify (\_SB.PWRB, 0x02) } Method (_L0B, 0, NotSerialized) { Notify (\_SB.PCI0.PCIB, 0x02) Notify (\_SB.PWRB, 0x02) } Method (_L1D, 0, NotSerialized) { Store (\_SB.PHS1 (0x8E, Zero), Local0) If (LEqual (Local0, One)) { Notify (\_SB.PWRB, 0x02) } If (LEqual (Local0, 0x02)) { Notify (\_SB.PWRB, 0x02) } } } Device (PWRB) { Name (_HID, EisaId ("PNP0C0C")) Name (_PRW, Package (0x02) { 0x1D, 0x04 }) }Do I have to add this Notify statement in the
_GPEblock? I'm also a bit confused by the "Notify (\_SB.PWRB,0x02)" lines. From the spec, I thought that0x80and0x200were the expected values from Notify for the power button. Am I missing something here?Also, the BIOS does not supply an ECDT. I am using the patch at bug 1690 to get around this, could that be related?
The power button does shut the macine down in Windows XP. I have tried passing acpi_os_name="Microsoft Windows XP" to the kernel without success. I did that because I noticed lines like this:
If (LEqual (SizeOf (_OS), 0x14))In the PCI0 device block after seeing the S3D method emails. I haven't really had the chance to dig into what's going on there yet, so it was a bit of a blind stab.
For reference, the complete DSDT is posted at
http://www.morningdave.org/acpi/dsdt.dslThanks again for any help,
GregQuoted 10 lines
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Acpi-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel
Quoted 10 lines
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Acpi-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
Quoted 15 lines · Greg Sarjeant
So, it looks like it is specified in the DSDT. I'm not sure why I don't get an event when I press the button. I do get events from the sleep button, but the two are declared somewhat differently. Here they are for comparison:
Device (SLPB) { Name (_HID, EisaId ("PNP0C0E")) Method (_STA, 0, NotSerialized) { Return (0x0F) } } Device (PWRB)
Quoted 8 lines
{
Name (_HID, EisaId ("PNP0C0C"))
Name (_PRW, Package (0x02)
{
0x1D,
0x04
})
}You have no _STA method for PWRB. On FreeBSD, we say hw is always present if there is no _STA method. If it is present, it must return the proper flags for the hw to be used. Perhaps Linux always thinks it's not present if _STA is not there. Note that SLPB returns the proper _STA result.
-Nate
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 25 lines · Nate Lawson
Quoted 15 lines · Greg Sarjeant
So, it looks like it is specified in the DSDT. I'm not sure why I don't get an event when I press the button. I do get events from the sleep button, but the two are declared somewhat differently. Here they are for comparison:
Device (SLPB) { Name (_HID, EisaId ("PNP0C0E")) Method (_STA, 0, NotSerialized) { Return (0x0F) } } Device (PWRB)Quoted 8 lines
{ Name (_HID, EisaId ("PNP0C0C")) Name (_PRW, Package (0x02) { 0x1D, 0x04 }) }
Quoted 5 lines
You have no
_STAmethod for PWRB. On FreeBSD, we say hw is always present if there is no_STAmethod. If it is present, it must return the proper flags for the hw to be used. Perhaps Linux always thinks it's not present if_STAis not there. Note that SLPB returns the proper_STAresult.
That would contradict the specs. If _STA is not present, then assume, by default, that the device is present, functional, etc like if _STA returned 0x0F.
Signature · 11 lines
Ducrot Bruno -- Which is worse: ignorance or apathy? -- Don't know. Don't care. ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn