Jump to content

EHCI Details Missing in DSDT


gibsonic
 Share

9 posts in this topic

Recommended Posts

Hi all,

 

Been fishing around in my DSDT.dsl file to get the USB2 ports on my Optiplex 780 to appear as Built-in rather than Expansion Slot. The problem is that there seems to be no information regarding the controllers in the DSDT at all!

 

In IORegistryExplorer the controllers appear as 'pci8086,3a6a@1D,7' and 'pci8086,3a6c@1A,7' rather than the more usual names like 'USB0@1D' for the UHCI controllers. Searching the DSDT.dsl for the full addresses (e.g. 0x001D0007) finds nothing, while I can find the USB1.1 controllers immediately.

 

I've been able to get the UHCI controllers to appear Built-in, but I have no idea what's going on with EHCI. Because of this I also get the 'unloaded across sleep' errors on startup for the two controllers and waking from sleep is broken.

 

I've attached the output from IORegistryExplorer and the vanilla DSDT.dsl from the Optiplex 780 (A09 BIOS) - if anybody has time to compare the two or tell me where else I should be looking, I'd really appreciate it!

 

Optiplex780_IORegEx.ioreg.txt

Optiplex780_A09_Clean.dsl.txt

Link to comment
Share on other sites

  • 3 weeks later...

hey gibsonic

try it

dsdt.gibsonic.zip

