Hi,

Thinh Nguyen <thinh.ngu...@synopsys.com> writes:

> While testing our host system using Microsoft's usb stack against our
> gadget for various BESL values, we found an issue with their usb stack
> when the recommended baseline BESL value is 0 (125us) or when the deep
> BESL is 1 or less. The Windows host will issue a usb reset immediately
> after it receives the extended BOS descriptor and the enumeration will
> fail after a few attempts.
>
> To keep compatibility with Microsoft's host usb stack, let's workaround
> this issue by using the recommended baseline BESL of 1 (or 150us)
> and clamp the deep BESL value within 2 to 15.
>
> This was tested against Windows 10 build 18956.
>
> Signed-off-by: Thinh Nguyen <thi...@synopsys.com>
> ---
>  drivers/usb/dwc3/gadget.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 7b58e0e1e438..9ef2259829ba 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -2083,9 +2083,10 @@ static void dwc3_gadget_config_params(struct 
> usb_gadget *g,
>  
>       /* Recommended BESL */
>       if (!dwc->dis_enblslpm_quirk) {

let's add a comment here similar to what's in commit log so folks won't
go about changing this willy-nilly.

> -             params->besl_baseline = 0;
> +             params->besl_baseline = 1;
>               if (dwc->is_utmi_l1_suspend)
> -                     params->besl_deep = min_t(u8, dwc->hird_threshold, 15);
> +                     params->besl_deep =
> +                             clamp_t(u8, dwc->hird_threshold, 2, 15);
>       }
>  
>       /* U1 Device exit Latency */
> -- 
> 2.11.0
>

-- 
balbi

Reply via email to