Changeset a8ac368 in mainline for uspace/drv/uhci-hcd/hc.c
- Timestamp:
- 2011-03-29T20:08:53Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fc883bb
- Parents:
- 0d92638 (diff), 51e5608 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/hc.c
r0d92638 ra8ac368 67 67 static int hc_debug_checker(void *arg); 68 68 69 static bool allowed_usb_packet(69 static bool usb_is_allowed( 70 70 bool low_speed, usb_transfer_type_t transfer, size_t size); 71 71 /*----------------------------------------------------------------------------*/ … … 223 223 ret = instance ? EOK : ENOMEM; 224 224 CHECK_RET_DEST_CMDS_RETURN(ret, "Failed to get frame list page.\n"); 225 usb_log_debug("Initialized frame list .\n");225 usb_log_debug("Initialized frame list at %p.\n", instance->frame_list); 226 226 227 227 /* Set all frames to point to the first queue head */ … … 323 323 assert(batch); 324 324 const int low_speed = (batch->speed == USB_SPEED_LOW); 325 if (! allowed_usb_packet(325 if (!usb_is_allowed( 326 326 low_speed, batch->transfer_type, batch->max_packet_size)) { 327 327 usb_log_warning( 328 "Invalid USB packetspecified %s SPEED %d %zu.\n",328 "Invalid USB transfer specified %s SPEED %d %zu.\n", 329 329 low_speed ? "LOW" : "FULL" , batch->transfer_type, 330 330 batch->max_packet_size); … … 336 336 instance->transfers[batch->speed][batch->transfer_type]; 337 337 assert(list); 338 if (batch->transfer_type == USB_TRANSFER_CONTROL) { 339 usb_device_keeper_use_control( 340 &instance->manager, batch->target.address); 341 } 338 342 transfer_list_add_batch(list, batch); 339 343 … … 357 361 /* Lower 2 bits are transaction error and transaction complete */ 358 362 if (status & 0x3) { 359 transfer_list_remove_finished(&instance->transfers_interrupt); 360 transfer_list_remove_finished(&instance->transfers_control_slow); 361 transfer_list_remove_finished(&instance->transfers_control_full); 362 transfer_list_remove_finished(&instance->transfers_bulk_full); 363 LIST_INITIALIZE(done); 364 transfer_list_remove_finished( 365 &instance->transfers_interrupt, &done); 366 transfer_list_remove_finished( 367 &instance->transfers_control_slow, &done); 368 transfer_list_remove_finished( 369 &instance->transfers_control_full, &done); 370 transfer_list_remove_finished( 371 &instance->transfers_bulk_full, &done); 372 373 while (!list_empty(&done)) { 374 link_t *item = done.next; 375 list_remove(item); 376 usb_transfer_batch_t *batch = 377 list_get_instance(item, usb_transfer_batch_t, link); 378 if (batch->transfer_type == USB_TRANSFER_CONTROL) { 379 usb_device_keeper_release_control( 380 &instance->manager, batch->target.address); 381 } 382 batch->next_step(batch); 383 } 363 384 } 364 385 /* bits 4 and 5 indicate hc error */ … … 471 492 } 472 493 /*----------------------------------------------------------------------------*/ 473 /** Check transfer packets,for USB validity494 /** Check transfers for USB validity 474 495 * 475 496 * @param[in] low_speed Transfer speed. 476 497 * @param[in] transfer Transer type 477 * @param[in] size Maximum size of usedpackets498 * @param[in] size Size of data packets 478 499 * @return True if transaction is allowed by USB specs, false otherwise 479 500 */ 480 bool allowed_usb_packet(501 bool usb_is_allowed( 481 502 bool low_speed, usb_transfer_type_t transfer, size_t size) 482 503 {
Note:
See TracChangeset
for help on using the changeset viewer.