Changeset ddd0499d in mainline for uspace/lib/c/generic/ddi.c
- Timestamp:
- 2013-09-12T22:05:13Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4285851b
- Parents:
- 695b6ff (diff), 7de1988c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ddi.c
r695b6ff rddd0499d 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> 44 47 #include <libc.h> 45 48 #include <task.h> … … 134 137 135 138 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); 136 191 } 137 192
Note:
See TracChangeset
for help on using the changeset viewer.