Lines Matching +full:isoc +full:- +full:in

1 // SPDX-License-Identifier: GPL-2.0
32 if (h->bDescriptorType == dt1 || h->bDescriptorType == dt2) in find_next_descriptor()
34 buffer += h->bLength; in find_next_descriptor()
35 size -= h->bLength; in find_next_descriptor()
43 return buffer - buffer0; in find_next_descriptor()
53 * The SuperSpeedPlus Isoc endpoint companion descriptor immediately in usb_parse_ssp_isoc_endpoint_companion()
57 if (desc->bDescriptorType != USB_DT_SSP_ISOC_ENDPOINT_COMP || in usb_parse_ssp_isoc_endpoint_companion()
59 dev_notice(ddev, "Invalid SuperSpeedPlus isoc endpoint companion" in usb_parse_ssp_isoc_endpoint_companion()
61 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ssp_isoc_endpoint_companion()
64 memcpy(&ep->ssp_isoc_ep_comp, desc, USB_DT_SSP_ISOC_EP_COMP_SIZE); in usb_parse_ssp_isoc_endpoint_companion()
79 if (desc->bDescriptorType != USB_DT_SS_ENDPOINT_COMP || in usb_parse_ss_endpoint_companion()
84 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
86 /* Fill in some default values. in usb_parse_ss_endpoint_companion()
88 * bulk, and isoc won't support multiple bursts of packets. in usb_parse_ss_endpoint_companion()
93 ep->ss_ep_comp.bLength = USB_DT_SS_EP_COMP_SIZE; in usb_parse_ss_endpoint_companion()
94 ep->ss_ep_comp.bDescriptorType = USB_DT_SS_ENDPOINT_COMP; in usb_parse_ss_endpoint_companion()
95 if (usb_endpoint_xfer_isoc(&ep->desc) || in usb_parse_ss_endpoint_companion()
96 usb_endpoint_xfer_int(&ep->desc)) in usb_parse_ss_endpoint_companion()
97 ep->ss_ep_comp.wBytesPerInterval = in usb_parse_ss_endpoint_companion()
98 ep->desc.wMaxPacketSize; in usb_parse_ss_endpoint_companion()
101 buffer += desc->bLength; in usb_parse_ss_endpoint_companion()
102 size -= desc->bLength; in usb_parse_ss_endpoint_companion()
103 memcpy(&ep->ss_ep_comp, desc, USB_DT_SS_EP_COMP_SIZE); in usb_parse_ss_endpoint_companion()
106 if (usb_endpoint_xfer_control(&ep->desc) && desc->bMaxBurst != 0) { in usb_parse_ss_endpoint_companion()
107 dev_notice(ddev, "Control endpoint with bMaxBurst = %d in " in usb_parse_ss_endpoint_companion()
109 "setting to zero\n", desc->bMaxBurst, in usb_parse_ss_endpoint_companion()
110 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
111 ep->ss_ep_comp.bMaxBurst = 0; in usb_parse_ss_endpoint_companion()
112 } else if (desc->bMaxBurst > 15) { in usb_parse_ss_endpoint_companion()
113 dev_notice(ddev, "Endpoint with bMaxBurst = %d in " in usb_parse_ss_endpoint_companion()
115 "setting to 15\n", desc->bMaxBurst, in usb_parse_ss_endpoint_companion()
116 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
117 ep->ss_ep_comp.bMaxBurst = 15; in usb_parse_ss_endpoint_companion()
120 if ((usb_endpoint_xfer_control(&ep->desc) || in usb_parse_ss_endpoint_companion()
121 usb_endpoint_xfer_int(&ep->desc)) && in usb_parse_ss_endpoint_companion()
122 desc->bmAttributes != 0) { in usb_parse_ss_endpoint_companion()
123 dev_notice(ddev, "%s endpoint with bmAttributes = %d in " in usb_parse_ss_endpoint_companion()
126 usb_endpoint_xfer_control(&ep->desc) ? "Control" : "Bulk", in usb_parse_ss_endpoint_companion()
127 desc->bmAttributes, in usb_parse_ss_endpoint_companion()
128 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
129 ep->ss_ep_comp.bmAttributes = 0; in usb_parse_ss_endpoint_companion()
130 } else if (usb_endpoint_xfer_bulk(&ep->desc) && in usb_parse_ss_endpoint_companion()
131 desc->bmAttributes > 16) { in usb_parse_ss_endpoint_companion()
132 dev_notice(ddev, "Bulk endpoint with more than 65536 streams in " in usb_parse_ss_endpoint_companion()
135 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
136 ep->ss_ep_comp.bmAttributes = 16; in usb_parse_ss_endpoint_companion()
137 } else if (usb_endpoint_xfer_isoc(&ep->desc) && in usb_parse_ss_endpoint_companion()
138 !USB_SS_SSP_ISOC_COMP(desc->bmAttributes) && in usb_parse_ss_endpoint_companion()
139 USB_SS_MULT(desc->bmAttributes) > 3) { in usb_parse_ss_endpoint_companion()
140 dev_notice(ddev, "Isoc endpoint has Mult of %d in " in usb_parse_ss_endpoint_companion()
143 USB_SS_MULT(desc->bmAttributes), in usb_parse_ss_endpoint_companion()
144 cfgno, inum, asnum, ep->desc.bEndpointAddress); in usb_parse_ss_endpoint_companion()
145 ep->ss_ep_comp.bmAttributes = 2; in usb_parse_ss_endpoint_companion()
148 if (usb_endpoint_xfer_isoc(&ep->desc)) in usb_parse_ss_endpoint_companion()
149 max_tx = (desc->bMaxBurst + 1) * in usb_parse_ss_endpoint_companion()
150 (USB_SS_MULT(desc->bmAttributes)) * in usb_parse_ss_endpoint_companion()
151 usb_endpoint_maxp(&ep->desc); in usb_parse_ss_endpoint_companion()
152 else if (usb_endpoint_xfer_int(&ep->desc)) in usb_parse_ss_endpoint_companion()
153 max_tx = usb_endpoint_maxp(&ep->desc) * in usb_parse_ss_endpoint_companion()
154 (desc->bMaxBurst + 1); in usb_parse_ss_endpoint_companion()
157 if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) { in usb_parse_ss_endpoint_companion()
158 dev_notice(ddev, "%s endpoint with wBytesPerInterval of %d in " in usb_parse_ss_endpoint_companion()
161 usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int", in usb_parse_ss_endpoint_companion()
162 le16_to_cpu(desc->wBytesPerInterval), in usb_parse_ss_endpoint_companion()
163 cfgno, inum, asnum, ep->desc.bEndpointAddress, in usb_parse_ss_endpoint_companion()
165 ep->ss_ep_comp.wBytesPerInterval = cpu_to_le16(max_tx); in usb_parse_ss_endpoint_companion()
167 /* Parse a possible SuperSpeedPlus isoc ep companion descriptor */ in usb_parse_ss_endpoint_companion()
168 if (usb_endpoint_xfer_isoc(&ep->desc) && in usb_parse_ss_endpoint_companion()
169 USB_SS_SSP_ISOC_COMP(desc->bmAttributes)) in usb_parse_ss_endpoint_companion()
204 if (e1->bEndpointAddress == e2->bEndpointAddress) in endpoint_is_duplicate()
216 * Check for duplicate endpoint addresses in other interfaces and in the
227 for (i = 0; i < config->desc.bNumInterfaces; ++i) { in config_endpoint_is_duplicate()
228 intfc = config->intf_cache[i]; in config_endpoint_is_duplicate()
230 for (j = 0; j < intfc->num_altsetting; ++j) { in config_endpoint_is_duplicate()
231 alt = &intfc->altsetting[j]; in config_endpoint_is_duplicate()
233 if (alt->desc.bInterfaceNumber == inum && in config_endpoint_is_duplicate()
234 alt->desc.bAlternateSetting != asnum) in config_endpoint_is_duplicate()
237 for (k = 0; k < alt->desc.bNumEndpoints; ++k) { in config_endpoint_is_duplicate()
238 epd = &alt->endpoint[k].desc; in config_endpoint_is_duplicate()
263 buffer += d->bLength; in usb_parse_endpoint()
264 size -= d->bLength; in usb_parse_endpoint()
266 if (d->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE) in usb_parse_endpoint()
268 else if (d->bLength >= USB_DT_ENDPOINT_SIZE) in usb_parse_endpoint()
273 cfgno, inum, asnum, d->bLength); in usb_parse_endpoint()
277 i = d->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; in usb_parse_endpoint()
286 if (ifp->desc.bNumEndpoints >= num_ep) in usb_parse_endpoint()
290 endpoint = &ifp->endpoint[ifp->desc.bNumEndpoints]; in usb_parse_endpoint()
291 memcpy(&endpoint->desc, d, n); in usb_parse_endpoint()
292 d = &endpoint->desc; in usb_parse_endpoint()
294 /* Clear the reserved bits in bEndpointAddress */ in usb_parse_endpoint()
295 i = d->bEndpointAddress & in usb_parse_endpoint()
297 if (i != d->bEndpointAddress) { in usb_parse_endpoint()
299 cfgno, inum, asnum, d->bEndpointAddress, i); in usb_parse_endpoint()
300 endpoint->desc.bEndpointAddress = i; in usb_parse_endpoint()
306 cfgno, inum, asnum, d->bEndpointAddress); in usb_parse_endpoint()
311 if (udev->quirks & USB_QUIRK_ENDPOINT_IGNORE) { in usb_parse_endpoint()
315 d->bEndpointAddress); in usb_parse_endpoint()
321 ++ifp->desc.bNumEndpoints; in usb_parse_endpoint()
322 INIT_LIST_HEAD(&endpoint->urb_list); in usb_parse_endpoint()
332 switch (udev->speed) { in usb_parse_endpoint()
337 * Many device manufacturers are using full-speed in usb_parse_endpoint()
338 * bInterval values in high-speed interrupt endpoint in usb_parse_endpoint()
340 * 8-ms default value otherwise. in usb_parse_endpoint()
342 n = fls(d->bInterval*8); in usb_parse_endpoint()
344 n = 7; /* 8 ms = 2^(7-1) uframes */ in usb_parse_endpoint()
351 * This quirk fixes bIntervals reported in ms. in usb_parse_endpoint()
353 if (udev->quirks & USB_QUIRK_LINEAR_FRAME_INTR_BINTERVAL) { in usb_parse_endpoint()
354 n = clamp(fls(d->bInterval) + 3, i, j); in usb_parse_endpoint()
358 * This quirk fixes bIntervals reported in in usb_parse_endpoint()
361 if (udev->quirks & USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL) { in usb_parse_endpoint()
362 n = clamp(fls(d->bInterval), i, j); in usb_parse_endpoint()
368 * For low-speed, 10 ms is the official minimum. in usb_parse_endpoint()
378 switch (udev->speed) { in usb_parse_endpoint()
380 n = 7; /* 8 ms = 2^(7-1) uframes */ in usb_parse_endpoint()
383 n = 4; /* 8 ms = 2^(4-1) frames */ in usb_parse_endpoint()
387 if (d->bInterval < i || d->bInterval > j) { in usb_parse_endpoint()
392 d->bEndpointAddress, d->bInterval, n); in usb_parse_endpoint()
393 endpoint->desc.bInterval = n; in usb_parse_endpoint()
396 /* Some buggy low-speed devices have Bulk endpoints, which is in usb_parse_endpoint()
397 * explicitly forbidden by the USB spec. In an attempt to make in usb_parse_endpoint()
400 if (udev->speed == USB_SPEED_LOW && usb_endpoint_xfer_bulk(d)) { in usb_parse_endpoint()
403 cfgno, inum, asnum, d->bEndpointAddress); in usb_parse_endpoint()
404 endpoint->desc.bmAttributes = USB_ENDPOINT_XFER_INT; in usb_parse_endpoint()
405 endpoint->desc.bInterval = 1; in usb_parse_endpoint()
406 if (usb_endpoint_maxp(&endpoint->desc) > 8) in usb_parse_endpoint()
407 endpoint->desc.wMaxPacketSize = cpu_to_le16(8); in usb_parse_endpoint()
412 * Some devices have isochronous endpoints in altsetting 0; in usb_parse_endpoint()
413 * the USB-2 spec requires such endpoints to have wMaxPacketSize = 0 in usb_parse_endpoint()
416 maxp = le16_to_cpu(endpoint->desc.wMaxPacketSize); in usb_parse_endpoint()
419 cfgno, inum, asnum, d->bEndpointAddress); in usb_parse_endpoint()
424 switch (udev->speed) { in usb_parse_endpoint()
432 /* Multiple-transactions bits are allowed only for HS periodic endpoints */ in usb_parse_endpoint()
446 j = maxpacket_maxes[usb_endpoint_type(&endpoint->desc)]; in usb_parse_endpoint()
450 cfgno, inum, asnum, d->bEndpointAddress, maxp, j); in usb_parse_endpoint()
452 endpoint->desc.wMaxPacketSize = cpu_to_le16(i | maxp); in usb_parse_endpoint()
460 if (udev->speed == USB_SPEED_HIGH && usb_endpoint_xfer_bulk(d)) { in usb_parse_endpoint()
464 cfgno, inum, asnum, d->bEndpointAddress, in usb_parse_endpoint()
469 if (udev->speed >= USB_SPEED_SUPER) in usb_parse_endpoint()
475 endpoint->extra = buffer; in usb_parse_endpoint()
478 endpoint->extralen = i; in usb_parse_endpoint()
479 retval = buffer - buffer0 + i; in usb_parse_endpoint()
488 return buffer - buffer0 + i; in usb_parse_endpoint()
496 for (j = 0; j < intfc->num_altsetting; j++) { in usb_release_interface_cache()
497 struct usb_host_interface *alt = &intfc->altsetting[j]; in usb_release_interface_cache()
499 kfree(alt->endpoint); in usb_release_interface_cache()
500 kfree(alt->string); in usb_release_interface_cache()
519 buffer += d->bLength; in usb_parse_interface()
520 size -= d->bLength; in usb_parse_interface()
522 if (d->bLength < USB_DT_INTERFACE_SIZE) in usb_parse_interface()
527 inum = d->bInterfaceNumber; in usb_parse_interface()
528 for (i = 0; i < config->desc.bNumInterfaces; ++i) { in usb_parse_interface()
530 intfc = config->intf_cache[i]; in usb_parse_interface()
534 if (!intfc || intfc->num_altsetting >= nalts[i]) in usb_parse_interface()
538 asnum = d->bAlternateSetting; in usb_parse_interface()
539 for ((i = 0, alt = &intfc->altsetting[0]); in usb_parse_interface()
540 i < intfc->num_altsetting; in usb_parse_interface()
542 if (alt->desc.bAlternateSetting == asnum) { in usb_parse_interface()
550 ++intfc->num_altsetting; in usb_parse_interface()
551 memcpy(&alt->desc, d, USB_DT_INTERFACE_SIZE); in usb_parse_interface()
555 alt->extra = buffer; in usb_parse_interface()
558 alt->extralen = i; in usb_parse_interface()
563 size -= i; in usb_parse_interface()
566 num_ep = num_ep_orig = alt->desc.bNumEndpoints; in usb_parse_interface()
567 alt->desc.bNumEndpoints = 0; /* Use as a counter */ in usb_parse_interface()
578 alt->endpoint = kzalloc(len, GFP_KERNEL); in usb_parse_interface()
579 if (!alt->endpoint) in usb_parse_interface()
580 return -ENOMEM; in usb_parse_interface()
586 if (((struct usb_descriptor_header *) buffer)->bDescriptorType in usb_parse_interface()
596 size -= retval; in usb_parse_interface()
604 return buffer - buffer0; in usb_parse_interface()
609 return buffer - buffer0 + i; in usb_parse_interface()
615 struct device *ddev = &dev->dev; in usb_parse_configuration()
628 memcpy(&config->desc, buffer, USB_DT_CONFIG_SIZE); in usb_parse_configuration()
629 nintf = nintf_orig = config->desc.bNumInterfaces; in usb_parse_configuration()
630 config->desc.bNumInterfaces = 0; // Adjusted later in usb_parse_configuration()
632 if (config->desc.bDescriptorType != USB_DT_CONFIG || in usb_parse_configuration()
633 config->desc.bLength < USB_DT_CONFIG_SIZE || in usb_parse_configuration()
634 config->desc.bLength > size) { in usb_parse_configuration()
637 config->desc.bDescriptorType, config->desc.bLength); in usb_parse_configuration()
638 return -EINVAL; in usb_parse_configuration()
640 cfgno = config->desc.bConfigurationValue; in usb_parse_configuration()
642 buffer += config->desc.bLength; in usb_parse_configuration()
643 size -= config->desc.bLength; in usb_parse_configuration()
657 (buffer2 += header->bLength, size2 -= header->bLength)) { in usb_parse_configuration()
667 if ((header->bLength > size2) || (header->bLength < 2)) { in usb_parse_configuration()
670 cfgno, header->bLength); in usb_parse_configuration()
674 if (header->bDescriptorType == USB_DT_INTERFACE) { in usb_parse_configuration()
679 if (d->bLength < USB_DT_INTERFACE_SIZE) { in usb_parse_configuration()
682 "skipping\n", cfgno, d->bLength); in usb_parse_configuration()
686 inum = d->bInterfaceNumber; in usb_parse_configuration()
688 if ((dev->quirks & USB_QUIRK_HONOR_BNUMINTERFACES) && in usb_parse_configuration()
691 "descriptors, than it declares in " in usb_parse_configuration()
700 cfgno, inum, nintf_orig - 1); in usb_parse_configuration()
717 } else if (header->bDescriptorType == in usb_parse_configuration()
722 if (d->bLength < USB_DT_INTERFACE_ASSOCIATION_SIZE) { in usb_parse_configuration()
725 cfgno, d->bLength); in usb_parse_configuration()
732 "than allocated for in " in usb_parse_configuration()
735 config->intf_assoc[iad_num] = d; in usb_parse_configuration()
739 } else if (header->bDescriptorType == USB_DT_DEVICE || in usb_parse_configuration()
740 header->bDescriptorType == USB_DT_CONFIG) in usb_parse_configuration()
743 cfgno, header->bDescriptorType); in usb_parse_configuration()
746 size = buffer2 - buffer; in usb_parse_configuration()
747 config->desc.wTotalLength = cpu_to_le16(buffer2 - buffer0); in usb_parse_configuration()
755 config->desc.bNumInterfaces = nintf = n; in usb_parse_configuration()
780 config->intf_cache[i] = intfc; in usb_parse_configuration()
782 return -ENOMEM; in usb_parse_configuration()
783 kref_init(&intfc->ref); in usb_parse_configuration()
790 config->extra = buffer; in usb_parse_configuration()
793 config->extralen = i; in usb_parse_configuration()
798 size -= i; in usb_parse_configuration()
808 size -= retval; in usb_parse_configuration()
813 intfc = config->intf_cache[i]; in usb_parse_configuration()
814 for (j = 0; j < intfc->num_altsetting; ++j) { in usb_parse_configuration()
815 for (n = 0; n < intfc->num_altsetting; ++n) { in usb_parse_configuration()
816 if (intfc->altsetting[n].desc. in usb_parse_configuration()
820 if (n >= intfc->num_altsetting) in usb_parse_configuration()
829 /* hub-only!! ... and only exported for reset/reinit path.
836 if (!dev->config) in usb_destroy_configuration()
839 if (dev->rawdescriptors) { in usb_destroy_configuration()
840 for (i = 0; i < dev->descriptor.bNumConfigurations; i++) in usb_destroy_configuration()
841 kfree(dev->rawdescriptors[i]); in usb_destroy_configuration()
843 kfree(dev->rawdescriptors); in usb_destroy_configuration()
844 dev->rawdescriptors = NULL; in usb_destroy_configuration()
847 for (c = 0; c < dev->descriptor.bNumConfigurations; c++) { in usb_destroy_configuration()
848 struct usb_host_config *cf = &dev->config[c]; in usb_destroy_configuration()
850 kfree(cf->string); in usb_destroy_configuration()
851 for (i = 0; i < cf->desc.bNumInterfaces; i++) { in usb_destroy_configuration()
852 if (cf->intf_cache[i]) in usb_destroy_configuration()
853 kref_put(&cf->intf_cache[i]->ref, in usb_destroy_configuration()
857 kfree(dev->config); in usb_destroy_configuration()
858 dev->config = NULL; in usb_destroy_configuration()
865 * hub-only!! ... and only in reset path, or usb_new_device()
870 struct device *ddev = &dev->dev; in usb_get_configuration()
871 int ncfg = dev->descriptor.bNumConfigurations; in usb_get_configuration()
880 dev->descriptor.bNumConfigurations = ncfg = USB_MAXCONFIG; in usb_get_configuration()
885 return -EINVAL; in usb_get_configuration()
889 dev->config = kzalloc(length, GFP_KERNEL); in usb_get_configuration()
890 if (!dev->config) in usb_get_configuration()
891 return -ENOMEM; in usb_get_configuration()
894 dev->rawdescriptors = kzalloc(length, GFP_KERNEL); in usb_get_configuration()
895 if (!dev->rawdescriptors) in usb_get_configuration()
896 return -ENOMEM; in usb_get_configuration()
900 return -ENOMEM; in usb_get_configuration()
910 if (result != -EPIPE) in usb_get_configuration()
913 dev->descriptor.bNumConfigurations = cfgno; in usb_get_configuration()
919 result = -EINVAL; in usb_get_configuration()
922 length = max_t(int, le16_to_cpu(desc->wTotalLength), in usb_get_configuration()
928 result = -ENOMEM; in usb_get_configuration()
932 if (dev->quirks & USB_QUIRK_DELAY_INIT) in usb_get_configuration()
949 dev->rawdescriptors[cfgno] = bigbuffer; in usb_get_configuration()
952 &dev->config[cfgno], bigbuffer, length); in usb_get_configuration()
961 dev->descriptor.bNumConfigurations = cfgno; in usb_get_configuration()
968 if (dev->bos) { in usb_release_bos_descriptor()
969 kfree(dev->bos->desc); in usb_release_bos_descriptor()
970 kfree(dev->bos); in usb_release_bos_descriptor()
971 dev->bos = NULL; in usb_release_bos_descriptor()
987 struct device *ddev = &dev->dev; in usb_get_bos_descriptor()
998 return -ENOMEM; in usb_get_bos_descriptor()
1002 if (ret < USB_DT_BOS_SIZE || bos->bLength < USB_DT_BOS_SIZE) { in usb_get_bos_descriptor()
1005 ret = -ENOMSG; in usb_get_bos_descriptor()
1010 length = bos->bLength; in usb_get_bos_descriptor()
1011 total_len = le16_to_cpu(bos->wTotalLength); in usb_get_bos_descriptor()
1012 num = bos->bNumDeviceCaps; in usb_get_bos_descriptor()
1015 return -EINVAL; in usb_get_bos_descriptor()
1017 dev->bos = kzalloc(sizeof(*dev->bos), GFP_KERNEL); in usb_get_bos_descriptor()
1018 if (!dev->bos) in usb_get_bos_descriptor()
1019 return -ENOMEM; in usb_get_bos_descriptor()
1024 ret = -ENOMEM; in usb_get_bos_descriptor()
1027 dev->bos->desc = (struct usb_bos_descriptor *)buffer; in usb_get_bos_descriptor()
1033 ret = -ENOMSG; in usb_get_bos_descriptor()
1038 total_len -= length; in usb_get_bos_descriptor()
1044 if (total_len < sizeof(*cap) || total_len < cap->bLength) { in usb_get_bos_descriptor()
1045 dev->bos->desc->bNumDeviceCaps = i; in usb_get_bos_descriptor()
1048 cap_type = cap->bDevCapabilityType; in usb_get_bos_descriptor()
1049 length = cap->bLength; in usb_get_bos_descriptor()
1051 dev->bos->desc->bNumDeviceCaps = i; in usb_get_bos_descriptor()
1055 if (cap->bDescriptorType != USB_DT_DEVICE_CAPABILITY) { in usb_get_bos_descriptor()
1062 dev->bos->ext_cap = in usb_get_bos_descriptor()
1066 dev->bos->ss_cap = in usb_get_bos_descriptor()
1071 ssac = (le32_to_cpu(ssp_cap->bmAttributes) & in usb_get_bos_descriptor()
1074 dev->bos->ssp_cap = ssp_cap; in usb_get_bos_descriptor()
1077 dev->bos->ss_id = in usb_get_bos_descriptor()
1081 dev->bos->ptm_cap = in usb_get_bos_descriptor()
1089 total_len -= length; in usb_get_bos_descriptor()
1092 dev->bos->desc->wTotalLength = cpu_to_le16(buffer - buffer0); in usb_get_bos_descriptor()