Jump to content

DSDT Patcher


fassl
 Share

752 posts in this topic

Recommended Posts

@roisoft: at the end of the _DSM Method it should be:

 

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)

 

and yeah you need the DTGP Method somewhere:

 

Yeah man ur right. It works without strings.... but my pinconfig is not the correct one, so i need to try another config but it´s great anyway thanks :blink:

 

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 (0x011)
						{
							"ALC889a"
						},

						"PinConfigurations",
						Buffer (0x20)
						{
							 /* 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)
			    }
		}	

 

12113Imagen%202.jpg

Link to comment
Share on other sites

@roisoft: at the end of the _DSM Method it should be:

 

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)

 

and yeah you need the DTGP Method somewhere:

 

	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)
}

 

thank, i have removed "DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))" because the compiler give me an error (Object does not exist ^ (DTGP)), really normal w/o a DTGP Method

 

i will try to re-compile it with the DTGP Method, but anyway, it's work for me without any DTGP entry

Link to comment
Share on other sites

Guys

 

what can be wrong if AppleIntelCPU blahblah if it is not speedsteping CPU and stopped CPU at idle frequency (1GHz). after DSDT patch AppleIntelCPUPowerManagement.kext loaded successful. everything looks fine no KP and other {censored} but CPU stuck with 1 Ghz !

 

i've compare with IntelSpeedStep blocked also at 1Ghz and results from Geekbencha are similar almost.

 

AppleIntelCPU = 1355

IntelSpeedStep (1ghz) = 1407

 

Guys what should be set to make it working ? any new version of AppleACPIPlatform ? or anything else taht is requierd by AppleIntelCPUPowerManagement.kext ?

 

please help

Link to comment
Share on other sites

Hi i patched my system put dsdt aml file in my leopard disk then I installed applecpumanagment kext but i still get panic it wont boot.

I am doing anything wrong?????

In which folder i have to put dsdt file......

I also get when booting up sleepimage has garbage???????

any thoughts???????

 

This is my dsdt sml filedsdt.aml.zip

Link to comment
Share on other sites

I finally got the DSDT dump to compile on my HP6720s (thanks to JackHair who provided me with a dump from an older BIOS)...

AppleIntelCPUPowerManagement.kext and AppleRTC.kext (v 1.2.2) load without KP. I also added some lines (suggested by Superhai) to get the backlight working; now also AppleBacklight.kext is loaded and after removing ClamshellDisplay.kext the screen goes off when the lid is close, and I can control-more or less- the brightness (had to use functionflip.prefpane to set up new keys).

Now, the thing is the brightness doesnt decrease/increase smoothly; maybe this could be fixed by adding the right data on the AppleBacklight.kext plist.

 

IOREG shows:

 

o PNLF  <class IOACPIPlatformDevice, registered, matched, active, busy 0, retain 7>
| | | {
| | |   "_UID" = "10"
| | |   "compatible" = <"backlight">
| | |   "ApplePanelRawBrightness" = 494
| | |   "ApplePanelRawTable" = <00007a007a007a007a007a007a007a007a007c007e00800082008400860088008a008c008e00
200940$
| | |   "name" = <"APP0002">
| | |   "_STA" = 11
| | | }
| | | 
| | +-o AppleIntelPanelA  <class AppleIntelPanelA, !registered, !matched, active, busy 0, retain 5>
| |	 {
| |	   "IOProbeScore" = 2000
| |	   "IOProviderClass" = "IOACPIPlatformDevice"
| |	 [b]  "ApplePanels" = {"F10P9c5f"=<0000003e01070128>,"F10T9c68"=<00100000001e00250031003d004f0067008300a900d901$[/b]
| |	   "IODisplayParameters" = {"brightness"={"min"=0,"max"=128},"commit"={"reg"=0}}
| |	   "CFBundleIdentifier" = "com.apple.driver.AppleBacklight"
| |	   "IOMatchCategory" = "IODisplayParameters"
| |	   "IONameMatched" = "backlight"
| |	   "IOClass" = "AppleIntelPanelA"
| |	   "IONameMatch" = "backlight"

 

 

on the AppleBacklight's plist:

 

"F10P9c5f"=<0000003e 01070128>
"F10T9c68"<00100000 001e0025 0031003d 004f0067 008300a9 00d90115 016501e9 024f02f7 03cf>

 

Are this values EDID data? It seems so but is much shorter than the EDID dump I have from my display:

 

00FFFFFF FFFFFF00 4CA34544 00000000 00110103 80211578 0A87F594 574F8C27 27505400 00000101 01010101 01010101 01010101 0101121B 00885020 10301030 13004BCF 10000019 0000000F 00000000 00000000 00238702 64020000 00FE0053 414D5355 4E470A20 20202020 000000FE 004C544E 31353458 332D4C30 310A0026

 

I tryed editing the min and max values on the plist but that doesnt work

 

Some ideas about what section of the EDID must be added inside the plist?

 

BTW, I also created a display profile under S/L/Displays/Override/ with this EDID. Doesnt make any difference either

Link to comment
Share on other sites

I finally got the DSDT dump to compile on my HP6720s (thanks to JackHair who provided me with a dump from an older BIOS)...

AppleIntelCPUPowerManagement.kext and AppleRTC.kext (v 1.2.2) load without KP. I also added some lines (suggested by Superhai) to get the backlight working; now also AppleBacklight.kext is loaded and after removing ClamshellDisplay.kext the screen goes off when the lid is close, and I can control-more or less- the brightness (had to use functionflip.prefpane to set up new keys).

Now, the thing is the brightness doesnt decrease/increase smoothly; maybe this could be fixed by adding the right data on the AppleBacklight.kext plist.

 

IOREG shows:

"F10P9c5f"=<0000003e 01070128>
"F10T9c68"<00100000 001e0025 0031003d 004f0067 008300a9 00d90115 016501e9 024f02f7 03cf>

 

Why should it be edid data? Anyway, it is not, i believe they are some control words for the panel you have. the F10P9c5f is composed of two parts, the first part F10P I am not sure yet of the meaning, but the second is matching to the display product ID.

Link to comment
Share on other sites

I have some new information but I don't know how to use it.

Returning the EDID Structure for the LVDS Panel via ACPI

When using ACPI video extensions, the EDID for an integrated panel without an

actual DDC connection, is available through the _DDC method of the display. For

example, SB.PCI.VGA.LCD._DDC(0) using the namespace example above.

Multiple block E-EDID’s are possible by using an EDID 1.3 structure together with

extensions such as the DI-EXT block.

Retrieving the Backlight Control Settings for the LVDS Panel via ACPI

When using ACPI video extensions, the _BCL, _BCM, and _BQC methods shall be

provided allowing the control necessary for backlight operation.

Selecting the Display Output via ACPI

If the MXM Output Device structure bit 34 indicates system methods are used for

output switching then all necessary GPIO switching shall be performed inside _DSS

in order to select the targeted display output.

Link to comment
Share on other sites

Why should it be edid data? Anyway, it is not, i believe they are some control words for the panel you have. the F10P9c5f is composed of two parts, the first part F10P I am not sure yet of the meaning, but the second is matching to the display product ID.

 

I dont know; was just a guess. I readed somewere you could insert your EDID data onto that kext...

Still looking for a solution to get a smooth brightness control; currently is jumping from 100% to 0% in two or tree steps...

Thanks for the info anyway!

Link to comment
Share on other sites

hi fassl,,

 

looks like i've succeeded using your patch

 

im using 4cores right now, use appleintelcpupm, apple rtc with no kernel panic

 

but... i can't shutdown my system right now

 

sleep and restart working, but shutdown no..

 

why is it? n can you help me solved it?

 

i'm using your patcher ver 1.e

 

try all emulation (darwin, xp, vista) all results the same

 

thanks..

 

Edited : Shutdown fix done by OpenHaltRestart.kext from psy****.com :blink:

Link to comment
Share on other sites

fassl, roisoft,

 

Where can I get more info on the DTGP method? I don't seem to see it in the ACPI documentation and I'm not clear what it's doing or if I mearly insert the code verbatim. As I said earlier I haven't been able to use DSDT to insert the pinconfig.

 

However, when using a device string I can insert the pinconfig fine but it doesn't change the operation of the stock kext. With my ALC889a I still only get analog sound out of the rear mic port using an unmodified AppleHDA.kext. I'm still unclear if I can get my sound working properly with pinconfig data and the stock kext.

 

Thanks again,

SMF

Link to comment
Share on other sites

I have some new information but I don't know how to use it.

 

For Sony vaio users:

I have found sony uses the _DCC in the way _DCS, maybe we have to see how to adapt the upcoming video patches to the Sony "special" nomenclature...

 

 Or (And (^^LCD.[b]_DCS[/b], 0xFD), ShiftLeft (And (NDSP, 0x01), 
                                   0x01), ^^LCD.[b]_DCS[/b])
                               Or (And (^^CRT.[b]_DCS[/b], 0xFD), And (NDSP, 0x02), ^^CRT.[b]_DCS[/b])
                               Or (And (^^TV.[b]_DCS[/b], 0xFD), ShiftRight (And (NDSP, 0x04), 
                                   0x01), ^^TV.[b]_DCS[/b])
                               UDGS ()

Link to comment
Share on other sites

ok, i use this code

 

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)
						{

							0x79, 0x03, 0x00, 0x00
						},

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

						"PinConfigurations",
						Buffer (0x20)
						{
							 /* 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)		
			}	

			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)
							}
						}
					}

 

I´ve added plist for AppleHDAcontroller & AppleHDAPlatform to the stock AppleHda.kext , this way i have mic+speakers+spdif (lineout=internal speakers though) (no strings or injectors).

 

 

P35_DS4

 

47327Imagen%209.jpg

62890Imagen%208.jpg

63470Imagen%207.jpg

57001Imagen%206.jpg

67019Imagen%205.jpg

Link to comment
Share on other sites

roisoft,

 

Thank you very much. I recognize some of your pinconfig values - it would appear that the ALC889a on our two gigabyte boards is setup pretty much the same. I'll give it a go when I'm back at home.

 

Would you mind providing your plists as well?

 

Thanks,

SMF

Link to comment
Share on other sites

the P35_DS4 link contains the DSDT and the AppleHDA

thank you fassl !! ( once again :))

 

Thanks a lot roisoft !!! ;)

 

On brend new EP45-DS4 :

 

I've replaced all AZAL entries by HDEF in my DSDT, and then I've used your dsdt.dsl file to copy the ALC889A part into mine.

 

It works like a charm !! No string no HDAenabler and I've got sound working.

 

Thanks again for that.

Link to comment
Share on other sites

the P35_DS4 link contains the DSDT and the AppleHDA

thank you fassl !! ( once again ;))

Thanks Roisoft.

This is my report :

I've replaced AZAL with HDEF entries , and added the pin configuration from your dsdt.dsl file in my dsdt_fixed.txt file and recompile.

Then I replaced in my /Extra/Extensions folder LegacyHDAController and LegacyHDAPlatformDriver only plist by Stickpin (http://forum.insanelymac.com/index.php?showtopic=129058) with yours.

 

The result is:

Sound working in my GA EP35-DS3P (ALC889a), NO HDAenabler, NO ALCinject, NO modified AppleHDA and No EFI strings

I'm using the Original Vanilla AppleHDA.kext without any modification.

I've got only this message on System.log at startup

 

macpro31-de-casa kernel[0]: Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler

 

Thanks a lot again.

post-260583-1227224227_thumb.png

post-260583-1227224247_thumb.png

post-260583-1227224255_thumb.png

Link to comment
Share on other sites

I finally fixed sleep on my lappie!

 

The problem was on USB....

The fix is simple, same as for WAK method:

 

If u look on DSDT under all USB entry u will see:

Method (_PRW, 0, NotSerialized)

{

Return (GPRW (0xYZ, 0xYZ))

}

Now search for Method (GPRW.... and change on the end that: Return (PRWP or whatever u have) to:

Return (Package (0x02)
	{
		Zero, 
		Zero
	})

 

Still i have to use modded kexts for ehci/uhci w/o them my lappie still sleep fine but on wake I lose UHCI devices(BT and fingerprint sensor)

 

About EHCI kext fixed, I really hate those ownership debug message, dunno why most of the dev's like to add that {censored} debug on kexts, imo is easy to do 2 ver. normal/debug or to add a bolean in plist to enable/disable that feature...

 

L.E. Thanks a lot Slice for the edited versions of the kexts me and my system log are very happy :D

BTW I'm still waiting for some answers about those USB fixes, since your sources are not available dunno what really does your kexts, maybe we can add those fixes on DSDT, or at least we can try...

 

L.L.E Last night I forgot(tired) to tell about: Device (PWRB)...e.g PoWeRButton I noticed that is missing on my DSDT so I add it b/c on MB DSDT there are also other entry on USB devices that point to it.

So if you don't have it search for : Device (SLPB) and add it over/under it, should look like this:

Scope (_SB)
{
	Device (PWRB)
	{
		Name (_HID, EisaId ("PNP0C0C"))
	}

	Device (SLPB)
	{
		Name (_HID, EisaId ("PNP0C0E"))
		Method (_PRW, 0, NotSerialized)
		{
			Return (Package (0x02)
			{
				0x0B, 
				0x04
			})
		}
	}
}

Now search for Method (_Lxy....) you will see all USB devices there, then under each UHCI one add Notify (\_SB.PWRB, 0x02), as for EHCI entry I prted entire entry from MB, should look like this:

Scope (_GPE)
{
	Method (_L03, 0, Serialized)
	{
		Notify (\_SB.PCI0.UHC1, 0x02)
		Notify (\_SB.PWRB, 0x02)
	}

	Method (_L04, 0, Serialized)
	{
		Notify (\_SB.PCI0.UHC2, 0x02)
		Notify (\_SB.PWRB, 0x02)
	}

	Method (_L0C, 0, Serialized)
	{
		Notify (\_SB.PCI0.UHC3, 0x02)
		Notify (\_SB.PWRB, 0x02)
	}

	Method (_L0E, 0, Serialized)
	{
		Notify (\_SB.PCI0.UHC4, 0x02)
		Notify (\_SB.PWRB, 0x02)
	}

	Method (_L05, 0, Serialized)
	{
		Notify (\_SB.PCI0.UHC5, 0x02)
		Notify (\_SB.PWRB, 0x02)
	}

	Method (_L0D, 0, Serialized)
	{
		If (\_SB.PCI0.EHC1.PMES)
		{
		Store (0x01, \_SB.PCI0.EHC1.PMES)
		Notify (\_SB.PCI0.EHC1, 0x02)
		Notify (\_SB.PWRB, 0x02)
		}

		If (\_SB.PCI0.EHC2.PMES)
		{
		Store (0x01, \_SB.PCI0.EHC2.PMES)
		Notify (\_SB.PCI0.EHC2, 0x02)
		Notify (\_SB.PWRB, 0x02)
		}
	}

The entry on EHCI one seems to fix sleep on it so no more need for ehcisleepenabler, at least for me.

BTW if you have HDEF on those methods remove it, or it could broke your sleep!

Another tip, if you like as example to wake your notebook/desktop using mouse or keyboard, identify what USB port it use(from ioreg) and on DSDT change on that USB entry PWRB to SLPB :)

 

Enjoy!

Link to comment
Share on other sites

Thanks a lot roisoft !!! :D

 

On brend new EP45-DS4 :

 

I've replaced all AZAL entries by HDEF in my DSDT, and then I've used your dsdt.dsl file to copy the ALC889A part into mine.

 

It works like a charm !! No string no HDAenabler and I've got sound working.

 

Thanks again for that.

 

 

i confirme, no more hdaenabler or audio efi string is needed :)

Link to comment
Share on other sites

Well, I´ve also modified the plist for AppleHDAcontroller & AppleHDAPlatform in the stock AppleHda.kext and modified my DSDT and I've got sound. System Preferences shows inputs and outputs that match what I put in the plists. I only have two issues. My line in doesn't show in System Profiler and I get six

 

Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler

error messages during startup.

Link to comment
Share on other sites

 Share

×
×
  • Create New...