* Tony Lindgren <t...@atomide.com> [170511 13:26]:
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
> --- a/drivers/usb/musb/musb_dsps.c
> +++ b/drivers/usb/musb/musb_dsps.c
> @@ -270,6 +270,10 @@ static int dsps_check_status(struct musb *musb, void 
> *unused)
>               musb_writel(musb->ctrl_base, wrp->coreintr_set,
>                           MUSB_INTR_VBUSERROR << wrp->usb_shift);
>               break;
> +     case OTG_STATE_A_HOST:
> +             if (glue->vbus_irq)
> +                     dsps_mod_timer(glue, 20000);    /* 20s */
> +             break;
>       default:
>               break;
>       }
> -- 

Heh that's the wrong way around.. I think we can leave out the check
for vbus_irq.

8< ---------------
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
--- a/drivers/usb/musb/musb_dsps.c
+++ b/drivers/usb/musb/musb_dsps.c
@@ -270,6 +270,10 @@ static int dsps_check_status(struct musb *musb, void 
*unused)
                musb_writel(musb->ctrl_base, wrp->coreintr_set,
                            MUSB_INTR_VBUSERROR << wrp->usb_shift);
                break;
+       case OTG_STATE_A_HOST:
+               /* Keep VBUS on after disconnect for 20 seconds */
+               dsps_mod_timer(glue, 20000);
+               break;
        default:
                break;
        }
-- 
2.13.0

Reply via email to