Jump to content

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


  • Please log in to reply
1 reply to this topic

#1
tuxianer

tuxianer

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 155 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:
Posted Image

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

Attached Files

  • Attached File  DSDT.txt   8.81KB   65 downloads


#2
Maik-

Maik-

    InsanelyMac Protégé

  • Members
  • Pip
  • 25 posts
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 ...





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy