Changeset 6fb003e in mainline for uspace/drv/ohci/hc.c
- Timestamp:
- 2011-05-07T13:40:03Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 02804e1, 1866945
- Parents:
- bc02b83 (diff), 7ab7c7f6 (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/ohci/hc.c
rbc02b83 r6fb003e 49 49 static int interrupt_emulator(hc_t *instance); 50 50 static void hc_gain_control(hc_t *instance); 51 static void hc_init_hw(hc_t *instance);52 51 static int hc_init_transfer_lists(hc_t *instance); 53 52 static int hc_init_memory(hc_t *instance); … … 92 91 usb_log_error("Failed add root hub match-id.\n"); 93 92 } 93 ret = ddf_fun_bind(hub_fun); 94 94 return ret; 95 95 } … … 111 111 ret, str_error(ret)); 112 112 113 list_initialize(&instance->pending_batches); 113 114 usb_device_keeper_init(&instance->manager); 114 115 ret = usb_endpoint_manager_init(&instance->ep_manager, … … 117 118 str_error(ret)); 118 119 119 hc_gain_control(instance);120 120 ret = hc_init_memory(instance); 121 121 CHECK_RET_RETURN(ret, "Failed to create OHCI memory structures: %s.\n", 122 122 str_error(ret)); 123 hc_init_hw(instance); 123 #undef CHECK_RET_RETURN 124 125 126 // hc_init_hw(instance); 127 hc_gain_control(instance); 124 128 fibril_mutex_initialize(&instance->guard); 125 129 … … 132 136 } 133 137 134 list_initialize(&instance->pending_batches);135 #undef CHECK_RET_RETURN136 138 return EOK; 137 139 } … … 287 289 { 288 290 assert(instance); 289 usb_log_debug("OHCI interrupt: %x.\n", status);291 usb_log_debug("OHCI(%p) interrupt: %x.\n", instance, status); 290 292 if ((status & ~I_SF) == 0) /* ignore sof status */ 291 293 return; … … 339 341 (uint32_t*)((char*)instance->registers + 0x100); 340 342 usb_log_debug("OHCI legacy register %p: %x.\n", 341 ohci_emulation_reg, *ohci_emulation_reg); 342 *ohci_emulation_reg &= ~0x1; 343 ohci_emulation_reg, *ohci_emulation_reg); 344 /* Do not change A20 state */ 345 *ohci_emulation_reg &= 0x100; 346 usb_log_debug("OHCI legacy register %p: %x.\n", 347 ohci_emulation_reg, *ohci_emulation_reg); 343 348 344 349 /* Interrupt routing enabled => smm driver is active */ … … 350 355 } 351 356 usb_log_info("SMM driver: Ownership taken.\n"); 357 instance->registers->control &= (C_HCFS_RESET << C_HCFS_SHIFT); 358 async_usleep(50000); 352 359 return; 353 360 } … … 375 382 } 376 383 /*----------------------------------------------------------------------------*/ 377 void hc_ init_hw(hc_t *instance)384 void hc_start_hw(hc_t *instance) 378 385 { 379 386 /* OHCI guide page 42 */ … … 474 481 { 475 482 assert(instance); 483 484 bzero(&instance->rh, sizeof(instance->rh)); 476 485 /* Init queues */ 477 486 hc_init_transfer_lists(instance);
Note:
See TracChangeset
for help on using the changeset viewer.