Lines Matching refs:emu
23 static void snd_emu10k1_pcm_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_interrupt() argument
34 dev_dbg(emu->card->dev, in snd_emu10k1_pcm_interrupt()
36 epcm->substream->runtime->hw->pointer(emu, epcm->substream), in snd_emu10k1_pcm_interrupt()
43 static void snd_emu10k1_pcm_ac97adc_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_ac97adc_interrupt() argument
48 if (emu->pcm_capture_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_ac97adc_interrupt()
52 snd_pcm_period_elapsed(emu->pcm_capture_substream); in snd_emu10k1_pcm_ac97adc_interrupt()
55 static void snd_emu10k1_pcm_ac97mic_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_ac97mic_interrupt() argument
60 if (emu->pcm_capture_mic_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_ac97mic_interrupt()
64 snd_pcm_period_elapsed(emu->pcm_capture_mic_substream); in snd_emu10k1_pcm_ac97mic_interrupt()
67 static void snd_emu10k1_pcm_efx_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_efx_interrupt() argument
72 if (emu->pcm_capture_efx_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_efx_interrupt()
76 snd_pcm_period_elapsed(emu->pcm_capture_efx_substream); in snd_emu10k1_pcm_efx_interrupt()
81 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_pointer() local
88 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->voices[0]->number) & 0x00ffffff; in snd_emu10k1_efx_playback_pointer()
101 snd_emu10k1_voice_free(epcm->emu, epcm->voices[1]); in snd_emu10k1_pcm_channel_alloc()
113 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_pcm_channel_alloc()
117 err = snd_emu10k1_voice_alloc(epcm->emu, in snd_emu10k1_pcm_channel_alloc()
127 epcm->voices[i] = &epcm->emu->voices[(epcm->voices[0]->number + i) % NUM_G]; in snd_emu10k1_pcm_channel_alloc()
132 err = snd_emu10k1_voice_alloc(epcm->emu, in snd_emu10k1_pcm_channel_alloc()
143 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_pcm_channel_alloc()
269 static void snd_emu10k1_pcm_init_voice(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_init_voice() argument
299 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu10k1_pcm_init_voice()
322 end_addr += ccis + emu->delay_pcm_irq; in snd_emu10k1_pcm_init_voice()
325 snd_emu10k1_ptr_write(emu, CPF, voice, CPF_STEREO_MASK); in snd_emu10k1_pcm_init_voice()
326 snd_emu10k1_ptr_write(emu, CPF, (voice + 1), CPF_STEREO_MASK); in snd_emu10k1_pcm_init_voice()
328 snd_emu10k1_ptr_write(emu, CPF, voice, 0); in snd_emu10k1_pcm_init_voice()
333 if (emu->audigy) { in snd_emu10k1_pcm_init_voice()
334 snd_emu10k1_ptr_write(emu, A_FXRT1, voice, in snd_emu10k1_pcm_init_voice()
336 snd_emu10k1_ptr_write(emu, A_FXRT2, voice, in snd_emu10k1_pcm_init_voice()
338 snd_emu10k1_ptr_write(emu, A_SENDAMOUNTS, voice, in snd_emu10k1_pcm_init_voice()
344 snd_emu10k1_ptr_write(emu, FXRT, voice, in snd_emu10k1_pcm_init_voice()
348 snd_emu10k1_ptr_write(emu, PTRX, voice, (send_amount[0] << 8) | send_amount[1]); in snd_emu10k1_pcm_init_voice()
349 snd_emu10k1_ptr_write(emu, DSL, voice, end_addr | (send_amount[3] << 24)); in snd_emu10k1_pcm_init_voice()
350 snd_emu10k1_ptr_write(emu, PSST, voice, in snd_emu10k1_pcm_init_voice()
351 (start_addr + (extra ? emu->delay_pcm_irq : 0)) | in snd_emu10k1_pcm_init_voice()
353 if (emu->card_capabilities->emu_model) in snd_emu10k1_pcm_init_voice()
358 snd_emu10k1_ptr_write(emu, CCCA, voice, start_addr | in snd_emu10k1_pcm_init_voice()
362 snd_emu10k1_ptr_write(emu, CCCA, voice, (start_addr + ccis) | in snd_emu10k1_pcm_init_voice()
366 snd_emu10k1_ptr_write(emu, Z1, voice, 0); in snd_emu10k1_pcm_init_voice()
367 snd_emu10k1_ptr_write(emu, Z2, voice, 0); in snd_emu10k1_pcm_init_voice()
369 …silent_page = ((unsigned int)emu->silent_page.addr << emu->address_mode) | (emu->address_mode ? MA… in snd_emu10k1_pcm_init_voice()
370 snd_emu10k1_ptr_write(emu, MAPA, voice, silent_page); in snd_emu10k1_pcm_init_voice()
371 snd_emu10k1_ptr_write(emu, MAPB, voice, silent_page); in snd_emu10k1_pcm_init_voice()
373 snd_emu10k1_ptr_write(emu, CVCF, voice, 0xffff); in snd_emu10k1_pcm_init_voice()
374 snd_emu10k1_ptr_write(emu, VTFT, voice, 0xffff); in snd_emu10k1_pcm_init_voice()
375 snd_emu10k1_ptr_write(emu, ATKHLDM, voice, 0); in snd_emu10k1_pcm_init_voice()
376 snd_emu10k1_ptr_write(emu, DCYSUSM, voice, 0x007f); in snd_emu10k1_pcm_init_voice()
377 snd_emu10k1_ptr_write(emu, LFOVAL1, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
378 snd_emu10k1_ptr_write(emu, LFOVAL2, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
379 snd_emu10k1_ptr_write(emu, FMMOD, voice, 0); in snd_emu10k1_pcm_init_voice()
380 snd_emu10k1_ptr_write(emu, TREMFRQ, voice, 0); in snd_emu10k1_pcm_init_voice()
381 snd_emu10k1_ptr_write(emu, FM2FRQ2, voice, 0); in snd_emu10k1_pcm_init_voice()
382 snd_emu10k1_ptr_write(emu, ENVVAL, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
384 snd_emu10k1_ptr_write(emu, ATKHLDV, voice, 0x7f7f); in snd_emu10k1_pcm_init_voice()
385 snd_emu10k1_ptr_write(emu, ENVVOL, voice, 0x0000); in snd_emu10k1_pcm_init_voice()
387 snd_emu10k1_ptr_write(emu, PEFE_FILTERAMOUNT, voice, 0x7f); in snd_emu10k1_pcm_init_voice()
389 snd_emu10k1_ptr_write(emu, PEFE_PITCHAMOUNT, voice, 0); in snd_emu10k1_pcm_init_voice()
391 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu10k1_pcm_init_voice()
397 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_hw_params() local
408 if (emu->iommu_workaround) in snd_emu10k1_playback_hw_params()
413 if (emu->iommu_workaround && runtime->dma_bytes >= EMUPAGESIZE) in snd_emu10k1_playback_hw_params()
418 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_playback_hw_params()
419 epcm->memblk = snd_emu10k1_alloc_pages(emu, substream); in snd_emu10k1_playback_hw_params()
433 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_hw_free() local
441 snd_emu10k1_voice_free(epcm->emu, epcm->extra); in snd_emu10k1_playback_hw_free()
445 snd_emu10k1_voice_free(epcm->emu, epcm->voices[1]); in snd_emu10k1_playback_hw_free()
449 snd_emu10k1_voice_free(epcm->emu, epcm->voices[0]); in snd_emu10k1_playback_hw_free()
453 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_playback_hw_free()
463 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_hw_free() local
472 snd_emu10k1_voice_free(epcm->emu, epcm->extra); in snd_emu10k1_efx_playback_hw_free()
477 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_efx_playback_hw_free()
482 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_efx_playback_hw_free()
492 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_prepare() local
504 snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra, in snd_emu10k1_playback_prepare()
508 snd_emu10k1_pcm_init_voice(emu, 1, 0, epcm->voices[0], in snd_emu10k1_playback_prepare()
510 &emu->pcm_mixer[substream->number]); in snd_emu10k1_playback_prepare()
512 snd_emu10k1_pcm_init_voice(emu, 0, 0, epcm->voices[1], in snd_emu10k1_playback_prepare()
514 &emu->pcm_mixer[substream->number]); in snd_emu10k1_playback_prepare()
520 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_prepare() local
535 snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra, in snd_emu10k1_efx_playback_prepare()
539 snd_emu10k1_pcm_init_voice(emu, 1, 0, epcm->voices[0], in snd_emu10k1_efx_playback_prepare()
541 &emu->efx_pcm_mixer[0]); in snd_emu10k1_efx_playback_prepare()
545 snd_emu10k1_pcm_init_voice(emu, 0, 0, epcm->voices[i], in snd_emu10k1_efx_playback_prepare()
547 &emu->efx_pcm_mixer[i]); in snd_emu10k1_efx_playback_prepare()
576 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_prepare() local
582 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, 0); in snd_emu10k1_capture_prepare()
585 snd_emu10k1_ptr_write(emu, ADCCR, 0, 0); in snd_emu10k1_capture_prepare()
588 if (emu->audigy) { in snd_emu10k1_capture_prepare()
589 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, 0); in snd_emu10k1_capture_prepare()
590 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, 0); in snd_emu10k1_capture_prepare()
592 snd_emu10k1_ptr_write(emu, FXWC, 0, 0); in snd_emu10k1_capture_prepare()
597 snd_emu10k1_ptr_write(emu, epcm->capture_ba_reg, 0, runtime->dma_addr); in snd_emu10k1_capture_prepare()
611 epcm->capture_cr_val = emu->audigy ? A_ADCCR_LCHANENABLE : ADCCR_LCHANENABLE; in snd_emu10k1_capture_prepare()
613 epcm->capture_cr_val |= emu->audigy ? A_ADCCR_RCHANENABLE : ADCCR_RCHANENABLE; in snd_emu10k1_capture_prepare()
614 epcm->capture_cr_val |= emu->audigy ? in snd_emu10k1_capture_prepare()
621 static void snd_emu10k1_playback_invalidate_cache(struct snd_emu10k1 *emu, int extra, struct snd_em… in snd_emu10k1_playback_invalidate_cache() argument
637 snd_emu10k1_ptr_write(emu, CD0 + i, voice, sample); in snd_emu10k1_playback_invalidate_cache()
639 snd_emu10k1_ptr_write(emu, CD0 + i, voice + 1, sample); in snd_emu10k1_playback_invalidate_cache()
643 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice, 0); in snd_emu10k1_playback_invalidate_cache()
644 snd_emu10k1_ptr_write(emu, CCR_READADDRESS, voice, cra); in snd_emu10k1_playback_invalidate_cache()
646 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice + 1, 0); in snd_emu10k1_playback_invalidate_cache()
647 snd_emu10k1_ptr_write(emu, CCR_READADDRESS, voice + 1, cra); in snd_emu10k1_playback_invalidate_cache()
650 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice, ccis); in snd_emu10k1_playback_invalidate_cache()
652 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice+1, ccis); in snd_emu10k1_playback_invalidate_cache()
656 static void snd_emu10k1_playback_prepare_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *e… in snd_emu10k1_playback_prepare_voice() argument
674 snd_emu10k1_ptr_write(emu, IFATN, voice, attn); in snd_emu10k1_playback_prepare_voice()
675 snd_emu10k1_ptr_write(emu, VTFT, voice, vattn | 0xffff); in snd_emu10k1_playback_prepare_voice()
676 snd_emu10k1_ptr_write(emu, CVCF, voice, vattn | 0xffff); in snd_emu10k1_playback_prepare_voice()
677 snd_emu10k1_ptr_write(emu, DCYSUSV, voice, 0x7f7f); in snd_emu10k1_playback_prepare_voice()
678 snd_emu10k1_voice_clear_loop_stop(emu, voice); in snd_emu10k1_playback_prepare_voice()
681 static void snd_emu10k1_playback_trigger_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *e… in snd_emu10k1_playback_trigger_voice() argument
694 if (emu->card_capabilities->emu_model) in snd_emu10k1_playback_trigger_voice()
698 snd_emu10k1_ptr_write(emu, PTRX_PITCHTARGET, voice, pitch_target); in snd_emu10k1_playback_trigger_voice()
700 snd_emu10k1_ptr_write(emu, CPF_CURRENTPITCH, voice, pitch_target); in snd_emu10k1_playback_trigger_voice()
701 snd_emu10k1_ptr_write(emu, IP, voice, pitch); in snd_emu10k1_playback_trigger_voice()
703 snd_emu10k1_voice_intr_enable(emu, voice); in snd_emu10k1_playback_trigger_voice()
706 static void snd_emu10k1_playback_stop_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *evoi… in snd_emu10k1_playback_stop_voice() argument
713 snd_emu10k1_voice_intr_disable(emu, voice); in snd_emu10k1_playback_stop_voice()
714 snd_emu10k1_ptr_write(emu, PTRX_PITCHTARGET, voice, 0); in snd_emu10k1_playback_stop_voice()
715 snd_emu10k1_ptr_write(emu, CPF_CURRENTPITCH, voice, 0); in snd_emu10k1_playback_stop_voice()
716 snd_emu10k1_ptr_write(emu, IFATN, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
717 snd_emu10k1_ptr_write(emu, VTFT, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
718 snd_emu10k1_ptr_write(emu, CVCF, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
719 snd_emu10k1_ptr_write(emu, IP, voice, 0); in snd_emu10k1_playback_stop_voice()
722 static inline void snd_emu10k1_playback_mangle_extra(struct snd_emu10k1 *emu, in snd_emu10k1_playback_mangle_extra() argument
733 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->extra->number); in snd_emu10k1_playback_mangle_extra()
736 snd_emu10k1_ptr_write(emu, CCCA, epcm->extra->number, ptr); in snd_emu10k1_playback_mangle_extra()
742 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_trigger() local
753 spin_lock(&emu->reg_lock); in snd_emu10k1_playback_trigger()
756 snd_emu10k1_playback_invalidate_cache(emu, 1, epcm->extra); /* do we need this? */ in snd_emu10k1_playback_trigger()
757 snd_emu10k1_playback_invalidate_cache(emu, 0, epcm->voices[0]); in snd_emu10k1_playback_trigger()
762 snd_emu10k1_playback_mangle_extra(emu, epcm, substream, runtime); in snd_emu10k1_playback_trigger()
763 mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_trigger()
764 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[0], 1, 0, mix); in snd_emu10k1_playback_trigger()
765 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[1], 0, 0, mix); in snd_emu10k1_playback_trigger()
766 snd_emu10k1_playback_prepare_voice(emu, epcm->extra, 1, 1, NULL); in snd_emu10k1_playback_trigger()
767 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[0], 1, 0); in snd_emu10k1_playback_trigger()
768 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[1], 0, 0); in snd_emu10k1_playback_trigger()
769 snd_emu10k1_playback_trigger_voice(emu, epcm->extra, 1, 1); in snd_emu10k1_playback_trigger()
776 snd_emu10k1_playback_stop_voice(emu, epcm->voices[0]); in snd_emu10k1_playback_trigger()
777 snd_emu10k1_playback_stop_voice(emu, epcm->voices[1]); in snd_emu10k1_playback_trigger()
778 snd_emu10k1_playback_stop_voice(emu, epcm->extra); in snd_emu10k1_playback_trigger()
784 spin_unlock(&emu->reg_lock); in snd_emu10k1_playback_trigger()
791 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_trigger() local
796 spin_lock(&emu->reg_lock); in snd_emu10k1_capture_trigger()
801 outl(epcm->capture_ipr, emu->port + IPR); in snd_emu10k1_capture_trigger()
802 snd_emu10k1_intr_enable(emu, epcm->capture_inte); in snd_emu10k1_capture_trigger()
809 snd_emu10k1_ptr_write(emu, ADCCR, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
812 if (emu->audigy) { in snd_emu10k1_capture_trigger()
813 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
814 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, epcm->capture_cr_val2); in snd_emu10k1_capture_trigger()
815 dev_dbg(emu->card->dev, in snd_emu10k1_capture_trigger()
820 snd_emu10k1_ptr_write(emu, FXWC, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
825 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, epcm->capture_bs_val); in snd_emu10k1_capture_trigger()
832 snd_emu10k1_intr_disable(emu, epcm->capture_inte); in snd_emu10k1_capture_trigger()
833 outl(epcm->capture_ipr, emu->port + IPR); in snd_emu10k1_capture_trigger()
834 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, 0); in snd_emu10k1_capture_trigger()
837 snd_emu10k1_ptr_write(emu, ADCCR, 0, 0); in snd_emu10k1_capture_trigger()
840 if (emu->audigy) { in snd_emu10k1_capture_trigger()
841 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, 0); in snd_emu10k1_capture_trigger()
842 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, 0); in snd_emu10k1_capture_trigger()
844 snd_emu10k1_ptr_write(emu, FXWC, 0, 0); in snd_emu10k1_capture_trigger()
853 spin_unlock(&emu->reg_lock); in snd_emu10k1_capture_trigger()
859 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_pointer() local
866 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->voices[0]->number) & 0x00ffffff; in snd_emu10k1_playback_pointer()
893 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_trigger() local
899 spin_lock(&emu->reg_lock); in snd_emu10k1_efx_playback_trigger()
904 snd_emu10k1_playback_invalidate_cache(emu, 0, epcm->voices[i]); in snd_emu10k1_efx_playback_trigger()
906 snd_emu10k1_playback_invalidate_cache(emu, 1, epcm->extra); in snd_emu10k1_efx_playback_trigger()
910 snd_emu10k1_playback_prepare_voice(emu, epcm->extra, 1, 1, NULL); in snd_emu10k1_efx_playback_trigger()
911 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[0], 0, 0, in snd_emu10k1_efx_playback_trigger()
912 &emu->efx_pcm_mixer[0]); in snd_emu10k1_efx_playback_trigger()
914 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[i], 0, 0, in snd_emu10k1_efx_playback_trigger()
915 &emu->efx_pcm_mixer[i]); in snd_emu10k1_efx_playback_trigger()
916 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[0], 0, 0); in snd_emu10k1_efx_playback_trigger()
917 snd_emu10k1_playback_trigger_voice(emu, epcm->extra, 1, 1); in snd_emu10k1_efx_playback_trigger()
919 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[i], 0, 0); in snd_emu10k1_efx_playback_trigger()
927 snd_emu10k1_playback_stop_voice(emu, epcm->voices[i]); in snd_emu10k1_efx_playback_trigger()
929 snd_emu10k1_playback_stop_voice(emu, epcm->extra); in snd_emu10k1_efx_playback_trigger()
935 spin_unlock(&emu->reg_lock); in snd_emu10k1_efx_playback_trigger()
942 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_pointer() local
953 ptr = snd_emu10k1_ptr_read(emu, epcm->capture_idx_reg, 0) & 0x0000ffff; in snd_emu10k1_capture_pointer()
1031 static void snd_emu10k1_pcm_mixer_notify1(struct snd_emu10k1 *emu, struct snd_kcontrol *kctl, int i… in snd_emu10k1_pcm_mixer_notify1() argument
1041 snd_ctl_notify(emu->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_emu10k1_pcm_mixer_notify1()
1046 static void snd_emu10k1_pcm_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate) in snd_emu10k1_pcm_mixer_notify() argument
1048 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_routing, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1049 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_volume, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1050 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_attn, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1053 static void snd_emu10k1_pcm_efx_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate) in snd_emu10k1_pcm_efx_mixer_notify() argument
1055 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_routing, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1056 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_volume, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1057 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_attn, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1067 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_close() local
1072 mix = &emu->efx_pcm_mixer[i]; in snd_emu10k1_efx_playback_close()
1074 snd_emu10k1_pcm_efx_mixer_notify(emu, i, 0); in snd_emu10k1_efx_playback_close()
1081 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_open() local
1090 epcm->emu = emu; in snd_emu10k1_efx_playback_open()
1094 emu->pcm_playback_efx_substream = substream; in snd_emu10k1_efx_playback_open()
1101 mix = &emu->efx_pcm_mixer[i]; in snd_emu10k1_efx_playback_open()
1107 snd_emu10k1_pcm_efx_mixer_notify(emu, i, 1); in snd_emu10k1_efx_playback_open()
1114 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_open() local
1123 epcm->emu = emu; in snd_emu10k1_playback_open()
1139 if (emu->card_capabilities->emu_model && emu->emu1010.internal_clock == 0) in snd_emu10k1_playback_open()
1148 mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_open()
1156 snd_emu10k1_pcm_mixer_notify(emu, substream->number, 1); in snd_emu10k1_playback_open()
1162 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_close() local
1163 struct snd_emu10k1_pcm_mixer *mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_close()
1166 snd_emu10k1_pcm_mixer_notify(emu, substream->number, 0); in snd_emu10k1_playback_close()
1172 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_open() local
1179 epcm->emu = emu; in snd_emu10k1_capture_open()
1186 epcm->capture_idx_reg = emu->audigy ? A_ADCIDX : ADCIDX; in snd_emu10k1_capture_open()
1190 emu->capture_interrupt = snd_emu10k1_pcm_ac97adc_interrupt; in snd_emu10k1_capture_open()
1191 emu->pcm_capture_substream = substream; in snd_emu10k1_capture_open()
1199 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_close() local
1201 emu->capture_interrupt = NULL; in snd_emu10k1_capture_close()
1202 emu->pcm_capture_substream = NULL; in snd_emu10k1_capture_close()
1208 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_mic_open() local
1215 epcm->emu = emu; in snd_emu10k1_capture_mic_open()
1222 epcm->capture_idx_reg = emu->audigy ? A_MICIDX : MICIDX; in snd_emu10k1_capture_mic_open()
1229 emu->capture_mic_interrupt = snd_emu10k1_pcm_ac97mic_interrupt; in snd_emu10k1_capture_mic_open()
1230 emu->pcm_capture_mic_substream = substream; in snd_emu10k1_capture_mic_open()
1237 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_mic_close() local
1239 emu->capture_interrupt = NULL; in snd_emu10k1_capture_mic_close()
1240 emu->pcm_capture_mic_substream = NULL; in snd_emu10k1_capture_mic_close()
1246 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_efx_open() local
1249 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_capture_efx_open()
1255 epcm->emu = emu; in snd_emu10k1_capture_efx_open()
1268 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_capture_efx_open()
1269 if (emu->card_capabilities->emu_model) { in snd_emu10k1_capture_efx_open()
1292 switch (emu->emu1010.internal_clock) { in snd_emu10k1_capture_efx_open()
1328 if (emu->efx_voices_mask[idx/32] & (1 << (idx%32))) { in snd_emu10k1_capture_efx_open()
1334 epcm->capture_cr_val = emu->efx_voices_mask[0]; in snd_emu10k1_capture_efx_open()
1335 epcm->capture_cr_val2 = emu->efx_voices_mask[1]; in snd_emu10k1_capture_efx_open()
1336 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_capture_efx_open()
1337 emu->capture_efx_interrupt = snd_emu10k1_pcm_efx_interrupt; in snd_emu10k1_capture_efx_open()
1338 emu->pcm_capture_efx_substream = substream; in snd_emu10k1_capture_efx_open()
1345 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_efx_close() local
1347 emu->capture_interrupt = NULL; in snd_emu10k1_capture_efx_close()
1348 emu->pcm_capture_efx_substream = NULL; in snd_emu10k1_capture_efx_close()
1381 int snd_emu10k1_pcm(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm() argument
1387 err = snd_pcm_new(emu->card, "emu10k1", device, 32, 1, &pcm); in snd_emu10k1_pcm()
1391 pcm->private_data = emu; in snd_emu10k1_pcm()
1399 emu->pcm = pcm; in snd_emu10k1_pcm()
1404 &emu->pci->dev, in snd_emu10k1_pcm()
1409 &emu->pci->dev, 64*1024, 64*1024); in snd_emu10k1_pcm()
1414 int snd_emu10k1_pcm_multi(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_multi() argument
1420 err = snd_pcm_new(emu->card, "emu10k1", device, 1, 0, &pcm); in snd_emu10k1_pcm_multi()
1424 pcm->private_data = emu; in snd_emu10k1_pcm_multi()
1431 emu->pcm_multi = pcm; in snd_emu10k1_pcm_multi()
1435 &emu->pci->dev, in snd_emu10k1_pcm_multi()
1450 int snd_emu10k1_pcm_mic(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_mic() argument
1455 err = snd_pcm_new(emu->card, "emu10k1 mic", device, 0, 1, &pcm); in snd_emu10k1_pcm_mic()
1459 pcm->private_data = emu; in snd_emu10k1_pcm_mic()
1465 emu->pcm_mic = pcm; in snd_emu10k1_pcm_mic()
1467 snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, &emu->pci->dev, in snd_emu10k1_pcm_mic()
1475 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_info() local
1476 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_info()
1486 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_get() local
1487 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_get()
1490 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_get()
1492 ucontrol->value.integer.value[idx] = (emu->efx_voices_mask[idx / 32] & (1 << (idx % 32))) ? 1 : 0; in snd_emu10k1_pcm_efx_voices_mask_get()
1493 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_get()
1499 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_put() local
1501 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_put()
1502 int nefxb = emu->audigy ? 7 : 6; in snd_emu10k1_pcm_efx_voices_mask_put()
1519 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_put()
1520 change = (nval[0] != emu->efx_voices_mask[0]) || in snd_emu10k1_pcm_efx_voices_mask_put()
1521 (nval[1] != emu->efx_voices_mask[1]); in snd_emu10k1_pcm_efx_voices_mask_put()
1522 emu->efx_voices_mask[0] = nval[0]; in snd_emu10k1_pcm_efx_voices_mask_put()
1523 emu->efx_voices_mask[1] = nval[1]; in snd_emu10k1_pcm_efx_voices_mask_put()
1524 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_put()
1550 static void snd_emu10k1_fx8010_playback_irq(struct snd_emu10k1 *emu, void *private_data) in snd_emu10k1_fx8010_playback_irq() argument
1584 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in fx8010_pb_trans_copy() local
1585 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in fx8010_pb_trans_copy()
1594 snd_emu10k1_fx8010_playback_tram_poke1((unsigned short *)emu->fx8010.etram_pages.area + tram_pos, in fx8010_pb_trans_copy()
1595 (unsigned short *)emu->fx8010.etram_pages.area + tram_pos + tram_size / 2, in fx8010_pb_trans_copy()
1602 snd_emu10k1_fx8010_playback_tram_poke1((unsigned short *)emu->fx8010.etram_pages.area + tram_pos, in fx8010_pb_trans_copy()
1603 (unsigned short *)emu->fx8010.etram_pages.area + tram_pos + tram_size / 2, in fx8010_pb_trans_copy()
1612 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_transfer() local
1613 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_transfer()
1621 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_hw_free() local
1622 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_hw_free()
1626 snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + 0x80 + pcm->etram[i], 0, 0); in snd_emu10k1_fx8010_playback_hw_free()
1632 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_prepare() local
1634 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_prepare()
1648 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_running, 0, 0); /* reset */ in snd_emu10k1_fx8010_playback_prepare()
1649 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 0); /* reset */ in snd_emu10k1_fx8010_playback_prepare()
1650 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_size, 0, runtime->buffer_size); in snd_emu10k1_fx8010_playback_prepare()
1651 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_ptr, 0, 0); /* reset ptr number */ in snd_emu10k1_fx8010_playback_prepare()
1652 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_count, 0, runtime->period_size); in snd_emu10k1_fx8010_playback_prepare()
1653 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_tmpcount, 0, runtime->period_size); in snd_emu10k1_fx8010_playback_prepare()
1655 …snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + 0x80 + pcm->etram[i], 0, (TANKMEMADDRREG_READ|TANK… in snd_emu10k1_fx8010_playback_prepare()
1661 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_trigger() local
1662 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_trigger()
1665 spin_lock(&emu->reg_lock); in snd_emu10k1_fx8010_playback_trigger()
1679 snd_emu10k1_ptr_write(emu, SPCS0 + i, 0, bits); in snd_emu10k1_fx8010_playback_trigger()
1683 …result = snd_emu10k1_fx8010_register_irq_handler(emu, snd_emu10k1_fx8010_playback_irq, pcm->gpr_ru… in snd_emu10k1_fx8010_playback_trigger()
1687 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 1); in snd_emu10k1_fx8010_playback_trigger()
1692 snd_emu10k1_fx8010_unregister_irq_handler(emu, &pcm->irq); in snd_emu10k1_fx8010_playback_trigger()
1693 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 0); in snd_emu10k1_fx8010_playback_trigger()
1702 spin_unlock(&emu->reg_lock); in snd_emu10k1_fx8010_playback_trigger()
1708 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_pointer() local
1709 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_pointer()
1712 if (!snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_trigger, 0)) in snd_emu10k1_fx8010_playback_pointer()
1714 ptr = snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_ptr, 0) << 2; in snd_emu10k1_fx8010_playback_pointer()
1740 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_open() local
1742 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_open()
1747 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1749 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1753 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1759 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_close() local
1760 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_close()
1762 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_close()
1764 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_close()
1778 int snd_emu10k1_pcm_efx(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_efx() argument
1784 err = snd_pcm_new(emu->card, "emu10k1 efx", device, 8, 1, &pcm); in snd_emu10k1_pcm_efx()
1788 pcm->private_data = emu; in snd_emu10k1_pcm_efx()
1795 emu->pcm_efx = pcm; in snd_emu10k1_pcm_efx()
1802 if (emu->audigy) { in snd_emu10k1_pcm_efx()
1803 emu->efx_voices_mask[0] = 0; in snd_emu10k1_pcm_efx()
1804 if (emu->card_capabilities->emu_model) in snd_emu10k1_pcm_efx()
1809 emu->efx_voices_mask[1] = 0xffffffff; in snd_emu10k1_pcm_efx()
1811 emu->efx_voices_mask[1] = 0xffff; in snd_emu10k1_pcm_efx()
1813 emu->efx_voices_mask[0] = 0xffff0000; in snd_emu10k1_pcm_efx()
1814 emu->efx_voices_mask[1] = 0; in snd_emu10k1_pcm_efx()
1822 kctl = snd_ctl_new1(&snd_emu10k1_pcm_efx_voices_mask, emu); in snd_emu10k1_pcm_efx()
1826 err = snd_ctl_add(emu->card, kctl); in snd_emu10k1_pcm_efx()
1830 snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, &emu->pci->dev, in snd_emu10k1_pcm_efx()