Changes in uspace/lib/usbdev/src/pipesinit.c [58563585:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/pipesinit.c
r58563585 r9d58539 34 34 * 35 35 */ 36 #include <usb/usb.h> 36 37 #include <usb/dev/pipes.h> 37 38 #include <usb/dev/dp.h> 38 39 #include <usb/dev/request.h> 39 #include <usb/usb.h> 40 #include <usb/descriptor.h> 41 40 #include <errno.h> 42 41 #include <assert.h> 43 #include <errno.h>44 42 45 43 #define DEV_DESCR_MAX_PACKET_SIZE_OFFSET 7 … … 150 148 * @param interface Interface descriptor under which belongs the @p endpoint. 151 149 * @param endpoint Endpoint descriptor. 150 * @param wire Connection backing the endpoint pipes. 152 151 * @return Error code. 153 152 */ … … 155 154 usb_endpoint_mapping_t *mapping, size_t mapping_count, 156 155 usb_standard_interface_descriptor_t *interface, 157 usb_standard_endpoint_descriptor_t *endpoint _desc,158 usb_dev _session_t *bus_session)156 usb_standard_endpoint_descriptor_t *endpoint, 157 usb_device_connection_t *wire) 159 158 { 160 159 … … 164 163 165 164 /* Actual endpoint number is in bits 0..3 */ 166 const usb_endpoint_t ep_no = endpoint _desc->endpoint_address & 0x0F;165 const usb_endpoint_t ep_no = endpoint->endpoint_address & 0x0F; 167 166 168 167 const usb_endpoint_description_t description = { 169 168 /* Endpoint direction is set by bit 7 */ 170 .direction = (endpoint _desc->endpoint_address & 128)169 .direction = (endpoint->endpoint_address & 128) 171 170 ? USB_DIRECTION_IN : USB_DIRECTION_OUT, 172 171 /* Transfer type is in bits 0..2 and 173 172 * the enum values corresponds 1:1 */ 174 .transfer_type = endpoint _desc->attributes & 3,173 .transfer_type = endpoint->attributes & 3, 175 174 176 175 /* Get interface characteristics. */ … … 191 190 192 191 if (ep_mapping->present) { 193 return EEXIST; 194 } 195 196 int rc = usb_pipe_initialize(&ep_mapping->pipe, 197 ep_no, description.transfer_type, 198 ED_MPS_PACKET_SIZE_GET( 199 uint16_usb2host(endpoint_desc->max_packet_size)), 200 description.direction, 201 ED_MPS_TRANS_OPPORTUNITIES_GET( 202 uint16_usb2host(endpoint_desc->max_packet_size)), bus_session); 192 return EEXISTS; 193 } 194 195 int rc = usb_pipe_initialize(&ep_mapping->pipe, wire, 196 ep_no, description.transfer_type, endpoint->max_packet_size, 197 description.direction); 203 198 if (rc != EOK) { 204 199 return rc; … … 206 201 207 202 ep_mapping->present = true; 208 ep_mapping->descriptor = endpoint _desc;203 ep_mapping->descriptor = endpoint; 209 204 ep_mapping->interface = interface; 210 205 … … 224 219 usb_endpoint_mapping_t *mapping, size_t mapping_count, 225 220 const usb_dp_parser_t *parser, const usb_dp_parser_data_t *parser_data, 226 const uint8_t *interface_descriptor , usb_dev_session_t *bus_session)221 const uint8_t *interface_descriptor) 227 222 { 228 223 const uint8_t *descriptor = usb_dp_get_nested_descriptor(parser, … … 240 235 (usb_standard_endpoint_descriptor_t *) 241 236 descriptor, 242 bus_session);237 (usb_device_connection_t *) parser_data->arg); 243 238 } 244 239 … … 284 279 usb_endpoint_mapping_t *mapping, size_t mapping_count, 285 280 const uint8_t *config_descriptor, size_t config_descriptor_size, 286 usb_dev_session_t *bus_session) 287 { 288 if (config_descriptor == NULL) 281 usb_device_connection_t *connection) 282 { 283 assert(connection); 284 285 if (config_descriptor == NULL) { 289 286 return EBADMEM; 290 291 if (config_descriptor_size <292 sizeof(usb_standard_configuration_descriptor_t)) {287 } 288 if (config_descriptor_size 289 < sizeof(usb_standard_configuration_descriptor_t)) { 293 290 return ERANGE; 294 291 } … … 308 305 .data = config_descriptor, 309 306 .size = config_descriptor_size, 307 .arg = connection 310 308 }; 311 309 … … 320 318 do { 321 319 (void) process_interface(mapping, mapping_count, 322 &dp_parser, &dp_data, interface , bus_session);320 &dp_parser, &dp_data, interface); 323 321 interface = usb_dp_get_sibling_descriptor(&dp_parser, &dp_data, 324 322 config_descriptor, interface); … … 341 339 { 342 340 assert(pipe); 343 static_assert(DEV_DESCR_MAX_PACKET_SIZE_OFFSET < CTRL_PIPE_MIN_PACKET_SIZE);341 assert(DEV_DESCR_MAX_PACKET_SIZE_OFFSET < CTRL_PIPE_MIN_PACKET_SIZE); 344 342 345 343 if ((pipe->direction != USB_DIRECTION_BOTH) || … … 348 346 return EINVAL; 349 347 } 348 349 350 usb_pipe_start_long_transfer(pipe); 350 351 351 352 uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE]; … … 365 366 } 366 367 } 368 usb_pipe_end_long_transfer(pipe); 367 369 if (rc != EOK) { 368 370 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.