Lines Matching refs:adev

39 static int local_start_dma(struct audio_operations *adev, unsigned long physaddr, int count, int dm…
187 static int open_dmap(struct audio_operations *adev, int mode, struct dma_buffparms *dmap) in open_dmap() argument
200 if (dmap->dma >= 0 && sound_open_dma(dmap->dma, adev->name)) { in open_dmap()
219 static void close_dmap(struct audio_operations *adev, struct dma_buffparms *dmap) in close_dmap() argument
281 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_open() local
286 if (!adev) in DMAbuf_open()
288 if (!(adev->flags & DMA_DUPLEX)) in DMAbuf_open()
289 adev->dmap_in = adev->dmap_out; in DMAbuf_open()
290 check_driver(adev->d); in DMAbuf_open()
292 if ((retval = adev->d->open(dev, mode)) < 0) in DMAbuf_open()
294 dmap_out = adev->dmap_out; in DMAbuf_open()
295 dmap_in = adev->dmap_in; in DMAbuf_open()
297 adev->flags &= ~DMA_DUPLEX; in DMAbuf_open()
300 if ((retval = open_dmap(adev, mode, dmap_out)) < 0) { in DMAbuf_open()
301 adev->d->close(dev); in DMAbuf_open()
305 adev->enable_bits = mode; in DMAbuf_open()
307 if (mode == OPEN_READ || (mode != OPEN_WRITE && (adev->flags & DMA_DUPLEX))) { in DMAbuf_open()
308 if ((retval = open_dmap(adev, mode, dmap_in)) < 0) { in DMAbuf_open()
309 adev->d->close(dev); in DMAbuf_open()
311 close_dmap(adev, dmap_out); in DMAbuf_open()
315 adev->open_mode = mode; in DMAbuf_open()
316 adev->go = 1; in DMAbuf_open()
318 adev->d->set_bits(dev, 8); in DMAbuf_open()
319 adev->d->set_channels(dev, 1); in DMAbuf_open()
320 adev->d->set_speed(dev, DSP_DEFAULT_SPEED); in DMAbuf_open()
321 if (adev->dmap_out->dma_mode == DMODE_OUTPUT) in DMAbuf_open()
322 memset(adev->dmap_out->raw_buf, adev->dmap_out->neutral_byte, in DMAbuf_open()
323 adev->dmap_out->bytes_in_use); in DMAbuf_open()
338 struct audio_operations *adev = audio_devs[dev]; in dma_reset_output() local
340 struct dma_buffparms *dmap = adev->dmap_out; in dma_reset_output()
349 adev->dmap_out->flags |= DMA_SYNCING; in dma_reset_output()
351 adev->dmap_out->underrun_count = 0; in dma_reset_output()
352 if (!signal_pending(current) && adev->dmap_out->qlen && in dma_reset_output()
353 adev->dmap_out->underrun_count == 0){ in dma_reset_output()
355 oss_broken_sleep_on(&adev->out_sleeper, dmabuf_timeout(dmap)); in dma_reset_output()
358 adev->dmap_out->flags &= ~(DMA_SYNCING | DMA_ACTIVE); in dma_reset_output()
363 if (!(adev->flags & DMA_DUPLEX) || !adev->d->halt_output) in dma_reset_output()
364 adev->d->halt_io(dev); in dma_reset_output()
366 adev->d->halt_output(dev); in dma_reset_output()
367 adev->dmap_out->flags &= ~DMA_STARTED; in dma_reset_output()
375 reorganize_buffers(dev, adev->dmap_out, 0); in dma_reset_output()
382 struct audio_operations *adev = audio_devs[dev]; in dma_reset_input() local
384 struct dma_buffparms *dmap = adev->dmap_in; in dma_reset_input()
387 if (!(adev->flags & DMA_DUPLEX) || !adev->d->halt_input) in dma_reset_input()
388 adev->d->halt_io(dev); in dma_reset_input()
390 adev->d->halt_input(dev); in dma_reset_input()
391 adev->dmap_in->flags &= ~DMA_STARTED; in dma_reset_input()
395 reorganize_buffers(dev, adev->dmap_in, 1); in dma_reset_input()
401 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_launch_output() local
403 if (!((adev->enable_bits * adev->go) & PCM_ENABLE_OUTPUT)) in DMAbuf_launch_output()
407 if (!(dmap->flags & DMA_ACTIVE) || !(adev->flags & DMA_AUTOMODE) || (dmap->flags & DMA_NODMA)) { in DMAbuf_launch_output()
410 if (adev->d->prepare_for_output(dev, dmap->fragment_size, dmap->nbufs)) in DMAbuf_launch_output()
413 local_start_dma(adev, dmap->raw_buf_phys, dmap->bytes_in_use,DMA_MODE_WRITE); in DMAbuf_launch_output()
419 adev->d->output_block(dev, dmap->raw_buf_phys + dmap->qhead * dmap->fragment_size, in DMAbuf_launch_output()
421 if (adev->d->trigger) in DMAbuf_launch_output()
422 adev->d->trigger(dev,adev->enable_bits * adev->go); in DMAbuf_launch_output()
429 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_sync() local
434 if (!adev->go && !(adev->enable_bits & PCM_ENABLE_OUTPUT)) in DMAbuf_sync()
437 if (adev->dmap_out->dma_mode == DMODE_OUTPUT) { in DMAbuf_sync()
438 dmap = adev->dmap_out; in DMAbuf_sync()
442 adev->dmap_out->flags |= DMA_SYNCING; in DMAbuf_sync()
443 adev->dmap_out->underrun_count = 0; in DMAbuf_sync()
444 while (!signal_pending(current) && n++ < adev->dmap_out->nbufs && in DMAbuf_sync()
445 adev->dmap_out->qlen && adev->dmap_out->underrun_count == 0) { in DMAbuf_sync()
449 t = oss_broken_sleep_on(&adev->out_sleeper, t); in DMAbuf_sync()
452 adev->dmap_out->flags &= ~DMA_SYNCING; in DMAbuf_sync()
454 return adev->dmap_out->qlen; in DMAbuf_sync()
457 adev->dmap_out->flags &= ~(DMA_SYNCING | DMA_ACTIVE); in DMAbuf_sync()
465 if (adev->d->local_qlen) { /* Device has hidden buffers */ in DMAbuf_sync()
467 adev->d->local_qlen(dev)){ in DMAbuf_sync()
469 oss_broken_sleep_on(&adev->out_sleeper, in DMAbuf_sync()
476 adev->dmap_out->dma_mode = DMODE_NONE; in DMAbuf_sync()
477 return adev->dmap_out->qlen; in DMAbuf_sync()
482 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_release() local
486 dmap = adev->dmap_out; in DMAbuf_release()
487 if (adev->open_mode & OPEN_WRITE) in DMAbuf_release()
488 adev->dmap_out->closing = 1; in DMAbuf_release()
490 if (adev->open_mode & OPEN_READ){ in DMAbuf_release()
491 adev->dmap_in->closing = 1; in DMAbuf_release()
492 dmap = adev->dmap_in; in DMAbuf_release()
494 if (adev->open_mode & OPEN_WRITE) in DMAbuf_release()
495 if (!(adev->dmap_out->mapping_flags & DMA_MAP_MAPPED)) in DMAbuf_release()
496 if (!signal_pending(current) && (adev->dmap_out->dma_mode == DMODE_OUTPUT)) in DMAbuf_release()
498 if (adev->dmap_out->dma_mode == DMODE_OUTPUT) in DMAbuf_release()
499 memset(adev->dmap_out->raw_buf, adev->dmap_out->neutral_byte, adev->dmap_out->bytes_in_use); in DMAbuf_release()
503 adev->d->close(dev); in DMAbuf_release()
505 if (adev->open_mode & OPEN_WRITE) in DMAbuf_release()
506 close_dmap(adev, adev->dmap_out); in DMAbuf_release()
508 if (adev->open_mode == OPEN_READ || in DMAbuf_release()
509 (adev->open_mode != OPEN_WRITE && in DMAbuf_release()
510 (adev->flags & DMA_DUPLEX))) in DMAbuf_release()
511 close_dmap(adev, adev->dmap_in); in DMAbuf_release()
512 adev->open_mode = 0; in DMAbuf_release()
519 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_activate_recording() local
522 if (!(adev->open_mode & OPEN_READ)) in DMAbuf_activate_recording()
524 if (!(adev->enable_bits & PCM_ENABLE_INPUT)) in DMAbuf_activate_recording()
536 if ((err = adev->d->prepare_for_input(dev, in DMAbuf_activate_recording()
544 local_start_dma(adev, dmap->raw_buf_phys, dmap->bytes_in_use, DMA_MODE_READ); in DMAbuf_activate_recording()
545 adev->d->start_input(dev, dmap->raw_buf_phys + dmap->qtail * dmap->fragment_size, in DMAbuf_activate_recording()
548 if (adev->d->trigger) in DMAbuf_activate_recording()
549 adev->d->trigger(dev, adev->enable_bits * adev->go); in DMAbuf_activate_recording()
556 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_getrdbuffer() local
559 struct dma_buffparms *dmap = adev->dmap_in; in DMAbuf_getrdbuffer()
561 if (!(adev->open_mode & OPEN_READ)) in DMAbuf_getrdbuffer()
566 if (adev->dmap_in->mapping_flags & DMA_MAP_MAPPED) { in DMAbuf_getrdbuffer()
572 if (!(adev->enable_bits & PCM_ENABLE_INPUT) || !adev->go) { in DMAbuf_getrdbuffer()
586 if (adev->go) in DMAbuf_getrdbuffer()
590 timeout = oss_broken_sleep_on(&adev->in_sleeper, timeout); in DMAbuf_getrdbuffer()
612 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_rmchars() local
613 struct dma_buffparms *dmap = adev->dmap_in; in DMAbuf_rmchars()
691 struct audio_operations *adev; in DMAbuf_start_devices() local
697 if (!(adev = audio_devs[dev])) in DMAbuf_start_devices()
699 if (adev->open_mode == 0) in DMAbuf_start_devices()
701 if (adev->go) in DMAbuf_start_devices()
704 adev->go = 1; in DMAbuf_start_devices()
705 if (adev->d->trigger) in DMAbuf_start_devices()
706 adev->d->trigger(dev,adev->enable_bits * adev->go); in DMAbuf_start_devices()
712 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_space_in_queue() local
714 struct dma_buffparms *dmap = adev->dmap_out; in DMAbuf_space_in_queue()
733 if (adev->d->local_qlen) { in DMAbuf_space_in_queue()
734 tmp = adev->d->local_qlen(dev); in DMAbuf_space_in_queue()
749 struct audio_operations *adev = audio_devs[dev]; in output_sleep() local
751 struct dma_buffparms *dmap = adev->dmap_out; in output_sleep()
757 if (!(adev->enable_bits & PCM_ENABLE_OUTPUT)) in output_sleep()
765 timeout = (adev->go && !(dmap->flags & DMA_NOTIMEOUT)); in output_sleep()
770 timeout_value = oss_broken_sleep_on(&adev->out_sleeper, timeout_value); in output_sleep()
783 struct audio_operations *adev = audio_devs[dev]; in find_output_space() local
784 struct dma_buffparms *dmap = adev->dmap_out; in find_output_space()
827 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_getwrbuffer() local
830 struct dma_buffparms *dmap = adev->dmap_out; in DMAbuf_getwrbuffer()
861 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_move_wrpointer() local
862 struct dma_buffparms *dmap = adev->dmap_out; in DMAbuf_move_wrpointer()
903 if (adev->d->postprocess_write) in DMAbuf_move_wrpointer()
904 adev->d->postprocess_write(dev); in DMAbuf_move_wrpointer()
916 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_start_dma() local
917 struct dma_buffparms *dmap = (dma_mode == DMA_MODE_WRITE) ? adev->dmap_out : adev->dmap_in; in DMAbuf_start_dma()
921 printk("Device %d, chn=%s\n", dev, (dmap == adev->dmap_out) ? "out" : "in"); in DMAbuf_start_dma()
931 static int local_start_dma(struct audio_operations *adev, unsigned long physaddr, int count, int dm… in local_start_dma() argument
933 struct dma_buffparms *dmap = (dma_mode == DMA_MODE_WRITE) ? adev->dmap_out : adev->dmap_in; in local_start_dma()
937 printk(KERN_ERR "Device %s, chn=%s\n", adev->name, (dmap == adev->dmap_out) ? "out" : "in"); in local_start_dma()
951 struct audio_operations *adev = audio_devs[dev]; in finish_output_interrupt() local
955 wake_up(&adev->out_sleeper); in finish_output_interrupt()
956 wake_up(&adev->poll_sleeper); in finish_output_interrupt()
961 struct audio_operations *adev = audio_devs[dev]; in do_outputintr() local
962 struct dma_buffparms *dmap = adev->dmap_out; in do_outputintr()
982 if (!(adev->flags & DMA_AUTOMODE)) in do_outputintr()
1003 if (!(adev->flags & DMA_AUTOMODE)) in do_outputintr()
1016 memset(adev->dmap_out->raw_buf, adev->dmap_out->neutral_byte, in do_outputintr()
1017 adev->dmap_out->buffsize); in do_outputintr()
1029 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_outputintr() local
1031 struct dma_buffparms *dmap = adev->dmap_out; in DMAbuf_outputintr()
1064 struct audio_operations *adev = audio_devs[dev]; in do_inputintr() local
1065 struct dma_buffparms *dmap = adev->dmap_in; in do_inputintr()
1084 if (!(adev->flags & DMA_AUTOMODE)) { in do_inputintr()
1087 local_start_dma(adev, dmap->raw_buf_phys, dmap->bytes_in_use,DMA_MODE_READ); in do_inputintr()
1088 adev->d->start_input(dev, dmap->raw_buf_phys + dmap->qtail * dmap->fragment_size, in do_inputintr()
1090 if (adev->d->trigger) in do_inputintr()
1091 adev->d->trigger(dev, adev->enable_bits * adev->go); in do_inputintr()
1114 if (!(adev->flags & DMA_AUTOMODE) || (dmap->flags & DMA_NODMA)) { in do_inputintr()
1115 local_start_dma(adev, dmap->raw_buf_phys, dmap->bytes_in_use, DMA_MODE_READ); in do_inputintr()
1116adev->d->start_input(dev, dmap->raw_buf_phys + dmap->qtail * dmap->fragment_size, dmap->fragment_s… in do_inputintr()
1117 if (adev->d->trigger) in do_inputintr()
1118 adev->d->trigger(dev,adev->enable_bits * adev->go); in do_inputintr()
1123 wake_up(&adev->in_sleeper); in do_inputintr()
1124 wake_up(&adev->poll_sleeper); in do_inputintr()
1130 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_inputintr() local
1131 struct dma_buffparms *dmap = adev->dmap_in; in DMAbuf_inputintr()
1164 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_init() local
1169 if (adev && adev->dmap_out == NULL) { in DMAbuf_init()
1170 if (adev->d == NULL) in DMAbuf_init()
1173 if (adev->parent_dev) { /* Use DMA map of the parent dev */ in DMAbuf_init()
1174 int parent = adev->parent_dev - 1; in DMAbuf_init()
1175 adev->dmap_out = audio_devs[parent]->dmap_out; in DMAbuf_init()
1176 adev->dmap_in = audio_devs[parent]->dmap_in; in DMAbuf_init()
1178 adev->dmap_out = adev->dmap_in = &adev->dmaps[0]; in DMAbuf_init()
1179 adev->dmap_out->dma = dma1; in DMAbuf_init()
1180 if (adev->flags & DMA_DUPLEX) { in DMAbuf_init()
1181 adev->dmap_in = &adev->dmaps[1]; in DMAbuf_init()
1182 adev->dmap_in->dma = dma2; in DMAbuf_init()
1187 if (adev->dmap_in->raw_buf == NULL) in DMAbuf_init()
1188 sound_alloc_dmap(adev->dmap_in); in DMAbuf_init()
1189 if (adev->dmap_out->raw_buf == NULL) in DMAbuf_init()
1190 sound_alloc_dmap(adev->dmap_out); in DMAbuf_init()
1198 struct audio_operations *adev = audio_devs[dev]; in poll_input() local
1199 struct dma_buffparms *dmap = adev->dmap_in; in poll_input()
1201 if (!(adev->open_mode & OPEN_READ)) in poll_input()
1210 adev->enable_bits & PCM_ENABLE_INPUT && in poll_input()
1211 !dmap->qlen && adev->go) { in poll_input()
1227 struct audio_operations *adev = audio_devs[dev]; in poll_output() local
1228 struct dma_buffparms *dmap = adev->dmap_out; in poll_output()
1230 if (!(adev->open_mode & OPEN_WRITE)) in poll_output()
1248 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_poll() local
1249 poll_wait(file, &adev->poll_sleeper, wait); in DMAbuf_poll()
1255 struct audio_operations *adev = audio_devs[dev]; in DMAbuf_deinit() local
1257 if (!adev) in DMAbuf_deinit()
1262 sound_free_dmap(adev->dmap_out); in DMAbuf_deinit()
1263 if (adev->flags & DMA_DUPLEX) in DMAbuf_deinit()
1264 sound_free_dmap(adev->dmap_in); in DMAbuf_deinit()