Changeset 5f5321ee in mainline for uspace/drv/bus/usb/ehci/hc.c
- Timestamp:
- 2014-01-24T16:12:32Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 763dbcb
- Parents:
- dc44023
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ehci/hc.c
rdc44023 r5f5321ee 198 198 { 199 199 assert(instance); 200 /* TODO: implement*/ 200 //TODO: stop the hw 201 #if 0 202 endpoint_list_fini(&instance->async_list); 203 endpoint_list_fini(&instance->int_list); 204 return_page(instance->periodic_list_base); 205 #endif 201 206 }; 202 207 203 208 void hc_enqueue_endpoint(hc_t *instance, const endpoint_t *ep) 204 209 { 210 assert(instance); 211 assert(ep); 212 ehci_endpoint_t *ehci_ep = ehci_endpoint_get(ep); 213 switch (ep->transfer_type) 214 { 215 case USB_TRANSFER_CONTROL: 216 endpoint_list_prepend_ep(&instance->async_list, ehci_ep); 217 break; 218 case USB_TRANSFER_BULK: 219 endpoint_list_append_ep(&instance->async_list, ehci_ep); 220 break; 221 case USB_TRANSFER_INTERRUPT: 222 endpoint_list_append_ep(&instance->int_list, ehci_ep); 223 break; 224 case USB_TRANSFER_ISOCHRONOUS: 225 /* NOT SUPPORTED */ 226 break; 227 } 205 228 } 206 229 … … 343 366 { 344 367 assert(instance); 368 int ret = endpoint_list_init(&instance->async_list, "ASYNC"); 369 if (ret != EOK) { 370 usb_log_error("Failed to setup ASYNC list: %s", str_error(ret)); 371 return ret; 372 } 373 374 ret = endpoint_list_init(&instance->int_list, "INT"); 375 if (ret != EOK) { 376 usb_log_error("Failed to setup INT list: %s", str_error(ret)); 377 endpoint_list_fini(&instance->async_list); 378 return ret; 379 } 345 380 346 381 /* Take 1024 periodic list heads, we ignore low mem options */ 347 382 instance->periodic_list_base = get_page(); 348 if (!instance->periodic_list_base) 383 if (!instance->periodic_list_base) { 384 usb_log_error("Failed to get ISO schedule page."); 385 endpoint_list_fini(&instance->async_list); 386 endpoint_list_fini(&instance->int_list); 349 387 return ENOMEM; 388 } 350 389 for (unsigned i = 0; 351 390 i < PAGE_SIZE/sizeof(instance->periodic_list_base[0]); ++i) 352 391 { 353 392 /* Disable everything for now */ 354 instance->periodic_list_base[i] = LINK_POINTER_TERM; 393 instance->periodic_list_base[i] = 394 LINK_POINTER_QH(instance->int_list.list_head_pa); 355 395 } 356 396 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.