On 18/9/19 12:53 am, Mathias Nyman wrote:
> If host/hub initiated link pm is prevented by a driver flag we still must
> ensure that periodic endpoints have longer service intervals than link pm
> exit latency before allowing device initiated link pm.
> 
> Fix this by continue walking and checking endpoint service interval if
> xhci_get_timeout_no_hub_lpm() returns anything else than USB3_LPM_DISABLED
> 
> While at it fix the split line error message
> 
> Signed-off-by: Mathias Nyman <mathias.ny...@linux.intel.com>

I tested by forcing the driver->disable_hub_initiated_lpm check and
confirm a) Other USB devices still work as I expect them to b) without
this patch, I'm back to only 1 working Oculus Rift Sensor. With it, I
can capture 3 simultaneously.

Tested-by: Jan Schmidt <j...@centricular.com>

- Jan

> ---
>  drivers/usb/host/xhci.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 447c29bbad48..8892dfbb2af7 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -4809,10 +4809,12 @@ static u16 xhci_calculate_lpm_timeout(struct usb_hcd 
> *hcd,
>               if (intf->dev.driver) {
>                       driver = to_usb_driver(intf->dev.driver);
>                       if (driver && driver->disable_hub_initiated_lpm) {
> -                             dev_dbg(&udev->dev, "Hub-initiated %s disabled "
> -                                             "at request of driver %s\n",
> -                                             state_name, driver->name);
> -                             return xhci_get_timeout_no_hub_lpm(udev, state);
> +                             dev_dbg(&udev->dev, "Hub-initiated %s disabled 
> at request of driver %s\n",
> +                                     state_name, driver->name);
> +                             timeout = xhci_get_timeout_no_hub_lpm(udev,
> +                                                                   state);
> +                             if (timeout == USB3_LPM_DISABLED)
> +                                     return timeout;
>                       }
>               }
>  
> 

-- 
Jan Schmidt, Centricular Ltd - https://centricular.com/

Reply via email to