Changeset 03362fbd in mainline for uspace/drv/bus/isa/isa.c


Ignore:
Timestamp:
2013-02-09T23:14:45Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
22dfd38
Parents:
b5d2e57 (diff), 005b765 (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.

Conflict resulting from bool.h → stdbool.h move and ddf structs turning opaque.
Fails to boot to shell console.

File:
1 edited

Legend:

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

    rb5d2e57 r03362fbd  
    4242#include <stdio.h>
    4343#include <errno.h>
    44 #include <bool.h>
     44#include <stdbool.h>
    4545#include <fibril_synch.h>
    4646#include <stdlib.h>
     
    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
     
    9690} isa_fun_t;
    9791
    98 static hw_resource_list_t *isa_fun_get_resources(ddf_fun_t *fnode)
    99 {
    100         isa_fun_t *fun = ISA_FUN(fnode);
    101         assert(fun);
    102 
    103         return &fun->hw_resources;
     92/** Obtain soft-state from device node */
     93static isa_bus_t *isa_bus(ddf_dev_t *dev)
     94{
     95        return ddf_dev_data_get(dev);
     96}
     97
     98/** Obtain soft-state from function node */
     99static isa_fun_t *isa_fun(ddf_fun_t *fun)
     100{
     101        return ddf_fun_data_get(fun);
     102}
     103
     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;
    104110}
    105111
     
    108114        /* This is an old ugly way, copied from pci driver */
    109115        assert(fnode);
    110         isa_fun_t *isa_fun = ISA_FUN(fnode);
     116        isa_fun_t *isa = isa_fun(fnode);
     117        assert(isa);
    111118
    112119        sysarg_t apic;
     
    124131                return false;
    125132
    126         assert(isa_fun);
    127         const hw_resource_list_t *res = &isa_fun->hw_resources;
     133        const hw_resource_list_t *res = &isa->hw_resources;
    128134        assert(res);
    129135        for (size_t i = 0; i < res->count; ++i) {
     
    151157{
    152158        assert(fnode);
    153         isa_fun_t *isa_fun = fnode->driver_data;
    154         assert(isa_fun);
    155         const hw_resource_list_t *res = &isa_fun->hw_resources;
     159        isa_fun_t *isa = isa_fun(fnode);
     160        assert(isa);
     161        const hw_resource_list_t *res = &isa->hw_resources;
    156162        assert(res);
    157        
     163
    158164        for (size_t i = 0; i < res->count; ++i) {
    159165                /* Check for assigned channel */
     
    165171                }
    166172        }
    167        
     173
    168174        return EINVAL;
    169175}
     
    174180        assert(size);
    175181        assert(fnode);
    176         isa_fun_t *isa_fun = fnode->driver_data;
    177         assert(isa_fun);
    178         const hw_resource_list_t *res = &isa_fun->hw_resources;
     182        isa_fun_t *isa = isa_fun(fnode);
     183        assert(isa);
     184        const hw_resource_list_t *res = &isa->hw_resources;
    179185        assert(res);
    180        
     186
    181187        for (size_t i = 0; i < res->count; ++i) {
    182188                /* Check for assigned channel */
     
    188194                }
    189195        }
    190        
     196
    191197        return EINVAL;
    192198}
    193199
    194200static hw_res_ops_t isa_fun_hw_res_ops = {
    195         .get_resource_list = isa_fun_get_resources,
     201        .get_resource_list = isa_get_fun_resources,
    196202        .enable_interrupt = isa_fun_enable_interrupt,
    197203        .dma_channel_setup = isa_fun_setup_dma,
     
    357363
    358364                ddf_msg(LVL_NOTE, "Added irq 0x%x to function %s", irq,
    359                     fun->fnode->name);
     365                    ddf_fun_get_name(fun->fnode));
    360366        }
    361367}
     
    373379                        fun->hw_resources.count++;
    374380                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    375                             fun->fnode->name);
     381                            ddf_fun_get_name(fun->fnode));
    376382                       
    377383                        return;
     
    384390                        fun->hw_resources.count++;
    385391                        ddf_msg(LVL_NOTE, "Added dma 0x%x to function %s", dma,
    386                             fun->fnode->name);
     392                            ddf_fun_get_name(fun->fnode));
    387393                       
    388394                        return;
     
    390396               
    391397                ddf_msg(LVL_WARN, "Skipped dma 0x%x for function %s", dma,
    392                     fun->fnode->name);
     398                    ddf_fun_get_name(fun->fnode));
    393399        }
    394400}
     
    409415                ddf_msg(LVL_NOTE, "Added io range (addr=0x%x, size=0x%x) to "
    410416                    "function %s", (unsigned int) addr, (unsigned int) len,
    411                     fun->fnode->name);
     417                    ddf_fun_get_name(fun->fnode));
    412418        }
    413419}
     
    478484        if (val == end) {
    479485                ddf_msg(LVL_ERROR, "Cannot read match score for function "
    480                     "%s.", fun->fnode->name);
     486                    "%s.", ddf_fun_get_name(fun->fnode));
    481487                return;
    482488        }
     
    486492        if (id == NULL) {
    487493                ddf_msg(LVL_ERROR, "Cannot read match ID for function %s.",
    488                     fun->fnode->name);
     494                    ddf_fun_get_name(fun->fnode));
    489495                return;
    490496        }
    491497
    492498        ddf_msg(LVL_DEBUG, "Adding match id '%s' with score %d to "
    493             "function %s", id, score, fun->fnode->name);
     499            "function %s", id, score, ddf_fun_get_name(fun->fnode));
    494500
    495501        int rc = ddf_fun_add_match_id(fun->fnode, id, score);
     
    575581
    576582        /* Set device operations to the device. */
    577         fun->fnode->ops = &isa_fun_ops;
    578 
    579         ddf_msg(LVL_DEBUG, "Binding function %s.", fun->fnode->name);
     583        ddf_fun_set_ops(fun->fnode, &isa_fun_ops);
     584
     585        ddf_msg(LVL_DEBUG, "Binding function %s.", ddf_fun_get_name(fun->fnode));
    580586
    581587        /* XXX Handle error */
     
    599605{
    600606        ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
    601             (int) dev->handle);
     607            (int) ddf_dev_get_handle(dev));
    602608
    603609        isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
     
    637643static int isa_dev_remove(ddf_dev_t *dev)
    638644{
    639         isa_bus_t *isa = ISA_BUS(dev);
     645        isa_bus_t *isa = isa_bus(dev);
    640646
    641647        fibril_mutex_lock(&isa->mutex);
     
    648654                if (rc != EOK) {
    649655                        fibril_mutex_unlock(&isa->mutex);
    650                         ddf_msg(LVL_ERROR, "Failed offlining %s", fun->fnode->name);
     656                        ddf_msg(LVL_ERROR, "Failed offlining %s", ddf_fun_get_name(fun->fnode));
    651657                        return rc;
    652658                }
     
    655661                if (rc != EOK) {
    656662                        fibril_mutex_unlock(&isa->mutex);
    657                         ddf_msg(LVL_ERROR, "Failed unbinding %s", fun->fnode->name);
     663                        ddf_msg(LVL_ERROR, "Failed unbinding %s", ddf_fun_get_name(fun->fnode));
    658664                        return rc;
    659665                }
     
    690696{
    691697        printf(NAME ": HelenOS ISA bus driver\n");
    692         ddf_log_init(NAME, LVL_ERROR);
     698        ddf_log_init(NAME);
    693699        return ddf_driver_main(&isa_driver);
    694700}
Note: See TracChangeset for help on using the changeset viewer.