Re: [PATCH v3 10/14] usb: dwc2: Allow exit partial power down in urb enqueue

From: Minas Harutyunyan
Date: Thu Apr 08 2021 - 09:40:29 EST


On 4/8/2021 1:45 PM, Artur Petrosyan wrote:
> When core is in partial power down state and an external
> hub is connected, upper layer sends URB enqueue request,
> which results in port reset issue.
>
> Added exit from partial power down state to avoid port
> reset issue and process upper layer request correctly.
>
> Signed-off-by: Artur Petrosyan <Arthur.Petrosyan@xxxxxxxxxxxx>

Acked-by: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx>

> ---
> Changes in v3:
> - None
> Changes in v2:
> - None
>
> drivers/usb/dwc2/hcd.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
> index 9529e9839961..cb52bc41bfb8 100644
> --- a/drivers/usb/dwc2/hcd.c
> +++ b/drivers/usb/dwc2/hcd.c
> @@ -4633,6 +4633,13 @@ static int _dwc2_hcd_urb_enqueue(struct usb_hcd *hcd, struct urb *urb,
> dwc2_dump_urb_info(hcd, urb, "urb_enqueue");
> }
>
> + if (hsotg->in_ppd) {
> + retval = dwc2_exit_partial_power_down(hsotg, 0, true);
> + if (retval)
> + dev_err(hsotg->dev,
> + "exit partial_power_down failed\n");
> + }
> +
> if (!ep)
> return -EINVAL;
>
>