Commit a844715d authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Felipe Balbi

usb: gadget: printer: call gprinter_setup() from gadget's bind

Call gprinter_setup() from gadget's bind instead of module's init.
Call gprinter_cleaup() corerspondingly. This detaches printer function's
logic from legacy printer gadget's implementation.
Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent d82cd82e
...@@ -1330,45 +1330,47 @@ static int __init printer_bind(struct usb_composite_dev *cdev) ...@@ -1330,45 +1330,47 @@ static int __init printer_bind(struct usb_composite_dev *cdev)
{ {
int ret; int ret;
ret = gprinter_setup();
if (ret)
return ret;
ret = usb_string_ids_tab(cdev, strings); ret = usb_string_ids_tab(cdev, strings);
if (ret < 0) if (ret < 0) {
gprinter_cleanup();
return ret; return ret;
}
device_desc.iManufacturer = strings[USB_GADGET_MANUFACTURER_IDX].id; device_desc.iManufacturer = strings[USB_GADGET_MANUFACTURER_IDX].id;
device_desc.iProduct = strings[USB_GADGET_PRODUCT_IDX].id; device_desc.iProduct = strings[USB_GADGET_PRODUCT_IDX].id;
device_desc.iSerialNumber = strings[USB_GADGET_SERIAL_IDX].id; device_desc.iSerialNumber = strings[USB_GADGET_SERIAL_IDX].id;
ret = usb_add_config(cdev, &printer_cfg_driver, printer_do_config); ret = usb_add_config(cdev, &printer_cfg_driver, printer_do_config);
if (ret) if (ret) {
gprinter_cleanup();
return ret; return ret;
}
usb_composite_overwrite_options(cdev, &coverwrite); usb_composite_overwrite_options(cdev, &coverwrite);
return ret; return ret;
} }
static int __exit printer_unbind(struct usb_composite_dev *cdev)
{
gprinter_cleanup();
return 0;
}
static __refdata struct usb_composite_driver printer_driver = { static __refdata struct usb_composite_driver printer_driver = {
.name = shortname, .name = shortname,
.dev = &device_desc, .dev = &device_desc,
.strings = dev_strings, .strings = dev_strings,
.max_speed = USB_SPEED_SUPER, .max_speed = USB_SPEED_SUPER,
.bind = printer_bind, .bind = printer_bind,
.unbind = printer_unbind,
}; };
static int __init static int __init
init(void) init(void)
{ {
int status; return usb_composite_probe(&printer_driver);
status = gprinter_setup();
if (status)
return status;
status = usb_composite_probe(&printer_driver);
if (status) {
class_destroy(usb_gadget_class);
unregister_chrdev_region(g_printer_devno, 1);
pr_err("usb_gadget_probe_driver %x\n", status);
}
return status;
} }
module_init(init); module_init(init);
...@@ -1377,7 +1379,6 @@ cleanup(void) ...@@ -1377,7 +1379,6 @@ cleanup(void)
{ {
mutex_lock(&usb_printer_gadget.lock_printer_io); mutex_lock(&usb_printer_gadget.lock_printer_io);
usb_composite_unregister(&printer_driver); usb_composite_unregister(&printer_driver);
gprinter_cleanup();
mutex_unlock(&usb_printer_gadget.lock_printer_io); mutex_unlock(&usb_printer_gadget.lock_printer_io);
} }
module_exit(cleanup); module_exit(cleanup);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment