Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 56fd7cf in mainline for uspace/drv/bus/isa/isa.c


Ignore:
Timestamp:
2012-08-17T11:37:03Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master
Children:
1d5a540
Parents:
be2a38ad
Message:

Make ddf_dev_t and ddf_fun_t opaque. This further tighthens the DDF interface.

File:
1 edited

Legend:

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

    rbe2a38ad r56fd7cf  
    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 
    8175#define ISA_MAX_HW_RES 5
    8276
     
    9589} isa_fun_t;
    9690
     91/** Obtain soft-state from device node */
     92static 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 */
     98static isa_fun_t *isa_fun(ddf_fun_t *fun)
     99{
     100        return ddf_fun_data_get(fun);
     101}
     102
    97103static hw_resource_list_t *isa_get_fun_resources(ddf_fun_t *fnode)
    98104{
    99         isa_fun_t *fun = ISA_FUN(fnode);
     105        isa_fun_t *fun = isa_fun(fnode);
    100106        assert(fun != NULL);
    101107
     
    107113        /* This is an old ugly way, copied from pci driver */
    108114        assert(fnode);
    109         isa_fun_t *isa_fun = fnode->driver_data;
     115        isa_fun_t *fun = isa_fun(fnode);
    110116
    111117        sysarg_t apic;
     
    123129                return false;
    124130
    125         assert(isa_fun);
    126         const hw_resource_list_t *res = &isa_fun->hw_resources;
     131        const hw_resource_list_t *res = &fun->hw_resources;
    127132        assert(res);
    128133        for (size_t i = 0; i < res->count; ++i) {
     
    150155{
    151156        assert(fnode);
    152         isa_fun_t *isa_fun = fnode->driver_data;
    153         const hw_resource_list_t *res = &isa_fun->hw_resources;
     157        isa_fun_t *fun = isa_fun(fnode);
     158        const hw_resource_list_t *res = &fun->hw_resources;
    154159        assert(res);
    155160       
     
    339344
    340345                ddf_msg(LVL_NOTE, "Added irq 0x%x to function %s", irq,
    341                     fun->fnode->name);
     346                    ddf_fun_get_name(fun->fnode));
    342347        }
    343348}
     
    355360                        fun->hw_resources.count++;
    356361                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    357                             fun->fnode->name);
     362                            ddf_fun_get_name(fun->fnode));
    358363                       
    359364                        return;
     
    366371                        fun->hw_resources.count++;
    367372                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    368                             fun->fnode->name);
     373                            ddf_fun_get_name(fun->fnode));
    369374                       
    370375                        return;
     
    372377               
    373378                ddf_msg(LVL_WARN, "Skipped dma 0x%x for function %s", dma,
    374                     fun->fnode->name);
     379                    ddf_fun_get_name(fun->fnode));
    375380        }
    376381}
     
    391396                ddf_msg(LVL_NOTE, "Added io range (addr=0x%x, size=0x%x) to "
    392397                    "function %s", (unsigned int) addr, (unsigned int) len,
    393                     fun->fnode->name);
     398                    ddf_fun_get_name(fun->fnode));
    394399        }
    395400}
     
    463468        if (val == end) {
    464469                ddf_msg(LVL_ERROR, "Cannot read match score for function "
    465                     "%s.", fun->fnode->name);
     470                    "%s.", ddf_fun_get_name(fun->fnode));
    466471                return;
    467472        }
     
    471476        if (id == NULL) {
    472477                ddf_msg(LVL_ERROR, "Cannot read match ID for function %s.",
    473                     fun->fnode->name);
     478                    ddf_fun_get_name(fun->fnode));
    474479                return;
    475480        }
    476481
    477482        ddf_msg(LVL_DEBUG, "Adding match id '%s' with score %d to "
    478             "function %s", id, score, fun->fnode->name);
     483            "function %s", id, score, ddf_fun_get_name(fun->fnode));
    479484
    480485        rc = ddf_fun_add_match_id(fun->fnode, id, score);
     
    579584
    580585        /* Set device operations to the device. */
    581         fun->fnode->ops = &isa_fun_ops;
    582 
    583         ddf_msg(LVL_DEBUG, "Binding function %s.", fun->fnode->name);
     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));
    584589
    585590        /* XXX Handle error */
     
    614619
    615620        ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
    616             (int) dev->handle);
     621            (int) ddf_dev_get_handle(dev));
    617622
    618623        isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
     
    652657static int isa_dev_remove(ddf_dev_t *dev)
    653658{
    654         isa_bus_t *isa = ISA_BUS(dev);
     659        isa_bus_t *isa = isa_bus(dev);
    655660        int rc;
    656661
     
    664669                if (rc != EOK) {
    665670                        fibril_mutex_unlock(&isa->mutex);
    666                         ddf_msg(LVL_ERROR, "Failed offlining %s", fun->fnode->name);
     671                        ddf_msg(LVL_ERROR, "Failed offlining %s", ddf_fun_get_name(fun->fnode));
    667672                        return rc;
    668673                }
     
    671676                if (rc != EOK) {
    672677                        fibril_mutex_unlock(&isa->mutex);
    673                         ddf_msg(LVL_ERROR, "Failed unbinding %s", fun->fnode->name);
     678                        ddf_msg(LVL_ERROR, "Failed unbinding %s", ddf_fun_get_name(fun->fnode));
    674679                        return rc;
    675680                }
Note: See TracChangeset for help on using the changeset viewer.