Lines Matching refs:cdev

122 	struct usb_composite_dev	*cdev = function->config->cdev;  in usb_function_deactivate()  local
125 if (cdev->deactivations == 0) in usb_function_deactivate()
126 status = usb_gadget_disconnect(cdev->gadget); in usb_function_deactivate()
128 cdev->deactivations++; in usb_function_deactivate()
145 struct usb_composite_dev *cdev = function->config->cdev; in usb_function_activate() local
148 if (cdev->deactivations == 0) in usb_function_activate()
151 cdev->deactivations--; in usb_function_activate()
152 if (cdev->deactivations == 0) in usb_function_activate()
153 status = usb_gadget_connect(cdev->gadget); in usb_function_activate()
249 static int config_desc(struct usb_composite_dev *cdev, unsigned w_value) in config_desc() argument
252 struct usb_gadget *gadget = cdev->gadget; in config_desc()
271 pos = &cdev->configs; in config_desc()
272 c = cdev->os_desc_config; in config_desc()
276 while ((pos = pos->next) != &cdev->configs) { in config_desc()
280 if (c == cdev->os_desc_config) in config_desc()
295 return config_buf(c, speed, cdev->req->buf, type); in config_desc()
301 static int count_configs(struct usb_composite_dev *cdev, unsigned type) in count_configs() argument
303 struct usb_gadget *gadget = cdev->gadget; in count_configs()
318 list_for_each_entry(c, &cdev->configs, list) { in count_configs()
335 static void device_qual(struct usb_composite_dev *cdev) in device_qual() argument
337 struct usb_qualifier_descriptor *qual = cdev->req->buf; in device_qual()
342 qual->bcdUSB = cdev->desc.bcdUSB; in device_qual()
343 qual->bDeviceClass = cdev->desc.bDeviceClass; in device_qual()
344 qual->bDeviceSubClass = cdev->desc.bDeviceSubClass; in device_qual()
345 qual->bDeviceProtocol = cdev->desc.bDeviceProtocol; in device_qual()
347 qual->bMaxPacketSize0 = cdev->gadget->ep0->maxpacket; in device_qual()
348 qual->bNumConfigurations = count_configs(cdev, USB_DT_DEVICE_QUALIFIER); in device_qual()
352 static void reset_config(struct usb_composite_dev *cdev) in reset_config() argument
358 list_for_each_entry(f, &cdev->config->functions, list) { in reset_config()
364 cdev->config = NULL; in reset_config()
367 static int set_config(struct usb_composite_dev *cdev, in set_config() argument
370 struct usb_gadget *gadget = cdev->gadget; in set_config()
380 if (cdev->config) in set_config()
381 reset_config(cdev); in set_config()
384 list_for_each_entry(c, &cdev->configs, list) { in set_config()
420 cdev->config = c; in set_config()
456 reset_config(cdev); in set_config()
482 int usb_add_config(struct usb_composite_dev *cdev, in usb_add_config() argument
498 list_for_each_entry(c, &cdev->configs, list) { in usb_add_config()
505 config->cdev = cdev; in usb_add_config()
506 list_add_tail(&config->list, &cdev->configs); in usb_add_config()
514 config->cdev = NULL; in usb_add_config()
521 ? (gadget_is_dualspeed(cdev->gadget) in usb_add_config()
540 if (gadget_is_superspeed(cdev->gadget)) { in usb_add_config()
543 cdev->gadget->max_speed = in usb_add_config()
548 usb_ep_autoconfig_reset(cdev->gadget); in usb_add_config()
551 cdev->os_desc_config = os_desc_config; in usb_add_config()
608 static int get_string(struct usb_composite_dev *cdev, in get_string() argument
632 list_for_each_entry(c, &cdev->configs, list) { in get_string()
653 if (cdev->use_os_string && language == 0 && id == OS_STRING_IDX) { in get_string()
657 memcpy(&b->qwSignature, cdev->qw_sign, sizeof(b->qwSignature)); in get_string()
658 b->bMS_VendorCode = cdev->b_vendor_code; in get_string()
673 list_for_each_entry(c, &cdev->configs, list) { in get_string()
704 int usb_string_id(struct usb_composite_dev *cdev) in usb_string_id() argument
706 if (cdev->next_string_id < 254) { in usb_string_id()
712 cdev->next_string_id++; in usb_string_id()
713 return cdev->next_string_id; in usb_string_id()
734 int usb_string_ids_tab(struct usb_composite_dev *cdev, struct usb_string *str) in usb_string_ids_tab() argument
736 u8 next = cdev->next_string_id; in usb_string_ids_tab()
744 cdev->next_string_id = next; in usb_string_ids_tab()
786 static int bos_desc(struct usb_composite_dev *cdev) in bos_desc() argument
790 struct usb_bos_descriptor *bos = cdev->req->buf; in bos_desc()
802 usb_ext = cdev->req->buf + le16_to_cpu(bos->wTotalLength); in bos_desc()
816 if (gadget_is_superspeed(cdev->gadget)) { in bos_desc()
819 ss_cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength); in bos_desc()
835 if (cdev->gadget->ops->get_config_params) { in bos_desc()
836 cdev->gadget->ops->get_config_params( in bos_desc()
1013 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_setup() local
1016 struct usb_request *req = cdev->req; in composite_setup()
1030 gadget->ep0->driver_data = cdev; in composite_setup()
1045 cdev->desc.bNumConfigurations = in composite_setup()
1046 count_configs(cdev, USB_DT_DEVICE); in composite_setup()
1048 cdev->desc.bMaxPacketSize0 = in composite_setup()
1049 cdev->gadget->ep0->maxpacket; in composite_setup()
1051 cdev->desc.bcdUSB = cpu_to_le16(0x0310); in composite_setup()
1052 cdev->desc.bMaxPacketSize0 = 9; in composite_setup()
1054 cdev->desc.bcdUSB = cpu_to_le16(0x0200); in composite_setup()
1056 value = min(w_length, (u16) sizeof cdev->desc); in composite_setup()
1057 memcpy(req->buf, &cdev->desc, value); in composite_setup()
1063 device_qual(cdev); in composite_setup()
1073 value = config_desc(cdev, w_value); in composite_setup()
1078 value = get_string(cdev, req->buf, in composite_setup()
1091 value = bos_desc(cdev); in composite_setup()
1113 value = set_config(cdev, ctrl, w_value); in composite_setup()
1118 if (cdev->config) in composite_setup()
1119 *(u8 *)req->buf = cdev->config->bConfigurationValue; in composite_setup()
1132 if (!cdev->config || w_index >= MAX_CONFIG_INTERFACES) in composite_setup()
1134 f = cdev->config->interface[intf]; in composite_setup()
1144 if (!cdev->config || w_index >= MAX_CONFIG_INTERFACES) in composite_setup()
1146 f = cdev->config->interface[intf]; in composite_setup()
1161 if (CONFIG_IS_ENABLED(USB_GADGET_OS_DESCRIPTORS) && cdev->use_os_string && in composite_setup()
1162 cdev->os_desc_config && (ctrl->bRequestType & USB_TYPE_VENDOR) && in composite_setup()
1163 ctrl->bRequest == cdev->b_vendor_code) { in composite_setup()
1170 os_desc_cfg = cdev->os_desc_config; in composite_setup()
1247 if (!cdev->config) in composite_setup()
1257 f = cdev->config->interface[intf]; in composite_setup()
1262 list_for_each_entry(f, &cdev->config->functions, list) { in composite_setup()
1266 if (&f->list == &cdev->config->functions) in composite_setup()
1284 cdev->config->next_interface_id, intf); in composite_setup()
1285 if (cdev->config->next_interface_id == 1) in composite_setup()
1286 f = cdev->config->interface[intf]; in composite_setup()
1293 c = cdev->config; in composite_setup()
1320 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_disconnect() local
1322 if (cdev->config) in composite_disconnect()
1323 reset_config(cdev); in composite_disconnect()
1325 composite->disconnect(cdev); in composite_disconnect()
1330 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_unbind() local
1341 assert_noisy(!cdev->config); in composite_unbind()
1343 BUG_ON(cdev->config); in composite_unbind()
1346 while (!list_empty(&cdev->configs)) { in composite_unbind()
1347 c = list_first_entry(&cdev->configs, in composite_unbind()
1367 composite->unbind(cdev); in composite_unbind()
1369 if (cdev->req) { in composite_unbind()
1370 kfree(cdev->req->buf); in composite_unbind()
1371 usb_ep_free_request(gadget->ep0, cdev->req); in composite_unbind()
1373 kfree(cdev); in composite_unbind()
1382 struct usb_composite_dev *cdev; in composite_bind() local
1384 cdev = calloc(sizeof *cdev, 1); in composite_bind()
1385 if (!cdev) in composite_bind()
1388 cdev->gadget = gadget; in composite_bind()
1389 set_gadget_data(gadget, cdev); in composite_bind()
1390 INIT_LIST_HEAD(&cdev->configs); in composite_bind()
1393 cdev->req = usb_ep_alloc_request(gadget->ep0, GFP_KERNEL); in composite_bind()
1394 if (!cdev->req) in composite_bind()
1396 cdev->req->buf = memalign(CONFIG_SYS_CACHELINE_SIZE, USB_BUFSIZ); in composite_bind()
1397 if (!cdev->req->buf) in composite_bind()
1399 cdev->req->complete = composite_setup_complete; in composite_bind()
1400 gadget->ep0->driver_data = cdev; in composite_bind()
1402 cdev->bufsiz = USB_BUFSIZ; in composite_bind()
1403 cdev->driver = composite; in composite_bind()
1406 usb_ep_autoconfig_reset(cdev->gadget); in composite_bind()
1408 status = composite->bind(cdev); in composite_bind()
1412 memcpy(&cdev->desc, composite->dev, in composite_bind()
1414 cdev->desc.bMaxPacketSize0 = gadget->ep0->maxpacket; in composite_bind()
1416 if (cdev->use_os_string) { in composite_bind()
1418 cdev->b_vendor_code = 0x40; in composite_bind()
1421 utf8_to_utf16le(qw_sign_buf, (__le16 *)cdev->qw_sign, in composite_bind()
1436 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_suspend() local
1440 if (cdev->config) { in composite_suspend()
1441 list_for_each_entry(f, &cdev->config->functions, list) { in composite_suspend()
1447 composite->suspend(cdev); in composite_suspend()
1449 cdev->suspended = 1; in composite_suspend()
1455 struct usb_composite_dev *cdev = get_gadget_data(gadget); in composite_resume() local
1460 composite->resume(cdev); in composite_resume()
1461 if (cdev->config) { in composite_resume()
1462 list_for_each_entry(f, &cdev->config->functions, list) { in composite_resume()
1468 cdev->suspended = 0; in composite_resume()