Changes in uspace/lib/c/generic/ddi.c [9d58539:acc0efb] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ddi.c
r9d58539 racc0efb 34 34 35 35 #include <assert.h> 36 #include <atomic.h> 36 37 #include <unistd.h> 38 #include <stdio.h> 37 39 #include <errno.h> 38 40 #include <sys/types.h> … … 47 49 #include "private/libc.h" 48 50 51 49 52 /** Return unique device number. 50 53 * … … 120 123 * 121 124 */ 122 int iospace_enable(task_id_t id, void *ioaddr, unsigned longsize)123 { 124 ddi_ioarg_t arg;125 126 arg.task_id = id;127 arg.ioaddr = ioaddr;128 arg.size = size;125 static int iospace_enable(task_id_t id, void *ioaddr, size_t size) 126 { 127 const ddi_ioarg_t arg = { 128 .task_id = id, 129 .ioaddr = ioaddr, 130 .size = size 131 }; 129 132 130 133 return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg); … … 136 139 * @param size Size of the I/O region. 137 140 * @param virt Virtual address for application's 138 * PIO operations. 141 * PIO operations. Can be NULL for PMIO. 139 142 * 140 143 * @return EOK on success. … … 146 149 #ifdef IO_SPACE_BOUNDARY 147 150 if (pio_addr < IO_SPACE_BOUNDARY) { 148 *virt = pio_addr; 151 if (virt) 152 *virt = pio_addr; 149 153 return iospace_enable(task_get_id(), pio_addr, size); 150 154 } 151 155 #endif 152 156 if (!virt) 157 return EINVAL; 158 153 159 void *phys_frame = 154 160 (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); … … 166 172 } 167 173 174 void pio_write_8(ioport8_t *reg, uint8_t val) 175 { 176 pio_trace_log(reg, val, true); 177 arch_pio_write_8(reg, val); 178 } 179 180 void pio_write_16(ioport16_t *reg, uint16_t val) 181 { 182 pio_trace_log(reg, val, true); 183 arch_pio_write_16(reg, val); 184 } 185 186 void pio_write_32(ioport32_t *reg, uint32_t val) 187 { 188 pio_trace_log(reg, val, true); 189 arch_pio_write_32(reg, val); 190 } 191 192 uint8_t pio_read_8(ioport8_t *reg) 193 { 194 const uint8_t val = arch_pio_read_8(reg); 195 pio_trace_log(reg, val, false); 196 return val; 197 } 198 199 uint16_t pio_read_16(ioport16_t *reg) 200 { 201 const uint16_t val = arch_pio_read_16(reg); 202 pio_trace_log(reg, val, false); 203 return val; 204 } 205 206 uint32_t pio_read_32(ioport32_t *reg) 207 { 208 const uint32_t val = arch_pio_read_32(reg); 209 pio_trace_log(reg, val, false); 210 return val; 211 } 212 168 213 /** Register IRQ notification. 169 214 *
Note:
See TracChangeset
for help on using the changeset viewer.