diff options
Diffstat (limited to 'drivers/sound/es1371.c')
-rw-r--r-- | drivers/sound/es1371.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/sound/es1371.c b/drivers/sound/es1371.c index 5a2cc9574..df362e8bb 100644 --- a/drivers/sound/es1371.c +++ b/drivers/sound/es1371.c @@ -123,6 +123,7 @@ #include <linux/spinlock.h> #include <linux/smp_lock.h> #include <linux/ac97_codec.h> +#include <linux/wrapper.h> #include <asm/io.h> #include <asm/dma.h> #include <asm/uaccess.h> @@ -872,13 +873,13 @@ static void start_adc(struct es1371_state *s) extern inline void dealloc_dmabuf(struct es1371_state *s, struct dmabuf *db) { - unsigned long map, mapend; + struct page *page, *pend; if (db->rawbuf) { /* undo marking the pages as reserved */ - mapend = MAP_NR(db->rawbuf + (PAGE_SIZE << db->buforder) - 1); - for (map = MAP_NR(db->rawbuf); map <= mapend; map++) - clear_bit(PG_reserved, &mem_map[map].flags); + pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1); + for (page = virt_to_page(db->rawbuf); page <= pend; page++) + mem_map_unreserve(page); pci_free_consistent(s->dev, PAGE_SIZE << db->buforder, db->rawbuf, db->dmaaddr); } db->rawbuf = NULL; @@ -890,7 +891,7 @@ static int prog_dmabuf(struct es1371_state *s, struct dmabuf *db, unsigned rate, int order; unsigned bytepersec; unsigned bufs; - unsigned long map, mapend; + struct page *page, *pend; db->hwptr = db->swptr = db->total_bytes = db->count = db->error = db->endcleared = 0; if (!db->rawbuf) { @@ -902,9 +903,9 @@ static int prog_dmabuf(struct es1371_state *s, struct dmabuf *db, unsigned rate, return -ENOMEM; db->buforder = order; /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */ - mapend = MAP_NR(db->rawbuf + (PAGE_SIZE << db->buforder) - 1); - for (map = MAP_NR(db->rawbuf); map <= mapend; map++) - set_bit(PG_reserved, &mem_map[map].flags); + pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1); + for (page = virt_to_page(db->rawbuf); page <= pend; page++) + mem_map_reserve(page); } fmt &= ES1371_FMT_MASK; bytepersec = rate << sample_shift[fmt]; |