Lines Matching refs:emu
23 static void snd_emu10k1_pcm_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_interrupt() argument
33 dev_dbg(emu->card->dev, in snd_emu10k1_pcm_interrupt()
35 epcm->substream->runtime->hw->pointer(emu, epcm->substream), in snd_emu10k1_pcm_interrupt()
42 static void snd_emu10k1_pcm_ac97adc_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_ac97adc_interrupt() argument
47 if (emu->pcm_capture_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_ac97adc_interrupt()
51 snd_pcm_period_elapsed(emu->pcm_capture_substream); in snd_emu10k1_pcm_ac97adc_interrupt()
54 static void snd_emu10k1_pcm_ac97mic_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_ac97mic_interrupt() argument
59 if (emu->pcm_capture_mic_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_ac97mic_interrupt()
63 snd_pcm_period_elapsed(emu->pcm_capture_mic_substream); in snd_emu10k1_pcm_ac97mic_interrupt()
66 static void snd_emu10k1_pcm_efx_interrupt(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_efx_interrupt() argument
71 if (emu->pcm_capture_efx_substream->runtime->mode == SNDRV_PCM_MODE_FRAME) in snd_emu10k1_pcm_efx_interrupt()
75 snd_pcm_period_elapsed(emu->pcm_capture_efx_substream); in snd_emu10k1_pcm_efx_interrupt()
80 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_pointer() local
87 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->voices[0]->number) & 0x00ffffff; in snd_emu10k1_efx_playback_pointer()
100 snd_emu10k1_voice_free(epcm->emu, epcm->voices[1]); in snd_emu10k1_pcm_channel_alloc()
112 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_pcm_channel_alloc()
116 err = snd_emu10k1_voice_alloc(epcm->emu, in snd_emu10k1_pcm_channel_alloc()
126 epcm->voices[i] = &epcm->emu->voices[(epcm->voices[0]->number + i) % NUM_G]; in snd_emu10k1_pcm_channel_alloc()
131 err = snd_emu10k1_voice_alloc(epcm->emu, in snd_emu10k1_pcm_channel_alloc()
142 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_pcm_channel_alloc()
268 static void snd_emu10k1_pcm_init_voice(struct snd_emu10k1 *emu, in snd_emu10k1_pcm_init_voice() argument
298 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu10k1_pcm_init_voice()
321 end_addr += ccis + emu->delay_pcm_irq; in snd_emu10k1_pcm_init_voice()
324 snd_emu10k1_ptr_write(emu, CPF, voice, CPF_STEREO_MASK); in snd_emu10k1_pcm_init_voice()
325 snd_emu10k1_ptr_write(emu, CPF, (voice + 1), CPF_STEREO_MASK); in snd_emu10k1_pcm_init_voice()
327 snd_emu10k1_ptr_write(emu, CPF, voice, 0); in snd_emu10k1_pcm_init_voice()
332 if (emu->audigy) { in snd_emu10k1_pcm_init_voice()
333 snd_emu10k1_ptr_write(emu, A_FXRT1, voice, in snd_emu10k1_pcm_init_voice()
335 snd_emu10k1_ptr_write(emu, A_FXRT2, voice, in snd_emu10k1_pcm_init_voice()
337 snd_emu10k1_ptr_write(emu, A_SENDAMOUNTS, voice, in snd_emu10k1_pcm_init_voice()
343 snd_emu10k1_ptr_write(emu, FXRT, voice, in snd_emu10k1_pcm_init_voice()
347 snd_emu10k1_ptr_write(emu, PTRX, voice, (send_amount[0] << 8) | send_amount[1]); in snd_emu10k1_pcm_init_voice()
348 snd_emu10k1_ptr_write(emu, DSL, voice, end_addr | (send_amount[3] << 24)); in snd_emu10k1_pcm_init_voice()
349 snd_emu10k1_ptr_write(emu, PSST, voice, in snd_emu10k1_pcm_init_voice()
350 (start_addr + (extra ? emu->delay_pcm_irq : 0)) | in snd_emu10k1_pcm_init_voice()
352 if (emu->card_capabilities->emu_model) in snd_emu10k1_pcm_init_voice()
357 snd_emu10k1_ptr_write(emu, CCCA, voice, start_addr | in snd_emu10k1_pcm_init_voice()
361 snd_emu10k1_ptr_write(emu, CCCA, voice, (start_addr + ccis) | in snd_emu10k1_pcm_init_voice()
365 snd_emu10k1_ptr_write(emu, Z1, voice, 0); in snd_emu10k1_pcm_init_voice()
366 snd_emu10k1_ptr_write(emu, Z2, voice, 0); in snd_emu10k1_pcm_init_voice()
368 …silent_page = ((unsigned int)emu->silent_page.addr << emu->address_mode) | (emu->address_mode ? MA… in snd_emu10k1_pcm_init_voice()
369 snd_emu10k1_ptr_write(emu, MAPA, voice, silent_page); in snd_emu10k1_pcm_init_voice()
370 snd_emu10k1_ptr_write(emu, MAPB, voice, silent_page); in snd_emu10k1_pcm_init_voice()
372 snd_emu10k1_ptr_write(emu, CVCF, voice, 0xffff); in snd_emu10k1_pcm_init_voice()
373 snd_emu10k1_ptr_write(emu, VTFT, voice, 0xffff); in snd_emu10k1_pcm_init_voice()
374 snd_emu10k1_ptr_write(emu, ATKHLDM, voice, 0); in snd_emu10k1_pcm_init_voice()
375 snd_emu10k1_ptr_write(emu, DCYSUSM, voice, 0x007f); in snd_emu10k1_pcm_init_voice()
376 snd_emu10k1_ptr_write(emu, LFOVAL1, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
377 snd_emu10k1_ptr_write(emu, LFOVAL2, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
378 snd_emu10k1_ptr_write(emu, FMMOD, voice, 0); in snd_emu10k1_pcm_init_voice()
379 snd_emu10k1_ptr_write(emu, TREMFRQ, voice, 0); in snd_emu10k1_pcm_init_voice()
380 snd_emu10k1_ptr_write(emu, FM2FRQ2, voice, 0); in snd_emu10k1_pcm_init_voice()
381 snd_emu10k1_ptr_write(emu, ENVVAL, voice, 0x8000); in snd_emu10k1_pcm_init_voice()
383 snd_emu10k1_ptr_write(emu, ATKHLDV, voice, 0x7f7f); in snd_emu10k1_pcm_init_voice()
384 snd_emu10k1_ptr_write(emu, ENVVOL, voice, 0x0000); in snd_emu10k1_pcm_init_voice()
386 snd_emu10k1_ptr_write(emu, PEFE_FILTERAMOUNT, voice, 0x7f); in snd_emu10k1_pcm_init_voice()
388 snd_emu10k1_ptr_write(emu, PEFE_PITCHAMOUNT, voice, 0); in snd_emu10k1_pcm_init_voice()
390 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu10k1_pcm_init_voice()
396 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_hw_params() local
406 if (emu->iommu_workaround) in snd_emu10k1_playback_hw_params()
411 if (emu->iommu_workaround && runtime->dma_bytes >= EMUPAGESIZE) in snd_emu10k1_playback_hw_params()
416 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_playback_hw_params()
417 epcm->memblk = snd_emu10k1_alloc_pages(emu, substream); in snd_emu10k1_playback_hw_params()
431 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_hw_free() local
439 snd_emu10k1_voice_free(epcm->emu, epcm->extra); in snd_emu10k1_playback_hw_free()
443 snd_emu10k1_voice_free(epcm->emu, epcm->voices[1]); in snd_emu10k1_playback_hw_free()
447 snd_emu10k1_voice_free(epcm->emu, epcm->voices[0]); in snd_emu10k1_playback_hw_free()
451 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_playback_hw_free()
461 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_hw_free() local
470 snd_emu10k1_voice_free(epcm->emu, epcm->extra); in snd_emu10k1_efx_playback_hw_free()
475 snd_emu10k1_voice_free(epcm->emu, epcm->voices[i]); in snd_emu10k1_efx_playback_hw_free()
480 snd_emu10k1_free_pages(emu, epcm->memblk); in snd_emu10k1_efx_playback_hw_free()
490 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_prepare() local
502 snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra, in snd_emu10k1_playback_prepare()
506 snd_emu10k1_pcm_init_voice(emu, 1, 0, epcm->voices[0], in snd_emu10k1_playback_prepare()
508 &emu->pcm_mixer[substream->number]); in snd_emu10k1_playback_prepare()
510 snd_emu10k1_pcm_init_voice(emu, 0, 0, epcm->voices[1], in snd_emu10k1_playback_prepare()
512 &emu->pcm_mixer[substream->number]); in snd_emu10k1_playback_prepare()
518 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_prepare() local
533 snd_emu10k1_pcm_init_voice(emu, 1, 1, epcm->extra, in snd_emu10k1_efx_playback_prepare()
537 snd_emu10k1_pcm_init_voice(emu, 1, 0, epcm->voices[0], in snd_emu10k1_efx_playback_prepare()
539 &emu->efx_pcm_mixer[0]); in snd_emu10k1_efx_playback_prepare()
543 snd_emu10k1_pcm_init_voice(emu, 0, 0, epcm->voices[i], in snd_emu10k1_efx_playback_prepare()
545 &emu->efx_pcm_mixer[i]); in snd_emu10k1_efx_playback_prepare()
574 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_prepare() local
580 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, 0); in snd_emu10k1_capture_prepare()
583 snd_emu10k1_ptr_write(emu, ADCCR, 0, 0); in snd_emu10k1_capture_prepare()
586 if (emu->audigy) { in snd_emu10k1_capture_prepare()
587 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, 0); in snd_emu10k1_capture_prepare()
588 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, 0); in snd_emu10k1_capture_prepare()
590 snd_emu10k1_ptr_write(emu, FXWC, 0, 0); in snd_emu10k1_capture_prepare()
595 snd_emu10k1_ptr_write(emu, epcm->capture_ba_reg, 0, runtime->dma_addr); in snd_emu10k1_capture_prepare()
609 epcm->capture_cr_val = emu->audigy ? A_ADCCR_LCHANENABLE : ADCCR_LCHANENABLE; in snd_emu10k1_capture_prepare()
611 epcm->capture_cr_val |= emu->audigy ? A_ADCCR_RCHANENABLE : ADCCR_RCHANENABLE; in snd_emu10k1_capture_prepare()
612 epcm->capture_cr_val |= emu->audigy ? in snd_emu10k1_capture_prepare()
619 static void snd_emu10k1_playback_invalidate_cache(struct snd_emu10k1 *emu, int extra, struct snd_em… in snd_emu10k1_playback_invalidate_cache() argument
635 snd_emu10k1_ptr_write(emu, CD0 + i, voice, sample); in snd_emu10k1_playback_invalidate_cache()
637 snd_emu10k1_ptr_write(emu, CD0 + i, voice + 1, sample); in snd_emu10k1_playback_invalidate_cache()
641 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice, 0); in snd_emu10k1_playback_invalidate_cache()
642 snd_emu10k1_ptr_write(emu, CCR_READADDRESS, voice, cra); in snd_emu10k1_playback_invalidate_cache()
644 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice + 1, 0); in snd_emu10k1_playback_invalidate_cache()
645 snd_emu10k1_ptr_write(emu, CCR_READADDRESS, voice + 1, cra); in snd_emu10k1_playback_invalidate_cache()
648 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice, ccis); in snd_emu10k1_playback_invalidate_cache()
650 snd_emu10k1_ptr_write(emu, CCR_CACHEINVALIDSIZE, voice+1, ccis); in snd_emu10k1_playback_invalidate_cache()
654 static void snd_emu10k1_playback_prepare_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *e… in snd_emu10k1_playback_prepare_voice() argument
672 snd_emu10k1_ptr_write(emu, IFATN, voice, attn); in snd_emu10k1_playback_prepare_voice()
673 snd_emu10k1_ptr_write(emu, VTFT, voice, vattn | 0xffff); in snd_emu10k1_playback_prepare_voice()
674 snd_emu10k1_ptr_write(emu, CVCF, voice, vattn | 0xffff); in snd_emu10k1_playback_prepare_voice()
675 snd_emu10k1_ptr_write(emu, DCYSUSV, voice, 0x7f7f); in snd_emu10k1_playback_prepare_voice()
676 snd_emu10k1_voice_clear_loop_stop(emu, voice); in snd_emu10k1_playback_prepare_voice()
679 static void snd_emu10k1_playback_trigger_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *e… in snd_emu10k1_playback_trigger_voice() argument
692 if (emu->card_capabilities->emu_model) in snd_emu10k1_playback_trigger_voice()
696 snd_emu10k1_ptr_write(emu, PTRX_PITCHTARGET, voice, pitch_target); in snd_emu10k1_playback_trigger_voice()
698 snd_emu10k1_ptr_write(emu, CPF_CURRENTPITCH, voice, pitch_target); in snd_emu10k1_playback_trigger_voice()
699 snd_emu10k1_ptr_write(emu, IP, voice, pitch); in snd_emu10k1_playback_trigger_voice()
701 snd_emu10k1_voice_intr_enable(emu, voice); in snd_emu10k1_playback_trigger_voice()
704 static void snd_emu10k1_playback_stop_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *evoi… in snd_emu10k1_playback_stop_voice() argument
711 snd_emu10k1_voice_intr_disable(emu, voice); in snd_emu10k1_playback_stop_voice()
712 snd_emu10k1_ptr_write(emu, PTRX_PITCHTARGET, voice, 0); in snd_emu10k1_playback_stop_voice()
713 snd_emu10k1_ptr_write(emu, CPF_CURRENTPITCH, voice, 0); in snd_emu10k1_playback_stop_voice()
714 snd_emu10k1_ptr_write(emu, IFATN, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
715 snd_emu10k1_ptr_write(emu, VTFT, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
716 snd_emu10k1_ptr_write(emu, CVCF, voice, 0xffff); in snd_emu10k1_playback_stop_voice()
717 snd_emu10k1_ptr_write(emu, IP, voice, 0); in snd_emu10k1_playback_stop_voice()
720 static inline void snd_emu10k1_playback_mangle_extra(struct snd_emu10k1 *emu, in snd_emu10k1_playback_mangle_extra() argument
731 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->extra->number); in snd_emu10k1_playback_mangle_extra()
734 snd_emu10k1_ptr_write(emu, CCCA, epcm->extra->number, ptr); in snd_emu10k1_playback_mangle_extra()
740 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_trigger() local
751 spin_lock(&emu->reg_lock); in snd_emu10k1_playback_trigger()
754 snd_emu10k1_playback_invalidate_cache(emu, 1, epcm->extra); /* do we need this? */ in snd_emu10k1_playback_trigger()
755 snd_emu10k1_playback_invalidate_cache(emu, 0, epcm->voices[0]); in snd_emu10k1_playback_trigger()
760 snd_emu10k1_playback_mangle_extra(emu, epcm, substream, runtime); in snd_emu10k1_playback_trigger()
761 mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_trigger()
762 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[0], 1, 0, mix); in snd_emu10k1_playback_trigger()
763 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[1], 0, 0, mix); in snd_emu10k1_playback_trigger()
764 snd_emu10k1_playback_prepare_voice(emu, epcm->extra, 1, 1, NULL); in snd_emu10k1_playback_trigger()
765 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[0], 1, 0); in snd_emu10k1_playback_trigger()
766 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[1], 0, 0); in snd_emu10k1_playback_trigger()
767 snd_emu10k1_playback_trigger_voice(emu, epcm->extra, 1, 1); in snd_emu10k1_playback_trigger()
774 snd_emu10k1_playback_stop_voice(emu, epcm->voices[0]); in snd_emu10k1_playback_trigger()
775 snd_emu10k1_playback_stop_voice(emu, epcm->voices[1]); in snd_emu10k1_playback_trigger()
776 snd_emu10k1_playback_stop_voice(emu, epcm->extra); in snd_emu10k1_playback_trigger()
782 spin_unlock(&emu->reg_lock); in snd_emu10k1_playback_trigger()
789 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_trigger() local
794 spin_lock(&emu->reg_lock); in snd_emu10k1_capture_trigger()
799 outl(epcm->capture_ipr, emu->port + IPR); in snd_emu10k1_capture_trigger()
800 snd_emu10k1_intr_enable(emu, epcm->capture_inte); in snd_emu10k1_capture_trigger()
807 snd_emu10k1_ptr_write(emu, ADCCR, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
810 if (emu->audigy) { in snd_emu10k1_capture_trigger()
811 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
812 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, epcm->capture_cr_val2); in snd_emu10k1_capture_trigger()
813 dev_dbg(emu->card->dev, in snd_emu10k1_capture_trigger()
818 snd_emu10k1_ptr_write(emu, FXWC, 0, epcm->capture_cr_val); in snd_emu10k1_capture_trigger()
823 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, epcm->capture_bs_val); in snd_emu10k1_capture_trigger()
830 snd_emu10k1_intr_disable(emu, epcm->capture_inte); in snd_emu10k1_capture_trigger()
831 outl(epcm->capture_ipr, emu->port + IPR); in snd_emu10k1_capture_trigger()
832 snd_emu10k1_ptr_write(emu, epcm->capture_bs_reg, 0, 0); in snd_emu10k1_capture_trigger()
835 snd_emu10k1_ptr_write(emu, ADCCR, 0, 0); in snd_emu10k1_capture_trigger()
838 if (emu->audigy) { in snd_emu10k1_capture_trigger()
839 snd_emu10k1_ptr_write(emu, A_FXWC1, 0, 0); in snd_emu10k1_capture_trigger()
840 snd_emu10k1_ptr_write(emu, A_FXWC2, 0, 0); in snd_emu10k1_capture_trigger()
842 snd_emu10k1_ptr_write(emu, FXWC, 0, 0); in snd_emu10k1_capture_trigger()
851 spin_unlock(&emu->reg_lock); in snd_emu10k1_capture_trigger()
857 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_pointer() local
864 ptr = snd_emu10k1_ptr_read(emu, CCCA, epcm->voices[0]->number) & 0x00ffffff; in snd_emu10k1_playback_pointer()
891 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_trigger() local
897 spin_lock(&emu->reg_lock); in snd_emu10k1_efx_playback_trigger()
902 snd_emu10k1_playback_invalidate_cache(emu, 0, epcm->voices[i]); in snd_emu10k1_efx_playback_trigger()
904 snd_emu10k1_playback_invalidate_cache(emu, 1, epcm->extra); in snd_emu10k1_efx_playback_trigger()
908 snd_emu10k1_playback_prepare_voice(emu, epcm->extra, 1, 1, NULL); in snd_emu10k1_efx_playback_trigger()
909 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[0], 0, 0, in snd_emu10k1_efx_playback_trigger()
910 &emu->efx_pcm_mixer[0]); in snd_emu10k1_efx_playback_trigger()
912 snd_emu10k1_playback_prepare_voice(emu, epcm->voices[i], 0, 0, in snd_emu10k1_efx_playback_trigger()
913 &emu->efx_pcm_mixer[i]); in snd_emu10k1_efx_playback_trigger()
914 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[0], 0, 0); in snd_emu10k1_efx_playback_trigger()
915 snd_emu10k1_playback_trigger_voice(emu, epcm->extra, 1, 1); in snd_emu10k1_efx_playback_trigger()
917 snd_emu10k1_playback_trigger_voice(emu, epcm->voices[i], 0, 0); in snd_emu10k1_efx_playback_trigger()
925 snd_emu10k1_playback_stop_voice(emu, epcm->voices[i]); in snd_emu10k1_efx_playback_trigger()
927 snd_emu10k1_playback_stop_voice(emu, epcm->extra); in snd_emu10k1_efx_playback_trigger()
933 spin_unlock(&emu->reg_lock); in snd_emu10k1_efx_playback_trigger()
940 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_pointer() local
951 ptr = snd_emu10k1_ptr_read(emu, epcm->capture_idx_reg, 0) & 0x0000ffff; in snd_emu10k1_capture_pointer()
1029 static void snd_emu10k1_pcm_mixer_notify1(struct snd_emu10k1 *emu, struct snd_kcontrol *kctl, int i… in snd_emu10k1_pcm_mixer_notify1() argument
1039 snd_ctl_notify(emu->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_emu10k1_pcm_mixer_notify1()
1044 static void snd_emu10k1_pcm_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate) in snd_emu10k1_pcm_mixer_notify() argument
1046 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_routing, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1047 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_volume, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1048 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_attn, idx, activate); in snd_emu10k1_pcm_mixer_notify()
1051 static void snd_emu10k1_pcm_efx_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate) in snd_emu10k1_pcm_efx_mixer_notify() argument
1053 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_routing, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1054 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_volume, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1055 snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_attn, idx, activate); in snd_emu10k1_pcm_efx_mixer_notify()
1065 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_close() local
1070 mix = &emu->efx_pcm_mixer[i]; in snd_emu10k1_efx_playback_close()
1072 snd_emu10k1_pcm_efx_mixer_notify(emu, i, 0); in snd_emu10k1_efx_playback_close()
1079 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_efx_playback_open() local
1088 epcm->emu = emu; in snd_emu10k1_efx_playback_open()
1092 emu->pcm_playback_efx_substream = substream; in snd_emu10k1_efx_playback_open()
1099 mix = &emu->efx_pcm_mixer[i]; in snd_emu10k1_efx_playback_open()
1105 snd_emu10k1_pcm_efx_mixer_notify(emu, i, 1); in snd_emu10k1_efx_playback_open()
1112 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_open() local
1121 epcm->emu = emu; in snd_emu10k1_playback_open()
1135 if (emu->card_capabilities->emu_model && emu->emu1010.internal_clock == 0) in snd_emu10k1_playback_open()
1144 mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_open()
1152 snd_emu10k1_pcm_mixer_notify(emu, substream->number, 1); in snd_emu10k1_playback_open()
1158 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_playback_close() local
1159 struct snd_emu10k1_pcm_mixer *mix = &emu->pcm_mixer[substream->number]; in snd_emu10k1_playback_close()
1162 snd_emu10k1_pcm_mixer_notify(emu, substream->number, 0); in snd_emu10k1_playback_close()
1168 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_open() local
1175 epcm->emu = emu; in snd_emu10k1_capture_open()
1182 epcm->capture_idx_reg = emu->audigy ? A_ADCIDX : ADCIDX; in snd_emu10k1_capture_open()
1186 emu->capture_interrupt = snd_emu10k1_pcm_ac97adc_interrupt; in snd_emu10k1_capture_open()
1187 emu->pcm_capture_substream = substream; in snd_emu10k1_capture_open()
1195 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_close() local
1197 emu->capture_interrupt = NULL; in snd_emu10k1_capture_close()
1198 emu->pcm_capture_substream = NULL; in snd_emu10k1_capture_close()
1204 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_mic_open() local
1211 epcm->emu = emu; in snd_emu10k1_capture_mic_open()
1218 epcm->capture_idx_reg = emu->audigy ? A_MICIDX : MICIDX; in snd_emu10k1_capture_mic_open()
1225 emu->capture_mic_interrupt = snd_emu10k1_pcm_ac97mic_interrupt; in snd_emu10k1_capture_mic_open()
1226 emu->pcm_capture_mic_substream = substream; in snd_emu10k1_capture_mic_open()
1233 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_mic_close() local
1235 emu->capture_interrupt = NULL; in snd_emu10k1_capture_mic_close()
1236 emu->pcm_capture_mic_substream = NULL; in snd_emu10k1_capture_mic_close()
1242 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_efx_open() local
1245 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_capture_efx_open()
1251 epcm->emu = emu; in snd_emu10k1_capture_efx_open()
1264 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_capture_efx_open()
1265 if (emu->card_capabilities->emu_model) { in snd_emu10k1_capture_efx_open()
1288 switch (emu->emu1010.internal_clock) { in snd_emu10k1_capture_efx_open()
1324 if (emu->efx_voices_mask[idx/32] & (1 << (idx%32))) { in snd_emu10k1_capture_efx_open()
1330 epcm->capture_cr_val = emu->efx_voices_mask[0]; in snd_emu10k1_capture_efx_open()
1331 epcm->capture_cr_val2 = emu->efx_voices_mask[1]; in snd_emu10k1_capture_efx_open()
1332 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_capture_efx_open()
1333 emu->capture_efx_interrupt = snd_emu10k1_pcm_efx_interrupt; in snd_emu10k1_capture_efx_open()
1334 emu->pcm_capture_efx_substream = substream; in snd_emu10k1_capture_efx_open()
1341 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_capture_efx_close() local
1343 emu->capture_interrupt = NULL; in snd_emu10k1_capture_efx_close()
1344 emu->pcm_capture_efx_substream = NULL; in snd_emu10k1_capture_efx_close()
1377 int snd_emu10k1_pcm(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm() argument
1383 if ((err = snd_pcm_new(emu->card, "emu10k1", device, 32, 1, &pcm)) < 0) in snd_emu10k1_pcm()
1386 pcm->private_data = emu; in snd_emu10k1_pcm()
1394 emu->pcm = pcm; in snd_emu10k1_pcm()
1399 &emu->pci->dev, in snd_emu10k1_pcm()
1404 &emu->pci->dev, 64*1024, 64*1024); in snd_emu10k1_pcm()
1409 int snd_emu10k1_pcm_multi(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_multi() argument
1415 if ((err = snd_pcm_new(emu->card, "emu10k1", device, 1, 0, &pcm)) < 0) in snd_emu10k1_pcm_multi()
1418 pcm->private_data = emu; in snd_emu10k1_pcm_multi()
1425 emu->pcm_multi = pcm; in snd_emu10k1_pcm_multi()
1429 &emu->pci->dev, in snd_emu10k1_pcm_multi()
1444 int snd_emu10k1_pcm_mic(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_mic() argument
1449 if ((err = snd_pcm_new(emu->card, "emu10k1 mic", device, 0, 1, &pcm)) < 0) in snd_emu10k1_pcm_mic()
1452 pcm->private_data = emu; in snd_emu10k1_pcm_mic()
1458 emu->pcm_mic = pcm; in snd_emu10k1_pcm_mic()
1460 snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, &emu->pci->dev, in snd_emu10k1_pcm_mic()
1468 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_info() local
1469 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_info()
1479 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_get() local
1480 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_get()
1483 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_get()
1485 ucontrol->value.integer.value[idx] = (emu->efx_voices_mask[idx / 32] & (1 << (idx % 32))) ? 1 : 0; in snd_emu10k1_pcm_efx_voices_mask_get()
1486 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_get()
1492 struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol); in snd_emu10k1_pcm_efx_voices_mask_put() local
1494 int nefx = emu->audigy ? 64 : 32; in snd_emu10k1_pcm_efx_voices_mask_put()
1495 int nefxb = emu->audigy ? 7 : 6; in snd_emu10k1_pcm_efx_voices_mask_put()
1512 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_put()
1513 change = (nval[0] != emu->efx_voices_mask[0]) || in snd_emu10k1_pcm_efx_voices_mask_put()
1514 (nval[1] != emu->efx_voices_mask[1]); in snd_emu10k1_pcm_efx_voices_mask_put()
1515 emu->efx_voices_mask[0] = nval[0]; in snd_emu10k1_pcm_efx_voices_mask_put()
1516 emu->efx_voices_mask[1] = nval[1]; in snd_emu10k1_pcm_efx_voices_mask_put()
1517 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_pcm_efx_voices_mask_put()
1543 static void snd_emu10k1_fx8010_playback_irq(struct snd_emu10k1 *emu, void *private_data) in snd_emu10k1_fx8010_playback_irq() argument
1577 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in fx8010_pb_trans_copy() local
1578 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in fx8010_pb_trans_copy()
1587 snd_emu10k1_fx8010_playback_tram_poke1((unsigned short *)emu->fx8010.etram_pages.area + tram_pos, in fx8010_pb_trans_copy()
1588 (unsigned short *)emu->fx8010.etram_pages.area + tram_pos + tram_size / 2, in fx8010_pb_trans_copy()
1595 snd_emu10k1_fx8010_playback_tram_poke1((unsigned short *)emu->fx8010.etram_pages.area + tram_pos, in fx8010_pb_trans_copy()
1596 (unsigned short *)emu->fx8010.etram_pages.area + tram_pos + tram_size / 2, in fx8010_pb_trans_copy()
1605 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_transfer() local
1606 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_transfer()
1614 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_hw_free() local
1615 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_hw_free()
1619 snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + 0x80 + pcm->etram[i], 0, 0); in snd_emu10k1_fx8010_playback_hw_free()
1625 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_prepare() local
1627 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_prepare()
1641 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_running, 0, 0); /* reset */ in snd_emu10k1_fx8010_playback_prepare()
1642 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 0); /* reset */ in snd_emu10k1_fx8010_playback_prepare()
1643 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_size, 0, runtime->buffer_size); in snd_emu10k1_fx8010_playback_prepare()
1644 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_ptr, 0, 0); /* reset ptr number */ in snd_emu10k1_fx8010_playback_prepare()
1645 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_count, 0, runtime->period_size); in snd_emu10k1_fx8010_playback_prepare()
1646 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_tmpcount, 0, runtime->period_size); in snd_emu10k1_fx8010_playback_prepare()
1648 …snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + 0x80 + pcm->etram[i], 0, (TANKMEMADDRREG_READ|TANK… in snd_emu10k1_fx8010_playback_prepare()
1654 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_trigger() local
1655 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_trigger()
1658 spin_lock(&emu->reg_lock); in snd_emu10k1_fx8010_playback_trigger()
1672 snd_emu10k1_ptr_write(emu, SPCS0 + i, 0, bits); in snd_emu10k1_fx8010_playback_trigger()
1676 …result = snd_emu10k1_fx8010_register_irq_handler(emu, snd_emu10k1_fx8010_playback_irq, pcm->gpr_ru… in snd_emu10k1_fx8010_playback_trigger()
1680 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 1); in snd_emu10k1_fx8010_playback_trigger()
1685 snd_emu10k1_fx8010_unregister_irq_handler(emu, &pcm->irq); in snd_emu10k1_fx8010_playback_trigger()
1686 snd_emu10k1_ptr_write(emu, emu->gpr_base + pcm->gpr_trigger, 0, 0); in snd_emu10k1_fx8010_playback_trigger()
1695 spin_unlock(&emu->reg_lock); in snd_emu10k1_fx8010_playback_trigger()
1701 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_pointer() local
1702 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_pointer()
1705 if (!snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_trigger, 0)) in snd_emu10k1_fx8010_playback_pointer()
1707 ptr = snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_ptr, 0) << 2; in snd_emu10k1_fx8010_playback_pointer()
1733 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_open() local
1735 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_open()
1740 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1742 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1746 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_open()
1752 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); in snd_emu10k1_fx8010_playback_close() local
1753 struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number]; in snd_emu10k1_fx8010_playback_close()
1755 spin_lock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_close()
1757 spin_unlock_irq(&emu->reg_lock); in snd_emu10k1_fx8010_playback_close()
1771 int snd_emu10k1_pcm_efx(struct snd_emu10k1 *emu, int device) in snd_emu10k1_pcm_efx() argument
1777 if ((err = snd_pcm_new(emu->card, "emu10k1 efx", device, 8, 1, &pcm)) < 0) in snd_emu10k1_pcm_efx()
1780 pcm->private_data = emu; in snd_emu10k1_pcm_efx()
1787 emu->pcm_efx = pcm; in snd_emu10k1_pcm_efx()
1794 if (emu->audigy) { in snd_emu10k1_pcm_efx()
1795 emu->efx_voices_mask[0] = 0; in snd_emu10k1_pcm_efx()
1796 if (emu->card_capabilities->emu_model) in snd_emu10k1_pcm_efx()
1801 emu->efx_voices_mask[1] = 0xffffffff; in snd_emu10k1_pcm_efx()
1803 emu->efx_voices_mask[1] = 0xffff; in snd_emu10k1_pcm_efx()
1805 emu->efx_voices_mask[0] = 0xffff0000; in snd_emu10k1_pcm_efx()
1806 emu->efx_voices_mask[1] = 0; in snd_emu10k1_pcm_efx()
1814 kctl = snd_ctl_new1(&snd_emu10k1_pcm_efx_voices_mask, emu); in snd_emu10k1_pcm_efx()
1818 err = snd_ctl_add(emu->card, kctl); in snd_emu10k1_pcm_efx()
1822 snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, &emu->pci->dev, in snd_emu10k1_pcm_efx()