Changeset bdd8ad2f in mainline for uspace/lib/usbdev/src/pipesio.c
- Timestamp:
- 2011-09-14T20:15:03Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bbce2c2
- Parents:
- 365e29e2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/pipesio.c
r365e29e2 rbdd8ad2f 219 219 * Make call identifying target USB device and type of transfer. 220 220 */ 221 aid_t opening_request = async_send_ 2(exch, DEV_IFACE_ID(USBHC_DEV_IFACE),222 IPC_M_USBHC_DATA_WRITE, target.packed, NULL);221 aid_t opening_request = async_send_3(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 222 IPC_M_USBHC_DATA_WRITE, target.packed, size, NULL); 223 223 224 224 if (opening_request == 0) { … … 337 337 {{ .address = pipe->wire->address, .endpoint = pipe->endpoint_no }}; 338 338 339 assert(setup_buffer_size == 8); 340 uint64_t setup_packet; 341 memcpy(&setup_packet, setup_buffer, 8); 339 342 /* 340 343 * Make call identifying target USB device and control transfer type. 341 344 */ 342 345 async_exch_t *exch = async_exchange_begin(pipe->hc_sess); 343 aid_t opening_request = async_send_2(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 344 IPC_M_USBHC_CONTROL_READ, target.packed, NULL); 345 346 aid_t opening_request = async_send_4(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 347 IPC_M_USBHC_DATA_READ, target.packed, 348 (setup_packet & UINT32_MAX), (setup_packet >> 32), NULL); 349 346 350 if (opening_request == 0) { 347 351 async_exchange_end(exch); 348 352 return ENOMEM; 349 353 } 350 351 /* 352 * Send the setup packet. 353 */ 354 int rc = async_data_write_start(exch, setup_buffer, setup_buffer_size); 355 if (rc != EOK) { 356 async_exchange_end(exch); 357 pipe_end_transaction(pipe); 358 async_wait_for(opening_request, NULL); 359 return rc; 360 } 361 354 362 355 /* 363 356 * Retrieve the data. … … 484 477 const usb_target_t target = 485 478 {{ .address = pipe->wire->address, .endpoint = pipe->endpoint_no }}; 479 assert(setup_buffer_size == 8); 480 uint64_t setup_packet; 481 memcpy(&setup_packet, setup_buffer, 8); 486 482 487 483 /* … … 489 485 */ 490 486 async_exch_t *exch = async_exchange_begin(pipe->hc_sess); 491 aid_t opening_request = async_send_ 3(exch, DEV_IFACE_ID(USBHC_DEV_IFACE),492 IPC_M_USBHC_ CONTROL_WRITE, target.packed,493 data_buffer_size, NULL);487 aid_t opening_request = async_send_5(exch, DEV_IFACE_ID(USBHC_DEV_IFACE), 488 IPC_M_USBHC_DATA_WRITE, target.packed, data_buffer_size, 489 (setup_packet & UINT32_MAX), (setup_packet >> 32), NULL); 494 490 495 491 if (opening_request == 0) { … … 498 494 return ENOMEM; 499 495 } 500 501 /* 502 * Send the setup packet. 503 */ 504 int rc = async_data_write_start(exch, setup_buffer, setup_buffer_size); 505 if (rc != EOK) { 506 async_exchange_end(exch); 507 pipe_end_transaction(pipe); 508 async_wait_for(opening_request, NULL); 509 return rc; 510 } 511 496 512 497 /* 513 498 * Send the data (if any). 514 499 */ 515 500 if (data_buffer_size > 0) { 516 rc = async_data_write_start(exch, data_buffer, data_buffer_size);501 int rc = async_data_write_start(exch, data_buffer, data_buffer_size); 517 502 518 503 /* All data sent, pipe can be released. */
Note:
See TracChangeset
for help on using the changeset viewer.