Contribute
Register

T440P Fixes to do before proceeding with the Guide

Status
Not open for further replies.
Never hurts to try.
And as long as you can boot, there is more tools available for diagnosing mistakes once you're booting with the new files/patches.
Ok since now the battery status on hotpatch is being tested from @godwayne305 on his T440p and we are getting feedback from him on my guide, i wanted to ask about led blink fix.
Theres a short code that we add into the wak to fix the led blink after wake from sleep.
So one method i guess is:
- Rename WAK to ZWAk or whatever that doesn’t conflict with acpi.
- Copy wak + add the led fix code into a new ssdt-wak and add external for wak.
Is that correct ?

Second:
Is it possible to somehow only inject the fix code into wak without having to copy all of that (although if first method works fine nothing wrong with that).

The extra code fix is:
Code:
# add these lines into method _WAK after NVSS
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
 
Ok since now the battery status on hotpatch is being tested from @godwayne305 on his T440p and we are getting feedback from him on my guide, i wanted to ask about led blink fix.
Theres a short code that we add into the wak to fix the led blink after wake from sleep.
So one method i guess is:
- Rename WAK to ZWAk or whatever that doesn’t conflict with acpi.
- Copy wak + add the led fix code into a new ssdt-wak and add external for wak.
Is that correct ?

Second:
Is it possible to somehow only inject the fix code into wak without having to copy all of that (although if first method works fine nothing wrong with that).

The extra code fix is:
Code:
# add these lines into method _WAK after NVSS
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)

No need to copy _WAK. You can simply call the original (XWAK).
Refer to SSDT-PTSWAK.dsl for ideas.
It is "Rename/Replace" with delegation, such as is done in the hotpatch guide for GPRW.
 
No need to copy _WAK. You can simply call the original (XWAK).
Refer to SSDT-PTSWAK.dsl for ideas.
It is "Rename/Replace" with delegation, such as is done in the hotpatch guide for GPRW.
@RehabMan since we finally implemented Battery Status Hotpatch the remaining issue to deal with is LED Blink after Wake.

