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