Changes in uspace/drv/bus/usb/ohci/ohci.c [44c1a48:27ed734c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ohci/ohci.c
r44c1a48 r27ed734c 42 42 43 43 #include "ohci.h" 44 #include " res.h"44 #include "pci.h" 45 45 #include "hc.h" 46 46 … … 140 140 int device_setup_ohci(ddf_dev_t *device) 141 141 { 142 if (device == NULL) 143 return EBADMEM; 144 145 ohci_t *instance = ddf_dev_data_alloc(device,sizeof(ohci_t)); 142 assert(device); 143 144 ohci_t *instance = malloc(sizeof(ohci_t)); 146 145 if (instance == NULL) { 147 146 usb_log_error("Failed to allocate OHCI driver.\n"); 148 147 return ENOMEM; 149 148 } 149 instance->rh_fun = NULL; 150 instance->hc_fun = NULL; 150 151 151 152 #define CHECK_RET_DEST_FREE_RETURN(ret, message...) \ 152 153 if (ret != EOK) { \ 153 154 if (instance->hc_fun) { \ 154 instance->hc_fun->driver_data = NULL; \155 155 ddf_fun_destroy(instance->hc_fun); \ 156 156 } \ 157 157 if (instance->rh_fun) { \ 158 instance->rh_fun->driver_data = NULL; \159 158 ddf_fun_destroy(instance->rh_fun); \ 160 159 } \ 160 free(instance); \ 161 161 usb_log_error(message); \ 162 162 return ret; \ … … 180 180 int irq = 0; 181 181 182 ret = get_my_registers(device, ®_base, ®_size, &irq);182 ret = pci_get_my_registers(device, ®_base, ®_size, &irq); 183 183 CHECK_RET_DEST_FREE_RETURN(ret, 184 184 "Failed to get register memory addresses for %" PRIun ": %s.\n", … … 187 187 (void *) reg_base, reg_size, irq); 188 188 189 const size_t ranges_count = hc_irq_pio_range_count(); 190 const size_t cmds_count = hc_irq_cmd_count(); 191 irq_pio_range_t irq_ranges[ranges_count]; 192 irq_cmd_t irq_cmds[cmds_count]; 193 irq_code_t irq_code = { 194 .rangecount = ranges_count, 195 .ranges = irq_ranges, 196 .cmdcount = cmds_count, 197 .cmds = irq_cmds 198 }; 199 200 ret = hc_get_irq_code(irq_ranges, sizeof(irq_ranges), irq_cmds, 201 sizeof(irq_cmds), reg_base, reg_size); 202 CHECK_RET_DEST_FREE_RETURN(ret, 203 "Failed to generate IRQ code: %s.\n", str_error(ret)); 189 const size_t cmd_count = hc_irq_cmd_count(); 190 irq_cmd_t irq_cmds[cmd_count]; 191 irq_code_t irq_code = { .cmdcount = cmd_count, .cmds = irq_cmds }; 192 193 ret = 194 hc_get_irq_commands(irq_cmds, sizeof(irq_cmds), reg_base, reg_size); 195 CHECK_RET_DEST_FREE_RETURN(ret, 196 "Failed to generate IRQ commands: %s.\n", str_error(ret)); 204 197 205 198 … … 211 204 /* Try to enable interrupts */ 212 205 bool interrupts = false; 213 ret = enable_interrupts(device);206 ret = pci_enable_interrupts(device); 214 207 if (ret != EOK) { 215 208 usb_log_warning("Failed to enable interrupts: %s." … … 226 219 "Failed to init ohci_hcd: %s.\n", str_error(ret)); 227 220 221 device->driver_data = instance; 222 228 223 #define CHECK_RET_FINI_RETURN(ret, message...) \ 229 224 if (ret != EOK) { \
Note:
See TracChangeset
for help on using the changeset viewer.