|
12 | 12 | #include <asm/page.h> |
13 | 13 |
|
14 | 14 | struct device; |
| 15 | +struct vm_area_struct; |
15 | 16 |
|
16 | 17 | /* |
17 | 18 | * buffer device info |
@@ -64,84 +65,19 @@ static inline unsigned int snd_sgbuf_aligned_pages(size_t size) |
64 | 65 | return (size + PAGE_SIZE - 1) >> PAGE_SHIFT; |
65 | 66 | } |
66 | 67 |
|
67 | | -#ifdef CONFIG_SND_DMA_SGBUF |
68 | | -/* |
69 | | - * Scatter-Gather generic device pages |
70 | | - */ |
71 | | -void *snd_malloc_sgbuf_pages(struct device *device, |
72 | | - size_t size, struct snd_dma_buffer *dmab, |
73 | | - size_t *res_size); |
74 | | -int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab); |
75 | | - |
76 | | -struct snd_sg_page { |
77 | | - void *buf; |
78 | | - dma_addr_t addr; |
79 | | -}; |
80 | | - |
81 | | -struct snd_sg_buf { |
82 | | - int size; /* allocated byte size */ |
83 | | - int pages; /* allocated pages */ |
84 | | - int tblsize; /* allocated table size */ |
85 | | - struct snd_sg_page *table; /* address table */ |
86 | | - struct page **page_table; /* page table (for vmap/vunmap) */ |
87 | | - struct device *dev; |
88 | | -}; |
89 | | - |
90 | | -/* |
91 | | - * return the physical address at the corresponding offset |
92 | | - */ |
93 | | -static inline dma_addr_t snd_sgbuf_get_addr(struct snd_dma_buffer *dmab, |
94 | | - size_t offset) |
95 | | -{ |
96 | | - struct snd_sg_buf *sgbuf = dmab->private_data; |
97 | | - dma_addr_t addr; |
98 | | - |
99 | | - if (!sgbuf) |
100 | | - return dmab->addr + offset; |
101 | | - addr = sgbuf->table[offset >> PAGE_SHIFT].addr; |
102 | | - addr &= ~((dma_addr_t)PAGE_SIZE - 1); |
103 | | - return addr + offset % PAGE_SIZE; |
104 | | -} |
105 | | - |
106 | | -/* |
107 | | - * return the virtual address at the corresponding offset |
108 | | - */ |
109 | | -static inline void *snd_sgbuf_get_ptr(struct snd_dma_buffer *dmab, |
110 | | - size_t offset) |
111 | | -{ |
112 | | - struct snd_sg_buf *sgbuf = dmab->private_data; |
113 | | - |
114 | | - if (!sgbuf) |
115 | | - return dmab->area + offset; |
116 | | - return sgbuf->table[offset >> PAGE_SHIFT].buf + offset % PAGE_SIZE; |
117 | | -} |
118 | | - |
119 | | -unsigned int snd_sgbuf_get_chunk_size(struct snd_dma_buffer *dmab, |
120 | | - unsigned int ofs, unsigned int size); |
121 | | -#else |
122 | | -/* non-SG versions */ |
123 | | -static inline dma_addr_t snd_sgbuf_get_addr(struct snd_dma_buffer *dmab, |
124 | | - size_t offset) |
125 | | -{ |
126 | | - return dmab->addr + offset; |
127 | | -} |
128 | | - |
129 | | -static inline void *snd_sgbuf_get_ptr(struct snd_dma_buffer *dmab, |
130 | | - size_t offset) |
131 | | -{ |
132 | | - return dmab->area + offset; |
133 | | -} |
134 | | - |
135 | | -#define snd_sgbuf_get_chunk_size(dmab, ofs, size) (size) |
136 | | - |
137 | | -#endif /* CONFIG_SND_DMA_SGBUF */ |
138 | | - |
139 | 68 | /* allocate/release a buffer */ |
140 | 69 | int snd_dma_alloc_pages(int type, struct device *dev, size_t size, |
141 | 70 | struct snd_dma_buffer *dmab); |
142 | 71 | int snd_dma_alloc_pages_fallback(int type, struct device *dev, size_t size, |
143 | 72 | struct snd_dma_buffer *dmab); |
144 | 73 | void snd_dma_free_pages(struct snd_dma_buffer *dmab); |
| 74 | +int snd_dma_buffer_mmap(struct snd_dma_buffer *dmab, |
| 75 | + struct vm_area_struct *area); |
| 76 | + |
| 77 | +dma_addr_t snd_sgbuf_get_addr(struct snd_dma_buffer *dmab, size_t offset); |
| 78 | +struct page *snd_sgbuf_get_page(struct snd_dma_buffer *dmab, size_t offset); |
| 79 | +unsigned int snd_sgbuf_get_chunk_size(struct snd_dma_buffer *dmab, |
| 80 | + unsigned int ofs, unsigned int size); |
145 | 81 |
|
146 | 82 | #endif /* __SOUND_MEMALLOC_H */ |
147 | 83 |
|
0 commit comments