Mac OS X on x86 Hardware 2008–2024 Technical Archive
InfiniteMac OSx86 › OSx86 Core & 10.X › ALC888 on SL using DSDT+LegacyHDA
10,141 reads · 2009-10-25 – 2009-10-26
Dossier 10.X Core DSDT ALC889a / Audio

ALC888 on SL using DSDT+LegacyHDA

I'm trying to make my ALC888 audio work using patched DSDT and LegacyHDA.kext in /Extra/Extensions. I followed How_to_patch_DSDT_with_LAN_and_HDEF_functions_including_LegacyHDA.zip from this thread but i'm not able to compile my DSDT: I…

Primary Author
@Andrew180 Published 2009-10-25
Collection
OSx86 Core & 10.X
Archival Footprint
10,141 historical reads · 1 curated field notes (from 5 dispatches) · 2009-10-25 – 2009-10-26
Credited Voices (3)
@Andrew180 (3)@chaoswith@thorazine74

I'm trying to make my ALC888 audio work using patched DSDT and LegacyHDA.kext in /Extra/Extensions. I followed How_to_patch_DSDT_with_LAN_and_HDEF_functions_including_LegacyHDA.zip from this ↗ thread but i'm not able to compile my DSDT:

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20090903 [Oct  2 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0

/Users/Andrew/Desktop/DSDT.dsl   463:                 CreateDWordField (BUF0, \_SB.PCI0._CRS._Y00._MIN, TCMM)
Optimize 6057 -                                                                   NamePath optimized ^  (_Y00._MIN)

/Users/Andrew/Desktop/DSDT.dsl   464:                 CreateDWordField (BUF0, \_SB.PCI0._CRS._Y00._LEN, TOMM)
Optimize 6057 -                                                                   NamePath optimized ^  (_Y00._LEN)

/Users/Andrew/Desktop/DSDT.dsl   477:                     LNKA, 
Error    4063 -                        Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   485:                     LNKA, 
Error    4063 -                        Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   517:                     LNKA, 
Error    4063 -                        Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   549:                     LNKA, 
Error    4063 -                        Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   589:                     LNKA, 
Error    4063 -                        Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   798:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl   920:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1010:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1100:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1190:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1312:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1401:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1425:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  1449:                         LNKA, 
Error    4063 -                            Object does not exist ^  (LNKA)

/Users/Andrew/Desktop/DSDT.dsl  2267:                         CreateByteField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y01._MIN, IOLO)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y01._MIN)

/Users/Andrew/Desktop/DSDT.dsl  2269:                         CreateByteField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y01._MAX, IORL)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y01._MAX)

/Users/Andrew/Desktop/DSDT.dsl  2367:                         CreateByteField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y02._MIN, IOLO)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y02._MIN)

/Users/Andrew/Desktop/DSDT.dsl  2369:                         CreateByteField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y02._MAX, IORL)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y02._MAX)

/Users/Andrew/Desktop/DSDT.dsl  2371:                         CreateWordField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y03._INT, IRQW)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y03._INT)

/Users/Andrew/Desktop/DSDT.dsl  2540:                         CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._MIN, IOLO)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y04._MIN)

/Users/Andrew/Desktop/DSDT.dsl  2542:                         CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._MAX, IORL)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y04._MAX)

/Users/Andrew/Desktop/DSDT.dsl  2544:                         CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._LEN, IOLE)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y04._LEN)

/Users/Andrew/Desktop/DSDT.dsl  2545:                         CreateWordField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y05._INT, IRQW)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y05._INT)

/Users/Andrew/Desktop/DSDT.dsl  2693:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._MIN, IOLO)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y06._MIN)

/Users/Andrew/Desktop/DSDT.dsl  2695:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._MAX, IORL)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y06._MAX)

/Users/Andrew/Desktop/DSDT.dsl  2697:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._LEN, IOLE)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y06._LEN)

/Users/Andrew/Desktop/DSDT.dsl  2698:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y07._MIN, IOEL)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y07._MIN)

/Users/Andrew/Desktop/DSDT.dsl  2700:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y07._MAX, IOML)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y07._MAX)

/Users/Andrew/Desktop/DSDT.dsl  2702:                         CreateWordField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y08._INT, IRQW)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y08._INT)

/Users/Andrew/Desktop/DSDT.dsl  2703:                         CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y09._DMA, DMAC)
Optimize 6057 -                                                                                    NamePath optimized ^  (_Y09._DMA)

