Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4991e102 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: gadget: s3c2410: convert to udc_start/udc_stop



Mechanical change making use of the new (can we
still call it new ?) interface for registering
UDC drivers.

Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 70189a63
Loading
Loading
Loading
Loading
+12 −53
Original line number Diff line number Diff line
@@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma)
	return -ENOTSUPP;
}

static int s3c2410_udc_start(struct usb_gadget_driver *driver,
		int (*bind)(struct usb_gadget *, struct usb_gadget_driver *));
static int s3c2410_udc_stop(struct usb_gadget_driver *driver);
static int s3c2410_udc_start(struct usb_gadget *g,
		struct usb_gadget_driver *driver);
static int s3c2410_udc_stop(struct usb_gadget *g,
		struct usb_gadget_driver *driver);

static const struct usb_gadget_ops s3c2410_ops = {
	.get_frame		= s3c2410_udc_get_frame,
@@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = {
	.pullup			= s3c2410_udc_pullup,
	.vbus_session		= s3c2410_udc_vbus_session,
	.vbus_draw		= s3c2410_vbus_draw,
	.start			= s3c2410_udc_start,
	.stop			= s3c2410_udc_stop,
	.udc_start		= s3c2410_udc_start,
	.udc_stop		= s3c2410_udc_stop,
};

static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd)
@@ -1664,33 +1665,14 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev)
	s3c2410_udc_command(S3C2410_UDC_P_ENABLE);
}

static int s3c2410_udc_start(struct usb_gadget_driver *driver,
		int (*bind)(struct usb_gadget *, struct usb_gadget_driver *))
static int s3c2410_udc_start(struct usb_gadget *g,
		struct usb_gadget_driver *driver)
{
	struct s3c2410_udc *udc = the_controller;
	struct s3c2410_udc *udc = to_s3c2410(g)
	int		retval;

	dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name);

	/* Sanity checks */
	if (!udc)
		return -ENODEV;

	if (udc->driver)
		return -EBUSY;

	if (!bind || !driver->setup || driver->max_speed < USB_SPEED_FULL) {
		dev_err(&udc->gadget.dev, "Invalid driver: bind %p setup %p speed %d\n",
			bind, driver->setup, driver->max_speed);
		return -EINVAL;
	}
#if defined(MODULE)
	if (!driver->unbind) {
		dev_err(&udc->gadget.dev, "Invalid driver: no unbind method\n");
		return -EINVAL;
	}
#endif

	/* Hook the driver */
	udc->driver = driver;
	udc->gadget.dev.driver = &driver->driver;
@@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
		goto register_error;
	}

	dprintk(DEBUG_NORMAL, "binding gadget driver '%s'\n",
		driver->driver.name);

	retval = bind(&udc->gadget, driver);
	if (retval) {
		device_del(&udc->gadget.dev);
		goto register_error;
	}

	/* Enable udc */
	s3c2410_udc_enable(udc);

@@ -1722,24 +1695,10 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
	return retval;
}

static int s3c2410_udc_stop(struct usb_gadget_driver *driver)
static int s3c2410_udc_stop(struct usb_gadget *g,
		struct usb_gadget_driver *driver)
{
	struct s3c2410_udc *udc = the_controller;

	if (!udc)
		return -ENODEV;

	if (!driver || driver != udc->driver || !driver->unbind)
		return -EINVAL;

	dprintk(DEBUG_NORMAL, "usb_gadget_unregister_driver() '%s'\n",
		driver->driver.name);

	/* report disconnect */
	if (driver->disconnect)
		driver->disconnect(&udc->gadget);

	driver->unbind(&udc->gadget);
	struct s3c2410_udc *udc = to_s3c2410(g);

	device_del(&udc->gadget.dev);
	udc->driver = NULL;
+1 −0
Original line number Diff line number Diff line
@@ -95,5 +95,6 @@ struct s3c2410_udc {
	u8				vbus;
	struct dentry			*regs_info;
};
#define to_s3c2410(g)	(container_of((g), struct s3c2410_udc, gadget))

#endif