Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhci/res.c

    r7de1988c r8d40181  
    4343#include "res.h"
    4444
    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 interrupts
    86  *
    87  * @param[in] device Device asking for interrupts
    88  * @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 
    10445/** Call the PCI driver with a request to clear legacy support register
    10546 *
Note: See TracChangeset for help on using the changeset viewer.