Changes in uspace/drv/bus/usb/uhci/hc.c [7de1988c:d930980] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/hc.c
r7de1988c rd930980 105 105 * @param[out] cmds Commands buffer. 106 106 * @param[in] cmds_size Size of the commands buffer (bytes). 107 * @param[in] regs Device's register range. 107 * @param[in] regs Physical address of device's registers. 108 * @param[in] reg_size Size of the register area (bytes). 108 109 * 109 110 * @return Error code. … … 111 112 int 112 113 hc_get_irq_code(irq_pio_range_t ranges[], size_t ranges_size, irq_cmd_t cmds[], 113 size_t cmds_size, addr_range_t *regs)114 size_t cmds_size, uintptr_t regs, size_t reg_size) 114 115 { 115 116 if ((ranges_size < sizeof(uhci_irq_pio_ranges)) || 116 117 (cmds_size < sizeof(uhci_irq_commands)) || 117 ( RNGSZ(*regs)< sizeof(uhci_regs_t)))118 (reg_size < sizeof(uhci_regs_t))) 118 119 return EOVERFLOW; 119 120 120 121 memcpy(ranges, uhci_irq_pio_ranges, sizeof(uhci_irq_pio_ranges)); 121 ranges[0].base = RNGABS(*regs);122 ranges[0].base = regs; 122 123 123 124 memcpy(cmds, uhci_irq_commands, sizeof(uhci_irq_commands)); 124 uhci_regs_t *registers = (uhci_regs_t *) RNGABSPTR(*regs);125 uhci_regs_t *registers = (uhci_regs_t *) regs; 125 126 cmds[0].addr = ®isters->usbsts; 126 127 cmds[3].addr = ®isters->usbsts; … … 132 133 * 133 134 * @param[in] device Host controller DDF device 134 * @param[in] regs Register range 135 * @param[in] reg_base Register range base 136 * @param[in] reg_size Register range size 135 137 * @param[in] irq Interrupt number 136 138 * @paran[in] handler Interrupt handler … … 138 140 * @return EOK on success or negative error code 139 141 */ 140 int hc_register_irq_handler(ddf_dev_t *device, addr_range_t *regs, int irq,141 int errupt_handler_t handler)142 int hc_register_irq_handler(ddf_dev_t *device, uintptr_t reg_base, size_t reg_size, 143 int irq, interrupt_handler_t handler) 142 144 { 143 145 int rc; … … 145 147 irq_cmd_t irq_cmds[hc_irq_cmd_count]; 146 148 rc = hc_get_irq_code(irq_ranges, sizeof(irq_ranges), irq_cmds, 147 sizeof(irq_cmds), reg s);149 sizeof(irq_cmds), reg_base, reg_size); 148 150 if (rc != EOK) { 149 151 usb_log_error("Failed to generate IRQ commands: %s.\n", … … 230 232 * 231 233 * @param[in] instance Memory place to initialize. 232 * @param[in] regs Range of device's I/O control registers. 234 * @param[in] regs Address of I/O control registers. 235 * @param[in] reg_size Size of I/O control registers. 233 236 * @param[in] interrupts True if hw interrupts should be used. 234 237 * @return Error code. … … 238 241 * interrupt fibrils. 239 242 */ 240 int hc_init(hc_t *instance, addr_range_t *regs, bool interrupts)241 { 242 assert(reg s->size >= sizeof(uhci_regs_t));243 int hc_init(hc_t *instance, void *regs, size_t reg_size, bool interrupts) 244 { 245 assert(reg_size >= sizeof(uhci_regs_t)); 243 246 int rc; 244 247 … … 248 251 /* allow access to hc control registers */ 249 252 uhci_regs_t *io; 250 rc = pio_enable _range(regs, (void **)&io);253 rc = pio_enable(regs, reg_size, (void **)&io); 251 254 if (rc != EOK) { 252 255 usb_log_error("Failed to gain access to registers at %p: %s.\n", … … 257 260 instance->registers = io; 258 261 usb_log_debug( 259 "Device registers at %p (%zuB) accessible.\n", io, reg s->size);262 "Device registers at %p (%zuB) accessible.\n", io, reg_size); 260 263 261 264 rc = hc_init_mem_structures(instance);
Note:
See TracChangeset
for help on using the changeset viewer.