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

usb: gadget: printer: add setup and cleanup functions

Factor out gprinter_setup() and gprinter_cleanup() so that it is
easy to change the place they are called from.
Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 5a84e6f6
...@@ -1298,6 +1298,34 @@ static int __init printer_do_config(struct usb_configuration *c) ...@@ -1298,6 +1298,34 @@ static int __init printer_do_config(struct usb_configuration *c)
} }
static int gprinter_setup(void)
{
int status;
usb_gadget_class = class_create(THIS_MODULE, "usb_printer_gadget");
if (IS_ERR(usb_gadget_class)) {
status = PTR_ERR(usb_gadget_class);
pr_err("unable to create usb_gadget class %d\n", status);
return status;
}
status = alloc_chrdev_region(&g_printer_devno, 0, 1,
"USB printer gadget");
if (status) {
pr_err("alloc_chrdev_region %d\n", status);
class_destroy(usb_gadget_class);
}
return status;
}
/* must be called with struct printer_dev's lock_printer_io held */
static void gprinter_cleanup(void)
{
unregister_chrdev_region(g_printer_devno, 1);
class_destroy(usb_gadget_class);
}
static int __init printer_bind(struct usb_composite_dev *cdev) static int __init printer_bind(struct usb_composite_dev *cdev)
{ {
int ret; int ret;
...@@ -1329,20 +1357,9 @@ init(void) ...@@ -1329,20 +1357,9 @@ init(void)
{ {
int status; int status;
usb_gadget_class = class_create(THIS_MODULE, "usb_printer_gadget"); status = gprinter_setup();
if (IS_ERR(usb_gadget_class)) { if (status)
status = PTR_ERR(usb_gadget_class);
pr_err("unable to create usb_gadget class %d\n", status);
return status;
}
status = alloc_chrdev_region(&g_printer_devno, 0, 1,
"USB printer gadget");
if (status) {
pr_err("alloc_chrdev_region %d\n", status);
class_destroy(usb_gadget_class);
return status; return status;
}
status = usb_composite_probe(&printer_driver); status = usb_composite_probe(&printer_driver);
if (status) { if (status) {
...@@ -1360,8 +1377,7 @@ cleanup(void) ...@@ -1360,8 +1377,7 @@ 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);
unregister_chrdev_region(g_printer_devno, 1); gprinter_cleanup();
class_destroy(usb_gadget_class);
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