Jump to content

DSDT fixes for Gigabyte boards


iSoprano
 Share

1,909 posts in this topic

Recommended Posts

I remember reading about a solution for this, for hacks, but I can't recall where.
Try this for the button patch. Post #2. Not so sure it works.

 

 

"RealtekR1000.kext (DSDT (RealtekR1000.kext not needed anymore with snow))"

 

Can you please share this dsdt fix?

You need to add a signature of your own so we know what's in your setup. Make it as complete as you can. Add things like what ICH version you have, processor, etc.

 

You can use Apple's network driver but there are problems with it. Would you rather use Apple's? Or stick with the RealtekR1000SL.kext that works fairly well?

Link to comment
Share on other sites

I have something weird here with my audio:

 

With this DSM method I get 889a onboard audio working (at least Digital Output works) without any additional kext, but i get some sound assertion errors and boot time is about 10 spins (yes, I count with spins).

 

Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x04)
					{
						"layout-id", 
						Buffer (0x04)
						{
							0x0C, 0x00, 0x00, 0x00
						}, 

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

 

But, with this DSM, hack boots in just half weel spin. Very very fast, but I don't get any onboard audio. Also with kext doesn't work:

 

Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x0A)
					{
						"codec-id"		  ,Buffer (0x04){0x89, 0x08, 0xEC, 0x10}, 
						"layout-id"		 ,Buffer (0x04){0x0C, 0x00, 0x00, 0x00},
						"device-type"	   ,Buffer (0x10){"Realtek ALC889a"},
						"PinConfigurations" ,Buffer (0x01){0x00}
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}

 

Can somebody check this?

 

Cheers!

Link to comment
Share on other sites

BTW this is what the ACPI specification has to say about it:

 

"ACPI 1.0 Processor Namespace. ACPI 1.0 requires all Processor objects to be defined under this namespace. ACPI allows Processor object definitions under the \_SB namespace. Platforms may maintain the \_PR namespace for compatibility with ACPI 1.0 operating systems. An ACPI-compatible namespace may define Processor objects in either the \_SB or \_PR scope but not both.".

 

And thus I removed it. So long _PR...

Did you manage to move the Processor declarations to _SB? Did you still keep the Processor statement or moved to Device _HID ACPI0007? By the specification it should work, but I checked that my SL 10.6.2 uses ACPICA 20071219 version, which misses some important patches for this to work.

Link to comment
Share on other sites

I have already ECDT in my lappie ioreg...but boot-ec is missing

Anyway is a good update, and also IMHO FADT override should be kept, and restart fix done automate.

 

@ The King

 

Have you had any success with the restart fix on your X58 Asus board, I have the same problem with Reset Register being supported in bios but not in FACP in ioreg. Has the FACP override worked on your mobo???

Link to comment
Share on other sites

@ The King

 

Have you had any success with the restart fix on your X58 Asus board, I have the same problem with Reset Register being supported in bios but not in FACP in ioreg. Has the FACP override worked on your mobo???

I didn't tried to replace the table, but I tested bootloader with fix and works.

Still trying to find a way to fix it in BIOS...

Link to comment
Share on other sites

For folks having issues getting auto sleep or idle sleep working with EP45 boards I (think) finally traced my problem to the ifconfig promisc bonjour fix. It seems promiscuous mode was preventing my setup from autosleeping.

 

I've reverted back to my GA311 PCI card as the onboard has proven once again to be too much of a hassle

Link to comment
Share on other sites

First, a big thanks to the originator(s) of this thread (iSoprano and MasterChief/UnsubscribeMe), and subsequent contributors.

 

Using MasterChief's patches, I was able to edit my dsdt.dsl, compile a new dsdt.aml, and get wake-from-sleep via Keyboard & Mouse.

 

I am only able to get it to wake using an Apple Keyboard. I have a HP usb keyboard and mouse that I actually like, but wake from it doesn't work, even with the MasterChief's fixes. His fixes are effective because I can see now that the power management has changed - now when my HackPro goes to sleep, the keyboard is still powered, and before these changes, it wasn't.

 