into_all all code_regex _T_0 replaceall_matched begin T_0 end;
into_all all code_regex _T_1 replaceall_matched begin T_1 end;
into_all all code_regex _T_2 replaceall_matched begin T_2 end;
into_all all code_regex _T_3 replaceall_matched begin T_3 end;
into_all all code_regex _T_4 replaceall_matched begin T_4 end;
into_all all code_regex _T_5 replaceall_matched begin T_5 end;
into_all all code_regex _T_6 replaceall_matched begin T_6 end;
into_all scope label _PR code_regex Alias\s\([^\n]+\n removeall_matched;
into_all scope label \_PR code_regex Alias\s\([^\n]+\n removeall_matched;
into method label DTGP remove_entry;
into definitionblock code_regex . insert
begin
Method (DTGP, 5, NotSerialized)\n
{\n
   If (LEqual (Arg0, Buffer (0x10)\n
           {\n
               /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, \n
               /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B\n
           }))\n
   {\n
       If (LEqual (Arg1, One))\n
       {\n
           If (LEqual (Arg2, Zero))\n
           {\n
               Store (Buffer (One)\n
                   {\n
                       0x03\n
                   }, Arg4)\n
               Return (One)\n
           }\n
           If (LEqual (Arg2, One))\n
           {\n
               Return (One)\n
           }\n
       }\n
   }\n
   Store (Buffer (One)\n
       {\n
           0x00\n
       }, Arg4)\n
   Return (Zero)\n
}
end;
into device name_adr 0x001B0000 parent_label PCI0 remove_entry;
into device label PCI0 insert
begin
Device (HDEF)\n
{\n
   Name (_ADR, 0x001B0000)\n
   Method (_DSM, 4, NotSerialized)\n
   {\n
       Store (Package (0x04)\n
           {\n
               "layout-id", \n
               Buffer (0x04)\n
               {\n
                   0x0C, 0x00, 0x00, 0x00\n
               }, \n
               "PinConfigurations", \n
               Buffer (Zero) {}\n
           }, Local0)\n
       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
       Return (Local0)\n
   }\n
}
end;
into device label PWRB code_regex (Name\s\()_HID(\,\sEisaId\s\(\"PNP0C0C\"\)\)) replace_matched begin %1_CID%2 end;
into method label _STA parent_hid PNP0103 remove_entry;
into device name_hid PNP0103 insert
begin
Method (_STA, 0, NotSerialized)\n
{\n
   Return (0x0F)\n
}
end;
into method label _CRS parent_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into method label _CRS parent_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into method label _CRS parent_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into method label _CRS parent_hid PNP0103 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} removeall_matched;
into method label _CRS parent_hid PNP0103 code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\)\n\s+\{((?:.|\n)*)\}\) replace_matched
begin
Name (%1, ResourceTemplate ()\n
                   {\n
                       IRQNoFlags ()\n
                           {0}\n
                       IRQNoFlags ()\n
                           {8}\n
                       IRQNoFlags ()\n
                           {11}\n
                       IRQNoFlags ()\n
                           {15}\n
%2
})
end;
into method label _DSM parent_adr 0x001F0000 remove_entry;
into device name_adr 0x001F0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x18, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into_all all code_regex (Acquire\s\(MUTE,\s0x)....\)
replace_matched
begin
%1FFFF)
end;
into_all scope label _SB.PCI0.PCI5 code_regex Name\s\(PIC5,\sPackage\s\(0x00\) replaceall_matched
begin
Name (PIC5, Package (Zero)
end;
into_all scope label _SB.PCI0.PCI5 code_regex Name\s\(API5,\sPackage\s\(0x00\) replaceall_matched
begin
Name (API5, Package (Zero)
end;
into_all scope label _SB.PCI0.PCI6 code_regex Name\s\(PIC6,\sPackage\s\(0x00\) replaceall_matched
begin
Name (PIC6, Package (Zero)
end;
into_all scope label _SB.PCI0.PCI6 code_regex Name\s\(API6,\sPackage\s\(0x00\) replaceall_matched
begin
Name (API6, Package (Zero)
end;
into DefinitionBlock code_regex_not PBIF code_regex Package\s\(0x0D\) replaceall_matched
begin
Package ()
end;
into device label SPKR remove_entry;
into device label FDC remove_entry;
into device label FDC0 remove_entry;
into device label LPT1 remove_entry;
into device label LPTE remove_entry;
into device label LPT remove_entry;
into device label ECP1 remove_entry;
into device label MEM remove_entry;
into device label ^^RMEM remove_entry;
into method label _CRS parent_hid PNP0B00 code_regex (IO\s\((?:\s*[^,]+,\s*(?:\/\/\s.*)?\s*\n)+\s*)(\dx\d+)(,\s*(?:\/\/\s.*)?\s*\n\s*\)) replace_matched begin %10x02%3 end;
into device name_adr 0x001F0003 parent_label PCI0 remove_entry;
into device label PCI0 insert
begin
Device (SBUS)\n
{\n
   Name (_ADR, 0x001F0003)\n
   Device (BUS0)\n
   {\n
       Name (_CID, "smbus")\n
       Name (_ADR, Zero)\n
       Device (DVL0)\n
       {\n
           Name (_ADR, 0x57)\n
           Name (_CID, "diagsvault")\n
       }\n
   }\n
   Method (_DSM, 4, NotSerialized)\n
   {\n
       Store (Package (0x02)\n
           {\n
               "device-id", \n
               Buffer (0x04)\n
               {\n
                   0x30, 0x3A, 0x00, 0x00\n
               }\n
           }, Local0)\n
       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
       Return (Local0)\n
   }\n
}
end;
into method label _PTS code_regex_not If\s*\(LEqual\s*\(Arg0,\s*0x05\)\) code_regex ^((?:.|\n)*)$ replace_matched
begin
       If (LEqual (Arg0, 0x05))\n
       {\n
           Store (Zero, SLPE)\n
           Sleep (0x10)\n
       }\n
       Else\n
       {\n
%1
       }
end;
into definitionblock code_regex . code_regex_not OperationRegion\s*\(PMRS insert
begin
OperationRegion (PMRS, SystemIO, 0x0430, One)\n
Field (PMRS, ByteAcc, NoLock, Preserve)\n
{\n
       ,   4, \n
   SLPE,   1\n
}
end;
into method label _DSM parent_adr 0x001D0000 remove_entry;
into device name_adr 0x001D0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x34, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001D0001 remove_entry;
into device name_adr 0x001D0001 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x35, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001D0002 remove_entry;
into device name_adr 0x001D0002 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x36, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001A0000 remove_entry;
into device name_adr 0x001A0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x37, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001A0001 remove_entry;
into device name_adr 0x001A0001 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x38, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001A0002 remove_entry;
into device name_adr 0x001A0002 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x39, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into method label _DSM parent_adr 0x001D0003 remove_entry;
into device name_adr 0x001D0003 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
   Store (Package (0x02)\n
       {\n
           "device-id", \n
           Buffer (0x04)\n
           {\n
               0x37, 0x3A, 0x00, 0x00\n
           }\n
       }, Local0)\n
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
   Return (Local0)\n
}
end;
into device label PCI0 insert
begin
Device (EHC1)\n
           {\n
               Name (_ADR, 0x001D0007)\n
               Name (_PRW, Package (0x02)\n
               {\n
                   0x0D, \n
                   0x03\n
               })\n
               Method (_DSM, 4, NotSerialized)\n
               {\n
                   Store (Package (0x04)\n
                       {\n
                           "device-id", \n
                           Buffer (0x04)\n
                           {\n
                               0x3C, 0x3A, 0x00, 0x00\n
                           }, \n
                           "AAPL,clock-id", \n
                           Buffer (One)\n
                           {\n
                               0x01\n
                           }\n
                       }, Local0)\n
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
                   Return (Local0)\n
               }\n
}
end;
into device label PCI0 insert
begin
Device (EHC2)\n
           {\n
               Name (_ADR, 0x001A0007)\n
               Name (_PRW, Package (0x02)\n
               {\n
                   0x0D, \n
                   0x03\n
               })\n
               Method (_DSM, 4, NotSerialized)\n
               {\n
                   Store (Package (0x04)\n
                       {\n
                           "device-id", \n
                           Buffer (0x04)\n
                           {\n
                               0x3C, 0x3A, 0x00, 0x00\n
                           }, \n
                           "AAPL,clock-id", \n
                           Buffer (One)\n
                           {\n
                               0x01\n
                           }\n
                       }, Local0)\n
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
                   Return (Local0)\n
               }\n
}
end

 

Hi All,

 

Has Anyone found a way to add USB2 EHCI to an extracted Dell Optiplex DSDT? I have the same problem with my 755. Perhaps it was b/c I extracted A09 BIOS? I have recently upgraded to A19 - should I re-extract DSDT?

 

Thanks in advance!

send me DSDT

what is the chipset?

ICH9?

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
I'll try apply the patch alongside the others I use now. :D

The only other change I needed after applying the patch was to change 'Name (_UID, 0x4)' to 'Name (_UID, Zero)' under 'Device (PCI0)'. After that, App Store began working correctly and HD5450 graphics card is detected. Perfect!

 

Not tried sleep support as yet, but that would just be a bonus; I never actually use it. :thumbsup_anim:

Link to comment
Share on other sites

  • 4 months later...

Try This :

 

it's my perfect worked One, and change your device name to EHC1 or EHCI and do not foget to change all related names in the rest of your dsdt.

 

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x0C)
					{
						"AAPL,current-available",
						0x05DC,
						"AAPL,current-extra",
						0x04B0,
						"AAPL,current-in-sleep",
						0x09C4,
						"AAPL,clock-id",
						Buffer (One)
						{
							0x01
						},
						"device-id",
						Buffer (0x04)
						{
							0xCC, 0x27, 0x00, 0x00
						},
						"device_type",
						Buffer (0x05)
						{
							"EHCI"
						}
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}

 

YOU CAN ADD THIS IF YOU WANT :

 

						"built-in",
						Buffer (One)
						{
							0x00
						},

Link to comment
Share on other sites

 Share

×
×
  • Create New...