Jump to content

ALC889A with DSDT.aml


checcco
 Share

13 posts in this topic

Recommended Posts

Hi guys... I think nobody has managed yo get alc889a to work completely with DSDT.aml

 

This is what koalala patcher outputs selecting 889a and HDEF, but sound is not working in any way. (and i can see some sounds assertions while booting)

 

Device (HDEF)
           {
               Name (_ADR, 0x001B0000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x0D, 
                       0x05
                   })
               }

               Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x08)
                       {
                           "codec-id", 
                           Buffer (0x04)
                           {
                               0x89, 0x08, 0xEC, 0x10
                           }, 

                           "layout-id", 
                           /**** Is ResourceTemplate, but EndTag not at buffer end ****/ Buffer (0x04)
                           {
                               0x79, 0x03, 0x00, 0x00
                           }, 

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

                           "PinConfigurations", 
                           Buffer (0x18)
                           {
                               /* 0000 */    0x10, 0x44, 0x11, 0x01, 0x20, 0x14, 0x01, 0x01, 
                               /* 0008 */    0x40, 0x4C, 0x21, 0x02, 0x50, 0x34, 0x81, 0x01, 
                               /* 0010 */    0x60, 0x9C, 0xA1, 0x02, 0xF0, 0x61, 0x4B, 0x01
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }
           }

           Name (BUFA, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {3,4,5,6,7,9,10,11,12,14,15}
           })
           Name (BUFB, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {}
           })
           CreateWordField (BUFB, One, IRQV)

 

In another thread tapper00 suggested to modify it this way. I still get sound assertions while booting but at least sound is working but from the wrong jack, black jack instead of green jack (like it should be on my mobo)

 

Device (HDEF)
           {
               Name (_ADR, 0x001B0000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x0D, 
                       0x05
                   })
               }

               Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x08)
                       {
                           "codec-id", 
                           Buffer (0x04)
                           {
                               0x89, 0x08, 0xEC, 0x10
                           }, 

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

                           "device-type", 
                           Buffer (0x11)
                           {
                               "ALC889a"
                           }, 

                           "PinConfigurations", 
                           Buffer (0x28)
                           {
                               /* 0000 */    0x50, 0x70, 0x21, 0x01, 0x40, 0x01, 0x13, 0x90, 
                               /* 0008 */    0x20, 0x30, 0x81, 0x01, 0x41, 0x40, 0x01, 0x01, 
                               /* 0010 */    0x30, 0xE0, 0xC5, 0x01, 0x60, 0xE0, 0x45, 0x01, 
                               /* 0018 */    0x0F, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x40, 
                               /* 0020 */    0x10, 0x01, 0xA0, 0x90, 0x11, 0x01, 0xA0, 0x90
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }

               Method (DTGP, 5, NotSerialized)
               {
                   If (LEqual (Arg0, Buffer (0x10)
                           {
                               /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                               /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                           }))
                   {
                       If (LEqual (Arg1, One))
                       {
                           If (LEqual (Arg2, Zero))
                           {
                               Store (Buffer (One)
                                   {
                                       0x03
                                   }, Arg4)
                               Return (One)
                           }

                           If (LEqual (Arg2, One))
                           {
                               Return (One)
                           }
                       }
                   }

                   Store (Buffer (One)
                       {
                           0x00
                       }, Arg4)
                   Return (Zero)
               }
           }

           Name (BUFA, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {3,4,5,6,7,9,10,11,12,14,15}
           })
           Name (BUFB, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {}
           })
           CreateWordField (BUFB, One, IRQV)

 

I thought that maybe comparing the code in the two boxes we can unserstand what's going on...

Maybe using pin configurations from koalala and the rest from tapper00...any clue?

Link to comment
Share on other sites

same here, analog audio comes from black jack instead of green jack. i couldn't test if digital out works lacking of digital receiver/speakers. my motherboard is ga-p35-ds4r rev 1.0, alc889a

 

this issue is absolutely identical with leopard 10.5.8 and snow leopard 10.6with same dsdt pinconfig.

 

but anyway, i am really happy now, since neither with 10.5.8 nor 10.6 no patched applehda nor legacyhda is needed, and no hda injectors/enablers. 100% vanilla :D