( I think that the HP keyboard would wake my box if I change the ID's of some devices in a keyboard or mouse kext, but that is something for another day.)

Link to comment
Share on other sites

Try this for the button patch. Post #2. Not so sure it works.

 

 

You need to add a signature of your own so we know what's in your setup. Make it as complete as you can. Add things like what ICH version you have, processor, etc.

 

You can use Apple's network driver but there are problems with it. Would you rather use Apple's? Or stick with the RealtekR1000SL.kext that works fairly well?

 

I added the signature now.

 

RealtekR1000SL.kext works very well for me but I am a little obsessed with having 100% update wihout anything breaking ;)

 

I could of course write a disabler for the apple shipped kext and place RealtekSL1000.kext directly inside Extensions directory (I don't think it needs to be inside the plugin directory in IONetworkFamily.kext), that should be update proof.

 

But its also very ugly, if a dsdt fix could make the onboard 8168C/8111C work then I would prefer that.

 

But maybe the hardware is not close enough to fully work with the Apple provided kext?

Link to comment
Share on other sites

I added the signature now.

 

RealtekR1000SL.kext works very well for me but I am a little obsessed with having 100% update wihout anything breaking ;)

 

I could of course write a disabler for the apple shipped kext and place RealtekSL1000.kext directly inside Extensions directory (I don't think it needs to be inside the plugin directory in IONetworkFamily.kext), that should be update proof.

 

But its also very ugly, if a dsdt fix could make the onboard 8168C/8111C work then I would prefer that.

 

But maybe the hardware is not close enough to fully work with the Apple provided kext?

If I remember correctly I was able to use Apple's vanilla kext but it was 32-bit only and Bonjour didn't work. DSDT alone won't fix it.
Link to comment
Share on other sites

If I remember correctly I was able to use Apple's vanilla kext but it was 32-bit only and Bonjour didn't work. DSDT alone won't fix it.

 

That's how it works for me too, everything seems to work fine but no bonjour and cannot detect other computers in file sharing, but can be visible to others. It works the same in 64 bit.

Link to comment
Share on other sites

Correct.

 

 

 

Board specific I believe I got mine from the Cpu0Cst_SSDT.aml from the ACPI dumps I did under Debian GNU/Linux.

 

 

 

You should use them in your Scope (_PR) then here is mine for you to compare too.

 

	   Scope (_PR)
   {
	   Name (PSS, Package (0x04)
	   {
			   Package (0x06) { 3150, Zero, 10, 10, 0x91F, Zero }, // Q6600 4 steps
			   Package (0x06) { 2800, Zero, 10, 10, 0x81D, One },
			   Package (0x06) { 2450, Zero, 10, 10, 0x71A, 0x02 },
			   Package (0x06) { 2100, Zero, 10, 10, 0x617, 0x03 },
	   })

	   Name (PSD, Package (0x05)
	   {
		   0x05,Zero,Zero,0xFC,0x04 // The last value should equal the number of CPU
	   })
	   Name (CST, Package (0x02) // 1 cstate
	   {
		   One,
		   Package (0x04){ResourceTemplate (){Register (FFixedHW,0x01,0x02,0x0000000000000000,0x00,)},One,One,0x03E8},
	   })

	   Processor (CPU0, 0x00, 0x00000410, 0x06) 
	   {
		   Alias (PSS, _PSS)
		   Alias (PSD, _PSD)
		   Alias (CST, _CST)
	   }

	   Processor (CPU1, 0x01, 0x00000410, 0x06) 
	   {
		   Alias (PSS, _PSS)
		   Alias (PSD, _PSD)
		   Alias (CST, _CST)
	   }

	   Processor (CPU2, 0x02, 0x00000410, 0x06)
	   {
		   Alias (PSS, _PSS)
		   Alias (PSD, _PSD)
		   Alias (CST, _CST)
	   }

	   Processor (CPU3, 0x03, 0x00000410, 0x06)
	   {
		   Alias (PSS, _PSS)
		   Alias (PSD, _PSD)
		   Alias (CST, _CST)
	   }
   } // end Scope(_PR)

 

 

Hi, friend.

Attached is my cpu0cst.dsl file (extension changed to txt) from a linux acpi dump.

I can see 3 different sets of values for CST, returned according to a certain CFGD value (0x80, 0x40 or 0x20).

Which should I put in my DSDT?

Thanks.

cpu0cst.txt

Link to comment
Share on other sites

Hi, friend.

Attached is my cpu0cst.dsl file (extension changed to txt) from a linux acpi dump.

I can see 3 different sets of values for CST, returned according to a certain CFGD value (0x80, 0x40 or 0x20).

Which should I put in my DSDT?

Thanks.

 

Doesn't matter which one you use, none of them will give you working C-states without modifications.

Link to comment
Share on other sites

Anyone know how to create a dummy HDEF in the DSDT just to make it show up under audio in system profiler?

 

I have a ALC888-2 (Gigabyte EP45-UD3LR)

 

I can also say that VoodooHDA works excellent, I use version 0.2.53.

check out the forum thread about VoodooHDA:

http://www.projectosx.com/forum/index.php?showtopic=355

 

0.2.53 can be downloaded in a russian thread:

http://www.projectosx.com/forum/index.php?...t=0&start=0

Link to comment
Share on other sites

Why not?

 

Because defining C1 like this will not work:

                    Package (0x04)
                   {
                       ResourceTemplate ()
                       {
                           Register (FFixedHW, 
                               0x00,               // Bit Width
                               0x00,               // Bit Offset
                               0x0000000000000000, // Address
                               ,)
                       }, 

                       0x01, 
                       0x01, 
                       0x03E8
                   }, 

 

You can copy C2,C3 and C4 states from Gigabyte tables but C1 has to be fixed. I use C1,C2 and C4, like this:

		Method (CST, 0, NotSerialized)
	{
		Return (Package (0x04)
		{
			0x3, 
			Package (0x4){ResourceTemplate (){Register (FFixedHW,0x01,0x02,0x000,,)},One,One,0x3E8}, 
			Package (0x4){ResourceTemplate (){Register (SystemIO,0x08,0x00,0x414,,)},0x2,One,0x1F4}, 
			Package (0x4){ResourceTemplate (){Register (SystemIO,0x08,0x00,0x416,,)},0x3,0x96,0x64} 
		})
	}

Link to comment
Share on other sites

I think here we need a little correction:

...I use C1,C2 and C4, like this:

		Method (CST, 0, NotSerialized)
	{
		Return (Package (0x04)
		{
			0x3, 
			Package (0x4){ResourceTemplate (){Register (FFixedHW,0x01,0x02,0x000,,)},One,One,0x3E8}, 
			Package (0x4){ResourceTemplate (){Register (SystemIO,0x08,0x00,0x414,,)},0x2,One,0x1F4}, 
			Package (0x4){ResourceTemplate (){Register (SystemIO,0x08,0x00,0x416,,)},[color="#8B0000"][b]0x4[/b][/color],0x96,0x64} 
		})
	}

Link to comment
Share on other sites

I think here we need a little correction:

 

No, that register 416 is PMBASE+16h (LV4), reading of that register puts CPU in C4 state. Page 469 of ICH10 datasheet.

If I use 415 instead then CPU will go to C3 state.

 

 

mm67, cVaD,

Will this code work for me?

And can you please explain what the 'fix' consists of?

 

Yes, it will work for you. Original Gigabyte C1 definition defines C1, fixed one defines C1E state. There is no point to define C1 since every CPU starting from 486 supports that state anyway, I think that is why OS X doesn't accept it.

Link to comment
Share on other sites

No, that register 416 is PMBASE+16h (LV4), reading of that register puts CPU in C4 state. Page 469 of ICH10 datasheet.

If I use 415 instead then CPU will go to C3 state.

 

CSTPackage:Package (Count,CState,...,CState) where: Count: ByteConst

The number of CState packages included in CSTPackage CState: Package (Register, Type, Latency, Power)

Where:

Register: RegisterTerm A register that OSPM reads to place the processor in the corresponding C state.

Type: ByteConst The C State type (for example, 1=C1, 2=C2, and so on). This field conveys the semantics to be used by OSPM when entering/exiting the C state. Zero is not a valid value

Latency: WordConst The worst-case latency in microseconds to enter and exit the C State. There are no latency restrictions.

Power: DWordConst The average power consumption in milliwatts of the processor when in the corresponding C State.

 

For OS to know that the package is declares C4 C-State you must set Type to 0x04

Link to comment
Share on other sites

 Share

×
×
  • Create New...