Changeset 3f03199 in mainline for uspace/drv/bus/isa/isa.c
- Timestamp:
- 2013-09-15T06:33:53Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9348862
- Parents:
- dd7078c (diff), 1c0cef0 (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
rdd7078c r3f03199 65 65 #include <ddf/log.h> 66 66 #include <ops/hw_res.h> 67 #include <ops/pio_window.h> 67 68 68 69 #include <device/hw_res.h> 70 #include <device/pio_window.h> 69 71 70 72 #include "i8237.h" … … 79 81 ddf_dev_t *dev; 80 82 ddf_fun_t *fctl; 83 pio_window_t pio_win; 81 84 list_t functions; 82 85 } isa_bus_t; … … 102 105 } 103 106 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;107 static hw_resource_list_t *isa_fun_get_resources(ddf_fun_t *fnode) 108 { 109 isa_fun_t *fun = isa_fun(fnode); 110 assert(fun); 111 112 return &fun->hw_resources; 110 113 } 111 114 … … 114 117 /* This is an old ugly way, copied from pci driver */ 115 118 assert(fnode); 116 isa_fun_t * isa= isa_fun(fnode);117 assert( isa);119 isa_fun_t *fun = isa_fun(fnode); 120 assert(fun); 118 121 119 122 sysarg_t apic; … … 131 134 return false; 132 135 133 const hw_resource_list_t *res = & isa->hw_resources;136 const hw_resource_list_t *res = &fun->hw_resources; 134 137 assert(res); 135 138 for (size_t i = 0; i < res->count; ++i) { … … 157 160 { 158 161 assert(fnode); 159 isa_fun_t * isa= isa_fun(fnode);160 assert( isa);161 const hw_resource_list_t *res = & isa->hw_resources;162 isa_fun_t *fun = isa_fun(fnode); 163 assert(fun); 164 const hw_resource_list_t *res = &fun->hw_resources; 162 165 assert(res); 163 166 … … 180 183 assert(size); 181 184 assert(fnode); 182 isa_fun_t * isa= isa_fun(fnode);183 assert( isa);184 const hw_resource_list_t *res = & isa->hw_resources;185 isa_fun_t *fun = isa_fun(fnode); 186 assert(fun); 187 const hw_resource_list_t *res = &fun->hw_resources; 185 188 assert(res); 186 189 … … 199 202 200 203 static hw_res_ops_t isa_fun_hw_res_ops = { 201 .get_resource_list = isa_ get_fun_resources,204 .get_resource_list = isa_fun_get_resources, 202 205 .enable_interrupt = isa_fun_enable_interrupt, 203 206 .dma_channel_setup = isa_fun_setup_dma, … … 205 208 }; 206 209 210 static pio_window_t *isa_fun_get_pio_window(ddf_fun_t *fnode) 211 { 212 ddf_dev_t *dev = ddf_fun_get_dev(fnode); 213 isa_bus_t *isa = isa_bus(dev); 214 assert(isa); 215 216 return &isa->pio_win; 217 } 218 219 static pio_window_ops_t isa_fun_pio_window_ops = { 220 .get_pio_window = isa_fun_get_pio_window 221 }; 222 207 223 static ddf_dev_ops_t isa_fun_ops= { 208 224 .interfaces[HW_RES_DEV_IFACE] = &isa_fun_hw_res_ops, 225 .interfaces[PIO_WINDOW_DEV_IFACE] = &isa_fun_pio_window_ops, 209 226 }; 210 227 … … 405 422 hw_resource_t *resources = fun->hw_resources.resources; 406 423 424 isa_bus_t *isa = isa_bus(ddf_fun_get_dev(fun->fnode)); 425 407 426 if (count < ISA_MAX_HW_RES) { 408 427 resources[count].type = IO_RANGE; 409 428 resources[count].res.io_range.address = addr; 429 resources[count].res.io_range.address += isa->pio_win.io.base; 410 430 resources[count].res.io_range.size = len; 431 resources[count].res.io_range.relative = false; 411 432 resources[count].res.io_range.endianness = LITTLE_ENDIAN; 412 433 … … 604 625 static int isa_dev_add(ddf_dev_t *dev) 605 626 { 627 async_sess_t *sess; 628 int rc; 629 606 630 ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d", 607 631 (int) ddf_dev_get_handle(dev)); … … 614 638 isa->dev = dev; 615 639 list_initialize(&isa->functions); 640 641 sess = ddf_dev_parent_sess_create(dev, EXCHANGE_SERIALIZE); 642 if (sess == NULL) { 643 ddf_msg(LVL_ERROR, "isa_dev_add failed to connect to the " 644 "parent driver."); 645 return ENOENT; 646 } 647 648 rc = pio_window_get(sess, &isa->pio_win); 649 if (rc != EOK) { 650 ddf_msg(LVL_ERROR, "isa_dev_add failed to get PIO window " 651 "for the device."); 652 return rc; 653 } 616 654 617 655 /* Make the bus device more visible. Does not do anything. */
Note:
See TracChangeset
for help on using the changeset viewer.