Link to comment
Share on other sites

Hi guys... I think nobody has managed yo get alc889a to work completely with DSDT.aml

 

This is what koalala patcher outputs selecting 889a and HDEF, but sound is not working in any way. (and i can see some sounds assertions while booting)

 

Device (HDEF)
           {
               Name (_ADR, 0x001B0000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x0D, 
                       0x05
                   })
               }

               Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x08)
                       {
                           "codec-id", 
                           Buffer (0x04)
                           {
                               0x89, 0x08, 0xEC, 0x10
                           }, 

                           "layout-id", 
                           /**** Is ResourceTemplate, but EndTag not at buffer end ****/ Buffer (0x04)
                           {
                               0x79, 0x03, 0x00, 0x00
                           }, 

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

                           "PinConfigurations", 
                           Buffer (0x18)
                           {
                               /* 0000 */    0x10, 0x44, 0x11, 0x01, 0x20, 0x14, 0x01, 0x01, 
                               /* 0008 */    0x40, 0x4C, 0x21, 0x02, 0x50, 0x34, 0x81, 0x01, 
                               /* 0010 */    0x60, 0x9C, 0xA1, 0x02, 0xF0, 0x61, 0x4B, 0x01
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }
           }

           Name (BUFA, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {3,4,5,6,7,9,10,11,12,14,15}
           })
           Name (BUFB, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {}
           })
           CreateWordField (BUFB, One, IRQV)

 

In another thread tapper00 suggested to modify it this way. I still get sound assertions while booting but at least sound is working but from the wrong jack, black jack instead of green jack (like it should be on my mobo)

 

Device (HDEF)
           {
               Name (_ADR, 0x001B0000)
               Method (_PRW, 0, NotSerialized)
               {
                   Return (Package (0x02)
                   {
                       0x0D, 
                       0x05
                   })
               }

               Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x08)
                       {
                           "codec-id", 
                           Buffer (0x04)
                           {
                               0x89, 0x08, 0xEC, 0x10
                           }, 

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

                           "device-type", 
                           Buffer (0x11)
                           {
                               "ALC889a"
                           }, 

                           "PinConfigurations", 
                           Buffer (0x28)
                           {
                               /* 0000 */    0x50, 0x70, 0x21, 0x01, 0x40, 0x01, 0x13, 0x90, 
                               /* 0008 */    0x20, 0x30, 0x81, 0x01, 0x41, 0x40, 0x01, 0x01, 
                               /* 0010 */    0x30, 0xE0, 0xC5, 0x01, 0x60, 0xE0, 0x45, 0x01, 
                               /* 0018 */    0x0F, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x40, 
                               /* 0020 */    0x10, 0x01, 0xA0, 0x90, 0x11, 0x01, 0xA0, 0x90
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }

               Method (DTGP, 5, NotSerialized)
               {
                   If (LEqual (Arg0, Buffer (0x10)
                           {
                               /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                               /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                           }))
                   {
                       If (LEqual (Arg1, One))
                       {
                           If (LEqual (Arg2, Zero))
                           {
                               Store (Buffer (One)
                                   {
                                       0x03
                                   }, Arg4)
                               Return (One)
                           }

                           If (LEqual (Arg2, One))
                           {
                               Return (One)
                           }
                       }
                   }

                   Store (Buffer (One)
                       {
                           0x00
                       }, Arg4)
                   Return (Zero)
               }
           }

           Name (BUFA, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {3,4,5,6,7,9,10,11,12,14,15}
           })
           Name (BUFB, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {}
           })
           CreateWordField (BUFB, One, IRQV)

 

I thought that maybe comparing the code in the two boxes we can unserstand what's going on...

Maybe using pin configurations from koalala and the rest from tapper00...any clue?

right that's what I would be trying aswell. I am very keen on your results... for more information about the acpi /dsdt thing go here: http://www.acpi.info/spec.htm

Link to comment
Share on other sites

Good news, you can check the solution for alc889a audio here: http://www.insanelymac.com/forum/index.php...p=1229762 (POST #388 by aschar1)

 

Audio is coming out from green jack now.

 

