• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/pci/ctxfi/

Lines Matching defs:apcm

128 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm);
135 static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
140 if (!apcm->substream)
143 runtime = apcm->substream->runtime;
146 apcm->vm_block = vm->map(vm, apcm->substream, runtime->dma_bytes);
148 if (!apcm->vm_block)
154 static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
158 if (!apcm->vm_block)
163 vm->unmap(vm, apcm->vm_block);
165 apcm->vm_block = NULL;
241 static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
250 int n_amixer = apcm->substream->runtime->channels, i = 0;
251 int device = apcm->substream->pcm->device;
255 atc_pcm_release_resources(atc, apcm);
258 desc.multi = apcm->substream->runtime->channels;
261 err = src_mgr->get_src(src_mgr, &desc, (struct src **)&apcm->src);
265 pitch = atc_get_pitch(apcm->substream->runtime->rate,
267 src = apcm->src;
270 src->ops->set_sf(src, convert_format(apcm->substream->runtime->format));
275 apcm->amixers = kzalloc(sizeof(void *)*n_amixer, GFP_KERNEL);
276 if (!apcm->amixers) {
281 for (i = 0, apcm->n_amixer = 0; i < n_amixer; i++) {
283 (struct amixer **)&apcm->amixers[i]);
287 apcm->n_amixer++;
291 err = ct_map_audio_buffer(atc, apcm);
296 src = apcm->src;
298 amixer = apcm->amixers[i];
305 src = apcm->src;
308 ct_timer_prepare(apcm->timer);
313 atc_pcm_release_resources(atc, apcm);
318 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm)
327 if (apcm->srcimps) {
328 for (i = 0; i < apcm->n_srcimp; i++) {
329 srcimp = apcm->srcimps[i];
332 apcm->srcimps[i] = NULL;
334 kfree(apcm->srcimps);
335 apcm->srcimps = NULL;
338 if (apcm->srccs) {
339 for (i = 0; i < apcm->n_srcc; i++) {
340 src_mgr->put_src(src_mgr, apcm->srccs[i]);
341 apcm->srccs[i] = NULL;
343 kfree(apcm->srccs);
344 apcm->srccs = NULL;
347 if (apcm->amixers) {
348 for (i = 0; i < apcm->n_amixer; i++) {
349 amixer_mgr->put_amixer(amixer_mgr, apcm->amixers[i]);
350 apcm->amixers[i] = NULL;
352 kfree(apcm->amixers);
353 apcm->amixers = NULL;
356 if (apcm->mono) {
357 sum_mgr->put_sum(sum_mgr, apcm->mono);
358 apcm->mono = NULL;
361 if (apcm->src) {
362 src_mgr->put_src(src_mgr, apcm->src);
363 apcm->src = NULL;
366 if (apcm->vm_block) {
368 ct_unmap_audio_buffer(atc, apcm);
369 apcm->vm_block = NULL;
375 static int atc_pcm_playback_start(struct ct_atc *atc, struct ct_atc_pcm *apcm)
378 struct src *src = apcm->src;
380 if (apcm->started)
382 apcm->started = 1;
387 src->ops->set_sa(src, apcm->vm_block->addr);
388 src->ops->set_la(src, apcm->vm_block->addr + apcm->vm_block->size);
389 src->ops->set_ca(src, apcm->vm_block->addr + max_cisz);
396 ct_timer_start(apcm->timer);
400 static int atc_pcm_stop(struct ct_atc *atc, struct ct_atc_pcm *apcm)
405 ct_timer_stop(apcm->timer);
407 src = apcm->src;
412 if (apcm->srccs) {
413 for (i = 0; i < apcm->n_srcc; i++) {
414 src = apcm->srccs[i];
421 apcm->started = 0;
427 atc_pcm_playback_position(struct ct_atc *atc, struct ct_atc_pcm *apcm)
429 struct src *src = apcm->src;
437 size = apcm->vm_block->size;
441 return (position + size - max_cisz - apcm->vm_block->addr) % size;
452 static void setup_src_node_conf(struct ct_atc *atc, struct ct_atc_pcm *apcm,
459 apcm->substream->runtime->rate);
463 *n_srcc = apcm->substream->runtime->channels;
476 apcm->substream->runtime->rate);
479 *n_srcc = apcm->substream->runtime->channels * 2;
487 *n_srcc = apcm->substream->runtime->channels;
493 atc_pcm_capture_get_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm)
511 atc_pcm_release_resources(atc, apcm);
516 multi = apcm->substream->runtime->channels;
520 apcm->substream->runtime->rate);
522 setup_src_node_conf(atc, apcm, src_node_conf, &n_srcc);
536 apcm->srccs = kzalloc(sizeof(void *)*n_srcc, GFP_KERNEL);
537 if (!apcm->srccs)
541 apcm->amixers = kzalloc(sizeof(void *)*n_amixer, GFP_KERNEL);
542 if (!apcm->amixers) {
547 apcm->srcimps = kzalloc(sizeof(void *)*n_srcimp, GFP_KERNEL);
548 if (!apcm->srcimps) {
556 for (i = 0, apcm->n_srcc = 0; i < n_srcc; i++) {
559 (struct src **)&apcm->srccs[i]);
563 src = apcm->srccs[i];
569 apcm->n_srcc++;
573 for (i = 0, apcm->n_amixer = 0; i < n_amixer; i++) {
582 (struct amixer **)&apcm->amixers[i]);
586 apcm->n_amixer++;
591 err = sum_mgr->get_sum(sum_mgr, &sum_dsc, (struct sum **)&apcm->mono);
596 apcm->substream->runtime->rate);
598 for (i = 0, apcm->n_srcimp = 0; i < n_srcimp; i++) {
610 apcm->srcimps[i] = srcimp;
611 apcm->n_srcimp++;
615 src_dsc.multi = apcm->substream->runtime->channels;
618 err = src_mgr->get_src(src_mgr, &src_dsc, (struct src **)&apcm->src);
622 src = apcm->src;
626 err = ct_map_audio_buffer(atc, apcm);
633 atc_pcm_release_resources(atc, apcm);
637 static int atc_pcm_capture_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
649 atc_pcm_release_resources(atc, apcm);
652 err = atc_pcm_capture_get_resources(atc, apcm);
660 multi = apcm->substream->runtime->channels;
662 mono = apcm->mono;
664 amixer = apcm->amixers[i];
673 for (i = 0; i < apcm->n_srcc; i++) {
674 src = apcm->srccs[i];
675 srcimp = apcm->srcimps[imp_base+i];
676 amixer = apcm->amixers[mix_base+i];
683 apcm->substream->runtime->rate);
691 amixer = apcm->amixers[apcm->n_srcc+j*multi+i];
698 srcimp = apcm->srcimps[apcm->n_srcc+j*multi+i];
699 srcimp->ops->map(srcimp, apcm->src,
705 srcimp = apcm->srcimps[apcm->n_srcc+i];
706 srcimp->ops->map(srcimp, apcm->src, out_ports[i]);
710 ct_timer_prepare(apcm->timer);
715 static int atc_pcm_capture_start(struct ct_atc *atc, struct ct_atc_pcm *apcm)
721 if (apcm->started)
724 apcm->started = 1;
725 multi = apcm->substream->runtime->channels;
727 for (i = 0; i < apcm->n_srcc; i++) {
728 src = apcm->srccs[i];
734 src = apcm->src;
735 src->ops->set_sf(src, convert_format(apcm->substream->runtime->format));
736 src->ops->set_sa(src, apcm->vm_block->addr);
737 src->ops->set_la(src, apcm->vm_block->addr + apcm->vm_block->size);
738 src->ops->set_ca(src, apcm->vm_block->addr);
745 for (i = 0; i < apcm->n_srcc; i++) {
746 src = apcm->srccs[i];
751 src = apcm->src;
760 ct_timer_start(apcm->timer);
765 atc_pcm_capture_position(struct ct_atc *atc, struct ct_atc_pcm *apcm)
767 struct src *src = apcm->src;
771 return src->ops->get_ca(src) - apcm->vm_block->addr;
775 struct ct_atc_pcm *apcm)
783 int n_amixer = apcm->substream->runtime->channels, i;
787 atc_pcm_release_resources(atc, apcm);
790 desc.multi = apcm->substream->runtime->channels;
792 while (apcm->substream->runtime->rate > (rsr * desc.msr))
796 err = src_mgr->get_src(src_mgr, &desc, (struct src **)&apcm->src);
800 pitch = atc_get_pitch(apcm->substream->runtime->rate, (rsr * desc.msr));
801 src = apcm->src;
804 src->ops->set_sf(src, convert_format(apcm->substream->runtime->format));
810 apcm->amixers = kzalloc(sizeof(void *)*n_amixer, GFP_KERNEL);
811 if (!apcm->amixers) {
816 for (i = 0, apcm->n_amixer = 0; i < n_amixer; i++) {
818 (struct amixer **)&apcm->amixers[i]);
822 apcm->n_amixer++;
826 err = ct_map_audio_buffer(atc, apcm);
833 atc_pcm_release_resources(atc, apcm);
847 spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm)
850 unsigned int rate = apcm->substream->runtime->rate;
885 spdif_passthru_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
893 atc_pcm_release_resources(atc, apcm);
897 err = spdif_passthru_playback_setup(atc, apcm);
902 err = spdif_passthru_playback_get_resources(atc, apcm);
907 src = apcm->src;
908 for (i = 0; i < apcm->n_amixer; i++) {
909 amixer = apcm->amixers[i];
913 src = apcm->src;
918 amixer = apcm->amixers[0];
920 amixer = apcm->amixers[1];
924 ct_timer_prepare(apcm->timer);