summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/legacy/printer.c
diff options
context:
space:
mode:
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>2015-03-03 10:52:15 +0100
committerFelipe Balbi <balbi@ti.com>2015-03-10 15:33:36 -0500
commit991cd26249e775c07347ab4d62adfbc3284e7704 (patch)
tree64a97616b7389c462b36fded3aadb6b72ecde102 /drivers/usb/gadget/legacy/printer.c
parentcee5cbff8d80ec2d10fe8070f229e95cc42443bf (diff)
downloadop-kernel-dev-991cd26249e775c07347ab4d62adfbc3284e7704.zip
op-kernel-dev-991cd26249e775c07347ab4d62adfbc3284e7704.tar.gz
usb: gadget: printer: move function-related unbind code to function's unbind
In order to factor out a reusable f_printer.c, the code related to the function should be placed in functions related to the function. printer_cfg_unbind() becomes empty, so it is removed. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/legacy/printer.c')
-rw-r--r--drivers/usb/gadget/legacy/printer.c58
1 files changed, 25 insertions, 33 deletions
diff --git a/drivers/usb/gadget/legacy/printer.c b/drivers/usb/gadget/legacy/printer.c
index 5dbb93a..84e6cdd 100644
--- a/drivers/usb/gadget/legacy/printer.c
+++ b/drivers/usb/gadget/legacy/printer.c
@@ -1156,43 +1156,11 @@ fail_tx_reqs:
static void printer_func_unbind(struct usb_configuration *c,
struct usb_function *f)
{
- usb_free_all_descriptors(f);
-}
-
-static int printer_func_set_alt(struct usb_function *f,
- unsigned intf, unsigned alt)
-{
- struct printer_dev *dev = container_of(f, struct printer_dev, function);
- int ret = -ENOTSUPP;
-
- if (!alt)
- ret = set_interface(dev, intf);
-
- return ret;
-}
-
-static void printer_func_disable(struct usb_function *f)
-{
- struct printer_dev *dev = container_of(f, struct printer_dev, function);
- unsigned long flags;
-
- DBG(dev, "%s\n", __func__);
-
- spin_lock_irqsave(&dev->lock, flags);
- printer_reset_interface(dev);
- spin_unlock_irqrestore(&dev->lock, flags);
-}
-
-static void printer_cfg_unbind(struct usb_configuration *c)
-{
struct printer_dev *dev;
struct usb_request *req;
dev = &usb_printer_gadget;
- DBG(dev, "%s\n", __func__);
-
- /* Remove sysfs files */
device_destroy(usb_gadget_class, g_printer_devno);
/* Remove Character Device */
@@ -1226,11 +1194,35 @@ static void printer_cfg_unbind(struct usb_configuration *c)
list_del(&req->list);
printer_req_free(dev->out_ep, req);
}
+ usb_free_all_descriptors(f);
+}
+
+static int printer_func_set_alt(struct usb_function *f,
+ unsigned intf, unsigned alt)
+{
+ struct printer_dev *dev = container_of(f, struct printer_dev, function);
+ int ret = -ENOTSUPP;
+
+ if (!alt)
+ ret = set_interface(dev, intf);
+
+ return ret;
+}
+
+static void printer_func_disable(struct usb_function *f)
+{
+ struct printer_dev *dev = container_of(f, struct printer_dev, function);
+ unsigned long flags;
+
+ DBG(dev, "%s\n", __func__);
+
+ spin_lock_irqsave(&dev->lock, flags);
+ printer_reset_interface(dev);
+ spin_unlock_irqrestore(&dev->lock, flags);
}
static struct usb_configuration printer_cfg_driver = {
.label = "printer",
- .unbind = printer_cfg_unbind,
.bConfigurationValue = 1,
.bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
};
OpenPOWER on IntegriCloud