Changes in uspace/drv/bus/usb/uhci/uhci.c [8b54fe6:d57122c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/uhci.c
r8b54fe6 rd57122c 89 89 }; 90 90 /*----------------------------------------------------------------------------*/ 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 /*----------------------------------------------------------------------------*/116 91 /** Gets handle of the respective hc. 117 92 * … … 134 109 static usb_iface_t usb_iface = { 135 110 .get_hc_handle = usb_iface_get_hc_handle, 136 .get_address = usb_iface_get_address137 111 }; 138 112 /*----------------------------------------------------------------------------*/ … … 174 148 int device_setup_uhci(ddf_dev_t *device) 175 149 { 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)); 178 154 if (instance == NULL) { 179 155 usb_log_error("Failed to allocate OHCI driver.\n"); … … 184 160 if (ret != EOK) { \ 185 161 if (instance->hc_fun) \ 186 instance->hc_fun->ops = NULL; \187 162 instance->hc_fun->driver_data = NULL; \ 188 163 ddf_fun_destroy(instance->hc_fun); \ 189 164 if (instance->rh_fun) {\ 190 instance->rh_fun->ops = NULL; \191 165 instance->rh_fun->driver_data = NULL; \ 192 166 ddf_fun_destroy(instance->rh_fun); \ 193 167 } \ 194 device->driver_data = NULL; \195 168 usb_log_error(message); \ 196 169 return ret; \ … … 225 198 "Failed to disable legacy USB: %s.\n", str_error(ret)); 226 199 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); 231 206 CHECK_RET_DEST_FREE_RETURN(ret, 232 207 "Failed to generate IRQ commands: %s.\n", str_error(ret)); 233 208 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 }; 235 215 236 216 /* Register handler to avoid interrupt lockup */ … … 253 233 "Failed to init uhci_hcd: %s.\n", str_error(ret)); 254 234 255 device->driver_data = instance;256 257 235 #define CHECK_RET_FINI_RETURN(ret, message...) \ 258 236 if (ret != EOK) { \
Note:
See TracChangeset
for help on using the changeset viewer.