Changes in uspace/drv/bus/isa/isa.c [9e470c0:301032a] in mainline
- File:
-
- 1 edited
-
uspace/drv/bus/isa/isa.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/isa/isa.c
r9e470c0 r301032a 65 65 #include <ddf/log.h> 66 66 #include <ops/hw_res.h> 67 #include <ops/pio_window.h>68 67 69 68 #include <device/hw_res.h> 70 #include <device/pio_window.h>71 69 72 70 #include "i8237.h" … … 81 79 ddf_dev_t *dev; 82 80 ddf_fun_t *fctl; 83 pio_window_t pio_win;84 81 list_t functions; 85 82 } isa_bus_t; … … 105 102 } 106 103 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;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; 113 110 } 114 111 … … 117 114 /* This is an old ugly way, copied from pci driver */ 118 115 assert(fnode); 119 isa_fun_t * fun= isa_fun(fnode);120 assert( fun);116 isa_fun_t *isa = isa_fun(fnode); 117 assert(isa); 121 118 122 119 sysarg_t apic; … … 134 131 return false; 135 132 136 const hw_resource_list_t *res = & fun->hw_resources;133 const hw_resource_list_t *res = &isa->hw_resources; 137 134 assert(res); 138 135 for (size_t i = 0; i < res->count; ++i) { … … 160 157 { 161 158 assert(fnode); 162 isa_fun_t * fun= isa_fun(fnode);163 assert( fun);164 const hw_resource_list_t *res = & fun->hw_resources;159 isa_fun_t *isa = isa_fun(fnode); 160 assert(isa); 161 const hw_resource_list_t *res = &isa->hw_resources; 165 162 assert(res); 166 163 … … 183 180 assert(size); 184 181 assert(fnode); 185 isa_fun_t * fun= isa_fun(fnode);186 assert( fun);187 const hw_resource_list_t *res = & fun->hw_resources;182 isa_fun_t *isa = isa_fun(fnode); 183 assert(isa); 184 const hw_resource_list_t *res = &isa->hw_resources; 188 185 assert(res); 189 186 … … 202 199 203 200 static hw_res_ops_t isa_fun_hw_res_ops = { 204 .get_resource_list = isa_ fun_get_resources,201 .get_resource_list = isa_get_fun_resources, 205 202 .enable_interrupt = isa_fun_enable_interrupt, 206 203 .dma_channel_setup = isa_fun_setup_dma, … … 208 205 }; 209 206 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_window221 };222 223 207 static ddf_dev_ops_t isa_fun_ops= { 224 208 .interfaces[HW_RES_DEV_IFACE] = &isa_fun_hw_res_ops, 225 .interfaces[PIO_WINDOW_DEV_IFACE] = &isa_fun_pio_window_ops,226 209 }; 227 210 … … 422 405 hw_resource_t *resources = fun->hw_resources.resources; 423 406 424 isa_bus_t *isa = isa_bus(ddf_fun_get_dev(fun->fnode));425 426 407 if (count < ISA_MAX_HW_RES) { 427 408 resources[count].type = IO_RANGE; 428 409 resources[count].res.io_range.address = addr; 429 resources[count].res.io_range.address += isa->pio_win.io.base;430 410 resources[count].res.io_range.size = len; 431 resources[count].res.io_range.relative = false;432 411 resources[count].res.io_range.endianness = LITTLE_ENDIAN; 433 412 … … 625 604 static int isa_dev_add(ddf_dev_t *dev) 626 605 { 627 async_sess_t *sess;628 int rc;629 630 606 ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d", 631 607 (int) ddf_dev_get_handle(dev)); … … 638 614 isa->dev = dev; 639 615 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 }654 616 655 617 /* Make the bus device more visible. Does not do anything. */
Note:
See TracChangeset
for help on using the changeset viewer.
