Changes in uspace/lib/c/generic/ddi.c [8049b79:b5c2f56] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ddi.c
r8049b79 rb5c2f56 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> … … 79 76 * 80 77 */ 81 int physmem_map( uintptr_tphys, size_t pages, unsigned int flags, void **virt)78 int physmem_map(void *phys, size_t pages, unsigned int flags, void **virt) 82 79 { 83 80 return __SYSCALL5(SYS_PHYSMEM_MAP, (sysarg_t) phys, … … 86 83 87 84 int dmamem_map(void *virt, size_t size, unsigned int map_flags, 88 unsigned int flags, uintptr_t*phys)85 unsigned int flags, void **phys) 89 86 { 90 87 return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size, … … 93 90 } 94 91 95 int dmamem_map_anonymous(size_t size, uintptr_t constraint, 96 unsigned int map_flags, unsigned int flags, uintptr_t *phys, void **virt) 97 { 98 *phys = constraint; 99 92 int dmamem_map_anonymous(size_t size, unsigned int map_flags, 93 unsigned int flags, void **phys, void **virt) 94 { 100 95 return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size, 101 96 (sysarg_t) map_flags, (sysarg_t) flags | DMAMEM_FLAGS_ANONYMOUS, … … 137 132 138 133 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 134 } 192 135 … … 215 158 if (!virt) 216 159 return EINVAL; 217 218 uintptr_tphys_frame =219 ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE);220 size_t offset = (uintptr_t)pio_addr - phys_frame;160 161 void *phys_frame = 162 (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); 163 size_t offset = pio_addr - phys_frame; 221 164 size_t pages = SIZE2PAGES(offset + size); 222 165
Note:
See TracChangeset
for help on using the changeset viewer.