From the Original WAK from OEM DSDT:
Code:
    Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        If (LOr (LEqual (Arg0, Zero), LGreaterEqual (Arg0, 0x05)))
        {
            Return (WAKI)
        }

        Store (Zero, SPS)
        Store (Zero, \_SB.PCI0.LPC.EC.HCMU)
        \_SB.PCI0.LPC.EC.EVNT (One)
        \_SB.PCI0.LPC.EC.HKEY.MHKE (One)
        \_SB.PCI0.LPC.EC.FNST ()
        UCMS (0x0D)
        Store (Zero, LIDB)
        If (LEqual (Arg0, One))
        {
            Store (\_SB.PCI0.LPC.EC.HFNI, FNID)
        }

        If (LEqual (Arg0, 0x03))
        {
            NVSS (Zero)
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            If (LNotEqual (ACST, \_SB.PCI0.LPC.EC.AC._PSR ()))
            {
                \_SB.PCI0.LPC.EC.ATMC ()
            }

            If (SCRM)
            {
                Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
                If (MTAU)
                {
                    Store (0x03E8, Local2)
                    While (LAnd (\_SB.PCI0.LPC.EC.PIBS, Local2))
                    {
                        Sleep (One)
                        Decrement (Local2)
                    }

                    If (Local2)
                    {
                        Store (One, \_SB.PCI0.LPC.EC.PLSL)
                        Store (MTAU, \_SB.PCI0.LPC.EC.PLTU)
                        Store (PL1L, \_SB.PCI0.LPC.EC.PLLS)
                        Store (PL1M, \_SB.PCI0.LPC.EC.PLMS)
                    }
                }
            }

            Store (Zero, IOEN)
            Store (Zero, IOST)
            If (LEqual (ISWK, One))
            {
                If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
                {
                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6070)
                }
            }

            If (VIGD)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                If (WVIS)
                {
                    VBTD ()
                }
            }
            ElseIf (WVIS)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                VBTD ()
            }

            VCMS (One, \_SB.LID._LID ())
            AWON (Zero)
            If (CMPR)
            {
                Notify (\_SB.SLPB, 0x02)
                Store (Zero, CMPR)
            }

            If (LOr (USBR, \_SB.PCI0.XHCI.XRST))
            {
                If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                {
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR3, 0xFFFFFFC0, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR3M, \_SB.PCI0.XHCI.PR3)
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR2, 0xFFFF8000, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR2M, \_SB.PCI0.XHCI.PR2)
                }
            }

            If (VIGD)
            {
                If (And (\_SB.PCI0.VID.TCHE, 0x0100))
                {
                    If (And (\_SB.IAOE.GAOS (), One))
                    {
                        If (And (\_SB.IAOE.GSWR (), 0x02))
                        {
                            Store (Or (And (\_SB.PCI0.VID.STAT, 0xFFFFFFFC), One), \_SB.PCI0.VID.STAT)
                            Store (One, \_SB.PCI0.LPC.EC.SKEM)
                        }
                    }
                }
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            NVSS (Zero)
            Store (Zero, \_SB.PCI0.LPC.EC.HSPA)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            \_SB.PCI0.LPC.EC.ATMC ()
            If (SCRM)
            {
                Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
                If (MTAU)
                {
                    Store (0x03E8, Local2)
                    While (LAnd (\_SB.PCI0.LPC.EC.PIBS, Local2))
                    {
                        Sleep (One)
                        Decrement (Local2)
                    }

                    If (Local2)
                    {
                        Store (One, \_SB.PCI0.LPC.EC.PLSL)
                        Store (MTAU, \_SB.PCI0.LPC.EC.PLTU)
                        Store (PL1L, \_SB.PCI0.LPC.EC.PLLS)
                        Store (PL1M, \_SB.PCI0.LPC.EC.PLMS)
                    }
                }
            }

            If (LNot (NBCF))
            {
                If (VIGD)
                {
                    \_SB.PCI0.LPC.EC.BRNS ()
                }
                Else
                {
                    VBRC (BRLV)
                }
            }

            Store (Zero, IOEN)
            Store (Zero, IOST)
            If (LEqual (ISWK, 0x02))
            {
                If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
                {
                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6080)
                }
            }

            If (\_SB.PCI0.XHCI.XRST)
            {
                If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                {
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR3, 0xFFFFFFC0, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR3M, \_SB.PCI0.XHCI.PR3)
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR2, 0xFFFF8000, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR2M, \_SB.PCI0.XHCI.PR2)
                }
            }
        }

        If (XOr (\_SB.PCI0.EXP6.PDS, \_SB.PCI0.EXP6.PDSF))
        {
            Store (\_SB.PCI0.EXP6.PDS, \_SB.PCI0.EXP6.PDSF)
            Notify (\_SB.PCI0.EXP6, Zero)
        }

        \_SB.PCI0.LPC.EC.BATW (Arg0)
        \_SB.PCI0.LPC.EC.BWAK (Arg0)
        \_SB.PCI0.LPC.EC.HKEY.WGWK (Arg0)
        Notify (\_TZ.THM0, 0x80)
        VSLD (\_SB.LID._LID ())
        If (VIGD)
        {
            \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
        }
        ElseIf (WVIS)
        {
            \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
        }

        If (LLess (Arg0, 0x04))
        {
            If (LOr (And (RRBF, 0x02), And (\_SB.PCI0.LPC.EC.HWAC, 0x02)))
            {
                ShiftLeft (Arg0, 0x08, Local0)
                Store (Or (0x2013, Local0), Local0)
                \_SB.PCI0.LPC.EC.HKEY.MHKQ (Local0)
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (Zero, Local0)
            Store (CSUM (Zero), Local1)
            If (LNotEqual (Local1, CHKC))
            {
                Store (One, Local0)
                Store (Local1, CHKC)
            }

            Store (CSUM (One), Local1)
            If (LNotEqual (Local1, CHKE))
            {
                Store (One, Local0)
                Store (Local1, CHKE)
            }

            If (Local0)
            {
                Notify (_SB, Zero)
            }
        }

        Store (Zero, RRBF)
        Return (WAKI)
    }
