Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhci/uhci.c

    r795448f rb500d60a  
    4141
    4242#include "uhci.h"
    43 
    44 #include "res.h"
     43#include "pci.h"
     44
    4545#include "hc.h"
    4646#include "root_hub.h"
     
    4949 * and USB root hub */
    5050typedef struct uhci {
    51         /** Pointer to DDF representation of UHCI host controller */
     51        /** Pointer to DDF represenation of UHCI host controller */
    5252        ddf_fun_t *hc_fun;
    53         /** Pointer to DDF representation of UHCI root hub */
     53        /** Pointer to DDF represenation of UHCI root hub */
    5454        ddf_fun_t *rh_fun;
    5555
    56         /** Internal driver's representation of UHCI host controller */
     56        /** Internal driver's represenation of UHCI host controller */
    5757        hc_t hc;
    58         /** Internal driver's representation of UHCI root hub */
     58        /** Internal driver's represenation of UHCI root hub */
    5959        rh_t rh;
    6060} uhci_t;
     
    148148int device_setup_uhci(ddf_dev_t *device)
    149149{
    150         if (!device)
    151                 return EBADMEM;
    152 
    153         uhci_t *instance = ddf_dev_data_alloc(device, sizeof(uhci_t));
     150        assert(device);
     151        uhci_t *instance = malloc(sizeof(uhci_t));
    154152        if (instance == NULL) {
    155153                usb_log_error("Failed to allocate OHCI driver.\n");
     
    160158if (ret != EOK) { \
    161159        if (instance->hc_fun) \
     160                instance->hc_fun->ops = NULL; \
    162161                instance->hc_fun->driver_data = NULL; \
    163162                ddf_fun_destroy(instance->hc_fun); \
    164163        if (instance->rh_fun) {\
     164                instance->rh_fun->ops = NULL; \
    165165                instance->rh_fun->driver_data = NULL; \
    166166                ddf_fun_destroy(instance->rh_fun); \
    167167        } \
     168        device->driver_data = NULL; \
    168169        usb_log_error(message); \
    169170        return ret; \
     
    187188        int irq = 0;
    188189
    189         ret = get_my_registers(device, &reg_base, &reg_size, &irq);
     190        ret = pci_get_my_registers(device, &reg_base, &reg_size, &irq);
    190191        CHECK_RET_DEST_FREE_RETURN(ret,
    191192            "Failed to get I/O addresses for %" PRIun ": %s.\n",
     
    194195            (void *) reg_base, reg_size, irq);
    195196
    196         ret = disable_legacy(device);
     197        ret = pci_disable_legacy(device);
    197198        CHECK_RET_DEST_FREE_RETURN(ret,
    198199            "Failed to disable legacy USB: %s.\n", str_error(ret));
    199200
    200         const size_t ranges_count = hc_irq_pio_range_count();
    201         const size_t cmds_count = hc_irq_cmd_count();
    202         irq_pio_range_t irq_ranges[ranges_count];
    203         irq_cmd_t irq_cmds[cmds_count];
    204         ret = hc_get_irq_code(irq_ranges, sizeof(irq_ranges), irq_cmds,
    205             sizeof(irq_cmds), reg_base, reg_size);
     201        const size_t cmd_count = hc_irq_cmd_count();
     202        irq_cmd_t irq_cmds[cmd_count];
     203        ret =
     204            hc_get_irq_commands(irq_cmds, sizeof(irq_cmds), reg_base, reg_size);
    206205        CHECK_RET_DEST_FREE_RETURN(ret,
    207206            "Failed to generate IRQ commands: %s.\n", str_error(ret));
    208207
    209         irq_code_t irq_code = {
    210                 .rangecount = ranges_count,
    211                 .ranges = irq_ranges,
    212                 .cmdcount = cmds_count,
    213                 .cmds = irq_cmds
    214         };
     208        irq_code_t irq_code = { .cmdcount = cmd_count, .cmds = irq_cmds };
    215209
    216210        /* Register handler to avoid interrupt lockup */
     
    220214
    221215        bool interrupts = false;
    222         ret = enable_interrupts(device);
     216        ret = pci_enable_interrupts(device);
    223217        if (ret != EOK) {
    224218                usb_log_warning("Failed to enable interrupts: %s."
     
    233227            "Failed to init uhci_hcd: %s.\n", str_error(ret));
    234228
     229        device->driver_data = instance;
     230
    235231#define CHECK_RET_FINI_RETURN(ret, message...) \
    236232if (ret != EOK) { \
Note: See TracChangeset for help on using the changeset viewer.