mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-06 14:48:06 +00:00
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: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
d82cd82edb
commit
a844715d2f
1 changed files with 19 additions and 18 deletions
|
@ -1330,45 +1330,47 @@ static int __init printer_bind(struct usb_composite_dev *cdev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = usb_string_ids_tab(cdev, strings);
|
ret = gprinter_setup();
|
||||||
if (ret < 0)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
ret = usb_string_ids_tab(cdev, strings);
|
||||||
|
if (ret < 0) {
|
||||||
|
gprinter_cleanup();
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue