Lines Matching refs:mem
22 struct dma_coherent_mem **mem) in dma_init_coherent_memory() argument
52 *mem = dma_mem; in dma_init_coherent_memory()
66 static void dma_release_coherent_memory(struct dma_coherent_mem *mem) in dma_release_coherent_memory() argument
68 if (!mem) in dma_release_coherent_memory()
70 iounmap(mem->virt_base); in dma_release_coherent_memory()
71 kfree(mem->bitmap); in dma_release_coherent_memory()
72 kfree(mem); in dma_release_coherent_memory()
76 struct dma_coherent_mem *mem) in dma_assign_coherent_memory() argument
81 dev->dma_mem = mem; in dma_assign_coherent_memory()
90 struct dma_coherent_mem *mem; in dma_declare_coherent_memory() local
94 &mem); in dma_declare_coherent_memory()
98 if (dma_assign_coherent_memory(dev, mem) == 0) in dma_declare_coherent_memory()
101 dma_release_coherent_memory(mem); in dma_declare_coherent_memory()
108 struct dma_coherent_mem *mem = dev->dma_mem; in dma_release_declared_memory() local
110 if (!mem) in dma_release_declared_memory()
112 dma_release_coherent_memory(mem); in dma_release_declared_memory()
120 struct dma_coherent_mem *mem = dev->dma_mem; in dma_mark_declared_memory_occupied() local
126 if (!mem) in dma_mark_declared_memory_occupied()
129 spin_lock_irqsave(&mem->spinlock, flags); in dma_mark_declared_memory_occupied()
130 pos = (device_addr - mem->device_base) >> PAGE_SHIFT; in dma_mark_declared_memory_occupied()
131 err = bitmap_allocate_region(mem->bitmap, pos, get_order(size)); in dma_mark_declared_memory_occupied()
132 spin_unlock_irqrestore(&mem->spinlock, flags); in dma_mark_declared_memory_occupied()
136 return mem->virt_base + (pos << PAGE_SHIFT); in dma_mark_declared_memory_occupied()
158 struct dma_coherent_mem *mem; in dma_alloc_from_coherent() local
165 mem = dev->dma_mem; in dma_alloc_from_coherent()
166 if (!mem) in dma_alloc_from_coherent()
170 spin_lock_irqsave(&mem->spinlock, flags); in dma_alloc_from_coherent()
172 if (unlikely(size > (mem->size << PAGE_SHIFT))) in dma_alloc_from_coherent()
175 pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); in dma_alloc_from_coherent()
182 *dma_handle = mem->device_base + (pageno << PAGE_SHIFT); in dma_alloc_from_coherent()
183 *ret = mem->virt_base + (pageno << PAGE_SHIFT); in dma_alloc_from_coherent()
185 spin_unlock_irqrestore(&mem->spinlock, flags); in dma_alloc_from_coherent()
190 spin_unlock_irqrestore(&mem->spinlock, flags); in dma_alloc_from_coherent()
196 return mem->flags & DMA_MEMORY_EXCLUSIVE; in dma_alloc_from_coherent()
215 struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; in dma_release_from_coherent() local
217 if (mem && vaddr >= mem->virt_base && vaddr < in dma_release_from_coherent()
218 (mem->virt_base + (mem->size << PAGE_SHIFT))) { in dma_release_from_coherent()
219 int page = (vaddr - mem->virt_base) >> PAGE_SHIFT; in dma_release_from_coherent()
222 spin_lock_irqsave(&mem->spinlock, flags); in dma_release_from_coherent()
223 bitmap_release_region(mem->bitmap, page, order); in dma_release_from_coherent()
224 spin_unlock_irqrestore(&mem->spinlock, flags); in dma_release_from_coherent()
249 struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; in dma_mmap_from_coherent() local
251 if (mem && vaddr >= mem->virt_base && vaddr + size <= in dma_mmap_from_coherent()
252 (mem->virt_base + (mem->size << PAGE_SHIFT))) { in dma_mmap_from_coherent()
254 int start = (vaddr - mem->virt_base) >> PAGE_SHIFT; in dma_mmap_from_coherent()
260 unsigned long pfn = mem->pfn_base + start + off; in dma_mmap_from_coherent()
281 struct dma_coherent_mem *mem = rmem->priv; in rmem_dma_device_init() local
283 if (!mem && in rmem_dma_device_init()
286 &mem) != DMA_MEMORY_MAP) { in rmem_dma_device_init()
291 rmem->priv = mem; in rmem_dma_device_init()
292 dma_assign_coherent_memory(dev, mem); in rmem_dma_device_init()