/* DO NOT REUSE THESE IDs with a protocol-incompatible driver!! Ever!! * Instead: allocate your own, using normal USB-IF procedures.
*/
/* Thanks to NetChip Technologies for donating this product ID.
*/ #define PRINTER_VENDOR_NUM 0x0525 /* NetChip */ #define PRINTER_PRODUCT_NUM 0xa4a8 /* Linux-USB Printer Gadget */
/* Some systems will want different product identifiers published in the * device descriptor, either numbers or strings or both. These string * parameters are in UTF-8 (superset of ASCII's 7 bit characters).
*/
/* Number of requests to allocate per endpoint, not used for ep0. */ staticunsigned qlen = 10;
module_param(qlen, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC(qlen, "The number of 8k buffers to use per endpoint");
staticint printer_do_config(struct usb_configuration *c)
{ struct usb_gadget *gadget = c->cdev->gadget; int status = 0;
usb_ep_autoconfig_reset(gadget);
usb_gadget_set_selfpowered(gadget);
if (gadget_is_otg(gadget)) {
printer_cfg_driver.descriptors = otg_desc;
printer_cfg_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
}
f_printer = usb_get_function(fi_printer); if (IS_ERR(f_printer)) return PTR_ERR(f_printer);
status = usb_add_function(c, f_printer); if (status < 0)
usb_put_function(f_printer);
return status;
}
staticint printer_bind(struct usb_composite_dev *cdev)
{ struct f_printer_opts *opts; int ret;
fi_printer = usb_get_function_instance("printer"); if (IS_ERR(fi_printer)) return PTR_ERR(fi_printer);
opts = container_of(fi_printer, struct f_printer_opts, func_inst);
opts->minor = 0;
opts->q_len = QLEN; if (iPNPstring) {
opts->pnp_string = kstrdup(iPNPstring, GFP_KERNEL); if (!opts->pnp_string) {
ret = -ENOMEM; goto fail_put_func_inst;
}
opts->pnp_string_allocated = true; /* * we don't free this memory in case of error * as printer cleanup func will do this for us
*/
} else {
opts->pnp_string = pnp_string;
}
ret = usb_string_ids_tab(cdev, strings); if (ret < 0) goto fail_put_func_inst;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.