Lines Matching refs:len
61 pr_info("dvma entry: %08x len %08lx\n",
139 static inline unsigned long get_baddr(int len, unsigned long align)
160 newlen = len + ((hole->end - len) & (align-1));
162 newlen = len;
193 unsigned long len;
197 len = dvma_entry_use(baddr);
200 dvma_unmap_iommu(baddr, len);
204 dvma_free_bytes += len;
211 hole->end += len;
212 hole->size += len;
214 } else if(hole->start == (baddr + len)) {
216 hole->size += len;
225 hole->end = baddr + len;
226 hole->size = len;
266 unsigned long dvma_map_align(unsigned long kaddr, int len, int align)
272 if(!len)
273 len = 0x800;
275 if(!kaddr || !len) {
276 // pr_err("error: kaddr %lx len %x\n", kaddr, len);
281 pr_debug("dvma_map request %08x bytes from %08lx\n", len, kaddr);
284 len += off;
285 len = ((len + (DVMA_PAGE_SIZE-1)) & DVMA_PAGE_MASK);
292 baddr = get_baddr(len, align);
295 if(!dvma_map_iommu(kaddr, baddr, len))
298 pr_crit("dvma_map failed kaddr %lx baddr %lx len %x\n", kaddr, baddr,
299 len);
321 void *dvma_malloc_align(unsigned long len, unsigned long align)
327 if(!len)
330 pr_debug("dvma_malloc request %lx bytes\n", len);
331 len = ((len + (DVMA_PAGE_SIZE-1)) & DVMA_PAGE_MASK);
333 if((kaddr = __get_free_pages(GFP_ATOMIC, get_order(len))) == 0)
336 if((baddr = (unsigned long)dvma_map_align(kaddr, len, align)) == 0) {
337 free_pages(kaddr, get_order(len));
343 if(dvma_map_cpu(kaddr, vaddr, len) < 0) {
345 free_pages(kaddr, get_order(len));
349 pr_debug("mapped %08lx bytes %08lx kern -> %08lx bus\n", len, kaddr,