diff options
author | Ricardo Cerqueira <v4l@cerqueira.org> | 2005-11-09 00:38:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:32 -0500 |
commit | b54134be53be720da423692665ec215eb14a678b (patch) | |
tree | cf9c5a895a6c657ef23317c6256e7eb284e93b95 /drivers/media/video/saa7134/saa7134-oss.c | |
parent | 79dd0c69f05fccb0396bdcd861ad4686ce888cda (diff) |
[PATCH] V4L: 926: Saa7134 alsa can only be autoloaded after saa7134 is active
- Saa7134-alsa can only be autoloaded after saa7134 is active
- Applied pertinent changes proposed by the ALSA team
- dsp_nr replaced by ALSA's index[]
Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-oss.c')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-oss.c | 308 |
1 files changed, 154 insertions, 154 deletions
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c index f1b0e0d93d7b..fd53dfcc1644 100644 --- a/drivers/media/video/saa7134/saa7134-oss.c +++ b/drivers/media/video/saa7134/saa7134-oss.c | |||
@@ -59,9 +59,9 @@ static int dsp_buffer_conf(struct saa7134_dev *dev, int blksize, int blocks) | |||
59 | if ((blksize * blocks) > 1024*1024) | 59 | if ((blksize * blocks) > 1024*1024) |
60 | blocks = 1024*1024 / blksize; | 60 | blocks = 1024*1024 / blksize; |
61 | 61 | ||
62 | dev->oss.blocks = blocks; | 62 | dev->dmasound.blocks = blocks; |
63 | dev->oss.blksize = blksize; | 63 | dev->dmasound.blksize = blksize; |
64 | dev->oss.bufsize = blksize * blocks; | 64 | dev->dmasound.bufsize = blksize * blocks; |
65 | 65 | ||
66 | dprintk("buffer config: %d blocks / %d bytes, %d kB total\n", | 66 | dprintk("buffer config: %d blocks / %d bytes, %d kB total\n", |
67 | blocks,blksize,blksize * blocks / 1024); | 67 | blocks,blksize,blksize * blocks / 1024); |
@@ -72,11 +72,11 @@ static int dsp_buffer_init(struct saa7134_dev *dev) | |||
72 | { | 72 | { |
73 | int err; | 73 | int err; |
74 | 74 | ||
75 | if (!dev->oss.bufsize) | 75 | if (!dev->dmasound.bufsize) |
76 | BUG(); | 76 | BUG(); |
77 | videobuf_dma_init(&dev->oss.dma); | 77 | videobuf_dma_init(&dev->dmasound.dma); |
78 | err = videobuf_dma_init_kernel(&dev->oss.dma, PCI_DMA_FROMDEVICE, | 78 | err = videobuf_dma_init_kernel(&dev->dmasound.dma, PCI_DMA_FROMDEVICE, |
79 | (dev->oss.bufsize + PAGE_SIZE) >> PAGE_SHIFT); | 79 | (dev->dmasound.bufsize + PAGE_SIZE) >> PAGE_SHIFT); |
80 | if (0 != err) | 80 | if (0 != err) |
81 | return err; | 81 | return err; |
82 | return 0; | 82 | return 0; |
@@ -84,26 +84,26 @@ static int dsp_buffer_init(struct saa7134_dev *dev) | |||
84 | 84 | ||
85 | static int dsp_buffer_free(struct saa7134_dev *dev) | 85 | static int dsp_buffer_free(struct saa7134_dev *dev) |
86 | { | 86 | { |
87 | if (!dev->oss.blksize) | 87 | if (!dev->dmasound.blksize) |
88 | BUG(); | 88 | BUG(); |
89 | videobuf_dma_free(&dev->oss.dma); | 89 | videobuf_dma_free(&dev->dmasound.dma); |
90 | dev->oss.blocks = 0; | 90 | dev->dmasound.blocks = 0; |
91 | dev->oss.blksize = 0; | 91 | dev->dmasound.blksize = 0; |
92 | dev->oss.bufsize = 0; | 92 | dev->dmasound.bufsize = 0; |
93 | return 0; | 93 | return 0; |
94 | } | 94 | } |
95 | 95 | ||
96 | static void dsp_dma_start(struct saa7134_dev *dev) | 96 | static void dsp_dma_start(struct saa7134_dev *dev) |
97 | { | 97 | { |
98 | dev->oss.dma_blk = 0; | 98 | dev->dmasound.dma_blk = 0; |
99 | dev->oss.dma_running = 1; | 99 | dev->dmasound.dma_running = 1; |
100 | saa7134_set_dmabits(dev); | 100 | saa7134_set_dmabits(dev); |
101 | } | 101 | } |
102 | 102 | ||
103 | static void dsp_dma_stop(struct saa7134_dev *dev) | 103 | static void dsp_dma_stop(struct saa7134_dev *dev) |
104 | { | 104 | { |
105 | dev->oss.dma_blk = -1; | 105 | dev->dmasound.dma_blk = -1; |
106 | dev->oss.dma_running = 0; | 106 | dev->dmasound.dma_running = 0; |
107 | saa7134_set_dmabits(dev); | 107 | saa7134_set_dmabits(dev); |
108 | } | 108 | } |
109 | 109 | ||
@@ -114,18 +114,18 @@ static int dsp_rec_start(struct saa7134_dev *dev) | |||
114 | unsigned long flags; | 114 | unsigned long flags; |
115 | 115 | ||
116 | /* prepare buffer */ | 116 | /* prepare buffer */ |
117 | if (0 != (err = videobuf_dma_pci_map(dev->pci,&dev->oss.dma))) | 117 | if (0 != (err = videobuf_dma_pci_map(dev->pci,&dev->dmasound.dma))) |
118 | return err; | 118 | return err; |
119 | if (0 != (err = saa7134_pgtable_alloc(dev->pci,&dev->oss.pt))) | 119 | if (0 != (err = saa7134_pgtable_alloc(dev->pci,&dev->dmasound.pt))) |
120 | goto fail1; | 120 | goto fail1; |
121 | if (0 != (err = saa7134_pgtable_build(dev->pci,&dev->oss.pt, | 121 | if (0 != (err = saa7134_pgtable_build(dev->pci,&dev->dmasound.pt, |
122 | dev->oss.dma.sglist, | 122 | dev->dmasound.dma.sglist, |
123 | dev->oss.dma.sglen, | 123 | dev->dmasound.dma.sglen, |
124 | 0))) | 124 | 0))) |
125 | goto fail2; | 125 | goto fail2; |
126 | 126 | ||
127 | /* sample format */ | 127 | /* sample format */ |
128 | switch (dev->oss.afmt) { | 128 | switch (dev->dmasound.afmt) { |
129 | case AFMT_U8: | 129 | case AFMT_U8: |
130 | case AFMT_S8: fmt = 0x00; break; | 130 | case AFMT_S8: fmt = 0x00; break; |
131 | case AFMT_U16_LE: | 131 | case AFMT_U16_LE: |
@@ -137,14 +137,14 @@ static int dsp_rec_start(struct saa7134_dev *dev) | |||
137 | goto fail2; | 137 | goto fail2; |
138 | } | 138 | } |
139 | 139 | ||
140 | switch (dev->oss.afmt) { | 140 | switch (dev->dmasound.afmt) { |
141 | case AFMT_S8: | 141 | case AFMT_S8: |
142 | case AFMT_S16_LE: | 142 | case AFMT_S16_LE: |
143 | case AFMT_S16_BE: sign = 1; break; | 143 | case AFMT_S16_BE: sign = 1; break; |
144 | default: sign = 0; break; | 144 | default: sign = 0; break; |
145 | } | 145 | } |
146 | 146 | ||
147 | switch (dev->oss.afmt) { | 147 | switch (dev->dmasound.afmt) { |
148 | case AFMT_U16_BE: | 148 | case AFMT_U16_BE: |
149 | case AFMT_S16_BE: bswap = 1; break; | 149 | case AFMT_S16_BE: bswap = 1; break; |
150 | default: bswap = 0; break; | 150 | default: bswap = 0; break; |
@@ -152,58 +152,58 @@ static int dsp_rec_start(struct saa7134_dev *dev) | |||
152 | 152 | ||
153 | switch (dev->pci->device) { | 153 | switch (dev->pci->device) { |
154 | case PCI_DEVICE_ID_PHILIPS_SAA7134: | 154 | case PCI_DEVICE_ID_PHILIPS_SAA7134: |
155 | if (1 == dev->oss.channels) | 155 | if (1 == dev->dmasound.channels) |
156 | fmt |= (1 << 3); | 156 | fmt |= (1 << 3); |
157 | if (2 == dev->oss.channels) | 157 | if (2 == dev->dmasound.channels) |
158 | fmt |= (3 << 3); | 158 | fmt |= (3 << 3); |
159 | if (sign) | 159 | if (sign) |
160 | fmt |= 0x04; | 160 | fmt |= 0x04; |
161 | fmt |= (TV == dev->oss.input) ? 0xc0 : 0x80; | 161 | fmt |= (TV == dev->dmasound.input) ? 0xc0 : 0x80; |
162 | 162 | ||
163 | saa_writeb(SAA7134_NUM_SAMPLES0, ((dev->oss.blksize - 1) & 0x0000ff)); | 163 | saa_writeb(SAA7134_NUM_SAMPLES0, ((dev->dmasound.blksize - 1) & 0x0000ff)); |
164 | saa_writeb(SAA7134_NUM_SAMPLES1, ((dev->oss.blksize - 1) & 0x00ff00) >> 8); | 164 | saa_writeb(SAA7134_NUM_SAMPLES1, ((dev->dmasound.blksize - 1) & 0x00ff00) >> 8); |
165 | saa_writeb(SAA7134_NUM_SAMPLES2, ((dev->oss.blksize - 1) & 0xff0000) >> 16); | 165 | saa_writeb(SAA7134_NUM_SAMPLES2, ((dev->dmasound.blksize - 1) & 0xff0000) >> 16); |
166 | saa_writeb(SAA7134_AUDIO_FORMAT_CTRL, fmt); | 166 | saa_writeb(SAA7134_AUDIO_FORMAT_CTRL, fmt); |
167 | 167 | ||
168 | break; | 168 | break; |
169 | case PCI_DEVICE_ID_PHILIPS_SAA7133: | 169 | case PCI_DEVICE_ID_PHILIPS_SAA7133: |
170 | case PCI_DEVICE_ID_PHILIPS_SAA7135: | 170 | case PCI_DEVICE_ID_PHILIPS_SAA7135: |
171 | if (1 == dev->oss.channels) | 171 | if (1 == dev->dmasound.channels) |
172 | fmt |= (1 << 4); | 172 | fmt |= (1 << 4); |
173 | if (2 == dev->oss.channels) | 173 | if (2 == dev->dmasound.channels) |
174 | fmt |= (2 << 4); | 174 | fmt |= (2 << 4); |
175 | if (!sign) | 175 | if (!sign) |
176 | fmt |= 0x04; | 176 | fmt |= 0x04; |
177 | saa_writel(SAA7133_NUM_SAMPLES, dev->oss.blksize -4); | 177 | saa_writel(SAA7133_NUM_SAMPLES, dev->dmasound.blksize -4); |
178 | saa_writel(SAA7133_AUDIO_CHANNEL, 0x543210 | (fmt << 24)); | 178 | saa_writel(SAA7133_AUDIO_CHANNEL, 0x543210 | (fmt << 24)); |
179 | break; | 179 | break; |
180 | } | 180 | } |
181 | dprintk("rec_start: afmt=%d ch=%d => fmt=0x%x swap=%c\n", | 181 | dprintk("rec_start: afmt=%d ch=%d => fmt=0x%x swap=%c\n", |
182 | dev->oss.afmt, dev->oss.channels, fmt, | 182 | dev->dmasound.afmt, dev->dmasound.channels, fmt, |
183 | bswap ? 'b' : '-'); | 183 | bswap ? 'b' : '-'); |
184 | 184 | ||
185 | /* dma: setup channel 6 (= AUDIO) */ | 185 | /* dma: setup channel 6 (= AUDIO) */ |
186 | control = SAA7134_RS_CONTROL_BURST_16 | | 186 | control = SAA7134_RS_CONTROL_BURST_16 | |
187 | SAA7134_RS_CONTROL_ME | | 187 | SAA7134_RS_CONTROL_ME | |
188 | (dev->oss.pt.dma >> 12); | 188 | (dev->dmasound.pt.dma >> 12); |
189 | if (bswap) | 189 | if (bswap) |
190 | control |= SAA7134_RS_CONTROL_BSWAP; | 190 | control |= SAA7134_RS_CONTROL_BSWAP; |
191 | saa_writel(SAA7134_RS_BA1(6),0); | 191 | saa_writel(SAA7134_RS_BA1(6),0); |
192 | saa_writel(SAA7134_RS_BA2(6),dev->oss.blksize); | 192 | saa_writel(SAA7134_RS_BA2(6),dev->dmasound.blksize); |
193 | saa_writel(SAA7134_RS_PITCH(6),0); | 193 | saa_writel(SAA7134_RS_PITCH(6),0); |
194 | saa_writel(SAA7134_RS_CONTROL(6),control); | 194 | saa_writel(SAA7134_RS_CONTROL(6),control); |
195 | 195 | ||
196 | /* start dma */ | 196 | /* start dma */ |
197 | dev->oss.recording_on = 1; | 197 | dev->dmasound.recording_on = 1; |
198 | spin_lock_irqsave(&dev->slock,flags); | 198 | spin_lock_irqsave(&dev->slock,flags); |
199 | dsp_dma_start(dev); | 199 | dsp_dma_start(dev); |
200 | spin_unlock_irqrestore(&dev->slock,flags); | 200 | spin_unlock_irqrestore(&dev->slock,flags); |
201 | return 0; | 201 | return 0; |
202 | 202 | ||
203 | fail2: | 203 | fail2: |
204 | saa7134_pgtable_free(dev->pci,&dev->oss.pt); | 204 | saa7134_pgtable_free(dev->pci,&dev->dmasound.pt); |
205 | fail1: | 205 | fail1: |
206 | videobuf_dma_pci_unmap(dev->pci,&dev->oss.dma); | 206 | videobuf_dma_pci_unmap(dev->pci,&dev->dmasound.dma); |
207 | return err; | 207 | return err; |
208 | } | 208 | } |
209 | 209 | ||
@@ -211,17 +211,17 @@ static int dsp_rec_stop(struct saa7134_dev *dev) | |||
211 | { | 211 | { |
212 | unsigned long flags; | 212 | unsigned long flags; |
213 | 213 | ||
214 | dprintk("rec_stop dma_blk=%d\n",dev->oss.dma_blk); | 214 | dprintk("rec_stop dma_blk=%d\n",dev->dmasound.dma_blk); |
215 | 215 | ||
216 | /* stop dma */ | 216 | /* stop dma */ |
217 | dev->oss.recording_on = 0; | 217 | dev->dmasound.recording_on = 0; |
218 | spin_lock_irqsave(&dev->slock,flags); | 218 | spin_lock_irqsave(&dev->slock,flags); |
219 | dsp_dma_stop(dev); | 219 | dsp_dma_stop(dev); |
220 | spin_unlock_irqrestore(&dev->slock,flags); | 220 | spin_unlock_irqrestore(&dev->slock,flags); |
221 | 221 | ||
222 | /* unlock buffer */ | 222 | /* unlock buffer */ |
223 | saa7134_pgtable_free(dev->pci,&dev->oss.pt); | 223 | saa7134_pgtable_free(dev->pci,&dev->dmasound.pt); |
224 | videobuf_dma_pci_unmap(dev->pci,&dev->oss.dma); | 224 | videobuf_dma_pci_unmap(dev->pci,&dev->dmasound.dma); |
225 | return 0; | 225 | return 0; |
226 | } | 226 | } |
227 | 227 | ||
@@ -236,35 +236,35 @@ static int dsp_open(struct inode *inode, struct file *file) | |||
236 | 236 | ||
237 | list_for_each(list,&saa7134_devlist) { | 237 | list_for_each(list,&saa7134_devlist) { |
238 | h = list_entry(list, struct saa7134_dev, devlist); | 238 | h = list_entry(list, struct saa7134_dev, devlist); |
239 | if (h->oss.minor_dsp == minor) | 239 | if (h->dmasound.minor_dsp == minor) |
240 | dev = h; | 240 | dev = h; |
241 | } | 241 | } |
242 | if (NULL == dev) | 242 | if (NULL == dev) |
243 | return -ENODEV; | 243 | return -ENODEV; |
244 | 244 | ||
245 | down(&dev->oss.lock); | 245 | down(&dev->dmasound.lock); |
246 | err = -EBUSY; | 246 | err = -EBUSY; |
247 | if (dev->oss.users_dsp) | 247 | if (dev->dmasound.users_dsp) |
248 | goto fail1; | 248 | goto fail1; |
249 | dev->oss.users_dsp++; | 249 | dev->dmasound.users_dsp++; |
250 | file->private_data = dev; | 250 | file->private_data = dev; |
251 | 251 | ||
252 | dev->oss.afmt = AFMT_U8; | 252 | dev->dmasound.afmt = AFMT_U8; |
253 | dev->oss.channels = 1; | 253 | dev->dmasound.channels = 1; |
254 | dev->oss.read_count = 0; | 254 | dev->dmasound.read_count = 0; |
255 | dev->oss.read_offset = 0; | 255 | dev->dmasound.read_offset = 0; |
256 | dsp_buffer_conf(dev,PAGE_SIZE,64); | 256 | dsp_buffer_conf(dev,PAGE_SIZE,64); |
257 | err = dsp_buffer_init(dev); | 257 | err = dsp_buffer_init(dev); |
258 | if (0 != err) | 258 | if (0 != err) |
259 | goto fail2; | 259 | goto fail2; |
260 | 260 | ||
261 | up(&dev->oss.lock); | 261 | up(&dev->dmasound.lock); |
262 | return 0; | 262 | return 0; |
263 | 263 | ||
264 | fail2: | 264 | fail2: |
265 | dev->oss.users_dsp--; | 265 | dev->dmasound.users_dsp--; |
266 | fail1: | 266 | fail1: |
267 | up(&dev->oss.lock); | 267 | up(&dev->dmasound.lock); |
268 | return err; | 268 | return err; |
269 | } | 269 | } |
270 | 270 | ||
@@ -272,13 +272,13 @@ static int dsp_release(struct inode *inode, struct file *file) | |||
272 | { | 272 | { |
273 | struct saa7134_dev *dev = file->private_data; | 273 | struct saa7134_dev *dev = file->private_data; |
274 | 274 | ||
275 | down(&dev->oss.lock); | 275 | down(&dev->dmasound.lock); |
276 | if (dev->oss.recording_on) | 276 | if (dev->dmasound.recording_on) |
277 | dsp_rec_stop(dev); | 277 | dsp_rec_stop(dev); |
278 | dsp_buffer_free(dev); | 278 | dsp_buffer_free(dev); |
279 | dev->oss.users_dsp--; | 279 | dev->dmasound.users_dsp--; |
280 | file->private_data = NULL; | 280 | file->private_data = NULL; |
281 | up(&dev->oss.lock); | 281 | up(&dev->dmasound.lock); |
282 | return 0; | 282 | return 0; |
283 | } | 283 | } |
284 | 284 | ||
@@ -291,12 +291,12 @@ static ssize_t dsp_read(struct file *file, char __user *buffer, | |||
291 | unsigned long flags; | 291 | unsigned long flags; |
292 | int err,ret = 0; | 292 | int err,ret = 0; |
293 | 293 | ||
294 | add_wait_queue(&dev->oss.wq, &wait); | 294 | add_wait_queue(&dev->dmasound.wq, &wait); |
295 | down(&dev->oss.lock); | 295 | down(&dev->dmasound.lock); |
296 | while (count > 0) { | 296 | while (count > 0) { |
297 | /* wait for data if needed */ | 297 | /* wait for data if needed */ |
298 | if (0 == dev->oss.read_count) { | 298 | if (0 == dev->dmasound.read_count) { |
299 | if (!dev->oss.recording_on) { | 299 | if (!dev->dmasound.recording_on) { |
300 | err = dsp_rec_start(dev); | 300 | err = dsp_rec_start(dev); |
301 | if (err < 0) { | 301 | if (err < 0) { |
302 | if (0 == ret) | 302 | if (0 == ret) |
@@ -304,8 +304,8 @@ static ssize_t dsp_read(struct file *file, char __user *buffer, | |||
304 | break; | 304 | break; |
305 | } | 305 | } |
306 | } | 306 | } |
307 | if (dev->oss.recording_on && | 307 | if (dev->dmasound.recording_on && |
308 | !dev->oss.dma_running) { | 308 | !dev->dmasound.dma_running) { |
309 | /* recover from overruns */ | 309 | /* recover from overruns */ |
310 | spin_lock_irqsave(&dev->slock,flags); | 310 | spin_lock_irqsave(&dev->slock,flags); |
311 | dsp_dma_start(dev); | 311 | dsp_dma_start(dev); |
@@ -316,12 +316,12 @@ static ssize_t dsp_read(struct file *file, char __user *buffer, | |||
316 | ret = -EAGAIN; | 316 | ret = -EAGAIN; |
317 | break; | 317 | break; |
318 | } | 318 | } |
319 | up(&dev->oss.lock); | 319 | up(&dev->dmasound.lock); |
320 | set_current_state(TASK_INTERRUPTIBLE); | 320 | set_current_state(TASK_INTERRUPTIBLE); |
321 | if (0 == dev->oss.read_count) | 321 | if (0 == dev->dmasound.read_count) |
322 | schedule(); | 322 | schedule(); |
323 | set_current_state(TASK_RUNNING); | 323 | set_current_state(TASK_RUNNING); |
324 | down(&dev->oss.lock); | 324 | down(&dev->dmasound.lock); |
325 | if (signal_pending(current)) { | 325 | if (signal_pending(current)) { |
326 | if (0 == ret) | 326 | if (0 == ret) |
327 | ret = -EINTR; | 327 | ret = -EINTR; |
@@ -331,12 +331,12 @@ static ssize_t dsp_read(struct file *file, char __user *buffer, | |||
331 | 331 | ||
332 | /* copy data to userspace */ | 332 | /* copy data to userspace */ |
333 | bytes = count; | 333 | bytes = count; |
334 | if (bytes > dev->oss.read_count) | 334 | if (bytes > dev->dmasound.read_count) |
335 | bytes = dev->oss.read_count; | 335 | bytes = dev->dmasound.read_count; |
336 | if (bytes > dev->oss.bufsize - dev->oss.read_offset) | 336 | if (bytes > dev->dmasound.bufsize - dev->dmasound.read_offset) |
337 | bytes = dev->oss.bufsize - dev->oss.read_offset; | 337 | bytes = dev->dmasound.bufsize - dev->dmasound.read_offset; |
338 | if (copy_to_user(buffer + ret, | 338 | if (copy_to_user(buffer + ret, |
339 | dev->oss.dma.vmalloc + dev->oss.read_offset, | 339 | dev->dmasound.dma.vmalloc + dev->dmasound.read_offset, |
340 | bytes)) { | 340 | bytes)) { |
341 | if (0 == ret) | 341 | if (0 == ret) |
342 | ret = -EFAULT; | 342 | ret = -EFAULT; |
@@ -345,13 +345,13 @@ static ssize_t dsp_read(struct file *file, char __user *buffer, | |||
345 | 345 | ||
346 | ret += bytes; | 346 | ret += bytes; |
347 | count -= bytes; | 347 | count -= bytes; |
348 | dev->oss.read_count -= bytes; | 348 | dev->dmasound.read_count -= bytes; |
349 | dev->oss.read_offset += bytes; | 349 | dev->dmasound.read_offset += bytes; |
350 | if (dev->oss.read_offset == dev->oss.bufsize) | 350 | if (dev->dmasound.read_offset == dev->dmasound.bufsize) |
351 | dev->oss.read_offset = 0; | 351 | dev->dmasound.read_offset = 0; |
352 | } | 352 | } |
353 | up(&dev->oss.lock); | 353 | up(&dev->dmasound.lock); |
354 | remove_wait_queue(&dev->oss.wq, &wait); | 354 | remove_wait_queue(&dev->dmasound.wq, &wait); |
355 | return ret; | 355 | return ret; |
356 | } | 356 | } |
357 | 357 | ||
@@ -382,35 +382,35 @@ static int dsp_ioctl(struct inode *inode, struct file *file, | |||
382 | return -EFAULT; | 382 | return -EFAULT; |
383 | /* fall through */ | 383 | /* fall through */ |
384 | case SOUND_PCM_READ_RATE: | 384 | case SOUND_PCM_READ_RATE: |
385 | return put_user(dev->oss.rate, p); | 385 | return put_user(dev->dmasound.rate, p); |
386 | 386 | ||
387 | case SNDCTL_DSP_STEREO: | 387 | case SNDCTL_DSP_STEREO: |
388 | if (get_user(val, p)) | 388 | if (get_user(val, p)) |
389 | return -EFAULT; | 389 | return -EFAULT; |
390 | down(&dev->oss.lock); | 390 | down(&dev->dmasound.lock); |
391 | dev->oss.channels = val ? 2 : 1; | 391 | dev->dmasound.channels = val ? 2 : 1; |
392 | if (dev->oss.recording_on) { | 392 | if (dev->dmasound.recording_on) { |
393 | dsp_rec_stop(dev); | 393 | dsp_rec_stop(dev); |
394 | dsp_rec_start(dev); | 394 | dsp_rec_start(dev); |
395 | } | 395 | } |
396 | up(&dev->oss.lock); | 396 | up(&dev->dmasound.lock); |
397 | return put_user(dev->oss.channels-1, p); | 397 | return put_user(dev->dmasound.channels-1, p); |
398 | 398 | ||
399 | case SNDCTL_DSP_CHANNELS: | 399 | case SNDCTL_DSP_CHANNELS: |
400 | if (get_user(val, p)) | 400 | if (get_user(val, p)) |
401 | return -EFAULT; | 401 | return -EFAULT; |
402 | if (val != 1 && val != 2) | 402 | if (val != 1 && val != 2) |
403 | return -EINVAL; | 403 | return -EINVAL; |
404 | down(&dev->oss.lock); | 404 | down(&dev->dmasound.lock); |
405 | dev->oss.channels = val; | 405 | dev->dmasound.channels = val; |
406 | if (dev->oss.recording_on) { | 406 | if (dev->dmasound.recording_on) { |
407 | dsp_rec_stop(dev); | 407 | dsp_rec_stop(dev); |
408 | dsp_rec_start(dev); | 408 | dsp_rec_start(dev); |
409 | } | 409 | } |
410 | up(&dev->oss.lock); | 410 | up(&dev->dmasound.lock); |
411 | /* fall through */ | 411 | /* fall through */ |
412 | case SOUND_PCM_READ_CHANNELS: | 412 | case SOUND_PCM_READ_CHANNELS: |
413 | return put_user(dev->oss.channels, p); | 413 | return put_user(dev->dmasound.channels, p); |
414 | 414 | ||
415 | case SNDCTL_DSP_GETFMTS: /* Returns a mask */ | 415 | case SNDCTL_DSP_GETFMTS: /* Returns a mask */ |
416 | return put_user(AFMT_U8 | AFMT_S8 | | 416 | return put_user(AFMT_U8 | AFMT_S8 | |
@@ -430,20 +430,20 @@ static int dsp_ioctl(struct inode *inode, struct file *file, | |||
430 | case AFMT_U16_BE: | 430 | case AFMT_U16_BE: |
431 | case AFMT_S16_LE: | 431 | case AFMT_S16_LE: |
432 | case AFMT_S16_BE: | 432 | case AFMT_S16_BE: |
433 | down(&dev->oss.lock); | 433 | down(&dev->dmasound.lock); |
434 | dev->oss.afmt = val; | 434 | dev->dmasound.afmt = val; |
435 | if (dev->oss.recording_on) { | 435 | if (dev->dmasound.recording_on) { |
436 | dsp_rec_stop(dev); | 436 | dsp_rec_stop(dev); |
437 | dsp_rec_start(dev); | 437 | dsp_rec_start(dev); |
438 | } | 438 | } |
439 | up(&dev->oss.lock); | 439 | up(&dev->dmasound.lock); |
440 | return put_user(dev->oss.afmt, p); | 440 | return put_user(dev->dmasound.afmt, p); |
441 | default: | 441 | default: |
442 | return -EINVAL; | 442 | return -EINVAL; |
443 | } | 443 | } |
444 | 444 | ||
445 | case SOUND_PCM_READ_BITS: | 445 | case SOUND_PCM_READ_BITS: |
446 | switch (dev->oss.afmt) { | 446 | switch (dev->dmasound.afmt) { |
447 | case AFMT_U8: | 447 | case AFMT_U8: |
448 | case AFMT_S8: | 448 | case AFMT_S8: |
449 | return put_user(8, p); | 449 | return put_user(8, p); |
@@ -461,18 +461,18 @@ static int dsp_ioctl(struct inode *inode, struct file *file, | |||
461 | return 0; | 461 | return 0; |
462 | 462 | ||
463 | case SNDCTL_DSP_RESET: | 463 | case SNDCTL_DSP_RESET: |
464 | down(&dev->oss.lock); | 464 | down(&dev->dmasound.lock); |
465 | if (dev->oss.recording_on) | 465 | if (dev->dmasound.recording_on) |
466 | dsp_rec_stop(dev); | 466 | dsp_rec_stop(dev); |
467 | up(&dev->oss.lock); | 467 | up(&dev->dmasound.lock); |
468 | return 0; | 468 | return 0; |
469 | case SNDCTL_DSP_GETBLKSIZE: | 469 | case SNDCTL_DSP_GETBLKSIZE: |
470 | return put_user(dev->oss.blksize, p); | 470 | return put_user(dev->dmasound.blksize, p); |
471 | 471 | ||
472 | case SNDCTL_DSP_SETFRAGMENT: | 472 | case SNDCTL_DSP_SETFRAGMENT: |
473 | if (get_user(val, p)) | 473 | if (get_user(val, p)) |
474 | return -EFAULT; | 474 | return -EFAULT; |
475 | if (dev->oss.recording_on) | 475 | if (dev->dmasound.recording_on) |
476 | return -EBUSY; | 476 | return -EBUSY; |
477 | dsp_buffer_free(dev); | 477 | dsp_buffer_free(dev); |
478 | /* used to be arg >> 16 instead of val >> 16; fixed */ | 478 | /* used to be arg >> 16 instead of val >> 16; fixed */ |
@@ -487,9 +487,9 @@ static int dsp_ioctl(struct inode *inode, struct file *file, | |||
487 | case SNDCTL_DSP_GETISPACE: | 487 | case SNDCTL_DSP_GETISPACE: |
488 | { | 488 | { |
489 | audio_buf_info info; | 489 | audio_buf_info info; |
490 | info.fragsize = dev->oss.blksize; | 490 | info.fragsize = dev->dmasound.blksize; |
491 | info.fragstotal = dev->oss.blocks; | 491 | info.fragstotal = dev->dmasound.blocks; |
492 | info.bytes = dev->oss.read_count; | 492 | info.bytes = dev->dmasound.read_count; |
493 | info.fragments = info.bytes / info.fragsize; | 493 | info.fragments = info.bytes / info.fragsize; |
494 | if (copy_to_user(argp, &info, sizeof(info))) | 494 | if (copy_to_user(argp, &info, sizeof(info))) |
495 | return -EFAULT; | 495 | return -EFAULT; |
@@ -505,13 +505,13 @@ static unsigned int dsp_poll(struct file *file, struct poll_table_struct *wait) | |||
505 | struct saa7134_dev *dev = file->private_data; | 505 | struct saa7134_dev *dev = file->private_data; |
506 | unsigned int mask = 0; | 506 | unsigned int mask = 0; |
507 | 507 | ||
508 | poll_wait(file, &dev->oss.wq, wait); | 508 | poll_wait(file, &dev->dmasound.wq, wait); |
509 | 509 | ||
510 | if (0 == dev->oss.read_count) { | 510 | if (0 == dev->dmasound.read_count) { |
511 | down(&dev->oss.lock); | 511 | down(&dev->dmasound.lock); |
512 | if (!dev->oss.recording_on) | 512 | if (!dev->dmasound.recording_on) |
513 | dsp_rec_start(dev); | 513 | dsp_rec_start(dev); |
514 | up(&dev->oss.lock); | 514 | up(&dev->dmasound.lock); |
515 | } else | 515 | } else |
516 | mask |= (POLLIN | POLLRDNORM); | 516 | mask |= (POLLIN | POLLRDNORM); |
517 | return mask; | 517 | return mask; |
@@ -535,7 +535,7 @@ mixer_recsrc_7134(struct saa7134_dev *dev) | |||
535 | { | 535 | { |
536 | int analog_io,rate; | 536 | int analog_io,rate; |
537 | 537 | ||
538 | switch (dev->oss.input) { | 538 | switch (dev->dmasound.input) { |
539 | case TV: | 539 | case TV: |
540 | saa_andorb(SAA7134_AUDIO_FORMAT_CTRL, 0xc0, 0xc0); | 540 | saa_andorb(SAA7134_AUDIO_FORMAT_CTRL, 0xc0, 0xc0); |
541 | saa_andorb(SAA7134_SIF_SAMPLE_FREQ, 0x03, 0x00); | 541 | saa_andorb(SAA7134_SIF_SAMPLE_FREQ, 0x03, 0x00); |
@@ -543,8 +543,8 @@ mixer_recsrc_7134(struct saa7134_dev *dev) | |||
543 | case LINE1: | 543 | case LINE1: |
544 | case LINE2: | 544 | case LINE2: |
545 | case LINE2_LEFT: | 545 | case LINE2_LEFT: |
546 | analog_io = (LINE1 == dev->oss.input) ? 0x00 : 0x08; | 546 | analog_io = (LINE1 == dev->dmasound.input) ? 0x00 : 0x08; |
547 | rate = (32000 == dev->oss.rate) ? 0x01 : 0x03; | 547 | rate = (32000 == dev->dmasound.rate) ? 0x01 : 0x03; |
548 | saa_andorb(SAA7134_ANALOG_IO_SELECT, 0x08, analog_io); | 548 | saa_andorb(SAA7134_ANALOG_IO_SELECT, 0x08, analog_io); |
549 | saa_andorb(SAA7134_AUDIO_FORMAT_CTRL, 0xc0, 0x80); | 549 | saa_andorb(SAA7134_AUDIO_FORMAT_CTRL, 0xc0, 0x80); |
550 | saa_andorb(SAA7134_SIF_SAMPLE_FREQ, 0x03, rate); | 550 | saa_andorb(SAA7134_SIF_SAMPLE_FREQ, 0x03, rate); |
@@ -560,7 +560,7 @@ mixer_recsrc_7133(struct saa7134_dev *dev) | |||
560 | 560 | ||
561 | xbarin = 0x03; // adc | 561 | xbarin = 0x03; // adc |
562 | anabar = 0; | 562 | anabar = 0; |
563 | switch (dev->oss.input) { | 563 | switch (dev->dmasound.input) { |
564 | case TV: | 564 | case TV: |
565 | xbarin = 0; // Demodulator | 565 | xbarin = 0; // Demodulator |
566 | anabar = 2; // DACs | 566 | anabar = 2; // DACs |
@@ -586,9 +586,9 @@ mixer_recsrc(struct saa7134_dev *dev, enum saa7134_audio_in src) | |||
586 | { | 586 | { |
587 | static const char *iname[] = { "Oops", "TV", "LINE1", "LINE2" }; | 587 | static const char *iname[] = { "Oops", "TV", "LINE1", "LINE2" }; |
588 | 588 | ||
589 | dev->oss.count++; | 589 | dev->dmasound.count++; |
590 | dev->oss.input = src; | 590 | dev->dmasound.input = src; |
591 | dprintk("mixer input = %s\n",iname[dev->oss.input]); | 591 | dprintk("mixer input = %s\n",iname[dev->dmasound.input]); |
592 | 592 | ||
593 | switch (dev->pci->device) { | 593 | switch (dev->pci->device) { |
594 | case PCI_DEVICE_ID_PHILIPS_SAA7134: | 594 | case PCI_DEVICE_ID_PHILIPS_SAA7134: |
@@ -640,7 +640,7 @@ static int mixer_open(struct inode *inode, struct file *file) | |||
640 | 640 | ||
641 | list_for_each(list,&saa7134_devlist) { | 641 | list_for_each(list,&saa7134_devlist) { |
642 | h = list_entry(list, struct saa7134_dev, devlist); | 642 | h = list_entry(list, struct saa7134_dev, devlist); |
643 | if (h->oss.minor_mixer == minor) | 643 | if (h->dmasound.minor_mixer == minor) |
644 | dev = h; | 644 | dev = h; |
645 | } | 645 | } |
646 | if (NULL == dev) | 646 | if (NULL == dev) |
@@ -676,7 +676,7 @@ static int mixer_ioctl(struct inode *inode, struct file *file, | |||
676 | memset(&info,0,sizeof(info)); | 676 | memset(&info,0,sizeof(info)); |
677 | strlcpy(info.id, "TV audio", sizeof(info.id)); | 677 | strlcpy(info.id, "TV audio", sizeof(info.id)); |
678 | strlcpy(info.name, dev->name, sizeof(info.name)); | 678 | strlcpy(info.name, dev->name, sizeof(info.name)); |
679 | info.modify_counter = dev->oss.count; | 679 | info.modify_counter = dev->dmasound.count; |
680 | if (copy_to_user(argp, &info, sizeof(info))) | 680 | if (copy_to_user(argp, &info, sizeof(info))) |
681 | return -EFAULT; | 681 | return -EFAULT; |
682 | return 0; | 682 | return 0; |
@@ -698,26 +698,26 @@ static int mixer_ioctl(struct inode *inode, struct file *file, | |||
698 | case MIXER_READ(SOUND_MIXER_RECMASK): | 698 | case MIXER_READ(SOUND_MIXER_RECMASK): |
699 | case MIXER_READ(SOUND_MIXER_DEVMASK): | 699 | case MIXER_READ(SOUND_MIXER_DEVMASK): |
700 | val = SOUND_MASK_LINE1 | SOUND_MASK_LINE2; | 700 | val = SOUND_MASK_LINE1 | SOUND_MASK_LINE2; |
701 | if (32000 == dev->oss.rate) | 701 | if (32000 == dev->dmasound.rate) |
702 | val |= SOUND_MASK_VIDEO; | 702 | val |= SOUND_MASK_VIDEO; |
703 | return put_user(val, p); | 703 | return put_user(val, p); |
704 | 704 | ||
705 | case MIXER_WRITE(SOUND_MIXER_RECSRC): | 705 | case MIXER_WRITE(SOUND_MIXER_RECSRC): |
706 | if (get_user(val, p)) | 706 | if (get_user(val, p)) |
707 | return -EFAULT; | 707 | return -EFAULT; |
708 | input = dev->oss.input; | 708 | input = dev->dmasound.input; |
709 | if (32000 == dev->oss.rate && | 709 | if (32000 == dev->dmasound.rate && |
710 | val & SOUND_MASK_VIDEO && dev->oss.input != TV) | 710 | val & SOUND_MASK_VIDEO && dev->dmasound.input != TV) |
711 | input = TV; | 711 | input = TV; |
712 | if (val & SOUND_MASK_LINE1 && dev->oss.input != LINE1) | 712 | if (val & SOUND_MASK_LINE1 && dev->dmasound.input != LINE1) |
713 | input = LINE1; | 713 | input = LINE1; |
714 | if (val & SOUND_MASK_LINE2 && dev->oss.input != LINE2) | 714 | if (val & SOUND_MASK_LINE2 && dev->dmasound.input != LINE2) |
715 | input = LINE2; | 715 | input = LINE2; |
716 | if (input != dev->oss.input) | 716 | if (input != dev->dmasound.input) |
717 | mixer_recsrc(dev,input); | 717 | mixer_recsrc(dev,input); |
718 | /* fall throuth */ | 718 | /* fall throuth */ |
719 | case MIXER_READ(SOUND_MIXER_RECSRC): | 719 | case MIXER_READ(SOUND_MIXER_RECSRC): |
720 | switch (dev->oss.input) { | 720 | switch (dev->dmasound.input) { |
721 | case TV: ret = SOUND_MASK_VIDEO; break; | 721 | case TV: ret = SOUND_MASK_VIDEO; break; |
722 | case LINE1: ret = SOUND_MASK_LINE1; break; | 722 | case LINE1: ret = SOUND_MASK_LINE1; break; |
723 | case LINE2: ret = SOUND_MASK_LINE2; break; | 723 | case LINE2: ret = SOUND_MASK_LINE2; break; |
@@ -727,7 +727,7 @@ static int mixer_ioctl(struct inode *inode, struct file *file, | |||
727 | 727 | ||
728 | case MIXER_WRITE(SOUND_MIXER_VIDEO): | 728 | case MIXER_WRITE(SOUND_MIXER_VIDEO): |
729 | case MIXER_READ(SOUND_MIXER_VIDEO): | 729 | case MIXER_READ(SOUND_MIXER_VIDEO): |
730 | if (32000 != dev->oss.rate) | 730 | if (32000 != dev->dmasound.rate) |
731 | return -EINVAL; | 731 | return -EINVAL; |
732 | return put_user(100 | 100 << 8, p); | 732 | return put_user(100 | 100 << 8, p); |
733 | 733 | ||
@@ -736,22 +736,22 @@ static int mixer_ioctl(struct inode *inode, struct file *file, | |||
736 | return -EFAULT; | 736 | return -EFAULT; |
737 | val &= 0xff; | 737 | val &= 0xff; |
738 | val = (val <= 50) ? 50 : 100; | 738 | val = (val <= 50) ? 50 : 100; |
739 | dev->oss.line1 = val; | 739 | dev->dmasound.line1 = val; |
740 | mixer_level(dev,LINE1,dev->oss.line1); | 740 | mixer_level(dev,LINE1,dev->dmasound.line1); |
741 | /* fall throuth */ | 741 | /* fall throuth */ |
742 | case MIXER_READ(SOUND_MIXER_LINE1): | 742 | case MIXER_READ(SOUND_MIXER_LINE1): |
743 | return put_user(dev->oss.line1 | dev->oss.line1 << 8, p); | 743 | return put_user(dev->dmasound.line1 | dev->dmasound.line1 << 8, p); |
744 | 744 | ||
745 | case MIXER_WRITE(SOUND_MIXER_LINE2): | 745 | case MIXER_WRITE(SOUND_MIXER_LINE2): |
746 | if (get_user(val, p)) | 746 | if (get_user(val, p)) |
747 | return -EFAULT; | 747 | return -EFAULT; |
748 | val &= 0xff; | 748 | val &= 0xff; |
749 | val = (val <= 50) ? 50 : 100; | 749 | val = (val <= 50) ? 50 : 100; |
750 | dev->oss.line2 = val; | 750 | dev->dmasound.line2 = val; |
751 | mixer_level(dev,LINE2,dev->oss.line2); | 751 | mixer_level(dev,LINE2,dev->dmasound.line2); |
752 | /* fall throuth */ | 752 | /* fall throuth */ |
753 | case MIXER_READ(SOUND_MIXER_LINE2): | 753 | case MIXER_READ(SOUND_MIXER_LINE2): |
754 | return put_user(dev->oss.line2 | dev->oss.line2 << 8, p); | 754 | return put_user(dev->dmasound.line2 | dev->dmasound.line2 << 8, p); |
755 | 755 | ||
756 | default: | 756 | default: |
757 | return -EINVAL; | 757 | return -EINVAL; |
@@ -771,8 +771,8 @@ struct file_operations saa7134_mixer_fops = { | |||
771 | int saa7134_oss_init1(struct saa7134_dev *dev) | 771 | int saa7134_oss_init1(struct saa7134_dev *dev) |
772 | { | 772 | { |
773 | /* general */ | 773 | /* general */ |
774 | init_MUTEX(&dev->oss.lock); | 774 | init_MUTEX(&dev->dmasound.lock); |
775 | init_waitqueue_head(&dev->oss.wq); | 775 | init_waitqueue_head(&dev->dmasound.wq); |
776 | 776 | ||
777 | switch (dev->pci->device) { | 777 | switch (dev->pci->device) { |
778 | case PCI_DEVICE_ID_PHILIPS_SAA7133: | 778 | case PCI_DEVICE_ID_PHILIPS_SAA7133: |
@@ -784,17 +784,17 @@ int saa7134_oss_init1(struct saa7134_dev *dev) | |||
784 | } | 784 | } |
785 | 785 | ||
786 | /* dsp */ | 786 | /* dsp */ |
787 | dev->oss.rate = 32000; | 787 | dev->dmasound.rate = 32000; |
788 | if (oss_rate) | 788 | if (oss_rate) |
789 | dev->oss.rate = oss_rate; | 789 | dev->dmasound.rate = oss_rate; |
790 | dev->oss.rate = (dev->oss.rate > 40000) ? 48000 : 32000; | 790 | dev->dmasound.rate = (dev->dmasound.rate > 40000) ? 48000 : 32000; |
791 | 791 | ||
792 | /* mixer */ | 792 | /* mixer */ |
793 | dev->oss.line1 = 50; | 793 | dev->dmasound.line1 = 50; |
794 | dev->oss.line2 = 50; | 794 | dev->dmasound.line2 = 50; |
795 | mixer_level(dev,LINE1,dev->oss.line1); | 795 | mixer_level(dev,LINE1,dev->dmasound.line1); |
796 | mixer_level(dev,LINE2,dev->oss.line2); | 796 | mixer_level(dev,LINE2,dev->dmasound.line2); |
797 | mixer_recsrc(dev, (dev->oss.rate == 32000) ? TV : LINE2); | 797 | mixer_recsrc(dev, (dev->dmasound.rate == 32000) ? TV : LINE2); |
798 | 798 | ||
799 | return 0; | 799 | return 0; |
800 | } | 800 | } |
@@ -810,7 +810,7 @@ void saa7134_irq_oss_done(struct saa7134_dev *dev, unsigned long status) | |||
810 | int next_blk, reg = 0; | 810 | int next_blk, reg = 0; |
811 | 811 | ||
812 | spin_lock(&dev->slock); | 812 | spin_lock(&dev->slock); |
813 | if (UNSET == dev->oss.dma_blk) { | 813 | if (UNSET == dev->dmasound.dma_blk) { |
814 | dprintk("irq: recording stopped\n"); | 814 | dprintk("irq: recording stopped\n"); |
815 | goto done; | 815 | goto done; |
816 | } | 816 | } |
@@ -818,11 +818,11 @@ void saa7134_irq_oss_done(struct saa7134_dev *dev, unsigned long status) | |||
818 | dprintk("irq: lost %ld\n", (status >> 24) & 0x0f); | 818 | dprintk("irq: lost %ld\n", (status >> 24) & 0x0f); |
819 | if (0 == (status & 0x10000000)) { | 819 | if (0 == (status & 0x10000000)) { |
820 | /* odd */ | 820 | /* odd */ |
821 | if (0 == (dev->oss.dma_blk & 0x01)) | 821 | if (0 == (dev->dmasound.dma_blk & 0x01)) |
822 | reg = SAA7134_RS_BA1(6); | 822 | reg = SAA7134_RS_BA1(6); |
823 | } else { | 823 | } else { |
824 | /* even */ | 824 | /* even */ |
825 | if (1 == (dev->oss.dma_blk & 0x01)) | 825 | if (1 == (dev->dmasound.dma_blk & 0x01)) |
826 | reg = SAA7134_RS_BA2(6); | 826 | reg = SAA7134_RS_BA2(6); |
827 | } | 827 | } |
828 | if (0 == reg) { | 828 | if (0 == reg) { |
@@ -830,25 +830,25 @@ void saa7134_irq_oss_done(struct saa7134_dev *dev, unsigned long status) | |||
830 | (status & 0x10000000) ? "even" : "odd"); | 830 | (status & 0x10000000) ? "even" : "odd"); |
831 | goto done; | 831 | goto done; |
832 | } | 832 | } |
833 | if (dev->oss.read_count >= dev->oss.blksize * (dev->oss.blocks-2)) { | 833 | if (dev->dmasound.read_count >= dev->dmasound.blksize * (dev->dmasound.blocks-2)) { |
834 | dprintk("irq: overrun [full=%d/%d]\n",dev->oss.read_count, | 834 | dprintk("irq: overrun [full=%d/%d]\n",dev->dmasound.read_count, |
835 | dev->oss.bufsize); | 835 | dev->dmasound.bufsize); |
836 | dsp_dma_stop(dev); | 836 | dsp_dma_stop(dev); |
837 | goto done; | 837 | goto done; |
838 | } | 838 | } |
839 | 839 | ||
840 | /* next block addr */ | 840 | /* next block addr */ |
841 | next_blk = (dev->oss.dma_blk + 2) % dev->oss.blocks; | 841 | next_blk = (dev->dmasound.dma_blk + 2) % dev->dmasound.blocks; |
842 | saa_writel(reg,next_blk * dev->oss.blksize); | 842 | saa_writel(reg,next_blk * dev->dmasound.blksize); |
843 | if (oss_debug > 2) | 843 | if (oss_debug > 2) |
844 | dprintk("irq: ok, %s, next_blk=%d, addr=%x\n", | 844 | dprintk("irq: ok, %s, next_blk=%d, addr=%x\n", |
845 | (status & 0x10000000) ? "even" : "odd ", next_blk, | 845 | (status & 0x10000000) ? "even" : "odd ", next_blk, |
846 | next_blk * dev->oss.blksize); | 846 | next_blk * dev->dmasound.blksize); |
847 | 847 | ||
848 | /* update status & wake waiting readers */ | 848 | /* update status & wake waiting readers */ |
849 | dev->oss.dma_blk = (dev->oss.dma_blk + 1) % dev->oss.blocks; | 849 | dev->dmasound.dma_blk = (dev->dmasound.dma_blk + 1) % dev->dmasound.blocks; |
850 | dev->oss.read_count += dev->oss.blksize; | 850 | dev->dmasound.read_count += dev->dmasound.blksize; |
851 | wake_up(&dev->oss.wq); | 851 | wake_up(&dev->dmasound.wq); |
852 | 852 | ||
853 | done: | 853 | done: |
854 | spin_unlock(&dev->slock); | 854 | spin_unlock(&dev->slock); |