Ignore:
Timestamp:
2012-11-06T21:03:44Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
338810f
Parents:
de73242 (diff), 94795812 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

File:
1 edited

Legend:

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

    rde73242 refdfebc  
    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 
    5046typedef struct {
    5147        hw_resource_list_t hw_resources;
    5248} rootmac_fun_t;
    5349
    54 static hw_resource_t pci_conf_regs = {
    55         .type = IO_RANGE,
    56         .res.io_range = {
    57                 .address = 0xCF8,
    58                 .size = 8,
    59                 .endianness = LITTLE_ENDIAN
     50static 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                }
    6066        }
    6167};
     
    6369static rootmac_fun_t pci_data = {
    6470        .hw_resources = {
    65                 1,
    66                 &pci_conf_regs
     71                2,
     72                pci_conf_regs
    6773        }
    6874};
     
    7076static ddf_dev_ops_t rootmac_fun_ops;
    7177
     78/** Obtain function soft-state from DDF function node */
     79static rootmac_fun_t *rootmac_fun(ddf_fun_t *fnode)
     80{
     81        return ddf_fun_data_get(fnode);
     82}
     83
    7284static bool rootmac_add_fun(ddf_dev_t *dev, const char *name,
    73     const char *str_match_id, rootmac_fun_t *fun)
     85    const char *str_match_id, rootmac_fun_t *fun_proto)
    7486{
    7587        ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name);
    7688       
    7789        ddf_fun_t *fnode = NULL;
    78         match_id_t *match_id = NULL;
     90        int rc;
    7991       
    8092        /* Create new device. */
     
    8395                goto failure;
    8496       
    85         fnode->driver_data = fun;
     97        rootmac_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootmac_fun_t));
     98        *fun = *fun_proto;
    8699       
    87         /* Initialize match id list */
    88         match_id = create_match_id();
    89         if (match_id == NULL)
     100        /* Add match ID */
     101        rc = ddf_fun_add_match_id(fnode, str_match_id, 100);
     102        if (rc != EOK)
    90103                goto failure;
    91104       
    92         match_id->id = str_match_id;
    93         match_id->score = 100;
    94         add_match_id(&fnode->match_ids, match_id);
    95        
    96105        /* Set provided operations to the device. */
    97         fnode->ops = &rootmac_fun_ops;
     106        ddf_fun_set_ops(fnode, &rootmac_fun_ops);
    98107       
    99108        /* Register function. */
     
    106115       
    107116failure:
    108         if (match_id != NULL)
    109                 match_id->id = NULL;
    110        
    111117        if (fnode != NULL)
    112118                ddf_fun_destroy(fnode);
     
    127133static int rootmac_dev_add(ddf_dev_t *dev)
    128134{
     135#if 0
    129136        /* Register functions */
    130         if (!rootmac_add_fun(dev, "pci0", "pangea_pci", &pci_data))
     137        if (!rootmac_add_fun(dev, "pci0", "intel_pci", &pci_data))
    131138                ddf_msg(LVL_ERROR, "Failed to add functions for Mac platform.");
     139#else
     140        (void)pci_data;
     141        (void)rootmac_add_fun;
     142#endif
    132143       
    133144        return EOK;
     
    147158static hw_resource_list_t *rootmac_get_resources(ddf_fun_t *fnode)
    148159{
    149         rootmac_fun_t *fun = ROOTMAC_FUN(fnode);
     160        rootmac_fun_t *fun = rootmac_fun(fnode);
    150161        assert(fun != NULL);
    151162       
     
    168179{
    169180        printf("%s: HelenOS Mac platform driver\n", NAME);
    170         ddf_log_init(NAME, LVL_ERROR);
     181        ddf_log_init(NAME);
    171182        rootmac_fun_ops.interfaces[HW_RES_DEV_IFACE] = &fun_hw_res_ops;
    172183        return ddf_driver_main(&rootmac_driver);
Note: See TracChangeset for help on using the changeset viewer.