Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/ddi.c

    r8049b79 r8442d10  
    4242#include <ddi.h>
    4343#include <libarch/ddi.h>
    44 #include <device/hw_res.h>
    45 #include <device/hw_res_parsed.h>
    46 #include <device/pio_window.h>
    4744#include <libc.h>
    4845#include <task.h>
     
    137134       
    138135        return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg);
    139 }
    140 
    141 /** Enable PIO for specified address range.
    142  *
    143  * @param range I/O range to be enable.
    144  * @param virt  Virtual address for application's PIO operations.
    145  */
    146 int pio_enable_range(addr_range_t *range, void **virt)
    147 {
    148         return pio_enable(RNGABSPTR(*range), RNGSZ(*range), virt);
    149 }
    150 
    151 /** Enable PIO for specified HW resource wrt. to the PIO window.
    152  *
    153  * @param win      PIO window. May be NULL if the resources are known to be
    154  *                 absolute.
    155  * @param res      Resources specifying the I/O range wrt. to the PIO window.
    156  * @param virt     Virtual address for application's PIO operations.
    157  *
    158  * @return EOK on success.
    159  * @return Negative error code on failure.
    160  *
    161  */
    162 int pio_enable_resource(pio_window_t *win, hw_resource_t *res, void **virt)
    163 {
    164         uintptr_t addr;
    165         size_t size;
    166 
    167         switch (res->type) {
    168         case IO_RANGE:
    169                 addr = res->res.io_range.address;
    170                 if (res->res.io_range.relative) {
    171                         if (!win)
    172                                 return EINVAL;
    173                         addr += win->io.base;
    174                 }
    175                 size = res->res.io_range.size;
    176                 break;
    177         case MEM_RANGE:
    178                 addr = res->res.mem_range.address;
    179                 if (res->res.mem_range.relative) {
    180                         if (!win)
    181                                 return EINVAL;
    182                         addr += win->mem.base;
    183                 }
    184                 size = res->res.mem_range.size;
    185                 break;
    186         default:
    187                 return EINVAL;
    188         }
    189 
    190         return pio_enable((void *) addr, size, virt);   
    191136}
    192137
Note: See TracChangeset for help on using the changeset viewer.