Changes in uspace/lib/c/generic/ddi.c [8049b79:8442d10] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ddi.c
r8049b79 r8442d10 42 42 #include <ddi.h> 43 43 #include <libarch/ddi.h> 44 #include <device/hw_res.h>45 #include <device/hw_res_parsed.h>46 #include <device/pio_window.h>47 44 #include <libc.h> 48 45 #include <task.h> … … 137 134 138 135 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 be154 * 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);191 136 } 192 137
Note:
See TracChangeset
for help on using the changeset viewer.