Lines Matching refs:blk

69 static int synth_alloc_pages(struct snd_emu10k1 *hw, struct snd_emu10k1_memblk *blk);
70 static int synth_free_pages(struct snd_emu10k1 *hw, struct snd_emu10k1_memblk *blk);
76 static void emu10k1_memblk_init(struct snd_emu10k1_memblk *blk) in emu10k1_memblk_init() argument
78 blk->mapped_page = -1; in emu10k1_memblk_init()
79 INIT_LIST_HEAD(&blk->mapped_link); in emu10k1_memblk_init()
80 INIT_LIST_HEAD(&blk->mapped_order_link); in emu10k1_memblk_init()
81 blk->map_locked = 0; in emu10k1_memblk_init()
83 blk->first_page = get_aligned_page(blk->mem.offset); in emu10k1_memblk_init()
84 blk->last_page = get_aligned_page(blk->mem.offset + blk->mem.size - 1); in emu10k1_memblk_init()
85 blk->pages = blk->last_page - blk->first_page + 1; in emu10k1_memblk_init()
104 struct snd_emu10k1_memblk *blk = get_emu10k1_memblk(pos, mapped_link); in search_empty_map_area() local
105 if (blk->mapped_page < 0) in search_empty_map_area()
107 size = blk->mapped_page - page; in search_empty_map_area()
118 page = blk->mapped_page + blk->pages; in search_empty_map_area()
134 static int map_memblk(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) in map_memblk() argument
139 page = search_empty_map_area(emu, blk->pages, &next); in map_memblk()
147 list_add_tail(&blk->mapped_link, next); in map_memblk()
149 list_add_tail(&blk->mapped_order_link, &emu->mapped_order_link_head); in map_memblk()
150 blk->mapped_page = page; in map_memblk()
152 for (pg = blk->first_page; pg <= blk->last_page; pg++) { in map_memblk()
165 static int unmap_memblk(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) in unmap_memblk() argument
172 p = blk->mapped_link.prev; in unmap_memblk()
179 p = blk->mapped_link.next; in unmap_memblk()
188 list_del(&blk->mapped_link); in unmap_memblk()
189 list_del(&blk->mapped_order_link); in unmap_memblk()
191 mpage = blk->mapped_page; in unmap_memblk()
192 for (pg = blk->first_page; pg <= blk->last_page; pg++) { in unmap_memblk()
196 blk->mapped_page = -1; in unmap_memblk()
209 struct snd_emu10k1_memblk *blk; in search_empty() local
215 blk = get_emu10k1_memblk(p, mem.list); in search_empty()
216 if (page + psize <= blk->first_page) in search_empty()
218 page = blk->last_page + 1; in search_empty()
225blk = (struct snd_emu10k1_memblk *)__snd_util_memblk_new(emu->memhdr, psize << PAGE_SHIFT, p->prev… in search_empty()
226 if (blk == NULL) in search_empty()
228 blk->mem.offset = aligned_page_offset(page); /* set aligned offset */ in search_empty()
229 emu10k1_memblk_init(blk); in search_empty()
230 return blk; in search_empty()
258 int snd_emu10k1_memblk_map(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) in snd_emu10k1_memblk_map() argument
267 if (blk->mapped_page >= 0) { in snd_emu10k1_memblk_map()
269 list_move_tail(&blk->mapped_order_link, in snd_emu10k1_memblk_map()
274 err = map_memblk(emu, blk); in snd_emu10k1_memblk_map()
285 if (size >= blk->pages) { in snd_emu10k1_memblk_map()
287 err = map_memblk(emu, blk); in snd_emu10k1_memblk_map()
306 struct snd_emu10k1_memblk *blk; in snd_emu10k1_alloc_pages() local
319 blk = search_empty(emu, runtime->dma_bytes); in snd_emu10k1_alloc_pages()
320 if (blk == NULL) { in snd_emu10k1_alloc_pages()
328 for (page = blk->first_page; page <= blk->last_page; page++, idx++) { in snd_emu10k1_alloc_pages()
346 blk->map_locked = 1; /* do not unmap this block! */ in snd_emu10k1_alloc_pages()
347 err = snd_emu10k1_memblk_map(emu, blk); in snd_emu10k1_alloc_pages()
349 __snd_util_mem_free(hdr, (struct snd_util_memblk *)blk); in snd_emu10k1_alloc_pages()
354 return (struct snd_util_memblk *)blk; in snd_emu10k1_alloc_pages()
361 int snd_emu10k1_free_pages(struct snd_emu10k1 *emu, struct snd_util_memblk *blk) in snd_emu10k1_free_pages() argument
363 if (snd_BUG_ON(!emu || !blk)) in snd_emu10k1_free_pages()
365 return snd_emu10k1_synth_free(emu, blk); in snd_emu10k1_free_pages()
407 struct snd_emu10k1_memblk *blk; in snd_emu10k1_synth_alloc() local
411 blk = (struct snd_emu10k1_memblk *)__snd_util_mem_alloc(hdr, size); in snd_emu10k1_synth_alloc()
412 if (blk == NULL) { in snd_emu10k1_synth_alloc()
416 if (synth_alloc_pages(hw, blk)) { in snd_emu10k1_synth_alloc()
417 __snd_util_mem_free(hdr, (struct snd_util_memblk *)blk); in snd_emu10k1_synth_alloc()
421 snd_emu10k1_memblk_map(hw, blk); in snd_emu10k1_synth_alloc()
423 return (struct snd_util_memblk *)blk; in snd_emu10k1_synth_alloc()
435 struct snd_emu10k1_memblk *blk = (struct snd_emu10k1_memblk *)memblk; in snd_emu10k1_synth_free() local
440 if (blk->mapped_page >= 0) in snd_emu10k1_synth_free()
441 unmap_memblk(emu, blk); in snd_emu10k1_synth_free()
443 synth_free_pages(emu, blk); in snd_emu10k1_synth_free()
453 struct snd_emu10k1_memblk *blk, in get_single_page_range() argument
459 first_page = blk->first_page; in get_single_page_range()
460 p = blk->mem.list.prev; in get_single_page_range()
466 last_page = blk->last_page; in get_single_page_range()
467 p = blk->mem.list.next; in get_single_page_range()
510 static int synth_alloc_pages(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) in synth_alloc_pages() argument
515 emu10k1_memblk_init(blk); in synth_alloc_pages()
516 get_single_page_range(emu->memhdr, blk, &first_page, &last_page); in synth_alloc_pages()
542 static int synth_free_pages(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) in synth_free_pages() argument
546 get_single_page_range(emu->memhdr, blk, &first_page, &last_page); in synth_free_pages()
570 int snd_emu10k1_synth_bzero(struct snd_emu10k1 *emu, struct snd_util_memblk *blk, in snd_emu10k1_synth_bzero() argument
575 struct snd_emu10k1_memblk *p = (struct snd_emu10k1_memblk *)blk; in snd_emu10k1_synth_bzero()
577 offset += blk->offset & (PAGE_SIZE - 1); in snd_emu10k1_synth_bzero()
600 int snd_emu10k1_synth_copy_from_user(struct snd_emu10k1 *emu, struct snd_util_memblk *blk, in snd_emu10k1_synth_copy_from_user() argument
605 struct snd_emu10k1_memblk *p = (struct snd_emu10k1_memblk *)blk; in snd_emu10k1_synth_copy_from_user()
607 offset += blk->offset & (PAGE_SIZE - 1); in snd_emu10k1_synth_copy_from_user()