Skip to contentSkip to conversation

Gateway 200X (again) - No power button events

DISCUSSION Greg Sarjeant 3 participants 5 messages Jan 19, 2004 – Jan 21, 2004 3 messages not in the archive ACPI

lore
Share & tools
lore
#0 lore raw

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

#2 lore raw

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 _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

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]

#4 lore raw

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,
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 _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

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

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

#5 lore raw
In reply to a message not in the archive
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]

#7 lore raw
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 _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.

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