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 <[email protected]>

Acked-by: Felipe Balbi <[email protected]>

> ---
>  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

Reply via email to