Lines Matching defs:mapping
40 #include <linux/io-mapping.h>
43 bus_space_io_mapping_init_wc(bus_space_tag_t bst, struct io_mapping *mapping,
67 /* Initialize the mapping record. */
68 mapping->diom_bst = bst;
69 mapping->base = addr;
70 mapping->size = size;
71 mapping->diom_atomic = false;
74 mapping->diom_va = uvm_km_alloc(kernel_map, PAGE_SIZE, PAGE_SIZE,
76 KASSERT(mapping->diom_va != 0);
82 io_mapping_fini(struct io_mapping *mapping)
85 KASSERT(!mapping->diom_atomic);
87 uvm_km_free(kernel_map, mapping->diom_va, PAGE_SIZE, UVM_KMF_VAONLY);
88 mapping->diom_va = 0; /* paranoia */
95 struct io_mapping *mapping;
97 mapping = kmem_alloc(sizeof(*mapping), KM_SLEEP);
98 if (!bus_space_io_mapping_init_wc(bst, mapping, addr, size)) {
99 kmem_free(mapping, sizeof(*mapping));
103 return mapping;
107 io_mapping_free(struct io_mapping *mapping)
110 io_mapping_fini(mapping);
111 kmem_free(mapping, sizeof(*mapping));
115 io_mapping_map_wc(struct io_mapping *mapping, bus_addr_t offset,
123 KASSERT(PAGE_SIZE <= mapping->size);
124 KASSERT(offset <= (mapping->size - PAGE_SIZE));
129 KASSERT(va != mapping->diom_va);
131 cookie = bus_space_mmap(mapping->diom_bst, mapping->base,
146 io_mapping_unmap(struct io_mapping *mapping, void *ptr, bus_size_t size)
150 KASSERT(mapping->diom_va != va);
159 io_mapping_map_atomic_wc(struct io_mapping *mapping, bus_addr_t offset)
164 KASSERT(PAGE_SIZE <= mapping->size);
165 KASSERT(offset <= (mapping->size - PAGE_SIZE));
167 KASSERT(!mapping->diom_atomic);
169 cookie = bus_space_mmap(mapping->diom_bst, mapping->base, offset,
174 pmap_kenter_pa(mapping->diom_va, pmap_phys_address(cookie),
178 mapping->diom_atomic = true;
179 return (void *)mapping->diom_va;
183 io_mapping_unmap_atomic(struct io_mapping *mapping, void *ptr __diagused)
186 KASSERT(mapping->diom_atomic);
187 KASSERT(mapping->diom_va == (vaddr_t)ptr);
189 pmap_kremove(mapping->diom_va, PAGE_SIZE);
192 mapping->diom_atomic = false;