Changes in uspace/drv/ohci/hc.c [aa9ccf7:8148ee3a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/ohci/hc.c
raa9ccf7 r8148ee3a 55 55 assert(hub_fun); 56 56 57 int ret; 58 57 59 usb_address_t hub_address = 58 60 device_keeper_get_free_address(&instance->manager, USB_SPEED_FULL); 61 if (hub_address <= 0) { 62 usb_log_error("Failed to get OHCI root hub address.\n"); 63 return hub_address; 64 } 59 65 instance->rh.address = hub_address; 60 66 usb_device_keeper_bind( 61 67 &instance->manager, hub_address, hub_fun->handle); 62 68 63 endpoint_t *ep = malloc(sizeof(endpoint_t)); 64 assert(ep); 65 int ret = endpoint_init(ep, hub_address, 0, USB_DIRECTION_BOTH, 66 USB_TRANSFER_CONTROL, USB_SPEED_FULL, 64); 67 assert(ret == EOK); 68 ret = usb_endpoint_manager_register_ep(&instance->ep_manager, ep, 0); 69 assert(ret == EOK); 69 ret = usb_endpoint_manager_add_ep(&instance->ep_manager, 70 hub_address, 0, USB_DIRECTION_BOTH, USB_TRANSFER_CONTROL, 71 USB_SPEED_FULL, 64, 0); 72 if (ret != EOK) { 73 usb_log_error("Failed to add OHCI rh endpoint 0.\n"); 74 usb_device_keeper_release(&instance->manager, hub_address); 75 return ret; 76 } 70 77 71 78 char *match_str = NULL; 79 /* DDF needs heap allocated string */ 72 80 ret = asprintf(&match_str, "usb&class=hub"); 73 // ret = (match_str == NULL) ? ret : EOK;74 81 if (ret < 0) { 75 82 usb_log_error( 76 83 "Failed(%d) to create root hub match-id string.\n", ret); 84 usb_device_keeper_release(&instance->manager, hub_address); 77 85 return ret; 78 86 } … … 80 88 ret = ddf_fun_add_match_id(hub_fun, match_str, 100); 81 89 if (ret != EOK) { 82 usb_log_error("Failed add createroot hub match-id.\n");90 usb_log_error("Failed add root hub match-id.\n"); 83 91 } 84 92 return ret; … … 115 123 fibril_mutex_initialize(&instance->guard); 116 124 117 rh_init(&instance->rh, dev,instance->registers);125 rh_init(&instance->rh, instance->registers); 118 126 119 127 if (!interrupts) { … … 130 138 assert(instance); 131 139 assert(batch); 140 assert(batch->ep); 132 141 133 142 /* check for root hub communication */ 134 if (batch-> target.address == instance->rh.address) {143 if (batch->ep->address == instance->rh.address) { 135 144 return rh_request(&instance->rh, batch); 136 145 } 137 146 138 147 fibril_mutex_lock(&instance->guard); 139 switch (batch-> transfer_type) {148 switch (batch->ep->transfer_type) { 140 149 case USB_TRANSFER_CONTROL: 141 150 instance->registers->control &= ~C_CLE; 142 151 transfer_list_add_batch( 143 instance->transfers[batch-> transfer_type], batch);152 instance->transfers[batch->ep->transfer_type], batch); 144 153 instance->registers->command_status |= CS_CLF; 145 154 usb_log_debug2("Set CS control transfer filled: %x.\n", … … 151 160 instance->registers->control &= ~C_BLE; 152 161 transfer_list_add_batch( 153 instance->transfers[batch-> transfer_type], batch);162 instance->transfers[batch->ep->transfer_type], batch); 154 163 instance->registers->command_status |= CS_BLF; 155 164 usb_log_debug2("Set bulk transfer filled: %x.\n", … … 161 170 instance->registers->control &= (~C_PLE & ~C_IE); 162 171 transfer_list_add_batch( 163 instance->transfers[batch-> transfer_type], batch);172 instance->transfers[batch->ep->transfer_type], batch); 164 173 instance->registers->control |= C_PLE | C_IE; 165 174 usb_log_debug2("Added periodic transfer: %x.\n",
Note:
See TracChangeset
for help on using the changeset viewer.