With static patch we add those two "Bold & Red" lines to fix the issue:

If (LEqual (Arg0, 0x03))
{
NVSS (Zero)
\_SB.PCI0.LPC.EC.LED (Zero, 0x80)
\_SB.PCI0.LPC.EC.LED (0x0A, 0x80)

Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
If (OSC4)
{
PNTF (0x81)
}

1. You did mention a few posts above that you can make calls for it into PTSWAK.dsl but im not sure how to properly do it.

2. you also said you create your own _WAK replacement (SSDT+patch).

1: How do i make that call, some more hints, not sure where to begin on PTSWAK.dsl ?

2: Since laptop has no Discrete GPU i can get rid of SSDT-PTSWAK.dsl if no need for the features inside of it & make a SSDT-ZWAK.dsl where i copy the complete _WAK method from DSDT and paste it on that empty SSDT-ZWAK with the patch included, add externals and that should be it, am i correct ?
 
@RehabMan since we finally implemented Battery Status Hotpatch the remaining issue to deal with is LED Blink after Wake.

From the Original WAK from OEM DSDT:
Code:
    Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        If (LOr (LEqual (Arg0, Zero), LGreaterEqual (Arg0, 0x05)))
        {
            Return (WAKI)
        }

        Store (Zero, SPS)
        Store (Zero, \_SB.PCI0.LPC.EC.HCMU)
        \_SB.PCI0.LPC.EC.EVNT (One)
        \_SB.PCI0.LPC.EC.HKEY.MHKE (One)
        \_SB.PCI0.LPC.EC.FNST ()
        UCMS (0x0D)
        Store (Zero, LIDB)
        If (LEqual (Arg0, One))
        {
            Store (\_SB.PCI0.LPC.EC.HFNI, FNID)
        }

        If (LEqual (Arg0, 0x03))
        {
            NVSS (Zero)
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            If (LNotEqual (ACST, \_SB.PCI0.LPC.EC.AC._PSR ()))
            {
                \_SB.PCI0.LPC.EC.ATMC ()
            }

            If (SCRM)
            {
                Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
                If (MTAU)
                {
                    Store (0x03E8, Local2)
                    While (LAnd (\_SB.PCI0.LPC.EC.PIBS, Local2))
                    {
                        Sleep (One)
                        Decrement (Local2)
                    }

                    If (Local2)
                    {
                        Store (One, \_SB.PCI0.LPC.EC.PLSL)
                        Store (MTAU, \_SB.PCI0.LPC.EC.PLTU)
                        Store (PL1L, \_SB.PCI0.LPC.EC.PLLS)
                        Store (PL1M, \_SB.PCI0.LPC.EC.PLMS)
                    }
                }
            }

            Store (Zero, IOEN)
            Store (Zero, IOST)
            If (LEqual (ISWK, One))
            {
                If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
                {
                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6070)
                }
            }

            If (VIGD)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                If (WVIS)
                {
                    VBTD ()
                }
            }
            ElseIf (WVIS)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                VBTD ()
            }

            VCMS (One, \_SB.LID._LID ())
            AWON (Zero)
            If (CMPR)
            {
                Notify (\_SB.SLPB, 0x02)
                Store (Zero, CMPR)
            }

            If (LOr (USBR, \_SB.PCI0.XHCI.XRST))
            {
                If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                {
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR3, 0xFFFFFFC0, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR3M, \_SB.PCI0.XHCI.PR3)
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR2, 0xFFFF8000, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR2M, \_SB.PCI0.XHCI.PR2)
                }
            }

            If (VIGD)
            {
                If (And (\_SB.PCI0.VID.TCHE, 0x0100))
                {
                    If (And (\_SB.IAOE.GAOS (), One))
                    {
                        If (And (\_SB.IAOE.GSWR (), 0x02))
                        {
                            Store (Or (And (\_SB.PCI0.VID.STAT, 0xFFFFFFFC), One), \_SB.PCI0.VID.STAT)
                            Store (One, \_SB.PCI0.LPC.EC.SKEM)
                        }
                    }
                }
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            NVSS (Zero)
            Store (Zero, \_SB.PCI0.LPC.EC.HSPA)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            \_SB.PCI0.LPC.EC.ATMC ()
            If (SCRM)
            {
                Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
                If (MTAU)
                {
                    Store (0x03E8, Local2)
                    While (LAnd (\_SB.PCI0.LPC.EC.PIBS, Local2))
                    {
                        Sleep (One)
                        Decrement (Local2)
                    }

                    If (Local2)
                    {
                        Store (One, \_SB.PCI0.LPC.EC.PLSL)
                        Store (MTAU, \_SB.PCI0.LPC.EC.PLTU)
                        Store (PL1L, \_SB.PCI0.LPC.EC.PLLS)
                        Store (PL1M, \_SB.PCI0.LPC.EC.PLMS)
                    }
                }
            }

            If (LNot (NBCF))
            {
                If (VIGD)
                {
                    \_SB.PCI0.LPC.EC.BRNS ()
                }
                Else
                {
                    VBRC (BRLV)
                }
            }

            Store (Zero, IOEN)
            Store (Zero, IOST)
            If (LEqual (ISWK, 0x02))
            {
                If (\_SB.PCI0.LPC.EC.HKEY.DHKC)
                {
                    \_SB.PCI0.LPC.EC.HKEY.MHKQ (0x6080)
                }
            }

            If (\_SB.PCI0.XHCI.XRST)
            {
                If (LOr (LEqual (XHCI, 0x02), LEqual (XHCI, 0x03)))
                {
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR3, 0xFFFFFFC0, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR3M, \_SB.PCI0.XHCI.PR3)
                    Store (Zero, Local0)
                    And (\_SB.PCI0.XHCI.PR2, 0xFFFF8000, Local0)
                    Or (Local0, \_SB.PCI0.XHCI.PR2M, \_SB.PCI0.XHCI.PR2)
                }
            }
        }

        If (XOr (\_SB.PCI0.EXP6.PDS, \_SB.PCI0.EXP6.PDSF))
        {
            Store (\_SB.PCI0.EXP6.PDS, \_SB.PCI0.EXP6.PDSF)
            Notify (\_SB.PCI0.EXP6, Zero)
        }

        \_SB.PCI0.LPC.EC.BATW (Arg0)
        \_SB.PCI0.LPC.EC.BWAK (Arg0)
        \_SB.PCI0.LPC.EC.HKEY.WGWK (Arg0)
        Notify (\_TZ.THM0, 0x80)
        VSLD (\_SB.LID._LID ())
        If (VIGD)
        {
            \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
        }
        ElseIf (WVIS)
        {
            \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
        }

        If (LLess (Arg0, 0x04))
        {
            If (LOr (And (RRBF, 0x02), And (\_SB.PCI0.LPC.EC.HWAC, 0x02)))
            {
                ShiftLeft (Arg0, 0x08, Local0)
                Store (Or (0x2013, Local0), Local0)
                \_SB.PCI0.LPC.EC.HKEY.MHKQ (Local0)
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (Zero, Local0)
            Store (CSUM (Zero), Local1)
            If (LNotEqual (Local1, CHKC))
            {
                Store (One, Local0)
                Store (Local1, CHKC)
            }

            Store (CSUM (One), Local1)
            If (LNotEqual (Local1, CHKE))
            {
                Store (One, Local0)
                Store (Local1, CHKE)
            }

            If (Local0)
            {
                Notify (_SB, Zero)
            }
        }

        Store (Zero, RRBF)
        Return (WAKI)
    }
