Ignore:
File:
1 edited

Legend:

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

    r8b54fe6 rd57122c  
    8989};
    9090/*----------------------------------------------------------------------------*/
    91 /** Get address of the device identified by handle.
    92  *
    93  * @param[in] fun DDF instance of the function to use.
    94  * @param[in] handle DDF handle of the driver seeking its USB address.
    95  * @param[out] address Found address.
    96  */
    97 static int usb_iface_get_address(
    98     ddf_fun_t *fun, devman_handle_t handle, usb_address_t *address)
    99 {
    100         assert(fun);
    101         usb_device_manager_t *manager =
    102             &dev_to_uhci(fun->dev)->hc.generic.dev_manager;
    103         const usb_address_t addr = usb_device_manager_find(manager, handle);
    104 
    105         if (addr < 0) {
    106                 return addr;
    107         }
    108 
    109         if (address != NULL) {
    110                 *address = addr;
    111         }
    112 
    113         return EOK;
    114 }
    115 /*----------------------------------------------------------------------------*/
    11691/** Gets handle of the respective hc.
    11792 *
     
    134109static usb_iface_t usb_iface = {
    135110        .get_hc_handle = usb_iface_get_hc_handle,
    136         .get_address = usb_iface_get_address
    137111};
    138112/*----------------------------------------------------------------------------*/
     
    174148int device_setup_uhci(ddf_dev_t *device)
    175149{
    176         assert(device);
    177         uhci_t *instance = malloc(sizeof(uhci_t));
     150        if (!device)
     151                return EBADMEM;
     152
     153        uhci_t *instance = ddf_dev_data_alloc(device, sizeof(uhci_t));
    178154        if (instance == NULL) {
    179155                usb_log_error("Failed to allocate OHCI driver.\n");
     
    184160if (ret != EOK) { \
    185161        if (instance->hc_fun) \
    186                 instance->hc_fun->ops = NULL; \
    187162                instance->hc_fun->driver_data = NULL; \
    188163                ddf_fun_destroy(instance->hc_fun); \
    189164        if (instance->rh_fun) {\
    190                 instance->rh_fun->ops = NULL; \
    191165                instance->rh_fun->driver_data = NULL; \
    192166                ddf_fun_destroy(instance->rh_fun); \
    193167        } \
    194         device->driver_data = NULL; \
    195168        usb_log_error(message); \
    196169        return ret; \
     
    225198            "Failed to disable legacy USB: %s.\n", str_error(ret));
    226199
    227         const size_t cmd_count = hc_irq_cmd_count();
    228         irq_cmd_t irq_cmds[cmd_count];
    229         ret =
    230             hc_get_irq_commands(irq_cmds, sizeof(irq_cmds), reg_base, reg_size);
     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);
    231206        CHECK_RET_DEST_FREE_RETURN(ret,
    232207            "Failed to generate IRQ commands: %s.\n", str_error(ret));
    233208
    234         irq_code_t irq_code = { .cmdcount = cmd_count, .cmds = irq_cmds };
     209        irq_code_t irq_code = {
     210                .rangecount = ranges_count,
     211                .ranges = irq_ranges,
     212                .cmdcount = cmds_count,
     213                .cmds = irq_cmds
     214        };
    235215
    236216        /* Register handler to avoid interrupt lockup */
     
    253233            "Failed to init uhci_hcd: %s.\n", str_error(ret));
    254234
    255         device->driver_data = instance;
    256 
    257235#define CHECK_RET_FINI_RETURN(ret, message...) \
    258236if (ret != EOK) { \
Note: See TracChangeset for help on using the changeset viewer.