Changeset 2568c94 in mainline for uspace/drv/bus
- Timestamp:
- 2012-08-17T17:15:19Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1789023
- Parents:
- 4f351432 (diff), 01e397ac (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. - Location:
- uspace/drv/bus
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/isa/isa.c
r4f351432 r2568c94 73 73 #define CHILD_FUN_CONF_PATH "/drv/isa/isa.dev" 74 74 75 /** Obtain soft-state from device node */76 #define ISA_BUS(dev) ((isa_bus_t *) ((dev)->driver_data))77 78 /** Obtain soft-state from function node */79 #define ISA_FUN(fun) ((isa_fun_t *) ((fun)->driver_data))80 81 75 #define ISA_MAX_HW_RES 5 82 76 … … 95 89 } isa_fun_t; 96 90 91 /** Obtain soft-state from device node */ 92 static isa_bus_t *isa_bus(ddf_dev_t *dev) 93 { 94 return ddf_dev_data_get(dev); 95 } 96 97 /** Obtain soft-state from function node */ 98 static isa_fun_t *isa_fun(ddf_fun_t *fun) 99 { 100 return ddf_fun_data_get(fun); 101 } 102 97 103 static hw_resource_list_t *isa_get_fun_resources(ddf_fun_t *fnode) 98 104 { 99 isa_fun_t *fun = ISA_FUN(fnode);105 isa_fun_t *fun = isa_fun(fnode); 100 106 assert(fun != NULL); 101 107 … … 107 113 /* This is an old ugly way, copied from pci driver */ 108 114 assert(fnode); 109 isa_fun_t * isa_fun = fnode->driver_data;115 isa_fun_t *fun = isa_fun(fnode); 110 116 111 117 sysarg_t apic; … … 123 129 return false; 124 130 125 assert(isa_fun); 126 const hw_resource_list_t *res = &isa_fun->hw_resources; 131 const hw_resource_list_t *res = &fun->hw_resources; 127 132 assert(res); 128 133 for (size_t i = 0; i < res->count; ++i) { … … 150 155 { 151 156 assert(fnode); 152 isa_fun_t * isa_fun = fnode->driver_data;153 const hw_resource_list_t *res = & isa_fun->hw_resources;157 isa_fun_t *fun = isa_fun(fnode); 158 const hw_resource_list_t *res = &fun->hw_resources; 154 159 assert(res); 155 160 … … 339 344 340 345 ddf_msg(LVL_NOTE, "Added irq 0x%x to function %s", irq, 341 fun->fnode->name);346 ddf_fun_get_name(fun->fnode)); 342 347 } 343 348 } … … 355 360 fun->hw_resources.count++; 356 361 ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma, 357 fun->fnode->name);362 ddf_fun_get_name(fun->fnode)); 358 363 359 364 return; … … 366 371 fun->hw_resources.count++; 367 372 ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma, 368 fun->fnode->name);373 ddf_fun_get_name(fun->fnode)); 369 374 370 375 return; … … 372 377 373 378 ddf_msg(LVL_WARN, "Skipped dma 0x%x for function %s", dma, 374 fun->fnode->name);379 ddf_fun_get_name(fun->fnode)); 375 380 } 376 381 } … … 391 396 ddf_msg(LVL_NOTE, "Added io range (addr=0x%x, size=0x%x) to " 392 397 "function %s", (unsigned int) addr, (unsigned int) len, 393 fun->fnode->name);398 ddf_fun_get_name(fun->fnode)); 394 399 } 395 400 } … … 463 468 if (val == end) { 464 469 ddf_msg(LVL_ERROR, "Cannot read match score for function " 465 "%s.", fun->fnode->name);470 "%s.", ddf_fun_get_name(fun->fnode)); 466 471 return; 467 472 } … … 471 476 if (id == NULL) { 472 477 ddf_msg(LVL_ERROR, "Cannot read match ID for function %s.", 473 fun->fnode->name);478 ddf_fun_get_name(fun->fnode)); 474 479 return; 475 480 } 476 481 477 482 ddf_msg(LVL_DEBUG, "Adding match id '%s' with score %d to " 478 "function %s", id, score, fun->fnode->name);483 "function %s", id, score, ddf_fun_get_name(fun->fnode)); 479 484 480 485 rc = ddf_fun_add_match_id(fun->fnode, id, score); … … 579 584 580 585 /* Set device operations to the device. */ 581 fun->fnode->ops = &isa_fun_ops;582 583 ddf_msg(LVL_DEBUG, "Binding function %s.", fun->fnode->name);586 ddf_fun_set_ops(fun->fnode, &isa_fun_ops); 587 588 ddf_msg(LVL_DEBUG, "Binding function %s.", ddf_fun_get_name(fun->fnode)); 584 589 585 590 /* XXX Handle error */ … … 614 619 615 620 ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d", 616 (int) d ev->handle);621 (int) ddf_dev_get_handle(dev)); 617 622 618 623 isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t)); … … 652 657 static int isa_dev_remove(ddf_dev_t *dev) 653 658 { 654 isa_bus_t *isa = ISA_BUS(dev);659 isa_bus_t *isa = isa_bus(dev); 655 660 int rc; 656 661 … … 664 669 if (rc != EOK) { 665 670 fibril_mutex_unlock(&isa->mutex); 666 ddf_msg(LVL_ERROR, "Failed offlining %s", fun->fnode->name);671 ddf_msg(LVL_ERROR, "Failed offlining %s", ddf_fun_get_name(fun->fnode)); 667 672 return rc; 668 673 } … … 671 676 if (rc != EOK) { 672 677 fibril_mutex_unlock(&isa->mutex); 673 ddf_msg(LVL_ERROR, "Failed unbinding %s", fun->fnode->name);678 ddf_msg(LVL_ERROR, "Failed unbinding %s", ddf_fun_get_name(fun->fnode)); 674 679 return rc; 675 680 } -
uspace/drv/bus/pci/pciintel/pci.c
r4f351432 r2568c94 50 50 #include <ddf/driver.h> 51 51 #include <ddf/log.h> 52 #include <devman.h>53 #include <ipc/devman.h>54 52 #include <ipc/dev_iface.h> 55 53 #include <ipc/irc.h> … … 71 69 72 70 /** Obtain PCI function soft-state from DDF function node */ 73 #define PCI_FUN(fnode) ((pci_fun_t *) (fnode)->driver_data) 71 static pci_fun_t *pci_fun(ddf_fun_t *fnode) 72 { 73 return ddf_fun_data_get(fnode); 74 } 74 75 75 76 /** Obtain PCI bus soft-state from DDF device node */ 76 #define PCI_BUS(dnode) ((pci_bus_t *) (dnode)->driver_data) 77 #if 0 78 static pci_bus_t *pci_bus(ddf_dev_t *dnode) 79 { 80 return ddf_dev_data_get(dnode); 81 } 82 #endif 77 83 78 84 /** Obtain PCI bus soft-state from function soft-state */ 79 #define PCI_BUS_FROM_FUN(fun) ((fun)->busptr) 85 static pci_bus_t *pci_bus_from_fun(pci_fun_t *fun) 86 { 87 return fun->busptr; 88 } 80 89 81 90 /** Max is 47, align to something nice. */ … … 84 93 static hw_resource_list_t *pciintel_get_resources(ddf_fun_t *fnode) 85 94 { 86 pci_fun_t *fun = PCI_FUN(fnode);95 pci_fun_t *fun = pci_fun(fnode); 87 96 88 97 if (fun == NULL) … … 95 104 /* This is an old ugly way */ 96 105 assert(fnode); 97 pci_fun_t *dev_data = (pci_fun_t *) fnode->driver_data;106 pci_fun_t *dev_data = pci_fun(fnode); 98 107 99 108 sysarg_t apic; … … 138 147 if (address > 252) 139 148 return EINVAL; 140 pci_conf_write_32( PCI_FUN(fun), address, data);149 pci_conf_write_32(pci_fun(fun), address, data); 141 150 return EOK; 142 151 } … … 147 156 if (address > 254) 148 157 return EINVAL; 149 pci_conf_write_16( PCI_FUN(fun), address, data);158 pci_conf_write_16(pci_fun(fun), address, data); 150 159 return EOK; 151 160 } … … 156 165 if (address > 255) 157 166 return EINVAL; 158 pci_conf_write_8( PCI_FUN(fun), address, data);167 pci_conf_write_8(pci_fun(fun), address, data); 159 168 return EOK; 160 169 } … … 165 174 if (address > 252) 166 175 return EINVAL; 167 *data = pci_conf_read_32( PCI_FUN(fun), address);176 *data = pci_conf_read_32(pci_fun(fun), address); 168 177 return EOK; 169 178 } … … 174 183 if (address > 254) 175 184 return EINVAL; 176 *data = pci_conf_read_16( PCI_FUN(fun), address);185 *data = pci_conf_read_16(pci_fun(fun), address); 177 186 return EOK; 178 187 } … … 183 192 if (address > 255) 184 193 return EINVAL; 185 *data = pci_conf_read_8( PCI_FUN(fun), address);194 *data = pci_conf_read_8(pci_fun(fun), address); 186 195 return EOK; 187 196 } … … 225 234 static void pci_conf_read(pci_fun_t *fun, int reg, uint8_t *buf, size_t len) 226 235 { 227 pci_bus_t *bus = PCI_BUS_FROM_FUN(fun);236 pci_bus_t *bus = pci_bus_from_fun(fun); 228 237 229 238 fibril_mutex_lock(&bus->conf_mutex); … … 252 261 static void pci_conf_write(pci_fun_t *fun, int reg, uint8_t *buf, size_t len) 253 262 { 254 pci_bus_t *bus = PCI_BUS_FROM_FUN(fun);263 pci_bus_t *bus = pci_bus_from_fun(fun); 255 264 256 265 fibril_mutex_lock(&bus->conf_mutex); … … 480 489 if (range_addr != 0) { 481 490 ddf_msg(LVL_DEBUG, "Function %s : address = %" PRIx64 482 ", size = %x", fun->fnode->name, range_addr,491 ", size = %x", ddf_fun_get_name(fun->fnode), range_addr, 483 492 (unsigned int) range_size); 484 493 } … … 506 515 hw_res_list->count++; 507 516 508 ddf_msg(LVL_NOTE, "Function %s uses irq %x.", fun->fnode->name, irq);517 ddf_msg(LVL_NOTE, "Function %s uses irq %x.", ddf_fun_get_name(fun->fnode), irq); 509 518 } 510 519 … … 523 532 void pci_bus_scan(pci_bus_t *bus, int bus_num) 524 533 { 525 ddf_fun_t *fnode;526 534 pci_fun_t *fun; 535 int rc; 527 536 528 537 int child_bus = 0; … … 531 540 uint8_t header_type; 532 541 533 fun = pci_fun_new(bus);534 535 542 for (dnum = 0; dnum < 32; dnum++) { 536 543 multi = true; 537 544 for (fnum = 0; multi && fnum < 8; fnum++) { 545 fun = pci_fun_new(bus); 546 538 547 pci_fun_init(fun, bus_num, dnum, fnum); 539 548 if (fun->vendor_id == 0xffff) { 549 pci_fun_delete(fun); 540 550 /* 541 551 * The device is not present, go on scanning the … … 559 569 if (fun_name == NULL) { 560 570 ddf_msg(LVL_ERROR, "Out of memory."); 571 pci_fun_delete(fun); 561 572 return; 562 573 } 563 574 564 fnode = ddf_fun_create(bus->dnode, fun_inner, fun_name);575 rc = ddf_fun_set_name(fun->fnode, fun_name); 565 576 free(fun_name); 566 if (fnode == NULL) { 567 ddf_msg(LVL_ERROR, "Failed creating function."); 577 if (rc != EOK) { 578 ddf_msg(LVL_ERROR, "Failed setting function name."); 579 pci_fun_delete(fun); 568 580 return; 569 581 } 570 571 fun->fnode = fnode;572 582 573 583 pci_alloc_resource_list(fun); … … 575 585 pci_read_interrupt(fun); 576 586 577 fnode->ops = &pci_fun_ops; 578 fnode->driver_data = fun; 587 ddf_fun_set_ops(fun->fnode, &pci_fun_ops); 579 588 580 589 ddf_msg(LVL_DEBUG, "Adding new function %s.", 581 fnode->name);590 ddf_fun_get_name(fun->fnode)); 582 591 583 592 pci_fun_create_match_ids(fun); 584 593 585 if (ddf_fun_bind(f node) != EOK) {594 if (ddf_fun_bind(fun->fnode) != EOK) { 586 595 pci_clean_resource_list(fun); 587 clean_match_ids(&fnode->match_ids); 588 free((char *) fnode->name); 589 fnode->name = NULL; 596 pci_fun_delete(fun); 590 597 continue; 591 598 } … … 601 608 pci_bus_scan(bus, child_bus); 602 609 } 603 604 fun = pci_fun_new(bus);605 610 } 606 }607 608 if (fun->vendor_id == 0xffff) {609 /* Free the auxiliary function structure. */610 pci_fun_delete(fun);611 611 } 612 612 } … … 617 617 ddf_fun_t *ctl = NULL; 618 618 bool got_res = false; 619 async_sess_t *sess; 619 620 int rc; 620 621 621 622 ddf_msg(LVL_DEBUG, "pci_dev_add"); 622 dnode->parent_sess = NULL;623 623 624 624 bus = ddf_dev_data_alloc(dnode, sizeof(pci_bus_t)); … … 631 631 632 632 bus->dnode = dnode; 633 dnode->driver_data = bus; 634 635 dnode->parent_sess = devman_parent_device_connect(EXCHANGE_SERIALIZE, 636 dnode->handle, IPC_FLAG_BLOCKING); 637 if (!dnode->parent_sess) { 633 634 sess = ddf_dev_parent_sess_create(dnode, EXCHANGE_SERIALIZE); 635 if (sess == NULL) { 638 636 ddf_msg(LVL_ERROR, "pci_dev_add failed to connect to the " 639 637 "parent driver."); … … 644 642 hw_resource_list_t hw_resources; 645 643 646 rc = hw_res_get_resource_list( dnode->parent_sess, &hw_resources);644 rc = hw_res_get_resource_list(sess, &hw_resources); 647 645 if (rc != EOK) { 648 646 ddf_msg(LVL_ERROR, "pci_dev_add failed to get hw resources " … … 708 706 709 707 fail: 710 if (dnode->parent_sess)711 async_hangup(dnode->parent_sess);712 713 708 if (got_res) 714 709 hw_res_clean_resource_list(&hw_resources); … … 742 737 { 743 738 pci_fun_t *fun; 744 745 fun = (pci_fun_t *) calloc(1, sizeof(pci_fun_t)); 739 ddf_fun_t *fnode; 740 741 fnode = ddf_fun_create(bus->dnode, fun_inner, NULL); 742 if (fnode == NULL) 743 return NULL; 744 745 fun = ddf_fun_data_alloc(fnode, sizeof(pci_fun_t)); 746 746 if (fun == NULL) 747 747 return NULL; 748 748 749 749 fun->busptr = bus; 750 fun->fnode = fnode; 750 751 return fun; 751 752 } … … 766 767 void pci_fun_delete(pci_fun_t *fun) 767 768 { 768 assert(fun != NULL);769 769 hw_res_clean_resource_list(&fun->hw_resources); 770 free(fun); 770 if (fun->fnode != NULL) 771 ddf_fun_destroy(fun->fnode); 771 772 } 772 773 -
uspace/drv/bus/usb/ehci/main.c
r4f351432 r2568c94 84 84 CHECK_RET_RETURN(ret, 85 85 "Failed to get memory addresses for %" PRIun ": %s.\n", 86 d evice->handle, str_error(ret));86 ddf_dev_get_handle(device), str_error(ret)); 87 87 usb_log_info("Memory mapped regs at 0x%" PRIxn " (size %zu), IRQ %d.\n", 88 88 reg_base, reg_size, irq); … … 104 104 /* High Speed, no bandwidth */ 105 105 hcd_init(ehci_hc, USB_SPEED_HIGH, 0, NULL); 106 hc_fun->ops = &hc_ops;106 ddf_fun_set_ops(hc_fun, &hc_ops); 107 107 108 108 ret = ddf_fun_bind(hc_fun); … … 116 116 117 117 usb_log_info("Controlling new EHCI device `%s' (handle %" PRIun ").\n", 118 d evice->name, device->handle);118 ddf_dev_get_name(device), ddf_dev_get_handle(device)); 119 119 120 120 return EOK; -
uspace/drv/bus/usb/ehci/res.c
r4f351432 r2568c94 76 76 * @return Error code. 77 77 */ 78 int get_my_registers( constddf_dev_t *dev,78 int get_my_registers(ddf_dev_t *dev, 79 79 uintptr_t *mem_reg_address, size_t *mem_reg_size, int *irq_no) 80 80 { … … 82 82 83 83 async_sess_t *parent_sess = devman_parent_device_connect( 84 EXCHANGE_SERIALIZE, d ev->handle, IPC_FLAG_BLOCKING);84 EXCHANGE_SERIALIZE, ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING); 85 85 if (!parent_sess) 86 86 return ENOMEM; … … 115 115 * @return Error code. 116 116 */ 117 int enable_interrupts( constddf_dev_t *device)117 int enable_interrupts(ddf_dev_t *device) 118 118 { 119 119 async_sess_t *parent_sess = devman_parent_device_connect( 120 EXCHANGE_SERIALIZE, d evice->handle, IPC_FLAG_BLOCKING);120 EXCHANGE_SERIALIZE, ddf_dev_get_handle(device), IPC_FLAG_BLOCKING); 121 121 if (!parent_sess) 122 122 return ENOMEM; … … 134 134 * @return Error code. 135 135 */ 136 static int disable_extended_caps( constddf_dev_t *device, unsigned eecp)136 static int disable_extended_caps(ddf_dev_t *device, unsigned eecp) 137 137 { 138 138 /* nothing to do */ … … 141 141 142 142 async_sess_t *parent_sess = devman_parent_device_connect( 143 EXCHANGE_SERIALIZE, d evice->handle, IPC_FLAG_BLOCKING);143 EXCHANGE_SERIALIZE, ddf_dev_get_handle(device), IPC_FLAG_BLOCKING); 144 144 if (!parent_sess) 145 145 return ENOMEM; … … 234 234 } 235 235 236 int disable_legacy( constddf_dev_t *device, uintptr_t reg_base, size_t reg_size)236 int disable_legacy(ddf_dev_t *device, uintptr_t reg_base, size_t reg_size) 237 237 { 238 238 assert(device); -
uspace/drv/bus/usb/ehci/res.h
r4f351432 r2568c94 38 38 #include <ddf/driver.h> 39 39 40 int get_my_registers( constddf_dev_t *, uintptr_t *, size_t *, int *);41 int enable_interrupts( constddf_dev_t *);42 int disable_legacy( constddf_dev_t *, uintptr_t, size_t);40 int get_my_registers(ddf_dev_t *, uintptr_t *, size_t *, int *); 41 int enable_interrupts(ddf_dev_t *); 42 int disable_legacy(ddf_dev_t *, uintptr_t, size_t); 43 43 44 44 #endif -
uspace/drv/bus/usb/ohci/hc.c
r4f351432 r2568c94 187 187 188 188 ret = usb_device_manager_bind_address(&instance->generic.dev_manager, 189 instance->rh.address, hub_fun->handle);189 instance->rh.address, ddf_fun_get_handle(hub_fun)); 190 190 if (ret != EOK) 191 191 usb_log_warning("Failed to bind root hub address: %s.\n", -
uspace/drv/bus/usb/ohci/main.c
r4f351432 r2568c94 59 59 return ret; 60 60 } 61 usb_log_info("Controlling new OHCI device '%s'.\n", d evice->name);61 usb_log_info("Controlling new OHCI device '%s'.\n", ddf_dev_get_name(device)); 62 62 63 63 return EOK; -
uspace/drv/bus/usb/ohci/ohci.c
r4f351432 r2568c94 33 33 * @brief OHCI driver 34 34 */ 35 36 /* XXX Fix this */ 37 #define _DDF_DATA_IMPLANT 38 35 39 #include <errno.h> 36 40 #include <str_error.h> … … 52 56 } ohci_t; 53 57 54 static inline ohci_t * dev_to_ohci(ddf_dev_t *dev) 55 { 56 assert(dev); 57 return dev->driver_data; 58 static inline ohci_t *dev_to_ohci(ddf_dev_t *dev) 59 { 60 return ddf_dev_data_get(dev); 58 61 } 59 62 /** IRQ handling callback, identifies device … … 87 90 88 91 if (address != NULL) { 89 *address = dev_to_ohci( fun->dev)->hc.rh.address;92 *address = dev_to_ohci(ddf_fun_get_dev(fun))->hc.rh.address; 90 93 } 91 94 … … 103 106 { 104 107 assert(fun); 105 ddf_fun_t *hc_fun = dev_to_ohci( fun->dev)->hc_fun;108 ddf_fun_t *hc_fun = dev_to_ohci(ddf_fun_get_dev(fun))->hc_fun; 106 109 assert(hc_fun); 107 110 108 111 if (handle != NULL) 109 *handle = hc_fun->handle;112 *handle = ddf_fun_get_handle(hc_fun); 110 113 return EOK; 111 114 } … … 152 155 if (ret != EOK) { \ 153 156 if (instance->hc_fun) { \ 154 instance->hc_fun->driver_data = NULL; \155 157 ddf_fun_destroy(instance->hc_fun); \ 156 158 } \ 157 159 if (instance->rh_fun) { \ 158 instance->rh_fun->driver_data = NULL; \159 160 ddf_fun_destroy(instance->rh_fun); \ 160 161 } \ … … 167 168 CHECK_RET_DEST_FREE_RETURN(ret, 168 169 "Failed to create OHCI HC function: %s.\n", str_error(ret)); 169 instance->hc_fun->ops = &hc_ops;170 instance->hc_fun->driver_data = &instance->hc;170 ddf_fun_set_ops(instance->hc_fun, &hc_ops); 171 ddf_fun_data_implant(instance->hc_fun, &instance->hc); 171 172 172 173 instance->rh_fun = ddf_fun_create(device, fun_inner, "ohci_rh"); … … 174 175 CHECK_RET_DEST_FREE_RETURN(ret, 175 176 "Failed to create OHCI RH function: %s.\n", str_error(ret)); 176 instance->rh_fun->ops = &rh_ops;177 ddf_fun_set_ops(instance->rh_fun, &rh_ops); 177 178 178 179 uintptr_t reg_base = 0; … … 183 184 CHECK_RET_DEST_FREE_RETURN(ret, 184 185 "Failed to get register memory addresses for %" PRIun ": %s.\n", 185 d evice->handle, str_error(ret));186 ddf_dev_get_handle(device), str_error(ret)); 186 187 usb_log_debug("Memory mapped regs at %p (size %zu), IRQ %d.\n", 187 188 (void *) reg_base, reg_size, irq); -
uspace/drv/bus/usb/ohci/res.c
r4f351432 r2568c94 53 53 * @return Error code. 54 54 */ 55 int get_my_registers( constddf_dev_t *dev,55 int get_my_registers(ddf_dev_t *dev, 56 56 uintptr_t *mem_reg_address, size_t *mem_reg_size, int *irq_no) 57 57 { … … 59 59 60 60 async_sess_t *parent_sess = 61 devman_parent_device_connect(EXCHANGE_SERIALIZE, dev->handle,62 IPC_FLAG_BLOCKING);61 devman_parent_device_connect(EXCHANGE_SERIALIZE, 62 ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING); 63 63 if (!parent_sess) 64 64 return ENOMEM; … … 94 94 * @return Error code. 95 95 */ 96 int enable_interrupts( constddf_dev_t *device)96 int enable_interrupts(ddf_dev_t *device) 97 97 { 98 98 async_sess_t *parent_sess = 99 devman_parent_device_connect(EXCHANGE_SERIALIZE, device->handle,100 IPC_FLAG_BLOCKING);99 devman_parent_device_connect(EXCHANGE_SERIALIZE, 100 ddf_dev_get_handle(device), IPC_FLAG_BLOCKING); 101 101 if (!parent_sess) 102 102 return ENOMEM; -
uspace/drv/bus/usb/ohci/res.h
r4f351432 r2568c94 37 37 #include <ddf/driver.h> 38 38 39 int get_my_registers( constddf_dev_t *, uintptr_t *, size_t *, int *);40 int enable_interrupts( constddf_dev_t *);39 int get_my_registers(ddf_dev_t *, uintptr_t *, size_t *, int *); 40 int enable_interrupts(ddf_dev_t *); 41 41 42 42 #endif -
uspace/drv/bus/usb/uhci/main.c
r4f351432 r2568c94 70 70 } else { 71 71 usb_log_info("Controlling new UHCI device '%s'.\n", 72 d evice->name);72 ddf_dev_get_name(device)); 73 73 } 74 74 -
uspace/drv/bus/usb/uhci/res.c
r4f351432 r2568c94 51 51 * @return Error code. 52 52 */ 53 int get_my_registers( constddf_dev_t *dev,53 int get_my_registers(ddf_dev_t *dev, 54 54 uintptr_t *io_reg_address, size_t *io_reg_size, int *irq_no) 55 55 { … … 57 57 58 58 async_sess_t *parent_sess = 59 devman_parent_device_connect(EXCHANGE_SERIALIZE, dev->handle,60 IPC_FLAG_BLOCKING);59 devman_parent_device_connect(EXCHANGE_SERIALIZE, 60 ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING); 61 61 if (!parent_sess) 62 62 return ENOMEM; … … 92 92 * @return Error code. 93 93 */ 94 int enable_interrupts( constddf_dev_t *device)94 int enable_interrupts(ddf_dev_t *device) 95 95 { 96 96 async_sess_t *parent_sess = 97 devman_parent_device_connect(EXCHANGE_SERIALIZE, device->handle,98 IPC_FLAG_BLOCKING);97 devman_parent_device_connect(EXCHANGE_SERIALIZE, 98 ddf_dev_get_handle(device), IPC_FLAG_BLOCKING); 99 99 if (!parent_sess) 100 100 return ENOMEM; … … 111 111 * @return Error code. 112 112 */ 113 int disable_legacy( constddf_dev_t *device)113 int disable_legacy(ddf_dev_t *device) 114 114 { 115 115 assert(device); 116 116 117 117 async_sess_t *parent_sess = devman_parent_device_connect( 118 EXCHANGE_SERIALIZE, d evice->handle, IPC_FLAG_BLOCKING);118 EXCHANGE_SERIALIZE, ddf_dev_get_handle(device), IPC_FLAG_BLOCKING); 119 119 if (!parent_sess) 120 120 return ENOMEM; -
uspace/drv/bus/usb/uhci/res.h
r4f351432 r2568c94 38 38 #include <ddf/driver.h> 39 39 40 int get_my_registers( constddf_dev_t *, uintptr_t *, size_t *, int *);41 int enable_interrupts( constddf_dev_t *);42 int disable_legacy( constddf_dev_t *);40 int get_my_registers(ddf_dev_t *, uintptr_t *, size_t *, int *); 41 int enable_interrupts(ddf_dev_t *); 42 int disable_legacy(ddf_dev_t *); 43 43 44 44 #endif -
uspace/drv/bus/usb/uhci/uhci.c
r4f351432 r2568c94 33 33 * @brief UHCI driver 34 34 */ 35 36 /* XXX Fix this */ 37 #define _DDF_DATA_IMPLANT 38 35 39 #include <errno.h> 36 40 #include <str_error.h> … … 60 64 } uhci_t; 61 65 62 static inline uhci_t * dev_to_uhci(const ddf_dev_t *dev) 63 { 64 assert(dev); 65 return dev->driver_data; 66 static inline uhci_t *dev_to_uhci(ddf_dev_t *dev) 67 { 68 return ddf_dev_data_get(dev); 66 69 } 67 70 … … 97 100 static int usb_iface_get_hc_handle(ddf_fun_t *fun, devman_handle_t *handle) 98 101 { 99 assert(fun); 100 ddf_fun_t *hc_fun = dev_to_uhci(fun->dev)->hc_fun; 102 ddf_fun_t *hc_fun = dev_to_uhci(ddf_fun_get_dev(fun))->hc_fun; 101 103 assert(hc_fun); 102 104 103 105 if (handle != NULL) 104 *handle = hc_fun->handle;106 *handle = ddf_fun_get_handle(hc_fun); 105 107 return EOK; 106 108 } … … 118 120 static hw_resource_list_t *get_resource_list(ddf_fun_t *fun) 119 121 { 120 assert(fun); 121 rh_t *rh = fun->driver_data; 122 rh_t *rh = ddf_fun_data_get(fun); 122 123 assert(rh); 123 124 return &rh->resource_list; … … 160 161 if (ret != EOK) { \ 161 162 if (instance->hc_fun) \ 162 instance->hc_fun->driver_data = NULL; \163 163 ddf_fun_destroy(instance->hc_fun); \ 164 164 if (instance->rh_fun) {\ 165 instance->rh_fun->driver_data = NULL; \166 165 ddf_fun_destroy(instance->rh_fun); \ 167 166 } \ … … 174 173 int ret = (instance->hc_fun == NULL) ? ENOMEM : EOK; 175 174 CHECK_RET_DEST_FREE_RETURN(ret, "Failed to create UHCI HC function.\n"); 176 instance->hc_fun->ops = &hc_ops;177 instance->hc_fun->driver_data = &instance->hc.generic;175 ddf_fun_set_ops(instance->hc_fun, &hc_ops); 176 ddf_fun_data_implant(instance->hc_fun, &instance->hc.generic); 178 177 179 178 instance->rh_fun = ddf_fun_create(device, fun_inner, "uhci_rh"); 180 179 ret = (instance->rh_fun == NULL) ? ENOMEM : EOK; 181 180 CHECK_RET_DEST_FREE_RETURN(ret, "Failed to create UHCI RH function.\n"); 182 instance->rh_fun->ops = &rh_ops;183 instance->rh_fun->driver_data = &instance->rh;181 ddf_fun_set_ops(instance->rh_fun, &rh_ops); 182 ddf_fun_data_implant(instance->rh_fun, &instance->rh); 184 183 185 184 uintptr_t reg_base = 0; … … 190 189 CHECK_RET_DEST_FREE_RETURN(ret, 191 190 "Failed to get I/O addresses for %" PRIun ": %s.\n", 192 d evice->handle, str_error(ret));191 ddf_dev_get_handle(device), str_error(ret)); 193 192 usb_log_debug("I/O regs at 0x%p (size %zu), IRQ %d.\n", 194 193 (void *) reg_base, reg_size, irq); -
uspace/drv/bus/usb/uhcirh/main.c
r4f351432 r2568c94 48 48 #define NAME "uhcirh" 49 49 50 static int hc_get_my_registers( constddf_dev_t *dev,50 static int hc_get_my_registers(ddf_dev_t *dev, 51 51 uintptr_t *io_reg_address, size_t *io_reg_size); 52 52 … … 88 88 89 89 usb_log_debug2("uhci_rh_dev_add(handle=%" PRIun ")\n", 90 d evice->handle);90 ddf_dev_get_handle(device)); 91 91 92 92 uintptr_t io_regs = 0; … … 98 98 if (ret != EOK) { \ 99 99 usb_log_error(message); \ 100 if (rh) \101 free(rh); \102 100 return ret; \ 103 101 } else (void)0 … … 109 107 (void *) io_regs, io_size); 110 108 111 rh = malloc(sizeof(uhci_root_hub_t));109 rh = ddf_dev_data_alloc(device, sizeof(uhci_root_hub_t)); 112 110 ret = (rh == NULL) ? ENOMEM : EOK; 113 111 CHECK_RET_FREE_RH_RETURN(ret, … … 119 117 ret, str_error(ret)); 120 118 121 device->driver_data = rh;122 119 usb_log_info("Controlling root hub '%s' (%" PRIun ").\n", 123 d evice->name, device->handle);120 ddf_dev_get_name(device), ddf_dev_get_handle(device)); 124 121 return EOK; 125 122 } … … 133 130 */ 134 131 int hc_get_my_registers( 135 constddf_dev_t *dev, uintptr_t *io_reg_address, size_t *io_reg_size)132 ddf_dev_t *dev, uintptr_t *io_reg_address, size_t *io_reg_size) 136 133 { 137 assert(dev);138 139 134 async_sess_t *parent_sess = 140 devman_parent_device_connect(EXCHANGE_SERIALIZE, dev->handle,141 IPC_FLAG_BLOCKING);135 devman_parent_device_connect(EXCHANGE_SERIALIZE, 136 ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING); 142 137 if (!parent_sess) 143 138 return ENOMEM; -
uspace/drv/bus/usb/uhcirh/port.c
r4f351432 r2568c94 279 279 usb_log_info("%s: New device, address %d (handle %" PRIun ").\n", 280 280 port->id_string, port->attached_device.address, 281 port->attached_device.fun->handle);281 ddf_fun_get_handle(port->attached_device.fun)); 282 282 return EOK; 283 283 } -
uspace/drv/bus/usb/usbflbk/main.c
r4f351432 r2568c94 69 69 " (node `%s', handle %" PRIun ").\n", 70 70 dev->interface_no < 0 ? "device" : "interface", 71 d ev->ddf_dev->name, fun_name, dev->ddf_dev->handle);71 ddf_dev_get_name(dev->ddf_dev), fun_name, ddf_dev_get_handle(dev->ddf_dev)); 72 72 73 73 return EOK; … … 85 85 const int ret = ddf_fun_unbind(ctl_fun); 86 86 if (ret != EOK) { 87 usb_log_error("Failed to unbind %s.\n", ctl_fun->name);87 usb_log_error("Failed to unbind %s.\n", ddf_fun_get_name(ctl_fun)); 88 88 return ret; 89 89 } -
uspace/drv/bus/usb/usbhid/generic/hiddev.c
r4f351432 r2568c94 35 35 */ 36 36 37 /* XXX Fix this */ 38 #define _DDF_DATA_IMPLANT 39 37 40 #include <usb/debug.h> 38 41 #include <usb/classes/classes.h> … … 81 84 }; 82 85 86 /** Return hid_dev_t * for generic HID function node. 87 * 88 * For the generic HID subdriver the 'hid' function has usb_hid_gen_fun_t 89 * as soft state. Through that we can get to the usb_hid_dev_t. 90 */ 91 static usb_hid_dev_t *fun_hid_dev(ddf_fun_t *fun) 92 { 93 return ((usb_hid_gen_fun_t *)ddf_fun_data_get(fun))->hid_dev; 94 } 95 83 96 static size_t usb_generic_hid_get_event_length(ddf_fun_t *fun) 84 97 { 85 98 usb_log_debug2("Generic HID: Get event length (fun: %p, " 86 "fun->driver_data: %p.\n", fun, fun->driver_data); 87 88 if (fun == NULL || fun->driver_data == NULL) { 89 return 0; 90 } 91 92 const usb_hid_dev_t *hid_dev = fun->driver_data; 99 "fun->driver_data: %p.\n", fun, ddf_fun_data_get(fun)); 100 101 const usb_hid_dev_t *hid_dev = fun_hid_dev(fun); 93 102 94 103 usb_log_debug2("hid_dev: %p, Max input report size (%zu).\n", … … 103 112 usb_log_debug2("Generic HID: Get event.\n"); 104 113 105 if (fun == NULL || fun->driver_data == NULL || buffer == NULL 106 || act_size == NULL || event_nr == NULL) { 114 if (buffer == NULL || act_size == NULL || event_nr == NULL) { 107 115 usb_log_debug("No function"); 108 116 return EINVAL; 109 117 } 110 118 111 const usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;119 const usb_hid_dev_t *hid_dev = fun_hid_dev(fun); 112 120 113 121 if (hid_dev->input_report_size > size) { … … 132 140 usb_log_debug("Generic HID: Get report descriptor length.\n"); 133 141 134 if (fun == NULL || fun->driver_data == NULL) { 135 usb_log_debug("No function"); 136 return EINVAL; 137 } 138 139 const usb_hid_dev_t *hid_dev = fun->driver_data; 142 const usb_hid_dev_t *hid_dev = fun_hid_dev(fun); 140 143 141 144 usb_log_debug2("hid_dev->report_desc_size = %zu\n", … … 150 153 usb_log_debug2("Generic HID: Get report descriptor.\n"); 151 154 152 if (fun == NULL || fun->driver_data == NULL) { 153 usb_log_debug("No function"); 154 return EINVAL; 155 } 156 157 const usb_hid_dev_t *hid_dev = fun->driver_data; 155 const usb_hid_dev_t *hid_dev = fun_hid_dev(fun); 158 156 159 157 if (hid_dev->report_desc_size > size) { … … 183 181 return; 184 182 } 185 usb_log_debug2("%s unbound.\n", fun->name); 186 /* We did not allocate this, so leave this alone 187 * the device would take care of it */ 188 fun->driver_data = NULL; 183 usb_log_debug2("%s unbound.\n", ddf_fun_get_name(fun)); 189 184 ddf_fun_destroy(fun); 190 185 } … … 192 187 int usb_generic_hid_init(usb_hid_dev_t *hid_dev, void **data) 193 188 { 189 usb_hid_gen_fun_t *hid_fun; 190 194 191 if (hid_dev == NULL) { 195 192 return EINVAL; … … 205 202 } 206 203 207 /* This is nasty, both device and this function have the same208 * driver data, thus destruction causes to double free */209 fun->driver_data= hid_dev;210 fun->ops = &usb_generic_hid_ops;204 /* Create softstate */ 205 hid_fun = ddf_fun_data_alloc(fun, sizeof(usb_hid_gen_fun_t)); 206 hid_fun->hid_dev = hid_dev; 207 ddf_fun_set_ops(fun, &usb_generic_hid_ops); 211 208 212 209 int rc = ddf_fun_bind(fun); … … 214 211 usb_log_error("Could not bind DDF function: %s.\n", 215 212 str_error(rc)); 216 fun->driver_data = NULL;217 213 ddf_fun_destroy(fun); 218 214 return rc; 219 215 } 220 216 221 usb_log_debug("HID function created. Handle: %" PRIun "\n", fun->handle); 217 usb_log_debug("HID function created. Handle: %" PRIun "\n", 218 ddf_fun_get_handle(fun)); 222 219 *data = fun; 223 220 -
uspace/drv/bus/usb/usbhid/generic/hiddev.h
r4f351432 r2568c94 47 47 const char *HID_GENERIC_CLASS_NAME; 48 48 49 49 /** The USB HID generic 'hid' function softstate */ 50 typedef struct { 51 struct usb_hid_dev *hid_dev; 52 } usb_hid_gen_fun_t; 50 53 51 54 int usb_generic_hid_init(struct usb_hid_dev *hid_dev, void **data); -
uspace/drv/bus/usb/usbhid/kbd/kbddev.c
r4f351432 r2568c94 34 34 * USB HID keyboard device structure and API. 35 35 */ 36 37 /* XXX Fix this */ 38 #define _DDF_DATA_IMPLANT 36 39 37 40 #include <errno.h> … … 162 165 ipc_callid_t icallid, ipc_call_t *icall) 163 166 { 164 if (fun == NULL || fun->driver_data == NULL) {165 usb_log_error("%s: Missing parameter.\n", __FUNCTION__);166 async_answer_0(icallid, EINVAL);167 return;168 }169 170 167 const sysarg_t method = IPC_GET_IMETHOD(*icall); 171 usb_kbd_t *kbd_dev = fun->driver_data;168 usb_kbd_t *kbd_dev = ddf_fun_data_get(fun); 172 169 173 170 switch (method) { … … 501 498 /* Store the initialized HID device and HID ops 502 499 * to the DDF function. */ 503 fun->ops = &kbdops;504 fun->driver_data = kbd_dev;500 ddf_fun_set_ops(fun, &kbdops); 501 ddf_fun_data_implant(fun, kbd_dev); 505 502 506 503 int rc = ddf_fun_bind(fun); … … 508 505 usb_log_error("Could not bind DDF function: %s.\n", 509 506 str_error(rc)); 510 fun->driver_data = NULL; /* We did not allocate this. */511 507 ddf_fun_destroy(fun); 512 508 return rc; … … 514 510 515 511 usb_log_debug("%s function created. Handle: %" PRIun "\n", 516 HID_KBD_FUN_NAME, fun->handle);512 HID_KBD_FUN_NAME, ddf_fun_get_handle(fun)); 517 513 518 514 usb_log_debug("Adding DDF function to category %s...\n", … … 524 520 HID_KBD_CLASS_NAME, str_error(rc)); 525 521 if (ddf_fun_unbind(fun) == EOK) { 526 fun->driver_data = NULL; /* We did not allocate this. */527 522 ddf_fun_destroy(fun); 528 523 } else { 529 524 usb_log_error( 530 525 "Failed to unbind `%s', will not destroy.\n", 531 fun->name);526 ddf_fun_get_name(fun)); 532 527 } 533 528 return rc; … … 757 752 if (ddf_fun_unbind(kbd_dev->fun) != EOK) { 758 753 usb_log_warning("Failed to unbind %s.\n", 759 kbd_dev->fun->name);754 ddf_fun_get_name(kbd_dev->fun)); 760 755 } else { 761 usb_log_debug2("%s unbound.\n", kbd_dev->fun->name);762 kbd_dev->fun->driver_data = NULL;756 usb_log_debug2("%s unbound.\n", 757 ddf_fun_get_name(kbd_dev->fun)); 763 758 ddf_fun_destroy(kbd_dev->fun); 764 759 } 765 760 } 766 free(kbd_dev);767 761 } 768 762 -
uspace/drv/bus/usb/usbhid/main.c
r4f351432 r2568c94 103 103 if (rc != EOK) { 104 104 usb_log_error("Failed to start polling fibril for `%s'.\n", 105 d ev->ddf_dev->name);105 ddf_dev_get_name(dev->ddf_dev)); 106 106 usb_hid_deinit(hid_dev); 107 107 return rc; … … 109 109 hid_dev->running = true; 110 110 111 usb_log_info("HID device `%s' ready to use.\n", dev->ddf_dev->name); 111 usb_log_info("HID device `%s' ready to use.\n", 112 ddf_dev_get_name(dev->ddf_dev)); 112 113 113 114 return EOK; … … 149 150 150 151 usb_hid_deinit(hid_dev); 151 usb_log_debug2("%s destruction complete.\n", d ev->ddf_dev->name);152 usb_log_debug2("%s destruction complete.\n", ddf_dev_get_name(dev->ddf_dev)); 152 153 return EOK; 153 154 } -
uspace/drv/bus/usb/usbhid/mouse/mousedev.c
r4f351432 r2568c94 34 34 * USB Mouse driver API. 35 35 */ 36 37 /* XXX Fix this */ 38 #define _DDF_DATA_IMPLANT 36 39 37 40 #include <usb/debug.h> … … 115 118 ipc_callid_t icallid, ipc_call_t *icall) 116 119 { 117 usb_mouse_t *mouse_dev = fun->driver_data;120 usb_mouse_t *mouse_dev = ddf_fun_data_get(fun); 118 121 119 122 if (mouse_dev == NULL) { … … 123 126 } 124 127 125 usb_log_debug("%s: fun->name: %s\n", __FUNCTION__, fun->name);128 usb_log_debug("%s: fun->name: %s\n", __FUNCTION__, ddf_fun_get_name(fun)); 126 129 usb_log_debug("%s: mouse_sess: %p\n", 127 130 __FUNCTION__, mouse_dev->mouse_sess); … … 133 136 mouse_dev->mouse_sess = sess; 134 137 usb_log_debug("Console session to %s set ok (%p).\n", 135 fun->name, sess);138 ddf_fun_get_name(fun), sess); 136 139 async_answer_0(icallid, EOK); 137 140 } else { 138 141 usb_log_error("Console session to %s already set.\n", 139 fun->name);142 ddf_fun_get_name(fun)); 140 143 async_answer_0(icallid, ELIMIT); 141 144 async_hangup(sess); … … 249 252 if (fun) { \ 250 253 if (ddf_fun_unbind((fun)) == EOK) { \ 251 (fun)->driver_data = NULL; \252 254 ddf_fun_destroy((fun)); \ 253 255 } else { \ 254 256 usb_log_error("Could not unbind function `%s', it " \ 255 "will not be destroyed.\n", (fun)->name); \257 "will not be destroyed.\n", ddf_fun_get_name(fun)); \ 256 258 } \ 257 259 } else (void)0 … … 272 274 } 273 275 274 fun->ops = &ops;275 fun->driver_data = mouse;276 ddf_fun_set_ops(fun, &ops); 277 ddf_fun_data_implant(fun, mouse); 276 278 277 279 int rc = ddf_fun_bind(fun); 278 280 if (rc != EOK) { 279 281 usb_log_error("Could not bind DDF function `%s': %s.\n", 280 fun->name, str_error(rc)); 281 fun->driver_data = NULL; 282 ddf_fun_get_name(fun), str_error(rc)); 282 283 ddf_fun_destroy(fun); 283 284 return rc; … … 285 286 286 287 usb_log_debug("Adding DDF function `%s' to category %s...\n", 287 fun->name, HID_MOUSE_CATEGORY);288 ddf_fun_get_name(fun), HID_MOUSE_CATEGORY); 288 289 rc = ddf_fun_add_to_category(fun, HID_MOUSE_CATEGORY); 289 290 if (rc != EOK) { … … 419 420 420 421 free(mouse_dev->buttons); 421 free(mouse_dev);422 422 } 423 423 -
uspace/drv/bus/usb/usbhid/multimedia/multimedia.c
r4f351432 r2568c94 86 86 { 87 87 usb_log_debug(NAME " default_connection_handler()\n"); 88 if (fun == NULL || fun->driver_data == NULL) { 89 async_answer_0(icallid, EINVAL); 90 return; 91 } 92 93 usb_multimedia_t *multim_dev = fun->driver_data; 88 89 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 94 90 95 91 async_sess_t *sess = … … 172 168 } 173 169 174 fun->ops = &multimedia_ops;170 ddf_fun_set_ops(fun, &multimedia_ops); 175 171 176 172 usb_multimedia_t *multim_dev = … … 194 190 195 191 usb_log_debug(NAME " function created (handle: %" PRIun ").\n", 196 fun->handle);192 ddf_fun_get_handle(fun)); 197 193 198 194 rc = ddf_fun_add_to_category(fun, "keyboard"); … … 203 199 if (ddf_fun_unbind(fun) != EOK) { 204 200 usb_log_error("Failed to unbind %s, won't destroy.\n", 205 fun->name);201 ddf_fun_get_name(fun)); 206 202 } else { 207 203 ddf_fun_destroy(fun); … … 220 216 { 221 217 ddf_fun_t *fun = data; 222 if (fun != NULL && fun->driver_data != NULL) { 223 usb_multimedia_t *multim_dev = fun->driver_data; 224 /* Hangup session to the console */ 225 if (multim_dev->console_sess) 226 async_hangup(multim_dev->console_sess); 227 if (ddf_fun_unbind(fun) != EOK) { 228 usb_log_error("Failed to unbind %s, won't destroy.\n", 229 fun->name); 230 } else { 231 usb_log_debug2("%s unbound.\n", fun->name); 232 /* This frees multim_dev too as it was stored in 233 * fun->data */ 234 ddf_fun_destroy(fun); 235 } 218 219 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 220 221 /* Hangup session to the console */ 222 if (multim_dev->console_sess) 223 async_hangup(multim_dev->console_sess); 224 if (ddf_fun_unbind(fun) != EOK) { 225 usb_log_error("Failed to unbind %s, won't destroy.\n", 226 ddf_fun_get_name(fun)); 236 227 } else { 237 usb_log_error( 238 "Failed to deinit multimedia subdriver, data missing.\n"); 228 usb_log_debug2("%s unbound.\n", ddf_fun_get_name(fun)); 229 /* This frees multim_dev too as it was stored in 230 * fun->data */ 231 ddf_fun_destroy(fun); 239 232 } 240 233 } … … 244 237 // TODO: checks 245 238 ddf_fun_t *fun = data; 246 if (hid_dev == NULL || fun == NULL || fun->driver_data == NULL) {239 if (hid_dev == NULL) { 247 240 return false; 248 241 } 249 242 250 usb_multimedia_t *multim_dev = fun->driver_data;243 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 251 244 252 245 usb_hid_report_path_t *path = usb_hid_report_path(); -
uspace/drv/bus/usb/usbhub/port.c
r4f351432 r2568c94 436 436 usb_log_info("Detected new device on `%s' (port %zu), " 437 437 "address %d (handle %" PRIun ").\n", 438 data->hub->usb_device->ddf_dev->name, 439 data->port->port_number, new_address, child_fun->handle); 438 ddf_dev_get_name(data->hub->usb_device->ddf_dev), 439 data->port->port_number, new_address, 440 ddf_fun_get_handle(child_fun)); 440 441 } else { 441 442 usb_log_error("Failed registering device on port %zu: %s.\n", -
uspace/drv/bus/usb/usbhub/usbhub.c
r4f351432 r2568c94 160 160 hub_dev->running = true; 161 161 usb_log_info("Controlling hub '%s' (%zu ports).\n", 162 hub_dev->usb_device->ddf_dev->name, hub_dev->port_count);162 ddf_dev_get_name(hub_dev->usb_device->ddf_dev), hub_dev->port_count); 163 163 164 164 usb_pipe_end_long_transfer(&usb_dev->ctrl_pipe); -
uspace/drv/bus/usb/usbmast/main.c
r4f351432 r2568c94 160 160 mdev->usb_dev = dev; 161 161 162 usb_log_info("Initializing mass storage `%s'.\n", d ev->ddf_dev->name);162 usb_log_info("Initializing mass storage `%s'.\n", ddf_dev_get_name(dev->ddf_dev)); 163 163 usb_log_debug("Bulk in endpoint: %d [%zuB].\n", 164 164 dev->pipes[BULK_IN_EP].pipe.endpoint_no, … … 245 245 246 246 /* Set up a connection handler. */ 247 fun->conn_handler = usbmast_bd_connection;247 ddf_fun_set_conn_handler(fun, usbmast_bd_connection); 248 248 249 249 usb_log_debug("Inquire...\n"); … … 252 252 if (rc != EOK) { 253 253 usb_log_warning("Failed to inquire device `%s': %s.\n", 254 mdev->ddf_dev->name, str_error(rc));254 ddf_dev_get_name(mdev->ddf_dev), str_error(rc)); 255 255 rc = EIO; 256 256 goto error; … … 259 259 usb_log_info("Mass storage `%s' LUN %u: " \ 260 260 "%s by %s rev. %s is %s (%s).\n", 261 mdev->ddf_dev->name,261 ddf_dev_get_name(mdev->ddf_dev), 262 262 lun, 263 263 inquiry.product, … … 272 272 if (rc != EOK) { 273 273 usb_log_warning("Failed to read capacity, device `%s': %s.\n", 274 mdev->ddf_dev->name, str_error(rc));274 ddf_dev_get_name(mdev->ddf_dev), str_error(rc)); 275 275 rc = EIO; 276 276 goto error; … … 310 310 usbmast_fun_t *mfun; 311 311 312 mfun = (usbmast_fun_t *) ((ddf_fun_t *)arg)->driver_data;312 mfun = (usbmast_fun_t *) ddf_fun_data_get((ddf_fun_t *)arg); 313 313 bd_conn(iid, icall, &mfun->bds); 314 314 } -
uspace/drv/bus/usb/usbmast/scsi_ms.c
r4f351432 r2568c94 88 88 if (rc != EOK) { 89 89 usb_log_error("Inquiry transport failed, device %s: %s.\n", 90 mfun->mdev->ddf_dev->name, str_error(rc));90 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 91 91 return rc; 92 92 } … … 96 96 97 97 usb_log_error("SCSI command failed, device %s.\n", 98 mfun->mdev->ddf_dev->name);98 ddf_dev_get_name(mfun->mdev->ddf_dev)); 99 99 100 100 rc = usbmast_request_sense(mfun, &sense_buf, sizeof(sense_buf)); … … 147 147 if (rc != EOK) { 148 148 usb_log_error("Inquiry transport failed, device %s: %s.\n", 149 mfun->mdev->ddf_dev->name, str_error(rc));149 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 150 150 return rc; 151 151 } … … 153 153 if (cmd.status != CMDS_GOOD) { 154 154 usb_log_error("Inquiry command failed, device %s.\n", 155 mfun->mdev->ddf_dev->name);155 ddf_dev_get_name(mfun->mdev->ddf_dev)); 156 156 return EIO; 157 157 } … … 215 215 if (rc != EOK || cmd.status != CMDS_GOOD) { 216 216 usb_log_error("Request Sense failed, device %s: %s.\n", 217 mfun->mdev->ddf_dev->name, str_error(rc));217 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 218 218 return rc; 219 219 } … … 257 257 if (rc != EOK) { 258 258 usb_log_error("Read Capacity (10) transport failed, device %s: %s.\n", 259 mfun->mdev->ddf_dev->name, str_error(rc));259 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 260 260 return rc; 261 261 } … … 263 263 if (cmd.status != CMDS_GOOD) { 264 264 usb_log_error("Read Capacity (10) command failed, device %s.\n", 265 mfun->mdev->ddf_dev->name);265 ddf_dev_get_name(mfun->mdev->ddf_dev)); 266 266 return EIO; 267 267 } … … 314 314 if (rc != EOK) { 315 315 usb_log_error("Read (10) transport failed, device %s: %s.\n", 316 mfun->mdev->ddf_dev->name, str_error(rc));316 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 317 317 return rc; 318 318 } … … 320 320 if (cmd.status != CMDS_GOOD) { 321 321 usb_log_error("Read (10) command failed, device %s.\n", 322 mfun->mdev->ddf_dev->name);322 ddf_dev_get_name(mfun->mdev->ddf_dev)); 323 323 return EIO; 324 324 } … … 370 370 if (rc != EOK) { 371 371 usb_log_error("Write (10) transport failed, device %s: %s.\n", 372 mfun->mdev->ddf_dev->name, str_error(rc));372 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 373 373 return rc; 374 374 } … … 376 376 if (cmd.status != CMDS_GOOD) { 377 377 usb_log_error("Write (10) command failed, device %s.\n", 378 mfun->mdev->ddf_dev->name);378 ddf_dev_get_name(mfun->mdev->ddf_dev)); 379 379 return EIO; 380 380 } -
uspace/drv/bus/usb/usbmid/explore.c
r4f351432 r2568c94 172 172 return false; 173 173 } 174 usb_mid->ctl_fun->ops = &mid_device_ops;174 ddf_fun_set_ops(usb_mid->ctl_fun, &mid_device_ops); 175 175 176 176 /* Bind control function. */ -
uspace/drv/bus/usb/usbmid/main.c
r4f351432 r2568c94 51 51 static int usbmid_device_add(usb_device_t *dev) 52 52 { 53 usb_log_info("Taking care of new MID `%s'.\n", d ev->ddf_dev->name);53 usb_log_info("Taking care of new MID `%s'.\n", ddf_dev_get_name(dev->ddf_dev)); 54 54 55 55 const bool accept = usbmid_explore_device(dev); … … 127 127 assert(usb_mid); 128 128 129 usb_log_info("USB MID gone: `%s'.\n", d ev->ddf_dev->name);129 usb_log_info("USB MID gone: `%s'.\n", ddf_dev_get_name(dev->ddf_dev)); 130 130 131 131 /* Remove ctl function */ -
uspace/drv/bus/usb/usbmid/usbmid.c
r4f351432 r2568c94 30 30 * @{ 31 31 */ 32 33 /* XXX Fix this */ 34 #define _DDF_DATA_IMPLANT 35 32 36 /** 33 37 * @file … … 47 51 static int usb_iface_get_interface_impl(ddf_fun_t *fun, int *iface_no) 48 52 { 49 assert(fun); 50 51 usbmid_interface_t *iface = fun->driver_data; 53 usbmid_interface_t *iface = ddf_fun_data_get(fun); 52 54 assert(iface); 53 55 … … 123 125 } 124 126 127 match_id_list_t match_ids; 128 init_match_ids(&match_ids); 129 125 130 rc = usb_device_create_match_ids_from_interface(device_descriptor, 126 interface_descriptor, & child->match_ids);131 interface_descriptor, &match_ids); 127 132 if (rc != EOK) { 128 133 ddf_fun_destroy(child); 129 134 return rc; 130 135 } 136 137 list_foreach(match_ids.ids, link) { 138 match_id_t *match_id = list_get_instance(link, match_id_t, link); 139 rc = ddf_fun_add_match_id(child, match_id->id, match_id->score); 140 if (rc != EOK) { 141 clean_match_ids(&match_ids); 142 ddf_fun_destroy(child); 143 return rc; 144 } 145 } 146 clean_match_ids(&match_ids); 131 147 132 148 rc = ddf_fun_bind(child); … … 138 154 139 155 iface->fun = child; 140 child->driver_data = iface;141 child->ops = &child_device_ops;156 ddf_fun_data_implant(child, iface); 157 ddf_fun_set_ops(child, &child_device_ops); 142 158 143 159 return EOK; -
uspace/drv/bus/usb/vhc/conndev.c
r4f351432 r2568c94 94 94 ipc_call_t *icall) 95 95 { 96 vhc_data_t *vhc = fun->dev->driver_data;96 vhc_data_t *vhc = ddf_dev_data_get(ddf_fun_get_dev(fun)); 97 97 98 98 async_sess_t *callback = … … 125 125 void on_client_close(ddf_fun_t *fun) 126 126 { 127 vhc_data_t *vhc = fun->dev->driver_data;127 vhc_data_t *vhc = ddf_dev_data_get(ddf_fun_get_dev(fun)); 128 128 129 129 if (plugged_device_handle != 0) { -
uspace/drv/bus/usb/vhc/connhost.c
r4f351432 r2568c94 42 42 43 43 #define GET_VHC_DATA(fun) \ 44 ((vhc_data_t *) fun->dev->driver_data)44 ((vhc_data_t *)ddf_dev_data_get(ddf_fun_get_dev(fun))) 45 45 #define VHC_DATA(vhc, fun) \ 46 46 vhc_data_t *vhc = GET_VHC_DATA(fun); assert(vhc->magic == 0xdeadbeef) … … 483 483 VHC_DATA(vhc, root_hub_fun); 484 484 485 *handle = vhc->hc_fun->handle;485 *handle = ddf_fun_get_handle(vhc->hc_fun); 486 486 487 487 return EOK; … … 492 492 VHC_DATA(vhc, root_hub_fun); 493 493 494 devman_handle_t handle = root_hub_fun->handle;494 devman_handle_t handle = ddf_fun_get_handle(root_hub_fun); 495 495 496 496 usb_log_debug("tell_address_rh(handle=%" PRIun ")\n", handle); -
uspace/drv/bus/usb/vhc/hub.c
r4f351432 r2568c94 100 100 async_sess_t *sess; 101 101 do { 102 sess = devman_device_connect(EXCHANGE_SERIALIZE, hc_dev->handle, 0); 102 sess = devman_device_connect(EXCHANGE_SERIALIZE, 103 ddf_fun_get_handle(hc_dev), 0); 103 104 } while (!sess); 104 105 async_hangup(sess); … … 107 108 108 109 usb_hc_connection_t hc_conn; 109 usb_hc_connection_initialize(&hc_conn, hc_dev->handle);110 usb_hc_connection_initialize(&hc_conn, ddf_fun_get_handle(hc_dev)); 110 111 111 112 rc = usb_hc_connection_open(&hc_conn); … … 113 114 114 115 ddf_fun_t *hub_dev; 115 rc = usb_hc_new_device_wrapper( hc_dev->dev, &hc_conn, USB_SPEED_FULL,116 rc = usb_hc_new_device_wrapper(ddf_fun_get_dev(hc_dev), &hc_conn, USB_SPEED_FULL, 116 117 pretend_port_rest, NULL, NULL, &rh_ops, hc_dev, &hub_dev); 117 118 if (rc != EOK) { … … 123 124 124 125 usb_log_info("Created root hub function (handle %zu).\n", 125 (size_t) hub_dev->handle);126 (size_t) ddf_fun_get_handle(hub_dev)); 126 127 127 128 return 0; -
uspace/drv/bus/usb/vhc/main.c
r4f351432 r2568c94 67 67 } 68 68 69 vhc_data_t *data = malloc(sizeof(vhc_data_t));69 vhc_data_t *data = ddf_dev_data_alloc(dev, sizeof(vhc_data_t)); 70 70 if (data == NULL) { 71 71 usb_log_fatal("Failed to allocate memory.\n"); … … 89 89 } 90 90 91 hc->ops = &vhc_ops;91 ddf_fun_set_ops(hc, &vhc_ops); 92 92 list_initialize(&data->devices); 93 93 fibril_mutex_initialize(&data->guard); 94 94 data->hub = &virtual_hub_device; 95 95 data->hc_fun = hc; 96 97 dev->driver_data = data;98 96 99 97 rc = ddf_fun_bind(hc); … … 116 114 117 115 usb_log_info("Virtual USB host controller ready (dev %zu, hc %zu).\n", 118 (size_t) dev->handle, (size_t) hc->handle); 119 120 116 (size_t) ddf_dev_get_handle(dev), (size_t) ddf_fun_get_handle(hc)); 121 117 122 118 rc = vhc_virtdev_plug_hub(data, data->hub, NULL);
Note:
See TracChangeset
for help on using the changeset viewer.