/* fill TLB entries -- we need to fill two entries */ staticinlinevoid set_tlb_bus(struct snd_trident *trident, int page,
dma_addr_t addr)
{
page <<= 1;
__set_tlb_bus(trident, page, addr);
__set_tlb_bus(trident, page+1, addr + SNDRV_TRIDENT_PAGE_SIZE);
} staticinlinevoid set_silent_tlb(struct snd_trident *trident, int page)
{
page <<= 1;
__set_tlb_bus(trident, page, trident->tlb.silent_page->addr);
__set_tlb_bus(trident, page+1, trident->tlb.silent_page->addr);
}
#else /* arbitrary size */ #define UNIT_PAGES (PAGE_SIZE / SNDRV_TRIDENT_PAGE_SIZE) #define ALIGN_PAGE_SIZE (SNDRV_TRIDENT_PAGE_SIZE * UNIT_PAGES) #define MAX_ALIGN_PAGES (SNDRV_TRIDENT_MAX_PAGES / UNIT_PAGES) /* Note: if alignment doesn't match to the maximum size, the last few blocks *becomeunusable.Tousesuchblocks,you'llneedtocheckthevalidity *ofaccessingpageinset_tlb_busandset_silent_tlb.search_empty() *shouldalsocheckit,too.
*/ #define get_aligned_page(offset) ((offset) / ALIGN_PAGE_SIZE) #define aligned_page_offset(page) ((page) * ALIGN_PAGE_SIZE) #define page_to_addr(trident,page) __tlb_to_addr(trident, (page) * UNIT_PAGES)
/* fill TLB entries -- UNIT_PAGES entries must be filled */ staticinlinevoid set_tlb_bus(struct snd_trident *trident, int page,
dma_addr_t addr)
{ int i;
page *= UNIT_PAGES; for (i = 0; i < UNIT_PAGES; i++, page++) {
__set_tlb_bus(trident, page, addr);
addr += SNDRV_TRIDENT_PAGE_SIZE;
}
} staticinlinevoid set_silent_tlb(struct snd_trident *trident, int page)
{ int i;
page *= UNIT_PAGES; for (i = 0; i < UNIT_PAGES; i++, page++)
__set_tlb_bus(trident, page, trident->tlb.silent_page->addr);
}
#endif/* PAGE_SIZE */
/* first and last (aligned) pages of memory block */ #define firstpg(blk) (((struct snd_trident_memblk_arg *)snd_util_memblk_argptr(blk))->first_page) #define lastpg(blk) (((struct snd_trident_memblk_arg *)snd_util_memblk_argptr(blk))->last_page)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.