Changes in uspace/drv/bus/usb/uhci/res.c [7de1988c:8d40181] in mainline
- File:
-
- 1 edited
-
uspace/drv/bus/usb/uhci/res.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/res.c
r7de1988c r8d40181 43 43 #include "res.h" 44 44 45 /** Get I/O address of registers and IRQ for given device.46 *47 * @param[in] dev Device asking for the addresses.48 * @param[out] io_regs_p Pointer to register I/O range.49 * @param[out] irq_no IRQ assigned to the device.50 * @return Error code.51 */52 int get_my_registers(ddf_dev_t *dev, addr_range_t *io_regs_p, int *irq_no)53 {54 assert(dev);55 56 async_sess_t *parent_sess =57 devman_parent_device_connect(EXCHANGE_SERIALIZE,58 ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING);59 if (!parent_sess)60 return ENOMEM;61 62 hw_res_list_parsed_t hw_res;63 hw_res_list_parsed_init(&hw_res);64 const int ret = hw_res_get_list_parsed(parent_sess, &hw_res, 0);65 async_hangup(parent_sess);66 if (ret != EOK) {67 return ret;68 }69 70 /* We want one irq and one io range. */71 if (hw_res.irqs.count != 1 || hw_res.io_ranges.count != 1) {72 hw_res_list_parsed_clean(&hw_res);73 return EINVAL;74 }75 76 if (io_regs_p)77 *io_regs_p = hw_res.io_ranges.ranges[0];78 if (irq_no)79 *irq_no = hw_res.irqs.irqs[0];80 81 hw_res_list_parsed_clean(&hw_res);82 return EOK;83 }84 85 /** Call the PCI driver with a request to enable interrupts86 *87 * @param[in] device Device asking for interrupts88 * @return Error code.89 */90 int enable_interrupts(ddf_dev_t *device)91 {92 async_sess_t *parent_sess =93 devman_parent_device_connect(EXCHANGE_SERIALIZE,94 ddf_dev_get_handle(device), IPC_FLAG_BLOCKING);95 if (!parent_sess)96 return ENOMEM;97 98 const bool enabled = hw_res_enable_interrupt(parent_sess);99 async_hangup(parent_sess);100 101 return enabled ? EOK : EIO;102 }103 104 45 /** Call the PCI driver with a request to clear legacy support register 105 46 *
Note:
See TracChangeset
for help on using the changeset viewer.
