Ignore:
File:
1 edited

Legend:

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

    r267f235 re882e3a  
    7373#define CHILD_FUN_CONF_PATH "/drv/isa/isa.dev"
    7474
     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
    7581#define ISA_MAX_HW_RES 5
    7682
     
    8995} isa_fun_t;
    9096
    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 
    10397static hw_resource_list_t *isa_get_fun_resources(ddf_fun_t *fnode)
    10498{
    105         isa_fun_t *fun = isa_fun(fnode);
     99        isa_fun_t *fun = ISA_FUN(fnode);
    106100        assert(fun != NULL);
    107101
     
    113107        /* This is an old ugly way, copied from pci driver */
    114108        assert(fnode);
    115         isa_fun_t *fun = isa_fun(fnode);
     109        isa_fun_t *isa_fun = fnode->driver_data;
    116110
    117111        sysarg_t apic;
     
    129123                return false;
    130124
    131         const hw_resource_list_t *res = &fun->hw_resources;
     125        assert(isa_fun);
     126        const hw_resource_list_t *res = &isa_fun->hw_resources;
    132127        assert(res);
    133128        for (size_t i = 0; i < res->count; ++i) {
     
    155150{
    156151        assert(fnode);
    157         isa_fun_t *fun = isa_fun(fnode);
    158         const hw_resource_list_t *res = &fun->hw_resources;
     152        isa_fun_t *isa_fun = fnode->driver_data;
     153        const hw_resource_list_t *res = &isa_fun->hw_resources;
    159154        assert(res);
    160155       
     
    206201
    207202        isa_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(isa_fun_t));
    208         if (fun == NULL) {
    209                 ddf_fun_destroy(fnode);
     203        if (fun == NULL)
    210204                return NULL;
    211         }
    212205
    213206        fibril_mutex_initialize(&fun->mutex);
     
    344337
    345338                ddf_msg(LVL_NOTE, "Added irq 0x%x to function %s", irq,
    346                     ddf_fun_get_name(fun->fnode));
     339                    fun->fnode->name);
    347340        }
    348341}
     
    360353                        fun->hw_resources.count++;
    361354                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    362                             ddf_fun_get_name(fun->fnode));
     355                            fun->fnode->name);
    363356                       
    364357                        return;
     
    371364                        fun->hw_resources.count++;
    372365                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    373                             ddf_fun_get_name(fun->fnode));
     366                            fun->fnode->name);
    374367                       
    375368                        return;
     
    377370               
    378371                ddf_msg(LVL_WARN, "Skipped dma 0x%x for function %s", dma,
    379                     ddf_fun_get_name(fun->fnode));
     372                    fun->fnode->name);
    380373        }
    381374}
     
    396389                ddf_msg(LVL_NOTE, "Added io range (addr=0x%x, size=0x%x) to "
    397390                    "function %s", (unsigned int) addr, (unsigned int) len,
    398                     ddf_fun_get_name(fun->fnode));
     391                    fun->fnode->name);
    399392        }
    400393}
     
    468461        if (val == end) {
    469462                ddf_msg(LVL_ERROR, "Cannot read match score for function "
    470                     "%s.", ddf_fun_get_name(fun->fnode));
     463                    "%s.", fun->fnode->name);
    471464                return;
    472465        }
     
    476469        if (id == NULL) {
    477470                ddf_msg(LVL_ERROR, "Cannot read match ID for function %s.",
    478                     ddf_fun_get_name(fun->fnode));
     471                    fun->fnode->name);
    479472                return;
    480473        }
    481474
    482475        ddf_msg(LVL_DEBUG, "Adding match id '%s' with score %d to "
    483             "function %s", id, score, ddf_fun_get_name(fun->fnode));
     476            "function %s", id, score, fun->fnode->name);
    484477
    485478        rc = ddf_fun_add_match_id(fun->fnode, id, score);
     
    559552
    560553        isa_fun_t *fun = isa_fun_create(isa, fun_name);
    561         free(fun_name);
    562554        if (fun == NULL) {
     555                free(fun_name);
    563556                return NULL;
    564557        }
     
    584577
    585578        /* Set device operations to the device. */
    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));
     579        fun->fnode->ops = &isa_fun_ops;
     580
     581        ddf_msg(LVL_DEBUG, "Binding function %s.", fun->fnode->name);
    589582
    590583        /* XXX Handle error */
     
    619612
    620613        ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
    621             (int) ddf_dev_get_handle(dev));
     614            (int) dev->handle);
    622615
    623616        isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
     
    657650static int isa_dev_remove(ddf_dev_t *dev)
    658651{
    659         isa_bus_t *isa = isa_bus(dev);
     652        isa_bus_t *isa = ISA_BUS(dev);
    660653        int rc;
    661654
     
    669662                if (rc != EOK) {
    670663                        fibril_mutex_unlock(&isa->mutex);
    671                         ddf_msg(LVL_ERROR, "Failed offlining %s", ddf_fun_get_name(fun->fnode));
     664                        ddf_msg(LVL_ERROR, "Failed offlining %s", fun->fnode->name);
    672665                        return rc;
    673666                }
     
    676669                if (rc != EOK) {
    677670                        fibril_mutex_unlock(&isa->mutex);
    678                         ddf_msg(LVL_ERROR, "Failed unbinding %s", ddf_fun_get_name(fun->fnode));
     671                        ddf_msg(LVL_ERROR, "Failed unbinding %s", fun->fnode->name);
    679672                        return rc;
    680673                }
     
    712705static void isa_init()
    713706{
    714         ddf_log_init(NAME);
     707        ddf_log_init(NAME, LVL_ERROR);
    715708        isa_fun_ops.interfaces[HW_RES_DEV_IFACE] = &isa_fun_hw_res_ops;
    716709}
Note: See TracChangeset for help on using the changeset viewer.