printer.c (b3e5ced63e051e8f911b795ac5b06229a5328f7b) printer.c (c94e289f195e0e13cf34d27f9338d28221a85751)
1/*
2 * printer.c -- Printer gadget driver
3 *
4 * Copyright (C) 2003-2005 David Brownell
5 * Copyright (C) 2006 Craig W. Nadler
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by

--- 112 unchanged lines hidden (view full) ---

121};
122
123static struct usb_configuration printer_cfg_driver = {
124 .label = "printer",
125 .bConfigurationValue = 1,
126 .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
127};
128
1/*
2 * printer.c -- Printer gadget driver
3 *
4 * Copyright (C) 2003-2005 David Brownell
5 * Copyright (C) 2006 Craig W. Nadler
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by

--- 112 unchanged lines hidden (view full) ---

121};
122
123static struct usb_configuration printer_cfg_driver = {
124 .label = "printer",
125 .bConfigurationValue = 1,
126 .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
127};
128
129static int __init printer_do_config(struct usb_configuration *c)
129static int printer_do_config(struct usb_configuration *c)
130{
131 struct usb_gadget *gadget = c->cdev->gadget;
132 int status = 0;
133
134 usb_ep_autoconfig_reset(gadget);
135
136 usb_gadget_set_selfpowered(gadget);
137

--- 9 unchanged lines hidden (view full) ---

147
148 status = usb_add_function(c, f_printer);
149 if (status < 0)
150 usb_put_function(f_printer);
151
152 return status;
153}
154
130{
131 struct usb_gadget *gadget = c->cdev->gadget;
132 int status = 0;
133
134 usb_ep_autoconfig_reset(gadget);
135
136 usb_gadget_set_selfpowered(gadget);
137

--- 9 unchanged lines hidden (view full) ---

147
148 status = usb_add_function(c, f_printer);
149 if (status < 0)
150 usb_put_function(f_printer);
151
152 return status;
153}
154
155static int __init printer_bind(struct usb_composite_dev *cdev)
155static int printer_bind(struct usb_composite_dev *cdev)
156{
157 struct f_printer_opts *opts;
158 int ret, len;
159
160 fi_printer = usb_get_function_instance("printer");
161 if (IS_ERR(fi_printer))
162 return PTR_ERR(fi_printer);
163

--- 22 unchanged lines hidden (view full) ---

186 if (ret) {
187 usb_put_function_instance(fi_printer);
188 return ret;
189 }
190 usb_composite_overwrite_options(cdev, &coverwrite);
191 return ret;
192}
193
156{
157 struct f_printer_opts *opts;
158 int ret, len;
159
160 fi_printer = usb_get_function_instance("printer");
161 if (IS_ERR(fi_printer))
162 return PTR_ERR(fi_printer);
163

--- 22 unchanged lines hidden (view full) ---

186 if (ret) {
187 usb_put_function_instance(fi_printer);
188 return ret;
189 }
190 usb_composite_overwrite_options(cdev, &coverwrite);
191 return ret;
192}
193
194static int __exit printer_unbind(struct usb_composite_dev *cdev)
194static int printer_unbind(struct usb_composite_dev *cdev)
195{
196 usb_put_function(f_printer);
197 usb_put_function_instance(fi_printer);
198
199 return 0;
200}
201
195{
196 usb_put_function(f_printer);
197 usb_put_function_instance(fi_printer);
198
199 return 0;
200}
201
202static __refdata struct usb_composite_driver printer_driver = {
202static struct usb_composite_driver printer_driver = {
203 .name = shortname,
204 .dev = &device_desc,
205 .strings = dev_strings,
206 .max_speed = USB_SPEED_SUPER,
207 .bind = printer_bind,
208 .unbind = printer_unbind,
209};
210
211module_usb_composite_driver(printer_driver);
212
213MODULE_DESCRIPTION(DRIVER_DESC);
214MODULE_AUTHOR("Craig Nadler");
215MODULE_LICENSE("GPL");
203 .name = shortname,
204 .dev = &device_desc,
205 .strings = dev_strings,
206 .max_speed = USB_SPEED_SUPER,
207 .bind = printer_bind,
208 .unbind = printer_unbind,
209};
210
211module_usb_composite_driver(printer_driver);
212
213MODULE_DESCRIPTION(DRIVER_DESC);
214MODULE_AUTHOR("Craig Nadler");
215MODULE_LICENSE("GPL");