Changeset 03362fbd in mainline for uspace/drv/bus/isa/isa.c
- Timestamp:
- 2013-02-09T23:14:45Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 22dfd38
- Parents:
- b5d2e57 (diff), 005b765 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/isa/isa.c
rb5d2e57 r03362fbd 42 42 #include <stdio.h> 43 43 #include <errno.h> 44 #include < bool.h>44 #include <stdbool.h> 45 45 #include <fibril_synch.h> 46 46 #include <stdlib.h> … … 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 … … 96 90 } isa_fun_t; 97 91 98 static hw_resource_list_t *isa_fun_get_resources(ddf_fun_t *fnode) 99 { 100 isa_fun_t *fun = ISA_FUN(fnode); 101 assert(fun); 102 103 return &fun->hw_resources; 92 /** Obtain soft-state from device node */ 93 static isa_bus_t *isa_bus(ddf_dev_t *dev) 94 { 95 return ddf_dev_data_get(dev); 96 } 97 98 /** Obtain soft-state from function node */ 99 static isa_fun_t *isa_fun(ddf_fun_t *fun) 100 { 101 return ddf_fun_data_get(fun); 102 } 103 104 static hw_resource_list_t *isa_get_fun_resources(ddf_fun_t *fnode) 105 { 106 isa_fun_t *isa = isa_fun(fnode); 107 assert(isa); 108 109 return &isa->hw_resources; 104 110 } 105 111 … … 108 114 /* This is an old ugly way, copied from pci driver */ 109 115 assert(fnode); 110 isa_fun_t *isa_fun = ISA_FUN(fnode); 116 isa_fun_t *isa = isa_fun(fnode); 117 assert(isa); 111 118 112 119 sysarg_t apic; … … 124 131 return false; 125 132 126 assert(isa_fun); 127 const hw_resource_list_t *res = &isa_fun->hw_resources; 133 const hw_resource_list_t *res = &isa->hw_resources; 128 134 assert(res); 129 135 for (size_t i = 0; i < res->count; ++i) { … … 151 157 { 152 158 assert(fnode); 153 isa_fun_t *isa _fun = fnode->driver_data;154 assert(isa _fun);155 const hw_resource_list_t *res = &isa _fun->hw_resources;159 isa_fun_t *isa = isa_fun(fnode); 160 assert(isa); 161 const hw_resource_list_t *res = &isa->hw_resources; 156 162 assert(res); 157 163 158 164 for (size_t i = 0; i < res->count; ++i) { 159 165 /* Check for assigned channel */ … … 165 171 } 166 172 } 167 173 168 174 return EINVAL; 169 175 } … … 174 180 assert(size); 175 181 assert(fnode); 176 isa_fun_t *isa _fun = fnode->driver_data;177 assert(isa _fun);178 const hw_resource_list_t *res = &isa _fun->hw_resources;182 isa_fun_t *isa = isa_fun(fnode); 183 assert(isa); 184 const hw_resource_list_t *res = &isa->hw_resources; 179 185 assert(res); 180 186 181 187 for (size_t i = 0; i < res->count; ++i) { 182 188 /* Check for assigned channel */ … … 188 194 } 189 195 } 190 196 191 197 return EINVAL; 192 198 } 193 199 194 200 static hw_res_ops_t isa_fun_hw_res_ops = { 195 .get_resource_list = isa_ fun_get_resources,201 .get_resource_list = isa_get_fun_resources, 196 202 .enable_interrupt = isa_fun_enable_interrupt, 197 203 .dma_channel_setup = isa_fun_setup_dma, … … 357 363 358 364 ddf_msg(LVL_NOTE, "Added irq 0x%x to function %s", irq, 359 fun->fnode->name);365 ddf_fun_get_name(fun->fnode)); 360 366 } 361 367 } … … 373 379 fun->hw_resources.count++; 374 380 ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma, 375 fun->fnode->name);381 ddf_fun_get_name(fun->fnode)); 376 382 377 383 return; … … 384 390 fun->hw_resources.count++; 385 391 ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma, 386 fun->fnode->name);392 ddf_fun_get_name(fun->fnode)); 387 393 388 394 return; … … 390 396 391 397 ddf_msg(LVL_WARN, "Skipped dma 0x%x for function %s", dma, 392 fun->fnode->name);398 ddf_fun_get_name(fun->fnode)); 393 399 } 394 400 } … … 409 415 ddf_msg(LVL_NOTE, "Added io range (addr=0x%x, size=0x%x) to " 410 416 "function %s", (unsigned int) addr, (unsigned int) len, 411 fun->fnode->name);417 ddf_fun_get_name(fun->fnode)); 412 418 } 413 419 } … … 478 484 if (val == end) { 479 485 ddf_msg(LVL_ERROR, "Cannot read match score for function " 480 "%s.", fun->fnode->name);486 "%s.", ddf_fun_get_name(fun->fnode)); 481 487 return; 482 488 } … … 486 492 if (id == NULL) { 487 493 ddf_msg(LVL_ERROR, "Cannot read match ID for function %s.", 488 fun->fnode->name);494 ddf_fun_get_name(fun->fnode)); 489 495 return; 490 496 } 491 497 492 498 ddf_msg(LVL_DEBUG, "Adding match id '%s' with score %d to " 493 "function %s", id, score, fun->fnode->name);499 "function %s", id, score, ddf_fun_get_name(fun->fnode)); 494 500 495 501 int rc = ddf_fun_add_match_id(fun->fnode, id, score); … … 575 581 576 582 /* Set device operations to the device. */ 577 fun->fnode->ops = &isa_fun_ops;578 579 ddf_msg(LVL_DEBUG, "Binding function %s.", fun->fnode->name);583 ddf_fun_set_ops(fun->fnode, &isa_fun_ops); 584 585 ddf_msg(LVL_DEBUG, "Binding function %s.", ddf_fun_get_name(fun->fnode)); 580 586 581 587 /* XXX Handle error */ … … 599 605 { 600 606 ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d", 601 (int) d ev->handle);607 (int) ddf_dev_get_handle(dev)); 602 608 603 609 isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t)); … … 637 643 static int isa_dev_remove(ddf_dev_t *dev) 638 644 { 639 isa_bus_t *isa = ISA_BUS(dev);645 isa_bus_t *isa = isa_bus(dev); 640 646 641 647 fibril_mutex_lock(&isa->mutex); … … 648 654 if (rc != EOK) { 649 655 fibril_mutex_unlock(&isa->mutex); 650 ddf_msg(LVL_ERROR, "Failed offlining %s", fun->fnode->name);656 ddf_msg(LVL_ERROR, "Failed offlining %s", ddf_fun_get_name(fun->fnode)); 651 657 return rc; 652 658 } … … 655 661 if (rc != EOK) { 656 662 fibril_mutex_unlock(&isa->mutex); 657 ddf_msg(LVL_ERROR, "Failed unbinding %s", fun->fnode->name);663 ddf_msg(LVL_ERROR, "Failed unbinding %s", ddf_fun_get_name(fun->fnode)); 658 664 return rc; 659 665 } … … 690 696 { 691 697 printf(NAME ": HelenOS ISA bus driver\n"); 692 ddf_log_init(NAME , LVL_ERROR);698 ddf_log_init(NAME); 693 699 return ddf_driver_main(&isa_driver); 694 700 }
Note:
See TracChangeset
for help on using the changeset viewer.