Jump to content

[HowTo]: UHCI/EHCI DSDT Fix ICH9/10


tuxianer
 Share

2 posts in this topic

Recommended Posts

Hallo,

dieser kleine Fix ist speziell für IHC9 Mainboards gedacht. Er ermöglicht Sleep in 10.5.7/10.5.8. Der PC kann via Maus/Tastatur aufgeweckt werden und der "Gerät entfernt" Error verschwindet.

 

 

als erstes fügt ihr eine _DTGP method unter der _WAK method ein (wenn noch nicht vorhanden):

 

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

 

Dann sucht ihr im IOReg. Explorer eure ids von den USB Ports raus siehe Bild:

2rnbuyf.jpg

 

jetzt geht ihr in eure DSDT und bearbeitet zuerst alle UHCI Ports:

 

			Device (USB0)
		 {
			 Name (_ADR, 0x001D0000)
			 Method (_S3D, 0, NotSerialized)
			 {
				 If (LEqual (OSFL, 0x02))
				 {
					 Return (0x02)
				 }

				 Return (0x03)
			 }

			 Name (_PRW, Package (0x02)
			 {
				 0x03, 
				 //One in 0x03 ändern (für Wake Up verantwortlich)
				 0x03
			 })
			 //einfügen
			 Method (_DSM, 4, NotSerialized)
			 {
				 Store (Package (0x02)
					 {
						 "device-id",
						 Buffer (0x04)
						 {
							 //hier eure Id eintragen (letzten 2 Stellen im IOReg. Exp. unter IOName)
							 //0x3A steht für ICH10. ICH10 Nutzer können diese Methode weglassen.
							 0x34, 0x3A, 0x00, 0x00
						 }
					 }, Local0)
				 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				 Return (Local0)
			 }

		 }

Bei manchen Gigabyte Boards wurden 2 Devices vertauscht.

US31 muss das sein:

Name (_ADR, 0x001D0003)

USB3 das:

Name (_ADR, 0x001A0000)

Ihr müsst also evtl. die Device umbenennen.

 

Als nächstes werden die EHCI Methoden bearbeitet:

 

			Device (USBE)
		 {
			 Name (_ADR, 0x001D0007)
			 Method (_S3D, 0, NotSerialized)
			 {
				 If (LEqual (OSFL, 0x02))
				 {
					 Return (0x02)
				 }

				 Return (0x03)
			 }

			 Name (_PRW, Package (0x02)
			 {
				 0x0D,
				 //One in 0x03 ändern (für Wake Up verantwortlich, funktioniert allerdings bei USB2 noch nicht)
				 0x03
			 })
			//einfügen
			 Method (_DSM, 4, NotSerialized)
			 {
				 Store (Package (0x06)
					 {
						 "device-id",
						 Buffer (0x04)
						 {
							  //hier eure Id eintragen (letzten 2 Stellen im IOReg. Exp. unter IOName)
							  //0x3A steht für ICH10. ICH10 Nutzer können diese Methode weglassen.
							 0x3A, 0x3A, 0x00, 0x00
						 },
							  "AAPL,clock-id",
							  Buffer (0x01)
							  {
								  //0x01 für erstes EHCI Device, 0x02 für zweites
								  0x01
							  },
							  "device_type",
							  Buffer (0x05)
							  {
								 "EHCI"
							  }

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

		 }

 

Im Anhang noch mal mein DSDT USB Teil.

 

Viele Grüße tuxianer

DSDT.txt

Link to comment
Share on other sites

  • 1 month later...

Danke fürs posten!

Hab jetzt "richtigen" Sleep mit meinem ga-p35-ds3 rev 1. US31 hatte mich beim editieren verwirrt, da kommt so eine ausführliche Anleitung sehr gelegen :D

 

EDIT: OT, aber da wir fast das selbe System haben: hast du Sound am Frontpanel?

Bei mir geht mic & out hinten mit legacy kext und dsdt patch, aber vorne kommt nix ...

Link to comment
Share on other sites

 Share

×
×
  • Create New...