Changes in / [9370884:ff34e5a] in mainline
- Location:
- uspace
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/usbinfo/info.c
r9370884 rff34e5a 65 65 goto leave; 66 66 } 67 rc = usb_endpoint_pipe_probe_default_control(&ctrl_pipe);68 if (rc != EOK) {69 fprintf(stderr,70 NAME ": probing default control pipe failed: %s.\n",71 str_error(rc));72 goto leave;73 }74 67 rc = usb_endpoint_pipe_start_session(&ctrl_pipe); 75 68 if (rc != EOK) { -
uspace/app/usbinfo/main.c
r9370884 rff34e5a 82 82 83 83 if (str_cmp(path, "uhci") == 0) { 84 path = "/hw/pci0/00:01.2/uhci -hc";84 path = "/hw/pci0/00:01.2/uhci"; 85 85 } 86 86 -
uspace/drv/usbhid/hiddev.c
r9370884 rff34e5a 391 391 return rc; 392 392 } 393 rc = usb_endpoint_pipe_probe_default_control(&hid_dev->ctrl_pipe);394 if (rc != EOK) {395 usb_log_error("Probing default control pipe failed: %s.\n",396 str_error(rc));397 return rc;398 }399 393 400 394 /* -
uspace/drv/usbhub/usbhub.c
r9370884 rff34e5a 118 118 dprintf(USB_LOG_LEVEL_ERROR, 119 119 "could not initialize connection to device endpoint, errno %d",opResult); 120 return opResult; 121 } 122 123 opResult = usb_endpoint_pipe_probe_default_control(&hub->endpoints.control); 124 if (opResult != EOK) { 125 dprintf(USB_LOG_LEVEL_ERROR, "failed probing endpoint 0, %d", opResult); 126 return opResult; 127 } 128 129 return EOK; 120 } 121 return opResult; 130 122 } 131 123 … … 438 430 &new_device_pipe, 439 431 &new_device_connection); 440 usb_endpoint_pipe_probe_default_control(&new_device_pipe);441 432 /// \TODO get highspeed info 442 433 usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL; -
uspace/drv/usbmid/usbmid.c
r9370884 rff34e5a 116 116 return NULL; 117 117 } 118 rc = usb_endpoint_pipe_probe_default_control(&mid->ctrl_pipe);119 if (rc != EOK) {120 usb_log_error("Probing default control pipe failed: %s.\n",121 str_error(rc));122 free(mid);123 return NULL;124 }125 118 126 119 mid->dev = dev; -
uspace/lib/usb/include/usb/pipes.h
r9370884 rff34e5a 129 129 int usb_endpoint_pipe_initialize_default_control(usb_endpoint_pipe_t *, 130 130 usb_device_connection_t *); 131 int usb_endpoint_pipe_probe_default_control(usb_endpoint_pipe_t *);132 131 int usb_endpoint_pipe_initialize_from_configuration(usb_endpoint_mapping_t *, 133 132 size_t, uint8_t *, size_t, usb_device_connection_t *); -
uspace/lib/usb/src/devdrv.c
r9370884 rff34e5a 228 228 } 229 229 230 rc = usb_endpoint_pipe_probe_default_control(&dev->ctrl_pipe);231 if (rc != EOK) {232 usb_log_error(233 "Probing default control pipe on device `%s' failed: %s.\n",234 dev->ddf_dev->name, str_error(rc));235 return rc;236 }237 238 230 /* 239 231 * Initialization of other pipes requires open session on -
uspace/lib/usb/src/hub.c
r9370884 rff34e5a 235 235 goto leave_release_default_address; 236 236 } 237 rc = usb_endpoint_pipe_probe_default_control(&ctrl_pipe);238 if (rc != EOK) {239 rc = ENOTCONN;240 goto leave_release_default_address;241 }242 237 243 238 rc = usb_endpoint_pipe_start_session(&ctrl_pipe); -
uspace/lib/usb/src/pipesinit.c
r9370884 rff34e5a 41 41 #include <errno.h> 42 42 #include <assert.h> 43 44 #define CTRL_PIPE_MIN_PACKET_SIZE 845 #define DEV_DESCR_MAX_PACKET_SIZE_OFFSET 746 43 47 44 … … 374 371 375 372 int rc = usb_endpoint_pipe_initialize(pipe, connection, 376 0, USB_TRANSFER_CONTROL, CTRL_PIPE_MIN_PACKET_SIZE, 377 USB_DIRECTION_BOTH); 378 379 return rc; 380 } 381 382 /** Probe default control pipe for max packet size. 383 * 384 * The function tries to get the correct value of max packet size several 385 * time before giving up. 386 * 387 * The session on the pipe shall not be started. 388 * 389 * @param pipe Default control pipe. 390 * @return Error code. 391 */ 392 int usb_endpoint_pipe_probe_default_control(usb_endpoint_pipe_t *pipe) 393 { 394 assert(pipe); 395 assert(DEV_DESCR_MAX_PACKET_SIZE_OFFSET < CTRL_PIPE_MIN_PACKET_SIZE); 396 397 if ((pipe->direction != USB_DIRECTION_BOTH) || 398 (pipe->transfer_type != USB_TRANSFER_CONTROL) || 399 (pipe->endpoint_no != 0)) { 400 return EINVAL; 401 } 402 403 #define TRY_LOOP(attempt_var) \ 404 for (attempt_var = 0; attempt_var < 3; attempt_var++) 405 406 size_t failed_attempts; 407 int rc; 408 409 TRY_LOOP(failed_attempts) { 410 rc = usb_endpoint_pipe_start_session(pipe); 411 if (rc == EOK) { 412 break; 413 } 414 } 373 0, USB_TRANSFER_CONTROL, 8, USB_DIRECTION_BOTH); 415 374 if (rc != EOK) { 416 375 return rc; 417 376 } 418 419 420 uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE]; 421 size_t transferred_size; 422 TRY_LOOP(failed_attempts) { 423 rc = usb_request_get_descriptor(pipe, USB_REQUEST_TYPE_STANDARD, 424 USB_REQUEST_RECIPIENT_DEVICE, USB_DESCTYPE_DEVICE, 425 0, 0, dev_descr_start, CTRL_PIPE_MIN_PACKET_SIZE, 426 &transferred_size); 427 if (rc == EOK) { 428 if (transferred_size != CTRL_PIPE_MIN_PACKET_SIZE) { 429 rc = ELIMIT; 430 continue; 431 } 432 break; 433 } 434 } 435 usb_endpoint_pipe_end_session(pipe); 377 rc = usb_endpoint_pipe_start_session(pipe); 436 378 if (rc != EOK) { 437 379 return rc; 438 380 } 439 381 440 pipe->max_packet_size 441 = dev_descr_start[DEV_DESCR_MAX_PACKET_SIZE_OFFSET]; 442 443 return EOK; 382 uint8_t first[8]; 383 size_t size = 0; 384 rc = usb_control_request_get(pipe, USB_REQUEST_TYPE_STANDARD, 385 USB_REQUEST_RECIPIENT_DEVICE, USB_DEVREQ_GET_DESCRIPTOR, 1 << 8, 386 0, first, 8, &size); 387 usb_endpoint_pipe_end_session(pipe); 388 if (rc != EOK || size != 8) { 389 return rc; 390 } 391 392 pipe->max_packet_size = first[7]; 393 return rc; 444 394 } 445 395 -
uspace/lib/usb/src/recognise.c
r9370884 rff34e5a 369 369 goto failure; 370 370 } 371 rc = usb_endpoint_pipe_probe_default_control(&ctrl_pipe);372 if (rc != EOK) {373 goto failure;374 }375 371 376 372 /*
Note:
See TracChangeset
for help on using the changeset viewer.