Re: [PATCH 1/3] usb: chipidea: udc: update gadget states according to ch9

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux