Re: asus_atk0110: i8042: keys get stuck and keyboard stops responding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 22, 2012 at 09:40:40AM -0500, Jonathan Nieder wrote:
> Luca Tettamanti wrote:
> 
> > Not really, I _suspect_ that there's a bug in the BIOS, but I wasn't
> > able to confirm it; maybe it's something that the driver does.
> > In the thread that you link Javier never replied with the results of the test.
> 
> Oh!  Let's pursue that if possible.
> 
> Here's a diff between Javier's and GSR's DSDT --- they are pretty
> similar.  This means the custom ACPI method from [1] should work
> without needing any change, right?

Yes, that's correct.
For reference this is the modified method, I've set a timeout on all the
mutex operations:

DefinitionBlock ("DSDT.aml", "DSDT", 1, "A1326", "A1326001", 0x00000001)
{
    External(EC0)
    External(_SB.PCI0.SBRG.ASB0)
    External(_SB.PCI0.SBRG.ASB1)
    External(_SB.PCI0.SBRG.ASOC, DeviceObj)
    External(_SB.PCI0.SBRG.EC0, DeviceObj)
    External(_SB.PCI0.SBRG.EC0.MUEC, MutexObj)
    External(_SB.PCI0.SBRG.EC0.ER75)
    External(_SB.PCI0.SBRG.EC0.ER76)
    External(_SB.PCI0.SBRG.EC0.ER77)
    External(_SB.PCI0.SBRG.EC0.ER7A)
    External(_SB.PCI0.SBRG.EC0.ER7B)
    External(_SB.PCI0.SBRG.EC0.ER7C)
    External(_SB.PCI0.SBRG.EC0.ER7D)
    External(_SB.PCI0.SBRG.EC0.ER7E)
    External(_SB.PCI0.SBRG.EC0.ER7F)
    External(_SB.PCI0.SBRG.EC0.ER80)
    External(_SB.PCI0.SBRG.EC0.ER81)
    External(_SB.PCI0.SBRG.EC0.ER84)
    External(_SB.PCI0.SBRG.EC0.ER85)
    External(_SB.PCI0.SBRG.EC0.ER86)
    External(_SB.PCI0.SBRG.EC0.ER87)

    Scope(_SB.PCI0.SBRG.ASOC) {

	//Method (_SB.PCI0.SBRG.ASOC.GIT6, 1, NotSerialized)
        Method (GIT6, 1, NotSerialized)
	{
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)

            If (LEqual (_T_0, 0x11))
            {
                If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                {
                    Multiply (^^EC0.ER84, 0x08, ASB1)
                    Release (^^EC0.MUEC)
                }
            }
            Else
            {
                If (LEqual (_T_0, 0x63))
                {
                    If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                    {
                        Add (0x22, 0x22, Local0)
                        Multiply (ShiftLeft (^^EC0.ER85, 0x03), Local0, Local0)
                        Divide (Local0, 0x22, , ASB1)
                        Release (^^EC0.MUEC)
                    }
                }
                Else
                {
                    If (LEqual (_T_0, 0x62))
                    {
                        If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                        {
                            Add (0x14, 0x0A, Local0)
                            Multiply (ShiftLeft (^^EC0.ER86, 0x03), Local0, Local0)
                            Divide (Local0, 0x0A, , ASB1)
                            Release (^^EC0.MUEC)
                        }
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x61))
                        {
                            If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                            {
                                Add (0x3C, 0x0A, Local0)
                                Multiply (ShiftLeft (^^EC0.ER87, 0x03), Local0, Local0)
                                Divide (Local0, 0x0A, , ASB1)
                                Release (^^EC0.MUEC)
                            }
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x12))
                            {
                                If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                {
                                    ShiftLeft (^^EC0.ER75, One, Local0)
                                    ShiftRight (^^EC0.ER76, 0x07, Local1)
                                    Release (^^EC0.MUEC)
                                    Add (Local0, Local1, Local1)
                                    Multiply (Local1, 0x05, ASB1)
                                }
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x14))
                                {
                                    If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                    {
                                        ShiftLeft (^^EC0.ER77, One, Local0)
                                        Release (^^EC0.MUEC)
                                        Multiply (Local0, 0x05, ASB1)
                                    }
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x13))
                                    {
                                        If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                        {
                                            ShiftLeft (^^EC0.ER7C, 0x08, Local0)
                                            Add (^^EC0.ER7D, Local0, ASB1)
                                            Release (^^EC0.MUEC)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x73))
                                        {
                                            If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                            {
                                                ShiftLeft (^^EC0.ER7A, 0x08, Local0)
                                                Add (^^EC0.ER7B, Local0, ASB1)
                                                Release (^^EC0.MUEC)
                                            }
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x83))
                                            {
                                                If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                                {
                                                    ShiftLeft (^^EC0.ER80, 0x08, Local0)
                                                    Add (^^EC0.ER81, Local0, ASB1)
                                                    Release (^^EC0.MUEC)
                                                }
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0xC3))
                                                {
                                                    If (LNot (Acquire (^^EC0.MUEC, 0xFFFF)))
                                                    {
                                                        ShiftLeft (^^EC0.ER7E, 0x08, Local0)
                                                        Add (^^EC0.ER7F, Local0, ASB1)
                                                        Release (^^EC0.MUEC)
                                                    }
                                                }
                                                Else
                                                {
                                                    Store (Zero, ASB0)
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Luca

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux