On Tue, Oct 02, 2018 at 08:57:44PM +0900, Yoshihiro Shimoda wrote:
> If the "workaround_for_vbus" is true, the driver will not call
> usb_disconnect(). So, since the controller keeps some registers'
> value, the driver doesn't re-enumarate suitable speed after
> the b-device mode is disabled. To fix the issue, this patch
> adds usb_disconnect() calling in renesas_usb3_b_device_write()
> if workaround_for_vbus is true.
>
> Fixes: 43ba968b00ea ("usb: gadget: udc: renesas_usb3: add debugfs to set the
> b-device mode")
> Cc: <[email protected]> # v4.14+
> Signed-off-by: Yoshihiro Shimoda <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
> ---
> drivers/usb/gadget/udc/renesas_usb3.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/usb/gadget/udc/renesas_usb3.c
> b/drivers/usb/gadget/udc/renesas_usb3.c
> index e1656f3..67d8a50 100644
> --- a/drivers/usb/gadget/udc/renesas_usb3.c
> +++ b/drivers/usb/gadget/udc/renesas_usb3.c
> @@ -2437,6 +2437,9 @@ static ssize_t renesas_usb3_b_device_write(struct file
> *file,
> else
> usb3->forced_b_device = false;
>
> + if (usb3->workaround_for_vbus)
> + usb3_disconnect(usb3);
> +
> /* Let this driver call usb3_connect() anyway */
> usb3_check_id(usb3);
>
> --
> 1.9.1
>