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)
}
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)
{
int ret;
......@@ -1329,20 +1357,9 @@ init(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);
status = gprinter_setup();
if (status)
return status;
}
status = usb_composite_probe(&printer_driver);
if (status) {
......@@ -1360,8 +1377,7 @@ cleanup(void)
{
mutex_lock(&usb_printer_gadget.lock_printer_io);
usb_composite_unregister(&printer_driver);
unregister_chrdev_region(g_printer_devno, 1);
class_destroy(usb_gadget_class);
gprinter_cleanup();
mutex_unlock(&usb_printer_gadget.lock_printer_io);
}
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