Changeset 35c37fc in mainline for uspace/drv/bus/usb/ehci/hc.c
- Timestamp:
- 2018-01-05T20:15:08Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e5b162
- Parents:
- b60944b
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-01-05 16:11:04)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-01-05 20:15:08)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ehci/hc.c
rb60944b r35c37fc 45 45 #include <usb/debug.h> 46 46 #include <usb/usb.h> 47 #include <usb/host/utils/malloc32.h>48 47 49 48 #include "ehci_batch.h" … … 198 197 * @param[in] instance Host controller structure to use. 199 198 */ 200 int hc_gone(hc_device_t *instance) 201 { 202 assert(instance); 203 return EOK; 204 //TODO: stop the hw 205 #if 0 206 endpoint_list_fini(&instance->async_list); 207 endpoint_list_fini(&instance->int_list); 208 return_page(instance->periodic_list_base); 209 #endif 199 int hc_gone(hc_device_t *hcd) 200 { 201 hc_t *hc = hcd_to_hc(hcd); 202 endpoint_list_fini(&hc->async_list); 203 endpoint_list_fini(&hc->int_list); 204 dma_buffer_free(&hc->dma_buffer); 205 return EOK; 210 206 }; 211 207 … … 406 402 407 403 /* Enable periodic list */ 408 assert(instance->periodic_list _base);404 assert(instance->periodic_list); 409 405 uintptr_t phys_base = 410 addr_to_phys((void*)instance->periodic_list _base);406 addr_to_phys((void*)instance->periodic_list); 411 407 assert((phys_base & USB_PERIODIC_LIST_BASE_MASK) == phys_base); 412 408 EHCI_WR(instance->registers->periodiclistbase, phys_base); … … 477 473 478 474 /* Take 1024 periodic list heads, we ignore low mem options */ 479 instance->periodic_list_base = get_page(); 480 if (!instance->periodic_list_base) { 475 if (dma_buffer_alloc(&instance->dma_buffer, PAGE_SIZE)) { 481 476 usb_log_error("HC(%p): Failed to get ISO schedule page.", 482 477 instance); … … 485 480 return ENOMEM; 486 481 } 482 instance->periodic_list = instance->dma_buffer.virt; 487 483 488 484 usb_log_debug2("HC(%p): Initializing Periodic list.", instance); 489 for (unsigned i = 0; 490 i < PAGE_SIZE/sizeof(instance->periodic_list_base[0]); ++i) 485 for (unsigned i = 0; i < PAGE_SIZE/sizeof(link_pointer_t); ++i) 491 486 { 492 487 /* Disable everything for now */ 493 instance->periodic_list _base[i] =488 instance->periodic_list[i] = 494 489 LINK_POINTER_QH(addr_to_phys(instance->int_list.list_head)); 495 490 }
Note:
See TracChangeset
for help on using the changeset viewer.