Skip to content

Commit

Permalink
usb: gadget: dummy_hcd: convert to new-style udc-probe
Browse files Browse the repository at this point in the history
bind() and pull is moved to udc core, call callbacks are verified by the
upper layer.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Sebastian Andrzej Siewior authored and Greg Kroah-Hartman committed Jul 1, 2011
1 parent e71eb39 commit aa07473
Showing 1 changed file with 15 additions and 35 deletions.
50 changes: 15 additions & 35 deletions drivers/usb/gadget/dummy_hcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -857,17 +857,18 @@ static int dummy_pullup (struct usb_gadget *_gadget, int value)
return 0;
}

static int dummy_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *));
static int dummy_udc_stop(struct usb_gadget_driver *driver);
static int dummy_udc_start(struct usb_gadget *g,
struct usb_gadget_driver *driver);
static int dummy_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver);

static const struct usb_gadget_ops dummy_ops = {
.get_frame = dummy_g_get_frame,
.wakeup = dummy_wakeup,
.set_selfpowered = dummy_set_selfpowered,
.pullup = dummy_pullup,
.start = dummy_udc_start,
.stop = dummy_udc_stop,
.udc_start = dummy_udc_start,
.udc_stop = dummy_udc_stop,
};

/*-------------------------------------------------------------------------*/
Expand Down Expand Up @@ -900,17 +901,13 @@ static DEVICE_ATTR (function, S_IRUGO, show_function, NULL);
* for each driver that registers: just add to a big root hub.
*/

static int dummy_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *))
static int dummy_udc_start(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{
struct dummy *dum = &the_controller;
int retval;
struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(g);
struct dummy *dum = dum_hcd->dum;

if (!dum)
return -EINVAL;
if (dum->driver)
return -EBUSY;
if (!bind || !driver->setup || driver->speed == USB_SPEED_UNKNOWN)
if (driver->speed == USB_SPEED_UNKNOWN)
return -EINVAL;

/*
Expand All @@ -921,37 +918,20 @@ static int dummy_udc_start(struct usb_gadget_driver *driver,
dum->devstatus = 0;

dum->driver = driver;
dum->gadget.dev.driver = &driver->driver;
dev_dbg (udc_dev(dum), "binding gadget driver '%s'\n",
driver->driver.name);
retval = bind(&dum->gadget);
if (retval) {
dum->driver = NULL;
dum->gadget.dev.driver = NULL;
return retval;
}

/* khubd will enumerate this in a while */
dummy_pullup(&dum->gadget, 1);
return 0;
}

static int dummy_udc_stop(struct usb_gadget_driver *driver)
static int dummy_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{
struct dummy *dum = &the_controller;

if (!dum)
return -ENODEV;
if (!driver || driver != dum->driver || !driver->unbind)
return -EINVAL;
struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(g);
struct dummy *dum = dum_hcd->dum;

dev_dbg (udc_dev(dum), "unregister gadget driver '%s'\n",
driver->driver.name);

dummy_pullup(&dum->gadget, 0);

driver->unbind (&dum->gadget);
dum->gadget.dev.driver = NULL;
dum->driver = NULL;

dummy_pullup(&dum->gadget, 0);
Expand Down

0 comments on commit aa07473

Please sign in to comment.