Changes in uspace/lib/c/include/ddi.h [9d58539:8cd680c] in mainline
- File:
-
- 1 edited
-
uspace/lib/c/include/ddi.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/ddi.h
r9d58539 r8cd680c 36 36 #define LIBC_DDI_H_ 37 37 38 #include <stdbool.h> 38 39 #include <sys/types.h> 40 #include <sys/time.h> 39 41 #include <abi/ddi/irq.h> 42 #include <device/hw_res.h> 43 #include <device/hw_res_parsed.h> 44 #include <device/pio_window.h> 40 45 #include <task.h> 46 47 #define DMAMEM_16MiB ((uintptr_t) UINT64_C(0xffffffffff000000)) 48 #define DMAMEM_4GiB ((uintptr_t) UINT64_C(0xffffffff00000000)) 41 49 42 50 extern int device_assign_devno(void); 43 51 44 extern int physmem_map(void *, size_t, unsigned int, void **); 52 extern int physmem_map(uintptr_t, size_t, unsigned int, void **); 53 extern int physmem_unmap(void *); 45 54 46 extern int dmamem_map(void *, size_t, unsigned int, unsigned int, void **);47 extern int dmamem_map_anonymous(size_t, u nsigned int, unsigned int, void **,48 void **);55 extern int dmamem_map(void *, size_t, unsigned int, unsigned int, uintptr_t *); 56 extern int dmamem_map_anonymous(size_t, uintptr_t, unsigned int, unsigned int, 57 uintptr_t *, void **); 49 58 extern int dmamem_unmap(void *, size_t); 50 59 extern int dmamem_unmap_anonymous(void *); 51 60 52 extern int iospace_enable(task_id_t, void *, unsigned long); 61 extern int pio_enable_range(addr_range_t *, void **); 62 extern int pio_enable_resource(pio_window_t *, hw_resource_t *, void **); 53 63 extern int pio_enable(void *, size_t, void **); 64 extern int pio_disable(void *, size_t); 54 65 55 extern int irq_register(int, int, int, irq_code_t *); 56 extern int irq_unregister(int, int); 66 typedef void (*trace_fnc)(const volatile void *place, uint32_t val, 67 volatile void* base, size_t size, void *data, bool write); 68 69 extern int pio_trace_enable(void *, size_t, trace_fnc, void *); 70 extern void pio_trace_log(const volatile void *, uint32_t val, bool write); 71 extern void pio_trace_disable(void *); 72 73 extern void pio_write_8(ioport8_t *, uint8_t); 74 extern void pio_write_16(ioport16_t *, uint16_t); 75 extern void pio_write_32(ioport32_t *, uint32_t); 76 77 extern uint8_t pio_read_8(const ioport8_t *); 78 extern uint16_t pio_read_16(const ioport16_t *); 79 extern uint32_t pio_read_32(const ioport32_t *); 80 81 static inline uint8_t pio_change_8(ioport8_t *reg, uint8_t val, uint8_t mask, 82 useconds_t delay) 83 { 84 uint8_t v = pio_read_8(reg); 85 udelay(delay); 86 pio_write_8(reg, (v & ~mask) | val); 87 return v; 88 } 89 90 static inline uint16_t pio_change_16(ioport16_t *reg, uint16_t val, 91 uint16_t mask, useconds_t delay) 92 { 93 uint16_t v = pio_read_16(reg); 94 udelay(delay); 95 pio_write_16(reg, (v & ~mask) | val); 96 return v; 97 } 98 99 static inline uint32_t pio_change_32(ioport32_t *reg, uint32_t val, 100 uint32_t mask, useconds_t delay) 101 { 102 uint32_t v = pio_read_32(reg); 103 udelay(delay); 104 pio_write_32(reg, (v & ~mask) | val); 105 return v; 106 } 107 108 static inline uint8_t pio_set_8(ioport8_t *r, uint8_t v, useconds_t d) 109 { 110 return pio_change_8(r, v, 0, d); 111 } 112 static inline uint16_t pio_set_16(ioport16_t *r, uint16_t v, useconds_t d) 113 { 114 return pio_change_16(r, v, 0, d); 115 } 116 static inline uint32_t pio_set_32(ioport32_t *r, uint32_t v, useconds_t d) 117 { 118 return pio_change_32(r, v, 0, d); 119 } 120 121 static inline uint8_t pio_clear_8(ioport8_t *r, uint8_t v, useconds_t d) 122 { 123 return pio_change_8(r, 0, v, d); 124 } 125 static inline uint16_t pio_clear_16(ioport16_t *r, uint16_t v, useconds_t d) 126 { 127 return pio_change_16(r, 0, v, d); 128 } 129 static inline uint32_t pio_clear_32(ioport32_t *r, uint32_t v, useconds_t d) 130 { 131 return pio_change_32(r, 0, v, d); 132 } 57 133 58 134 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
