Hi,

On Sun, Mar 17, 2013 at 05:59:00PM +0100, Sebastian Andrzej Siewior wrote:
> >diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
> >index 40b1d88..8a1eeb2 100644
> >--- a/drivers/usb/gadget/udc-core.c
> >+++ b/drivers/usb/gadget/udc-core.c
> >@@ -197,6 +207,8 @@ int usb_add_gadget_udc(struct device *parent, struct 
> >usb_gadget *gadget)
> >     if (ret)
> >             goto err4;
> > 
> >+    usb_gadget_set_state(gadget, USB_STATE_NOTATTACHED);
> >+
> >     mutex_unlock(&udc_lock);
> > 
> >     return 0;
> 
> I'm not sure if it is a good idea to start USB_STATE_NOTATTACHED. It
> will work fine with updated drivers but the others it will report wrong
> status and people might not know that the driver isn't yet supporting
> this. On the other hand they might get suspicious once they plug a
> device which is fully working and the kernel still reports "not
> attached" :)
> Do you think it makes sense to make this missing feature more obvious to
> the user by doing something like this?
> 
> diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
> index 7999cc6..4a38dff 100644
> --- a/drivers/usb/gadget/udc-core.c
> +++ b/drivers/usb/gadget/udc-core.c
> @@ -225,7 +225,7 @@ int usb_add_gadget_udc_release(struct device *parent, 
> struct usb_gadget *gadget,
>       if (ret)
>               goto err4;
>  
> -     usb_gadget_set_state(gadget, USB_STATE_NOTATTACHED);
> +     usb_gadget_set_state(gadget, USB_STATE_NOT_TRACKED);
>  
>       mutex_unlock(&udc_lock);
>  
> diff --git a/drivers/usb/usb-common.c b/drivers/usb/usb-common.c
> index 0db0a91..78f60e5 100644
> --- a/drivers/usb/usb-common.c
> +++ b/drivers/usb/usb-common.c
> @@ -70,6 +70,7 @@ const char *usb_state_string(enum usb_device_state state)
>               [USB_STATE_ADDRESS] = "addresssed",
>               [USB_STATE_CONFIGURED] = "configured",
>               [USB_STATE_SUSPENDED] = "suspended",
> +             [USB_STATE_NOT_TRACKED] = "unknown / not tracked",
>       };
>  
>       if (state < 0 || state >= ARRAY_SIZE(names))
> diff --git a/include/uapi/linux/usb/ch9.h b/include/uapi/linux/usb/ch9.h
> index f738e25..f6d949b 100644
> --- a/include/uapi/linux/usb/ch9.h
> +++ b/include/uapi/linux/usb/ch9.h
> @@ -931,14 +931,15 @@ enum usb_device_state {
>       USB_STATE_ADDRESS,
>       USB_STATE_CONFIGURED,                   /* most functions */
>  
> -     USB_STATE_SUSPENDED
> -
> +     USB_STATE_SUSPENDED,
>       /* NOTE:  there are actually four different SUSPENDED
>        * states, returning to POWERED, DEFAULT, ADDRESS, or
>        * CONFIGURED respectively when SOF tokens flow again.
>        * At this level there's no difference between L1 and L2
>        * suspend states.  (L2 being original USB 1.1 suspend.)
>        */
> +
> +     USB_STATE_NOT_TRACKED,
>  };

looks alright, although I'd call it USB_STATE_UNKNOWN, instead of
NOT_TRACKED.

Greg and Alan need to ack it and I guess we can push this on v3.11

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to