With static patch we add those two "Bold & Red" lines to fix the issue:

If (LEqual (Arg0, 0x03))
{
NVSS (Zero)
\_SB.PCI0.LPC.EC.LED (Zero, 0x80)
\_SB.PCI0.LPC.EC.LED (0x0A, 0x80)

Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
If (OSC4)
{
PNTF (0x81)
}

1. You did mention a few posts above that you can make calls for it into PTSWAK.dsl but im not sure how to properly do it.

2. you also said you create your own _WAK replacement (SSDT+patch).

1: How do i make that call, some more hints, not sure where to begin on PTSWAK.dsl ?

2: Since laptop has no Discrete GPU i can get rid of SSDT-PTSWAK.dsl if no need for the features inside of it & make a SSDT-ZWAK.dsl where i copy the complete _WAK method from DSDT and paste it on that empty SSDT-ZWAK with the patch included, add externals and that should be it, am i correct ?

Rename _WAK to ZWAK with an entry in config.plist/ACPI/DSDT/Patches.

Then provide replacement in an SSDT:
Code:
    External(ZWAK, MethodObj)
    Method(_WAK, 1)
    {
        // call into original _WAK method
        Local0 = ZWAK(Arg0)

        If (3 == Arg0)
        {
            \_SB.PCI0.LPC.EC.LED (0, 0x80)
            \_SB.PCI0.LPC.EC.LED (10, 0x80)
         }
         
        // return value from original _WAK
        Return (Local0)
    }

Note that the LED manipulations can probably be accomplished with a call to _SI._SST.
(read ACPI spec)

For example:
Code:
    External(ZWAK, MethodObj)
    External(_SI._SST, MethodObj)
    Method(_WAK, 1)
    {
        // call into original _WAK method
        Local0 = ZWAK(Arg0)

        // according to ACPI spec _SI._SST, if provided, can be used
        // Arg0 == 1 indicates system "working" (eg. not sleeping)
        If (3 == Arg0 && CondRefOf(\_SI._SST)) { \_SI._SST(1) }
         
        // return value from original _WAK
        Return (Local0)
    }
 
Rename _WAK to ZWAK with an entry in config.plist/ACPI/DSDT/Patches.

Then provide replacement in an SSDT:
Code:
    External(ZWAK, MethodObj)
    Method(_WAK, 1)
    {
        // call into original _WAK method
        Local0 = ZWAK(Arg0)

        If (3 == Arg0)
        {
            \_SB.PCI0.LPC.EC.LED (0, 0x80)
            \_SB.PCI0.LPC.EC.LED (10, 0x80)
         }
       
        // return value from original _WAK
        Return (Local0)
    }

Note that the LED manipulations can probably be accomplished with a call to _SI._SST.
(read ACPI spec)

For example:
Code:
    External(ZWAK, MethodObj)
    External(_SI._SST, MethodObj)
    Method(_WAK, 1)
    {
        // call into original _WAK method
        Local0 = ZWAK(Arg0)

        // according to ACPI spec _SI._SST, if provided, can be used
        // Arg0 == 1 indicates system "working" (eg. not sleeping)
        If (3 == Arg0 && CondRefOf(\_SI._SST)) { \_SI._SST(1) }
       
        // return value from original _WAK
        Return (Local0)
    }

Ok the SSDTs are done, Renames already present for the SSDT-PTSWAK.dsl but will only disable PTS and leave the rename for the ZWAK

So if understood correctly calling _SI._SST can be used to fix LED Blink after wake from sleep too ?

If that's the case, i already created Two SSDT-SST & SSDT-ZWAK to test out, if the SST model works, it does look much cleaner to me, will leave that one.
 
Ok the SSDTs are done, Renames already present for the SSDT-PTSWAK.dsl but will only disable PTS and leave the rename for the ZWAK

Make sure the rename matches Serialized vs. NotSerialized.

So if understood correctly calling _SI._SST can be used to fix LED Blink after wake from sleep too ?

According to the ACPI spec, yes... if you have _SI._SST.
You should check.
I think you'll find that if it is there, it does the same LED manipulation calls you're already proposing.
 
Make sure the rename matches Serialized vs. NotSerialized.
Ofc, i already checked that
According to the ACPI spec, yes... if you have _SI._SST.
You should check.
I think you'll find that if it is there, it does the same LED manipulation calls you're already proposing.
Yes it is there, i already checked, it's present on DSDT
Code:
    Scope (_SI)
    {
        Method (_SST, 1, NotSerialized)  // _SST: System Status
        {
            If (LEqual (Arg0, Zero))
            {
                \_SB.PCI0.LPC.EC.LED (Zero, Zero)
                \_SB.PCI0.LPC.EC.LED (0x0A, Zero)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

            If (LEqual (Arg0, One))
            {
                If (LOr (SPS, WNTF))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x05)
                }

                \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

            If (LEqual (Arg0, 0x02))
            {
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
            }

            If (LEqual (Arg0, 0x03))
            {
                If (LGreater (SPS, 0x03))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x07)
                }
                ElseIf (LEqual (SPS, 0x03))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x03)
                }
                Else
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x04)
                }

                If (LEqual (SPS, 0x03)) {}
                Else
                {
                    \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                    \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                }

                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                Stall (0x32)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
            }

            If (LEqual (Arg0, 0x04))
            {
                \_SB.PCI0.LPC.EC.BEEP (0x03)
                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
            }
        }
    }
 
