Lines Matching refs:cdev
99 struct usb_composite_dev *cdev = function->config->cdev; in usb_function_deactivate() local
102 if (cdev->deactivations == 0) in usb_function_deactivate()
103 status = usb_gadget_disconnect(cdev->gadget); in usb_function_deactivate()
105 cdev->deactivations++; in usb_function_deactivate()
122 struct usb_composite_dev *cdev = function->config->cdev; in usb_function_activate() local
125 if (cdev->deactivations == 0) in usb_function_activate()
128 cdev->deactivations--; in usb_function_activate()
129 if (cdev->deactivations == 0) in usb_function_activate()
130 status = usb_gadget_connect(cdev->gadget); in usb_function_activate()
231 static int config_desc(struct usb_composite_dev *cdev, unsigned w_value) in config_desc() argument
234 struct usb_gadget *gadget = cdev->gadget; in config_desc()
251 list_for_each_entry(c, &cdev->configs, list) { in config_desc()
267 return config_buf(c, speed, cdev->req->buf, type); in config_desc()
273 static int count_configs(struct usb_composite_dev *cdev, unsigned type) in count_configs() argument
275 struct usb_gadget *gadget = cdev->gadget; in count_configs()
286 list_for_each_entry(c, &cdev->configs, list) { in count_configs()
300 static void device_qual(struct usb_composite_dev *cdev) in device_qual() argument
302 struct usb_qualifier_descriptor *qual = cdev->req->buf; in device_qual()
307 qual->bcdUSB = cdev->desc.bcdUSB; in device_qual()
308 qual->bDeviceClass = cdev->desc.bDeviceClass; in device_qual()
309 qual->bDeviceSubClass = cdev->desc.bDeviceSubClass; in device_qual()
310 qual->bDeviceProtocol = cdev->desc.bDeviceProtocol; in device_qual()
312 qual->bMaxPacketSize0 = cdev->gadget->ep0->maxpacket; in device_qual()
313 qual->bNumConfigurations = count_configs(cdev, USB_DT_DEVICE_QUALIFIER); in device_qual()
317 static void reset_config(struct usb_composite_dev *cdev) in reset_config() argument
323 list_for_each_entry(f, &cdev->config->functions, list) { in reset_config()
329 cdev->config = NULL; in reset_config()
332 static int set_config(struct usb_composite_dev *cdev, in set_config() argument
335 struct usb_gadget *gadget = cdev->gadget; in set_config()
345 if (cdev->config) in set_config()
346 reset_config(cdev); in set_config()
349 list_for_each_entry(c, &cdev->configs, list) { in set_config()
385 cdev->config = c; in set_config()
425 reset_config(cdev); in set_config()
451 int usb_add_config(struct usb_composite_dev *cdev, in usb_add_config() argument
467 list_for_each_entry(c, &cdev->configs, list) { in usb_add_config()
474 config->cdev = cdev; in usb_add_config()
475 list_add_tail(&config->list, &cdev->configs); in usb_add_config()
483 config->cdev = NULL; in usb_add_config()
490 (gadget_is_dualspeed(cdev->gadget) ? in usb_add_config()
502 usb_ep_autoconfig_reset(cdev->gadget); in usb_add_config()
559 static int get_string(struct usb_composite_dev *cdev, in get_string() argument
583 list_for_each_entry(c, &cdev->configs, list) { in get_string()
614 list_for_each_entry(c, &cdev->configs, list) { in get_string()
645 int usb_string_id(struct usb_composite_dev *cdev) in usb_string_id() argument
647 if (cdev->next_string_id < 254) { in usb_string_id()
653 cdev->next_string_id++; in usb_string_id()
654 return cdev->next_string_id; in usb_string_id()
675 int usb_string_ids_tab(struct usb_composite_dev *cdev, struct usb_string *str) in usb_string_ids_tab() argument
677 u8 next = cdev->next_string_id; in usb_string_ids_tab()
685 cdev->next_string_id = next; in usb_string_ids_tab()
727 static int bos_desc(struct usb_composite_dev *cdev) in bos_desc() argument
732 struct usb_bos_descriptor *bos = cdev->req->buf; in bos_desc()
739 if (cdev->gadget->speed < USB_SPEED_SUPER) { in bos_desc()
741 cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength); in bos_desc()
754 usb_ext = cdev->req->buf + le16_to_cpu(bos->wTotalLength); in bos_desc()
767 ss_cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength); in bos_desc()
799 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_setup() local
802 struct usb_request *req = cdev->req; in composite_setup()
816 gadget->ep0->driver_data = cdev; in composite_setup()
832 cdev->desc.bNumConfigurations = in composite_setup()
833 count_configs(cdev, USB_DT_DEVICE); in composite_setup()
841 if (!strncmp(cdev->driver->name, in composite_setup()
843 cdev->desc.bcdUSB = cpu_to_le16(0x0301); in composite_setup()
845 cdev->desc.bcdUSB = cpu_to_le16(0x0300); in composite_setup()
846 cdev->desc.bMaxPacketSize0 = 9; in composite_setup()
848 cdev->desc.bMaxPacketSize0 = in composite_setup()
849 cdev->gadget->ep0->maxpacket; in composite_setup()
852 value = min(w_length, (u16) sizeof cdev->desc); in composite_setup()
853 memcpy(req->buf, &cdev->desc, value); in composite_setup()
858 device_qual(cdev); in composite_setup()
867 value = config_desc(cdev, w_value); in composite_setup()
872 value = get_string(cdev, req->buf, in composite_setup()
886 !strncmp(cdev->driver->name, "rkusb_ums_dnl", 13)) { in composite_setup()
887 value = bos_desc(cdev); in composite_setup()
916 value = set_config(cdev, ctrl, w_value); in composite_setup()
921 if (cdev->config) in composite_setup()
922 *(u8 *)req->buf = cdev->config->bConfigurationValue; in composite_setup()
935 if (!cdev->config || w_index >= MAX_CONFIG_INTERFACES) in composite_setup()
937 f = cdev->config->interface[intf]; in composite_setup()
947 if (!cdev->config || w_index >= MAX_CONFIG_INTERFACES) in composite_setup()
949 f = cdev->config->interface[intf]; in composite_setup()
965 if (!cdev->config) in composite_setup()
975 if (!cdev->config) in composite_setup()
977 f = cdev->config->interface[intf]; in composite_setup()
981 if (!cdev->config) in composite_setup()
984 list_for_each_entry(f, &cdev->config->functions, list) { in composite_setup()
988 if (&f->list == &cdev->config->functions) in composite_setup()
1005 if (cdev->config) { in composite_setup()
1007 cdev->config->next_interface_id, intf); in composite_setup()
1008 if (cdev->config->next_interface_id == 1) in composite_setup()
1009 f = cdev->config->interface[intf]; in composite_setup()
1017 c = cdev->config; in composite_setup()
1044 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_disconnect() local
1046 if (cdev->config) in composite_disconnect()
1047 reset_config(cdev); in composite_disconnect()
1049 composite->disconnect(cdev); in composite_disconnect()
1054 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_unbind() local
1064 BUG_ON(cdev->config); in composite_unbind()
1066 while (!list_empty(&cdev->configs)) { in composite_unbind()
1067 c = list_first_entry(&cdev->configs, in composite_unbind()
1087 composite->unbind(cdev); in composite_unbind()
1089 if (cdev->req) { in composite_unbind()
1090 kfree(cdev->req->buf); in composite_unbind()
1091 usb_ep_free_request(gadget->ep0, cdev->req); in composite_unbind()
1093 kfree(cdev); in composite_unbind()
1102 struct usb_composite_dev *cdev; in composite_bind() local
1104 cdev = calloc(sizeof *cdev, 1); in composite_bind()
1105 if (!cdev) in composite_bind()
1108 cdev->gadget = gadget; in composite_bind()
1109 set_gadget_data(gadget, cdev); in composite_bind()
1110 INIT_LIST_HEAD(&cdev->configs); in composite_bind()
1113 cdev->req = usb_ep_alloc_request(gadget->ep0, GFP_KERNEL); in composite_bind()
1114 if (!cdev->req) in composite_bind()
1116 cdev->req->buf = memalign(CONFIG_SYS_CACHELINE_SIZE, USB_BUFSIZ); in composite_bind()
1117 if (!cdev->req->buf) in composite_bind()
1119 cdev->req->complete = composite_setup_complete; in composite_bind()
1120 gadget->ep0->driver_data = cdev; in composite_bind()
1122 cdev->bufsiz = USB_BUFSIZ; in composite_bind()
1123 cdev->driver = composite; in composite_bind()
1126 usb_ep_autoconfig_reset(cdev->gadget); in composite_bind()
1128 status = composite->bind(cdev); in composite_bind()
1132 memcpy(&cdev->desc, composite->dev, in composite_bind()
1134 cdev->desc.bMaxPacketSize0 = gadget->ep0->maxpacket; in composite_bind()
1147 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_suspend() local
1151 if (cdev->config) { in composite_suspend()
1152 list_for_each_entry(f, &cdev->config->functions, list) { in composite_suspend()
1158 composite->suspend(cdev); in composite_suspend()
1160 cdev->suspended = 1; in composite_suspend()
1166 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_resume() local
1171 composite->resume(cdev); in composite_resume()
1172 if (cdev->config) { in composite_resume()
1173 list_for_each_entry(f, &cdev->config->functions, list) { in composite_resume()
1179 cdev->suspended = 0; in composite_resume()