Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/isa/isa.c

    r9e470c0 r301032a  
    6565#include <ddf/log.h>
    6666#include <ops/hw_res.h>
    67 #include <ops/pio_window.h>
    6867
    6968#include <device/hw_res.h>
    70 #include <device/pio_window.h>
    7169
    7270#include "i8237.h"
     
    8179        ddf_dev_t *dev;
    8280        ddf_fun_t *fctl;
    83         pio_window_t pio_win;
    8481        list_t functions;
    8582} isa_bus_t;
     
    105102}
    106103
    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;
     104static 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;
    113110}
    114111
     
    117114        /* This is an old ugly way, copied from pci driver */
    118115        assert(fnode);
    119         isa_fun_t *fun = isa_fun(fnode);
    120         assert(fun);
     116        isa_fun_t *isa = isa_fun(fnode);
     117        assert(isa);
    121118
    122119        sysarg_t apic;
     
    134131                return false;
    135132
    136         const hw_resource_list_t *res = &fun->hw_resources;
     133        const hw_resource_list_t *res = &isa->hw_resources;
    137134        assert(res);
    138135        for (size_t i = 0; i < res->count; ++i) {
     
    160157{
    161158        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;
    165162        assert(res);
    166163
     
    183180        assert(size);
    184181        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;
    188185        assert(res);
    189186
     
    202199
    203200static 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,
    205202        .enable_interrupt = isa_fun_enable_interrupt,
    206203        .dma_channel_setup = isa_fun_setup_dma,
     
    208205};
    209206
    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 
    223207static ddf_dev_ops_t isa_fun_ops= {
    224208        .interfaces[HW_RES_DEV_IFACE] = &isa_fun_hw_res_ops,
    225         .interfaces[PIO_WINDOW_DEV_IFACE] = &isa_fun_pio_window_ops,
    226209};
    227210
     
    422405        hw_resource_t *resources = fun->hw_resources.resources;
    423406
    424         isa_bus_t *isa = isa_bus(ddf_fun_get_dev(fun->fnode));
    425 
    426407        if (count < ISA_MAX_HW_RES) {
    427408                resources[count].type = IO_RANGE;
    428409                resources[count].res.io_range.address = addr;
    429                 resources[count].res.io_range.address += isa->pio_win.io.base;
    430410                resources[count].res.io_range.size = len;
    431                 resources[count].res.io_range.relative = false;
    432411                resources[count].res.io_range.endianness = LITTLE_ENDIAN;
    433412
     
    625604static int isa_dev_add(ddf_dev_t *dev)
    626605{
    627         async_sess_t *sess;
    628         int rc;
    629 
    630606        ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
    631607            (int) ddf_dev_get_handle(dev));
     
    638614        isa->dev = dev;
    639615        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         }       
    654616
    655617        /* Make the bus device more visible. Does not do anything. */
Note: See TracChangeset for help on using the changeset viewer.