Hi Sarah, I have to implement dynamic U1/U2 initiation on a dwc3 based xhci platform. I can see that my host starts sending LGO_U1 (when idle) by enabling XHCI_LPM_SUPPORT & XHCI_INTEL_HOST quirk in xhci_plat_quirks and using xhci_enable/disable_usb3_lpm_timeout in xhci_plat_xhci_driver. But offcourse that is not going to be the final solution. Before I float a RFC patch for it, I wanted to understand few things: -- I see there there are three functions xhci_calculate_intel_u1/u2_timeout & xhci_check_intel_tier_policy specific to XHCI_INTEL_HOST in the whole path. Since I do not see similar specification (which have been used in above function) in dwc3 specs, so I wanted to understand that how did you decide in function xhci_calculate_intel_u1_timeout that SEL should be multiplied (on top of what has been defined by USB3 specs C.1.5.1) by 3 if control ep is present or by 5 if bulk and so on.... or even how many number of hub should be allowed to enable LPM for any device. --Slot Context Max Exit Latency(MEL) has been programmed using MAX(U1_mel, u2_mel). Just for my understanding, can there be any situation when u1_mel is greater that u2_mel. If not then code can be simplified a bit. --Do you see any scenario where params.pel could be greater than params.sel? If not then do we really need to remember pel and do calculation based on it in xhci_get_timeout_no_hub_lpm? Regards Pratyush -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html