• Home
  • Raw
  • Download

Lines Matching refs:mem

32 					     struct dma_coherent_mem * mem)  in dma_get_device_base()  argument
34 if (mem->use_dev_dma_pfn_offset) in dma_get_device_base()
35 return (mem->pfn_base - dev->dma_pfn_offset) << PAGE_SHIFT; in dma_get_device_base()
37 return mem->device_base; in dma_get_device_base()
42 struct dma_coherent_mem **mem) in dma_init_coherent_memory() argument
77 *mem = dma_mem; in dma_init_coherent_memory()
87 static void dma_release_coherent_memory(struct dma_coherent_mem *mem) in dma_release_coherent_memory() argument
89 if (!mem) in dma_release_coherent_memory()
92 memunmap(mem->virt_base); in dma_release_coherent_memory()
93 kfree(mem->bitmap); in dma_release_coherent_memory()
94 kfree(mem); in dma_release_coherent_memory()
98 struct dma_coherent_mem *mem) in dma_assign_coherent_memory() argument
106 dev->dma_mem = mem; in dma_assign_coherent_memory()
113 struct dma_coherent_mem *mem; in dma_declare_coherent_memory() local
116 ret = dma_init_coherent_memory(phys_addr, device_addr, size, &mem); in dma_declare_coherent_memory()
120 ret = dma_assign_coherent_memory(dev, mem); in dma_declare_coherent_memory()
122 dma_release_coherent_memory(mem); in dma_declare_coherent_memory()
127 struct dma_coherent_mem *mem, in __dma_alloc_from_coherent() argument
135 spin_lock_irqsave(&mem->spinlock, flags); in __dma_alloc_from_coherent()
137 if (unlikely(size > (mem->size << PAGE_SHIFT))) in __dma_alloc_from_coherent()
140 pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); in __dma_alloc_from_coherent()
147 *dma_handle = dma_get_device_base(dev, mem) + (pageno << PAGE_SHIFT); in __dma_alloc_from_coherent()
148 ret = mem->virt_base + (pageno << PAGE_SHIFT); in __dma_alloc_from_coherent()
149 spin_unlock_irqrestore(&mem->spinlock, flags); in __dma_alloc_from_coherent()
153 spin_unlock_irqrestore(&mem->spinlock, flags); in __dma_alloc_from_coherent()
174 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev); in dma_alloc_from_dev_coherent() local
176 if (!mem) in dma_alloc_from_dev_coherent()
179 *ret = __dma_alloc_from_coherent(dev, mem, size, dma_handle); in dma_alloc_from_dev_coherent()
193 static int __dma_release_from_coherent(struct dma_coherent_mem *mem, in __dma_release_from_coherent() argument
196 if (mem && vaddr >= mem->virt_base && vaddr < in __dma_release_from_coherent()
197 (mem->virt_base + (mem->size << PAGE_SHIFT))) { in __dma_release_from_coherent()
198 int page = (vaddr - mem->virt_base) >> PAGE_SHIFT; in __dma_release_from_coherent()
201 spin_lock_irqsave(&mem->spinlock, flags); in __dma_release_from_coherent()
202 bitmap_release_region(mem->bitmap, page, order); in __dma_release_from_coherent()
203 spin_unlock_irqrestore(&mem->spinlock, flags); in __dma_release_from_coherent()
223 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev); in dma_release_from_dev_coherent() local
225 return __dma_release_from_coherent(mem, order, vaddr); in dma_release_from_dev_coherent()
237 static int __dma_mmap_from_coherent(struct dma_coherent_mem *mem, in __dma_mmap_from_coherent() argument
240 if (mem && vaddr >= mem->virt_base && vaddr + size <= in __dma_mmap_from_coherent()
241 (mem->virt_base + (mem->size << PAGE_SHIFT))) { in __dma_mmap_from_coherent()
243 int start = (vaddr - mem->virt_base) >> PAGE_SHIFT; in __dma_mmap_from_coherent()
249 unsigned long pfn = mem->pfn_base + start + off; in __dma_mmap_from_coherent()
277 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev); in dma_mmap_from_dev_coherent() local
279 return __dma_mmap_from_coherent(mem, vma, vaddr, size, ret); in dma_mmap_from_dev_coherent()
304 struct dma_coherent_mem *mem = rmem->priv; in rmem_dma_device_init() local
307 if (!mem) { in rmem_dma_device_init()
309 rmem->size, &mem); in rmem_dma_device_init()
316 mem->use_dev_dma_pfn_offset = true; in rmem_dma_device_init()
317 rmem->priv = mem; in rmem_dma_device_init()
318 dma_assign_coherent_memory(dev, mem); in rmem_dma_device_init()