Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/infrastructure/rootmac/rootmac.c

    r56fd7cf r9d58539  
    4444#define NAME  "rootmac"
    4545
     46/** Obtain function soft-state from DDF function node */
     47#define ROOTMAC_FUN(fnode) \
     48        ((rootmac_fun_t *) (fnode)->driver_data)
     49
    4650typedef struct {
    4751        hw_resource_list_t hw_resources;
    4852} rootmac_fun_t;
    4953
    50 static hw_resource_t pci_conf_regs[] = {
    51         {
    52                 .type = IO_RANGE,
    53                 .res.io_range = {
    54                         .address = 0xfec00000,
    55                         .size = 4,
    56                         .endianness = LITTLE_ENDIAN
    57                 }
    58         },
    59         {
    60                 .type = IO_RANGE,
    61                 .res.io_range = {
    62                         .address = 0xfee00000,
    63                         .size = 4,
    64                         .endianness = LITTLE_ENDIAN
    65                 }
     54static hw_resource_t pci_conf_regs = {
     55        .type = IO_RANGE,
     56        .res.io_range = {
     57                .address = 0xCF8,
     58                .size = 8,
     59                .endianness = LITTLE_ENDIAN
    6660        }
    6761};
     
    6963static rootmac_fun_t pci_data = {
    7064        .hw_resources = {
    71                 2,
    72                 pci_conf_regs
     65                1,
     66                &pci_conf_regs
    7367        }
    7468};
     
    7670static ddf_dev_ops_t rootmac_fun_ops;
    7771
    78 /** Obtain function soft-state from DDF function node */
    79 static rootmac_fun_t *rootmac_fun(ddf_fun_t *fnode)
    80 {
    81         return ddf_fun_data_get(fnode);
    82 }
    83 
    8472static bool rootmac_add_fun(ddf_dev_t *dev, const char *name,
    85     const char *str_match_id, rootmac_fun_t *fun_proto)
     73    const char *str_match_id, rootmac_fun_t *fun)
    8674{
    8775        ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name);
    8876       
    8977        ddf_fun_t *fnode = NULL;
    90         int rc;
     78        match_id_t *match_id = NULL;
    9179       
    9280        /* Create new device. */
     
    9583                goto failure;
    9684       
    97         rootmac_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootmac_fun_t));
    98         *fun = *fun_proto;
     85        fnode->driver_data = fun;
    9986       
    100         /* Add match ID */
    101         rc = ddf_fun_add_match_id(fnode, str_match_id, 100);
    102         if (rc != EOK)
     87        /* Initialize match id list */
     88        match_id = create_match_id();
     89        if (match_id == NULL)
    10390                goto failure;
    10491       
     92        match_id->id = str_match_id;
     93        match_id->score = 100;
     94        add_match_id(&fnode->match_ids, match_id);
     95       
    10596        /* Set provided operations to the device. */
    106         ddf_fun_set_ops(fnode, &rootmac_fun_ops);
     97        fnode->ops = &rootmac_fun_ops;
    10798       
    10899        /* Register function. */
     
    115106       
    116107failure:
     108        if (match_id != NULL)
     109                match_id->id = NULL;
     110       
    117111        if (fnode != NULL)
    118112                ddf_fun_destroy(fnode);
     
    133127static int rootmac_dev_add(ddf_dev_t *dev)
    134128{
    135 #if 0
    136129        /* Register functions */
    137         if (!rootmac_add_fun(dev, "pci0", "intel_pci", &pci_data))
     130        if (!rootmac_add_fun(dev, "pci0", "pangea_pci", &pci_data))
    138131                ddf_msg(LVL_ERROR, "Failed to add functions for Mac platform.");
    139 #else
    140         (void)pci_data;
    141         (void)rootmac_add_fun;
    142 #endif
    143132       
    144133        return EOK;
     
    158147static hw_resource_list_t *rootmac_get_resources(ddf_fun_t *fnode)
    159148{
    160         rootmac_fun_t *fun = rootmac_fun(fnode);
     149        rootmac_fun_t *fun = ROOTMAC_FUN(fnode);
    161150        assert(fun != NULL);
    162151       
Note: See TracChangeset for help on using the changeset viewer.