From what I understand there's no pin configuration in the DSDT, but there's a kext to be moved in /E/E containing the configuration.

 

It works, but you have to choose the right output in Settings>Sound.

 

The kext needed is just a plist. Maybe someone can understand how to move the content of the plist in the dsdt so we don't need this kext and keep the installation as clean as possible.

Link to comment
Share on other sites

Good news, you can check the solution for alc889a audio here: http://www.insanelymac.com/forum/index.php...p=1229762 (POST #388 by aschar1)

 

Audio is coming out from green jack now.

 

From what I understand there's no pin configuration in the DSDT, but there's a kext to be moved in /E/E containing the configuration.

 

It works, but you have to choose the right output in Settings>Sound.

 

The kext needed is just a plist. Maybe someone can understand how to move the content of the plist in the dsdt so we don't need this kext and keep the installation as clean as possible.

 

Yes, works, nut i got sometimes a "POP" in the speakers!

Link to comment
Share on other sites

I thought that maybe comparing the code in the two boxes we can understand what's going on...

Maybe using pin configurations from koalala and the rest from tapper00...any clue?

 

 

 

Have you tried using layout-id 66, 0x42 0x00 0x00 0x00 in your DSDT? I use the proper codec for the 889a chipset, 0x85, 0x08, 0xEC, 0x10 but others have used the codec id you already have in your DSDT with success.

 

 

 

Alternatively, if you want to use an additional kext, try tmongkol's approach here and throughout his thread: http://www.insanelymac.com/forum/index.php...941&st=380#

 

Good luck.

Link to comment
Share on other sites

Using Machinist's suggestion for using layout 66 I now have sound via the green jack, no added kext. Do get sound assertions but no more than other solutions. Not sure how it compares in terms of audio outputs to other solutions. Seems to have digital line in&out as well.

Device (HDEF)
{
	Name (_ADR, 0x001B0000)
	Method (_PRW, 0, NotSerialized)
	{
		Return (Package (0x02)
		{
			0x0D, 
			0x05
		})
	}

	Method (_DSM, 4, NotSerialized)
	{
		Store (Package (0x0A)
		{
			"built-in", 
			Buffer (One)
			{
				0x00
			}, 

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

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

			"device-type", 
			Buffer (0x11)
			{
				"ALC889a"
			}, 

			"PinConfigurations", 
			Buffer (One)
			{
				0x00
			}
		}, Local0)
		DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
		Return (Local0)
	}
}

Intel High Definition Audio:

 Device ID:	0x1458A022
 Audio ID:	66
 Available Devices:
 Line Out:
 Connection:	1/8-Inch Jack
 External Microphone:
 Connection:	1/8-Inch Jack
 External Microphone:
 Connection:	1/8-Inch Jack
 Headphone:
 Connection:	1/8-Inch Jack
 S/P-DIF Out:
 Connection:	Combo
 S/P-DIF In:
 Connection:	Combo

Link to comment
Share on other sites

  • 2 months later...

Dear checcco,

 

Thanks to you I have sound!!!!

 

My board is a GA-EP45-DS3R

 

For some reason, your code (the second one) is the only one that iaslMe.app would compile to an .aml file. I've looked at so many other sources and all of them wouldn't compile. So thank you again!!! :)

Link to comment
Share on other sites

  • 3 months later...

Just wanted to say thanks to Checcco (& tapper00) for this fix. I had tried everything else (HDAEnabler, patching AppleHDA, legacyHDA kexts) but nothing works as well as this. Not bothered about fixing the green/black o/p port issue, I've already spent days on this.

Thanks guys!

Link to comment
Share on other sites

  • 2 years later...

I have tried the hackhad's method for dsdt and it really works!!! I have a P35 - DS3 Gigabyte system board with ALC889a.

Thank you all so much. :)

 

BTW, has anybody else experienced the swapped channels (L/R)? The sound is reverse stereo - what should be on the left speaker is coming out of the right one and the other way around. I double checked to be sure and it's there.

 

Is there a way to switch L/R channels, because I cannot physically switch L/R speakers?

Link to comment
Share on other sites

 Share

×
×
  • Create New...