(pdata && pdata->usb3_lpm_capable))
xhci->quirks |= XHCI_LPM_SUPPORT;
+ if (pdata && pdata->usb3_disable_autosuspend)
+ xhci->quirks |= XHCI_DIS_AUTOSUSPEND;
+
hcd->usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
if (IS_ERR(hcd->usb_phy)) {
ret = PTR_ERR(hcd->usb_phy);
#include <linux/slab.h>
#include <linux/dmi.h>
#include <linux/dma-mapping.h>
+#include <linux/usb/quirks.h>
#include "xhci.h"
#include "xhci-trace.h"
/* xHCI private pointer was set in xhci_pci_probe for the second
* registered roothub.
*/
+ if (xhci->quirks & XHCI_DIS_AUTOSUSPEND)
+ xhci->shared_hcd->self.root_hub->quirks |=
+ USB_QUIRK_AUTO_SUSPEND;
+
return 0;
}
/* For controllers with a broken beyond repair streams implementation */
#define XHCI_BROKEN_STREAMS (1 << 19)
#define XHCI_PME_STUCK_QUIRK (1 << 20)
+#define XHCI_DIS_AUTOSUSPEND (1 << 21)
unsigned int num_active_eps;
unsigned int limit_active_eps;
/* There are two roothubs to keep track of bus suspend info for */
* @xhci_slow_suspend: set if this xhci platform need an extraordinary
* delay to wait for xHC enter the Halted state
* after the Run/Stop (R/S) bit is cleared to '0'.
+ * @usb3_disable_autosuspend: determines if this xhci platform supports
+ * USB3 autosuspend capability
*
*/
struct usb_xhci_pdata {
unsigned usb3_lpm_capable:1;
unsigned xhci_slow_suspend:1;
+ unsigned usb3_disable_autosuspend:1;
};
#endif /* __USB_CORE_XHCI_PDRIVER_H */