/Users/Andrew/Desktop/DSDT.dsl  3091:             Name (NATA, Package (0x01)
Optimize 6033 -               Integer optimized to single-byte AML opcode ^  (One)

/Users/Andrew/Desktop/DSDT.dsl  3918:                 Buffer (0x01)
Optimize 6033 -      Integer optimized to single-byte AML opcode ^  (One)

/Users/Andrew/Desktop/DSDT.dsl  3918:                 Buffer (0x01)
Optimize 6033 -      Integer optimized to single-byte AML opcode ^  (One)

/Users/Andrew/Desktop/DSDT.dsl  3951:                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Error    4063 -                        Object does not exist ^  (DTGP)

/Users/Andrew/Desktop/DSDT.dsl  3975:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  3986:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  3987:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4018:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4029:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4030:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4061:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4072:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4073:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4104:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4115:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4116:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4147:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4158:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4159:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4190:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4201:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4202:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4233:                     Return (BUFA)
Error    4063 -                                Object does not exist ^  (BUFA)

/Users/Andrew/Desktop/DSDT.dsl  4244:                     ShiftLeft (One, Local0, IRQV)
Error    4063 -                                                Object does not exist ^  (IRQV)

/Users/Andrew/Desktop/DSDT.dsl  4245:                     Return (BUFB)
Error    4063 -                                Object does not exist ^  (BUFB)

/Users/Andrew/Desktop/DSDT.dsl  4331:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0A._BAS, ACMM)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0A._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4332:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0A._LEN, ASSM)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0A._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4333:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0B._BAS, RMA1)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0B._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4334:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0B._LEN, RSS1)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0B._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4335:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0C._BAS, RMA2)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0C._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4336:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0C._LEN, RSS2)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0C._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4337:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0D._BAS, RMA3)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0D._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4338:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0D._LEN, RSS3)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0D._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4339:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._BAS, RMA4)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0E._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4340:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._LEN, RSS4)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0E._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4341:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._BAS, ERMA)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0F._BAS)

/Users/Andrew/Desktop/DSDT.dsl  4342:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._LEN, ERMS)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y0F._LEN)

/Users/Andrew/Desktop/DSDT.dsl  4343:                 CreateDWordField (BUF0, \_SB.MEM._CRS._Y10._LEN, EXTM)
Optimize 6057 -                                                                  NamePath optimized ^  (_Y10._LEN)


Elapsed time for major events


Miscellaneous compile statistics

       7135 : Parse nodes
       1439 : Namespace searches
        523 : Named objects
        144 : Control methods
        596 : Memory Allocations
    1429025 : Total allocated memory
          0 : Constant subtrees folded

ASL Input:  /Users/Andrew/Desktop/DSDT.dsl - 4474 lines, 146608 bytes, 1583 keywords
Compilation complete. 36 Errors, 0 Warnings, 0 Remarks, 34 Optimizations

I have this in my DSDT.dsl:

Device (HDEF)
            {
        Name (_ADR, 0x001B0000)
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x0A)
                        {

                "built-in",
                Buffer (0x01)
                {
                0x01
                },

                            "codec-id", 
                            Buffer (0x04)
                            {
                                0x88, 0x08, 0xEC, 0x10    
                            }, 

                            "layout-id", 
                            Buffer (0x04)
                            {
                                0x78, 0x03, 0x00, 0x00   
                            }, 

                            "device-type", 
                            Buffer (0x10)
                            {
                                "Realtek ALC888"     
                            }, 

                            "PinConfigurations", 
                            Buffer (0x28)
                            {
                                /* 0000 */    0x10, 0x90, 0xA1, 0x01, 0x20, 0x90, 0xA1, 0x02, 
                                /* 0008 */    0x80, 0x30, 0x81, 0x01, 0x90, 0x40, 0x21, 0x02, 
                                /* 0010 */    0x30, 0x40, 0x11, 0x01, 0x40, 0x40, 0x01, 0x01, 
                                /* 0018 */    0x50, 0x60, 0x01, 0x01, 0x60, 0x20, 0x01, 0x01, 
                                /* 0020 */    0x70, 0x61, 0x4B, 0x01, 0xA0, 0x01, 0xCB, 0x01
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

With DSDT patched using Koalala's patcher (selected ALC888-2) i'm getting this info:

So maybe DSDT patched using Koalala's patcher is better way to go, at least i can see my card but with no pins...

Author Updates & Technical Revisions

Follow-up dispatches by @Andrew180

Author Update #1 @Andrew180 2009-10-26 ↳ Re: @chaoswith
@chaoswithuse the voodoohda.kext

Yes, VoodooHDA works for me but with sleep bug. Also patched AppleHDA+HDAEnabler works for me with 5.1 and no sleep bug, so perfectly. But i want to minimize the number of kexts i had to use...I really wanna make this DSDT thing work.

Author Update #2 @Andrew180 2009-10-26 ↳ Re: @thorazine74
@thorazine74It looks like your DSDT is missing some info regarding PCI interrupts (LNKA) you would probably have to add that sections to the DSDT but I'm not sure if that posible or easy, I'm not very skilled with DSDT. Have you considered just using HDAEnabler or an EFI String to inject the same values needed for a LegacyHDA, the layout-id and…

Thanks for reply, but when i'm trying to add efi strings it gives me this error:

Of course i restored my original Device (AZAL) before doing this...

But i think that with that koalala's dsdt i'm not too far away from success because i can really see my audio and i can see true hardware id of my audio, so it just have to be finished some way i think...

Synthesized Community Field Notes

1 technical responses curated from 5 original dispatches

Field Note #1 @thorazine74 2009-10-26

It looks like your DSDT is missing some info regarding PCI interrupts (LNKA) you would probably have to add that sections to the DSDT but I'm not sure if that posible or easy, I'm not very skilled with DSDT.
Have you considered just using HDAEnabler or an EFI String to inject the same values needed for a LegacyHDA, the layout-id and the pin configurations if needed? It should be straight, much easier than fixing your messed up DSDT code...

Corroborated & Participated: @chaoswith
Sources & Contributor Provenance (3 credited usernames · Thread #4524)
UsernameDossier ContributionDispatchesActive Window
@Andrew180Primary Author32009-10-25 → 2009-10-26
@chaoswithContributor12009-10-26
@thorazine74Contributor12009-10-26