Contribute
Register

USB Driver Changed Again - PB6

Status
Not open for further replies.
After reading through majority of the thread, it seems like my problems closely mirror Matt's. I applied the Windows 8 SSDT patch (at least I think I did, I put it in /EFI/CLOVER/ACPI/patched), which is what fixed Matt's problem with the FakePCIID_XHCIMux kext not recognizing USB3 devices correctly from what I understood. No luck on my system. I used the same bios settings as Matt (smart auto, and enabled both handoffs) as well. It's a possibility I still need a port injector kext but I kind of gave up on that as I couldn't figure out how the port numbering worked.

The SSDT has no effect without the associated DSDT patch in config.plist/ACPI/DSDT/Patches.
 
@lunaoso I'm sure you can use ioreg to find your port numbers, I did. Trying to remember were it was.
@rehabman :banghead:

Matt
 
I'm not really sure how but I got it to work with the SSDT, FakePCIID_XHCIMux kext, and the last DSDT edit you posted. I'm still not sure if my SSDT is loading or not because I've never used one before, but I mean it works so I guess I call that a success! :)
 
I'm not really sure how but I got it to work with the SSDT, FakePCIID_XHCIMux kext, and the last DSDT edit you posted. I'm still not sure if my SSDT is loading or not because I've never used one before, but I mean it works so I guess I call that a success! :)

Bad idea to use a DSDT from another computer. It works with that DSDT because that DSDT was extracted with 'patchmatic -extract' run when the config.plist patches were in place (result is a patched DSDT that has _OSI changed to XOSI).
 
Bad idea to use a DSDT from another computer. It works with that DSDT because that DSDT was extracted with 'patchmatic -extract' run when the config.plist patches were in place (result is a patched DSDT that has _OSI changed to XOSI).

I'm sorry I should've explained that better. I used my DSDT, but I made the last edit that you suggested (changing the if statement to always true for the Windows thing (post #199)). I'm still no expert on DSDTs or SSDTs or any of that stuff, but I definitely learned a lot over the past day just messing around with stuff and thanks to you.
 
I'm sorry I should've explained that better. I used my DSDT, but I made the last edit that you suggested (changing the if statement to always true for the Windows thing (post #199)). I'm still no expert on DSDTs or SSDTs or any of that stuff, but I definitely learned a lot over the past day just messing around with stuff and thanks to you.

OK... good...

Still note that the SSDT has no effect without the associated patches for _OSI->XOSI.

You should be able to eliminate the SSDT for the same result.
 
It is probably something your DSDT is doing in _WAK or _PTS when Windows 8 ("Windows 2012") is detected.

The only way to deal with it is by starting to more selectively patching DSDT. For example, you might disable the _OSI->XOSI patch, then make sure XSEL is called in some other way.

For example, in _OSC, you can force XSEL to be called like this:
Code:
            Method (_OSC, 4, Serialized)  // _OSC: Operating System Capabilities
            {
                Store (Arg3, Local0)
                CreateDWordField (Local0, Zero, CDW1)
                CreateDWordField (Local0, 0x04, CDW2)
                CreateDWordField (Local0, 0x08, CDW3)
                If (^XHC.CUID (Arg0))
                {
                    Return (^XHC.POSC (Arg1, Arg2, Arg3))
                }
                Else
                {
                    //was: If (LGreaterEqual (OSYS, 0x07DC))
[B]                    if (1)[/B]
                    {
                        If (LEqual (XCNT, Zero))
                        {
                            ^XHC.XSEL ()
                            Increment (XCNT)
                        }
                    }
                }

                If (LEqual (Arg0, GUID))
                {
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    If (LEqual (NEXP, Zero))
                    {
                        And (CTRL, 0xFFFFFFF8, CTRL)
                    }

                    If (NEXP)
                    {
                        If (Not (And (CDW1, One)))
                        {
                            If (And (CTRL, One))
                            {
                                NHPG ()
                            }

                            If (And (CTRL, 0x04))
                            {
                                NPME ()
                            }
                        }
                    }

                    If (LNotEqual (Arg1, One))
                    {
                        Or (CDW1, 0x08, CDW1)
                    }

                    If (LNotEqual (CDW3, CTRL))
                    {
                        Or (CDW1, 0x10, CDW1)
                    }

                    Store (CTRL, CDW3)
                    Store (CTRL, OSCC)
                    Return (Local0)
                }
                Else
                {
                    Or (CDW1, 0x04, CDW1)
                    Return (Local0)
                }
            }

That will allow XSEL to be called as if _OSI returned true for "Windows 2012", but the DSDT won't do other things differently as it relates to Windows version.


Been playing around with this, like said I've never patched a dsdt before, how exactly do i do it?

I tried once and it wouldn't save due to compile errors.

Ive attached my clean dsdt just incase your feeling really kind .....:thumbup:
 

Attachments

  • DSDT.aml
    66.3 KB · Views: 108
Been playing around with this, like said I've never patched a dsdt before, how exactly do i do it?

I tried once and it wouldn't save due to compile errors.

Ive attached my clean dsdt just incase your feeling really kind .....:thumbup:

Fixing errors... DSDT patches from here (read the README for proper MaciASL setup): https://github.com/RehabMan/Laptop-DSDT-Patch

Apply: "Fix ADBG Error"
Apply: "Fix PARSEOP_ZERO Error"

Compile. Should compile without errors.

Now you can make the changes to _OSC.
 
Status
Not open for further replies.
Back
Top