Ofc, i already checked that

Yes it is there, i already checked, it's present on DSDT
Code:
    Scope (_SI)
    {
        Method (_SST, 1, NotSerialized)  // _SST: System Status
        {
            If (LEqual (Arg0, Zero))
            {
                \_SB.PCI0.LPC.EC.LED (Zero, Zero)
                \_SB.PCI0.LPC.EC.LED (0x0A, Zero)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

            If (LEqual (Arg0, One))
            {
                If (LOr (SPS, WNTF))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x05)
                }

                \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

            If (LEqual (Arg0, 0x02))
            {
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
            }

            If (LEqual (Arg0, 0x03))
            {
                If (LGreater (SPS, 0x03))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x07)
                }
                ElseIf (LEqual (SPS, 0x03))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x03)
                }
                Else
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x04)
                }

                If (LEqual (SPS, 0x03)) {}
                Else
                {
                    \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                    \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                }

                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                Stall (0x32)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
            }

            If (LEqual (Arg0, 0x04))
            {
                \_SB.PCI0.LPC.EC.BEEP (0x03)
                \_SB.PCI0.LPC.EC.LED (0x07, 0xC0)
                \_SB.PCI0.LPC.EC.LED (Zero, 0xC0)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0xC0)
            }
        }
    }

You can see what it does for Arg0==1:
Code:
            If (LEqual (Arg0, One))
            {
                If (LOr (SPS, WNTF))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x05)
                }

                \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

Seems very close to what you're already doing, except it has the extra LED(7,0).
 
You can see what it does for Arg0==1:
Code:
            If (LEqual (Arg0, One))
            {
                If (LOr (SPS, WNTF))
                {
                    \_SB.PCI0.LPC.EC.BEEP (0x05)
                }

                \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
                \_SB.PCI0.LPC.EC.LED (0x07, Zero)
            }

Seems very close to what you're already doing, except it has the extra LED(7,0).
Ok so about that LED(7,0) ,so if understood correctly what are you trying to say is that it might cause issues or it needs to be included if i go for the first method mentioned above, if it's needed then if calling _SSI._SST (second method you mentioned above) works,i assume that part of code will be called already, so need for extra work on it.
 
Ok so about that LED(7,0) ,so if understood correctly what are you trying to say is that it might cause issues or it needs to be included if i go for the first method mentioned above, if it's needed then if calling _SSI._SST (second method you mentioned above) works,i assume that part of code will be called already, so need for extra work on it.

Personally, I would call _SI._SST(1). It is no doubt what ACPI compliant Windows is doing.
 
Status
Not open for further replies.
Back
Top