static int __init init(void) { if (use_acm) { serial_config_driver.label = "CDC ACM config"; serial_config_driver.bConfigurationValue = 2; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_PRODUCT_ID); } else if (use_obex) { serial_config_driver.label = "CDC OBEX config"; serial_config_driver.bConfigurationValue = 3; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_OBEX_PRODUCT_ID); } else { serial_config_driver.label = "Generic Serial config"; serial_config_driver.bConfigurationValue = 1; device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC; device_desc.idProduct = cpu_to_le16(GS_PRODUCT_ID); } strings_dev[STRING_DESCRIPTION_IDX].s = serial_config_driver.label; return usb_composite_register(&gserial_driver); }
static int __init init(void) { /* We *could* export two configs; that'd be much cleaner... * but neither of these product IDs was defined that way. */ if (use_acm) { serial_config_driver.label = "CDC ACM config"; serial_config_driver.bConfigurationValue = 2; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_PRODUCT_ID); } else if (use_obex) { serial_config_driver.label = "CDC OBEX config"; serial_config_driver.bConfigurationValue = 3; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_OBEX_PRODUCT_ID); } else { serial_config_driver.label = "Generic Serial config"; serial_config_driver.bConfigurationValue = 1; device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC; device_desc.idProduct = cpu_to_le16(GS_PRODUCT_ID); } strings_dev[STRING_DESCRIPTION_IDX].s = serial_config_driver.label; return usb_composite_register(&gserial_driver); }
static int dUsbInit(void) { //#define DEBUG #undef DEBUG #ifdef DEBUG printk("dUsbInit\n\r"); #endif UsbSpeed.Speed = FULL_SPEED; // default to FULL_SPEED if not connected to a HIGH-SPEED (*pUsbSpeed).Speed = FULL_SPEED; // HOST. If not connected to HIGH-SPEED we assume we're // wanting (or at least doing) Daisy Chain return usb_composite_register(&zero_driver); }
/* * NOTICE: * Registering via USB function name won't be necessary after rewriting * g_dnl to support multiple USB functions. */ int g_dnl_register(const char *name) { int ret; debug("%s: g_dnl_driver.name = %s\n", __func__, name); g_dnl_driver.name = name; ret = usb_composite_register(&g_dnl_driver); if (ret) { printf("%s: failed!, error: %d\n", __func__, ret); return ret; } return 0; }
static int functionfs_ready_callback(struct ffs_data *ffs) { int ret; ENTER(); if (WARN_ON(test_and_set_bit(0, &gfs_registered))) return -EBUSY; gfs_ffs_data = ffs; ret = usb_composite_register(&gfs_driver); if (unlikely(ret < 0)) clear_bit(0, &gfs_registered); return ret; }
/* * NOTICE: * Registering via USB function name won't be necessary after rewriting * g_dnl to support multiple USB functions. */ int g_dnl_register(const char *name) { int ret; char *s; printf("%s: g_dnl_driver.name = %s\n", __func__, name); g_dnl_driver.name = name; ret = usb_composite_register(&g_dnl_driver); if (ret) { printf("%s: failed!, error: %d\n", __func__, ret); return ret; } s = getenv("serial"); if (s) { g_dnl_set_serialnumber(s); } return 0; }
static int __init g_multi_init(void) { return usb_composite_register(&multi_driver); }
static int __init init(void) { return usb_composite_register(&audio_driver); }
static int g_dnl_config_register(struct usb_composite_dev *cdev) { static struct usb_configuration config = { .label = "usb_dnload", .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER, .bConfigurationValue = CONFIG_USBDOWNLOADER, .iConfiguration = STRING_USBDOWN, .bind = g_dnl_do_config, }; return usb_add_config(cdev, &config); } static int g_dnl_bind(struct usb_composite_dev *cdev) { struct usb_gadget *gadget = cdev->gadget; int id, ret; int gcnum; debug("%s: gadget: 0x%p cdev: 0x%p\n", __func__, gadget, cdev); id = usb_string_id(cdev); if (id < 0) return id; g_dnl_string_defs[0].id = id; device_desc.iManufacturer = id; id = usb_string_id(cdev); if (id < 0) return id; g_dnl_string_defs[1].id = id; device_desc.iProduct = id; id = usb_string_id(cdev); if (id < 0) return id; char *s = getenv("fbt_id#"); if (s) g_dnl_string_defs[2].s = s; g_dnl_string_defs[2].id = id; device_desc.iSerialNumber = id; ret = g_dnl_config_register(cdev); if (ret) goto error; gcnum = usb_gadget_controller_number(gadget); debug("gcnum: %d\n", gcnum); if (gcnum >= 0) device_desc.bcdDevice = cpu_to_le16(0x0200 + gcnum); else { debug("%s: controller '%s' not recognized\n", shortname, gadget->name); device_desc.bcdDevice = __constant_cpu_to_le16(0x9999); } return 0; error: g_dnl_unbind(cdev); return -ENOMEM; } static struct usb_composite_driver g_dnl_driver = { .name = NULL, .dev = &device_desc, .strings = g_dnl_composite_strings, .bind = g_dnl_bind, .unbind = g_dnl_unbind, }; int g_dnl_register(const char *type) { /* We only allow "dfu" atm, so 3 should be enough */ static char name[sizeof(shortname) + 3]; int ret; if (!strcmp(type, "dfu")) { strcpy(name, shortname); strcat(name, type); #if defined(CONFIG_CMD_FASTBOOT) } else if (!strcmp(type, "fastboot")) { strcpy(name, shortname); strcat(name, type); #endif #if defined(CONFIG_USB_GADGET_MASS_STORAGE) } else if (!strcmp(type, "ums")) { strcpy(name, shortname); strcat(name, type); #endif } else { printf("%s: unknown command: %s\n", __func__, type); return -EINVAL; } g_dnl_driver.name = name; debug("%s: g_dnl_driver.name: %s\n", __func__, g_dnl_driver.name); ret = usb_composite_register(&g_dnl_driver); if (ret) { printf("%s: failed!, error: %d\n", __func__, ret); return ret; } return 0; } void g_dnl_unregister(void) { usb_composite_unregister(&g_dnl_driver); }
int usb_serial_register(struct usb_serial_pdata *pdata) { /* We *could* export two configs; that'd be much cleaner... * but neither of these product IDs was defined that way. */ /* * PXA CPU suffer a silicon bug which prevents them from being a * compound device, forbiding the ACM configurations. */ #ifdef CONFIG_ARCH_PXA2XX use_acm = 0; #endif switch (pdata->mode) { case 1: #ifdef HAVE_OBEX use_obex = 1; #endif use_acm = 0; break; case 2: #ifdef HAVE_OBEX use_obex = 1; #endif use_acm = 0; break; default: #ifdef HAVE_OBEX use_obex = 0; #endif use_acm = 1; } if (use_acm) { serial_config_driver.label = "CDC ACM config"; serial_config_driver.bConfigurationValue = 2; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_PRODUCT_ID); } #ifdef HAVE_OBEX else if (use_obex) { serial_config_driver.label = "CDC OBEX config"; serial_config_driver.bConfigurationValue = 3; device_desc.bDeviceClass = USB_CLASS_COMM; device_desc.idProduct = cpu_to_le16(GS_CDC_OBEX_PRODUCT_ID); } #endif else { serial_config_driver.label = "Generic Serial config"; serial_config_driver.bConfigurationValue = 1; device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC; device_desc.idProduct = cpu_to_le16(GS_PRODUCT_ID); } strings_dev[STRING_DESCRIPTION_IDX].s = serial_config_driver.label; if (pdata->idVendor) device_desc.idVendor = pdata->idVendor; if (pdata->idProduct) device_desc.idProduct = pdata->idProduct; strings_dev[STRING_MANUFACTURER_IDX].s = pdata->manufacturer; strings_dev[STRING_PRODUCT_IDX].s = pdata->productname; return usb_composite_register(&gserial_driver); }
static int __init nokia_init(void) { return usb_composite_register(&nokia_driver); }
static int __init softupd_init(void) { return usb_composite_register(&softupd_driver); }
static int __init webcam_init(void) { return usb_composite_register(&webcam_driver); }
static int __init qcom_maemo_usb_init(void) { return usb_composite_register(&qcom_maemo_driver); }
static int __init msg_init(void) { return usb_composite_register(&msg_driver); }