Hi,

On Tue, Feb 26, 2013 at 10:55:40AM -0500, Alan Stern wrote:
> On Tue, 26 Feb 2013, Felipe Balbi wrote:
> 
> > if we initialize gadget->dev.driver ourselves,
> > UDC drivers won't have to do the same, so we
> > can remove some duplicated code.
> > 
> > Signed-off-by: Felipe Balbi <[email protected]>
> 
> There's something odd going on here that I don't understand...
> 
> > @@ -296,6 +297,7 @@ static int udc_bind_to_driver(struct usb_udc *udc, 
> > struct usb_gadget_driver *dri
> >  
> >     udc->driver = driver;
> >     udc->dev.driver = &driver->driver;
> > +   udc->gadget->dev.driver = &driver->driver;
> 
> Why is the same pointer assigned as the driver of two different
> devices?
> 
> The assignment to udc->gadget->dev.driver looks reasonable, since here
> "driver" really is a usb_gadget_driver.  But it's not a UDC driver, so
> why do we have the first two lines above?
> 
> At best they are redundant.  More likely they are either wrong or 
> unnecessary.

udc->dev.driver assignment looks unnecessary, indeed, but udc->driver is
needed. We're using that to know that this particular UDC is busy
already. Look at the uses of udc->driver in
drivers/usb/gadget/udc-core.c

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to