Changes in uspace/lib/usbdev/src/pipesinit.c [5bc8250:58563585] in mainline
- File:
-
- 1 edited
-
uspace/lib/usbdev/src/pipesinit.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/pipesinit.c
r5bc8250 r58563585 38 38 #include <usb/dev/request.h> 39 39 #include <usb/usb.h> 40 #include <usb/debug.h>41 40 #include <usb/descriptor.h> 42 41 … … 60 59 NESTING(INTERFACE, HID), 61 60 NESTING(HID, HID_REPORT), 62 NESTING(ENDPOINT, SSPEED_EP_COMPANION),63 61 LAST_NESTING 64 62 }; … … 72 70 { 73 71 return descriptor[1] == USB_DESCTYPE_ENDPOINT; 74 }75 76 /** Tells whether given descriptor is of superspeed companion type.77 *78 * @param descriptor Descriptor in question.79 * @return Whether the given descriptor is superspeed companion descriptor.80 */81 static inline bool is_superspeed_companion_descriptor(const uint8_t *descriptor)82 {83 return descriptor[1] == USB_DESCTYPE_SSPEED_EP_COMPANION;84 72 } 85 73 … … 162 150 * @param interface Interface descriptor under which belongs the @p endpoint. 163 151 * @param endpoint Endpoint descriptor. 164 * @param companion Superspeed companion descriptor.165 152 * @return Error code. 166 153 */ … … 169 156 usb_standard_interface_descriptor_t *interface, 170 157 usb_standard_endpoint_descriptor_t *endpoint_desc, 171 usb_superspeed_endpoint_companion_descriptor_t *companion_desc,172 158 usb_dev_session_t *bus_session) 173 159 { … … 208 194 } 209 195 210 unsigned max_burst = 0;211 unsigned max_streams = 0;212 if(companion_desc) {213 max_burst = companion_desc->max_burst;214 max_streams = SS_COMPANION_MAX_STREAMS(companion_desc->attributes);215 }216 217 196 int rc = usb_pipe_initialize(&ep_mapping->pipe, 218 197 ep_no, description.transfer_type, 219 198 ED_MPS_PACKET_SIZE_GET( 220 199 uint16_usb2host(endpoint_desc->max_packet_size)), 221 description.direction, ED_MPS_TRANS_OPPORTUNITIES_GET(222 uint16_usb2host(endpoint_desc->max_packet_size)),223 max_burst, max_streams, bus_session);200 description.direction, 201 ED_MPS_TRANS_OPPORTUNITIES_GET( 202 uint16_usb2host(endpoint_desc->max_packet_size)), bus_session); 224 203 if (rc != EOK) { 225 204 return rc; … … 228 207 ep_mapping->present = true; 229 208 ep_mapping->descriptor = endpoint_desc; 230 ep_mapping->companion_descriptor = companion_desc;231 209 ep_mapping->interface = interface; 232 210 … … 257 235 do { 258 236 if (is_endpoint_descriptor(descriptor)) { 259 /* Check if companion descriptor is present too, it should immediatelly follow. */260 const uint8_t *companion_desc = usb_dp_get_nested_descriptor(parser,261 parser_data, descriptor);262 if (companion_desc && !is_superspeed_companion_descriptor(companion_desc)) {263 /* Not what we wanted, don't pass it further. */264 companion_desc = NULL;265 }266 267 237 (void) process_endpoint(mapping, mapping_count, 268 238 (usb_standard_interface_descriptor_t *) … … 270 240 (usb_standard_endpoint_descriptor_t *) 271 241 descriptor, 272 (usb_superspeed_endpoint_companion_descriptor_t *)273 companion_desc,274 242 bus_session); 275 243 } … … 320 288 if (config_descriptor == NULL) 321 289 return EBADMEM; 322 290 323 291 if (config_descriptor_size < 324 292 sizeof(usb_standard_configuration_descriptor_t)) { … … 375 343 static_assert(DEV_DESCR_MAX_PACKET_SIZE_OFFSET < CTRL_PIPE_MIN_PACKET_SIZE); 376 344 377 if ((pipe->d esc.direction != USB_DIRECTION_BOTH) ||378 (pipe-> desc.transfer_type != USB_TRANSFER_CONTROL) ||379 (pipe-> desc.endpoint_no != 0)) {345 if ((pipe->direction != USB_DIRECTION_BOTH) || 346 (pipe->transfer_type != USB_TRANSFER_CONTROL) || 347 (pipe->endpoint_no != 0)) { 380 348 return EINVAL; 381 349 } … … 401 369 } 402 370 403 pipe-> desc.max_packet_size371 pipe->max_packet_size 404 372 = dev_descr_start[DEV_DESCR_MAX_PACKET_SIZE_OFFSET]; 405 373
Note:
See TracChangeset
for help on using the changeset viewer.
