Dmitry Osipenko <digetx@xxxxxxxxx> writes: > udc->softconnect should be set regardless of the VBUS state, otherwise > the USB peripheral device, connected during suspend, won't be detected > since can_pullup() would return false and the UDC won't be enabled. > > Fixes: 252455c40316 (usb: gadget: fsl driver pullup fix) > Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx> > --- > Changelog: > V2: "(is_on != 0)" changed to "!!is_on" as per Sergei Shtylyov comment, > cleaned up commit message. > > drivers/usb/gadget/udc/fsl_udc_core.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/udc/fsl_udc_core.c b/drivers/usb/gadget/udc/fsl_udc_core.c > index aab5221..4309b4f 100644 > --- a/drivers/usb/gadget/udc/fsl_udc_core.c > +++ b/drivers/usb/gadget/udc/fsl_udc_core.c > @@ -1220,10 +1220,11 @@ static int fsl_pullup(struct usb_gadget *gadget, int is_on) > > udc = container_of(gadget, struct fsl_udc, gadget); > > + udc->softconnect = !!is_on; > + > if (!udc->vbus_active) > return -EOPNOTSUPP; > > - udc->softconnect = (is_on != 0); if we're suspended and VBUS was cut off, why would we keep softconnect set to true ? That would also cause a discrepancy between SW state and HW state. I don't have this HW to test, but this patch seems wrong to me. -- balbi
Attachment:
signature.asc
Description: PGP signature