On Tue, Apr 29, 2014 at 01:26:27PM +0800, Peter Chen wrote: > Update device states according to ch9 in USB 2.0 specification > > Signed-off-by: Peter Chen <peter.chen@xxxxxxxxxxxxx> Acked-by: Felipe Balbi <balbi@xxxxxx> > --- > drivers/usb/chipidea/udc.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > index 150592f..d683968 100644 > --- a/drivers/usb/chipidea/udc.c > +++ b/drivers/usb/chipidea/udc.c > @@ -709,6 +709,8 @@ __acquires(ci->lock) > if (ci->status == NULL) > retval = -ENOMEM; > > + usb_gadget_set_state(&ci->gadget, USB_STATE_DEFAULT); > + > done: > spin_lock(&ci->lock); > > @@ -865,6 +867,8 @@ isr_setup_status_complete(struct usb_ep *ep, struct usb_request *req) > if (ci->setaddr) { > hw_usb_set_address(ci, ci->address); > ci->setaddr = false; > + if (ci->address) > + usb_gadget_set_state(&ci->gadget, USB_STATE_ADDRESS); > } > > spin_lock_irqsave(&ci->lock, flags); > @@ -1467,7 +1471,7 @@ static int ci_udc_vbus_session(struct usb_gadget *_gadget, int is_active) > pm_runtime_get_sync(&_gadget->dev); > hw_device_reset(ci, USBMODE_CM_DC); > hw_device_state(ci, ci->ep0out->qh.dma); > - dev_dbg(ci->dev, "Connected to host\n"); > + usb_gadget_set_state(_gadget, USB_STATE_POWERED); > } else { > if (ci->driver) > ci->driver->disconnect(&ci->gadget); > @@ -1477,7 +1481,7 @@ static int ci_udc_vbus_session(struct usb_gadget *_gadget, int is_active) > CI_HDRC_CONTROLLER_STOPPED_EVENT); > _gadget_stop_activity(&ci->gadget); > pm_runtime_put_sync(&_gadget->dev); > - dev_dbg(ci->dev, "Disconnected from host\n"); > + usb_gadget_set_state(_gadget, USB_STATE_NOTATTACHED); > } > } > > @@ -1750,6 +1754,8 @@ static irqreturn_t udc_irq(struct ci_hdrc *ci) > ci->suspended = 1; > spin_unlock(&ci->lock); > ci->driver->suspend(&ci->gadget); > + usb_gadget_set_state(&ci->gadget, > + USB_STATE_SUSPENDED); > spin_lock(&ci->lock); > } > } > -- > 1.7.8 > -- balbi
Attachment:
signature.asc
Description: Digital signature