I modified some of the power management code from GenericUSBXHCI in order to work with AppleUSBXHCI.
The result is SRE support and fixed sleep for all USB3 cards.
There is still the option to use the standard sleep code by setting ResetControllerFix to false (/ NO)...
Thus now we have several Info.plist options for AppleUSBXHCI:
ResetControllerFix = Use new sleep code (default: YES)
SleepFix = Set PM card always builtin and allow sleep (default: YES)
UseSingleInt = Use single interrupter instead of 2 (default: YES)
UseLegacyInt = Use legacy interrupts for cards that aren't by default in the errata list (default: NO)
Somebody with a non-standard recognized USB3 controller, could you test the sleep and report back please?
I also added Doze support for Intel Panther Point.
On my card the new sleep code works fine so I'm curious for the other chipsets.
EDIT: Some more modifications.
Improved PM code some more, now sets the property for controller reset in case of the new NoSleepForced is set to YES, otherwise value for controller reset will be NO.
Added Info.plist option for forcing sleep to unsupported (for controller unload).
The NoSleepForced key in the Info.plist controls this... (default: NO)
Added USB3 legacy support (and BIOS ownership taking).
Latest version is thus V7.
Please test and report back (I need feedback).