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