Lines Matching refs:emu

48 void snd_emu8000_poke(struct snd_emu8000 *emu, unsigned int port, unsigned int reg, unsigned int va…  in snd_emu8000_poke()  argument
51 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu8000_poke()
52 if (reg != emu->last_reg) { in snd_emu8000_poke()
53 outw((unsigned short)reg, EMU8000_PTR(emu)); /* Set register */ in snd_emu8000_poke()
54 emu->last_reg = reg; in snd_emu8000_poke()
57 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu8000_poke()
61 unsigned short snd_emu8000_peek(struct snd_emu8000 *emu, unsigned int port, unsigned int reg) in snd_emu8000_peek() argument
65 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu8000_peek()
66 if (reg != emu->last_reg) { in snd_emu8000_peek()
67 outw((unsigned short)reg, EMU8000_PTR(emu)); /* Set register */ in snd_emu8000_peek()
68 emu->last_reg = reg; in snd_emu8000_peek()
71 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu8000_peek()
76 void snd_emu8000_poke_dw(struct snd_emu8000 *emu, unsigned int port, unsigned int reg, unsigned int… in snd_emu8000_poke_dw() argument
79 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu8000_poke_dw()
80 if (reg != emu->last_reg) { in snd_emu8000_poke_dw()
81 outw((unsigned short)reg, EMU8000_PTR(emu)); /* Set register */ in snd_emu8000_poke_dw()
82 emu->last_reg = reg; in snd_emu8000_poke_dw()
86 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu8000_poke_dw()
90 unsigned int snd_emu8000_peek_dw(struct snd_emu8000 *emu, unsigned int port, unsigned int reg) in snd_emu8000_peek_dw() argument
95 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu8000_peek_dw()
96 if (reg != emu->last_reg) { in snd_emu8000_peek_dw()
97 outw((unsigned short)reg, EMU8000_PTR(emu)); /* Set register */ in snd_emu8000_peek_dw()
98 emu->last_reg = reg; in snd_emu8000_peek_dw()
102 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu8000_peek_dw()
110 snd_emu8000_dma_chan(struct snd_emu8000 *emu, int ch, int mode) in snd_emu8000_dma_chan() argument
115 EMU8000_CCCA_WRITE(emu, ch, 0); in snd_emu8000_dma_chan()
116 EMU8000_DCYSUSV_WRITE(emu, ch, 0x807F); in snd_emu8000_dma_chan()
119 EMU8000_DCYSUSV_WRITE(emu, ch, 0x80); in snd_emu8000_dma_chan()
120 EMU8000_VTFT_WRITE(emu, ch, 0); in snd_emu8000_dma_chan()
121 EMU8000_CVCF_WRITE(emu, ch, 0); in snd_emu8000_dma_chan()
122 EMU8000_PTRX_WRITE(emu, ch, 0x40000000); in snd_emu8000_dma_chan()
123 EMU8000_CPF_WRITE(emu, ch, 0x40000000); in snd_emu8000_dma_chan()
124 EMU8000_PSST_WRITE(emu, ch, 0); in snd_emu8000_dma_chan()
125 EMU8000_CSL_WRITE(emu, ch, 0); in snd_emu8000_dma_chan()
127 EMU8000_CCCA_WRITE(emu, ch, 0x06000000 | right_bit); in snd_emu8000_dma_chan()
129 EMU8000_CCCA_WRITE(emu, ch, 0x04000000 | right_bit); in snd_emu8000_dma_chan()
135 snd_emu8000_read_wait(struct snd_emu8000 *emu) in snd_emu8000_read_wait() argument
137 while ((EMU8000_SMALR_READ(emu) & 0x80000000) != 0) { in snd_emu8000_read_wait()
147 snd_emu8000_write_wait(struct snd_emu8000 *emu) in snd_emu8000_write_wait() argument
149 while ((EMU8000_SMALW_READ(emu) & 0x80000000) != 0) { in snd_emu8000_write_wait()
160 snd_emu8000_detect(struct snd_emu8000 *emu) in snd_emu8000_detect() argument
163 EMU8000_HWCF1_WRITE(emu, 0x0059); in snd_emu8000_detect()
164 EMU8000_HWCF2_WRITE(emu, 0x0020); in snd_emu8000_detect()
165 EMU8000_HWCF3_WRITE(emu, 0x0000); in snd_emu8000_detect()
171 if ((EMU8000_HWCF1_READ(emu) & 0x007e) != 0x0058) in snd_emu8000_detect()
173 if ((EMU8000_HWCF2_READ(emu) & 0x0003) != 0x0003) in snd_emu8000_detect()
177 emu->port1); in snd_emu8000_detect()
186 init_audio(struct snd_emu8000 *emu) in init_audio() argument
192 EMU8000_DCYSUSV_WRITE(emu, ch, 0x80); in init_audio()
196 EMU8000_ENVVOL_WRITE(emu, ch, 0); in init_audio()
197 EMU8000_ENVVAL_WRITE(emu, ch, 0); in init_audio()
198 EMU8000_DCYSUS_WRITE(emu, ch, 0); in init_audio()
199 EMU8000_ATKHLDV_WRITE(emu, ch, 0); in init_audio()
200 EMU8000_LFO1VAL_WRITE(emu, ch, 0); in init_audio()
201 EMU8000_ATKHLD_WRITE(emu, ch, 0); in init_audio()
202 EMU8000_LFO2VAL_WRITE(emu, ch, 0); in init_audio()
203 EMU8000_IP_WRITE(emu, ch, 0); in init_audio()
204 EMU8000_IFATN_WRITE(emu, ch, 0); in init_audio()
205 EMU8000_PEFE_WRITE(emu, ch, 0); in init_audio()
206 EMU8000_FMMOD_WRITE(emu, ch, 0); in init_audio()
207 EMU8000_TREMFRQ_WRITE(emu, ch, 0); in init_audio()
208 EMU8000_FM2FRQ2_WRITE(emu, ch, 0); in init_audio()
209 EMU8000_PTRX_WRITE(emu, ch, 0); in init_audio()
210 EMU8000_VTFT_WRITE(emu, ch, 0); in init_audio()
211 EMU8000_PSST_WRITE(emu, ch, 0); in init_audio()
212 EMU8000_CSL_WRITE(emu, ch, 0); in init_audio()
213 EMU8000_CCCA_WRITE(emu, ch, 0); in init_audio()
217 EMU8000_CPF_WRITE(emu, ch, 0); in init_audio()
218 EMU8000_CVCF_WRITE(emu, ch, 0); in init_audio()
227 init_dma(struct snd_emu8000 *emu) in init_dma() argument
229 EMU8000_SMALR_WRITE(emu, 0); in init_dma()
230 EMU8000_SMARR_WRITE(emu, 0); in init_dma()
231 EMU8000_SMALW_WRITE(emu, 0); in init_dma()
232 EMU8000_SMARW_WRITE(emu, 0); in init_dma()
331 send_array(struct snd_emu8000 *emu, unsigned short *data, int size) in send_array() argument
338 EMU8000_INIT1_WRITE(emu, i, *p); in send_array()
340 EMU8000_INIT2_WRITE(emu, i, *p); in send_array()
342 EMU8000_INIT3_WRITE(emu, i, *p); in send_array()
344 EMU8000_INIT4_WRITE(emu, i, *p); in send_array()
353 init_arrays(struct snd_emu8000 *emu) in init_arrays() argument
355 send_array(emu, init1, ARRAY_SIZE(init1)/4); in init_arrays()
358 send_array(emu, init2, ARRAY_SIZE(init2)/4); in init_arrays()
359 send_array(emu, init3, ARRAY_SIZE(init3)/4); in init_arrays()
361 EMU8000_HWCF4_WRITE(emu, 0); in init_arrays()
362 EMU8000_HWCF5_WRITE(emu, 0x83); in init_arrays()
363 EMU8000_HWCF6_WRITE(emu, 0x8000); in init_arrays()
365 send_array(emu, init4, ARRAY_SIZE(init4)/4); in init_arrays()
379 size_dram(struct snd_emu8000 *emu) in size_dram() argument
383 if (emu->dram_checked) in size_dram()
389 snd_emu8000_dma_chan(emu, 0, EMU8000_RAM_WRITE); in size_dram()
390 snd_emu8000_dma_chan(emu, 1, EMU8000_RAM_READ); in size_dram()
391 EMU8000_SMALW_WRITE(emu, EMU8000_DRAM_OFFSET); in size_dram()
392 EMU8000_SMLD_WRITE(emu, UNIQUE_ID1); in size_dram()
393 snd_emu8000_init_fm(emu); /* This must really be here and not 2 lines back even */ in size_dram()
394 snd_emu8000_write_wait(emu); in size_dram()
400 EMU8000_SMALR_WRITE(emu, EMU8000_DRAM_OFFSET); in size_dram()
401 EMU8000_SMLD_READ(emu); /* discard stale data */ in size_dram()
402 if (EMU8000_SMLD_READ(emu) != UNIQUE_ID1) in size_dram()
404 snd_emu8000_read_wait(emu); in size_dram()
414 EMU8000_SMALW_WRITE(emu, EMU8000_DRAM_OFFSET + (size>>1)); in size_dram()
415 EMU8000_SMLD_WRITE(emu, UNIQUE_ID2); in size_dram()
416 snd_emu8000_write_wait(emu); in size_dram()
423 EMU8000_SMALR_WRITE(emu, EMU8000_DRAM_OFFSET + (size>>1)); in size_dram()
425 EMU8000_SMLD_READ(emu); /* discard stale data */ in size_dram()
426 if (EMU8000_SMLD_READ(emu) != UNIQUE_ID2) in size_dram()
428 snd_emu8000_read_wait(emu); in size_dram()
435 EMU8000_SMALR_WRITE(emu, EMU8000_DRAM_OFFSET); in size_dram()
436 EMU8000_SMLD_READ(emu); /* discard stale data */ in size_dram()
437 if (EMU8000_SMLD_READ(emu) != UNIQUE_ID1) in size_dram()
439 snd_emu8000_read_wait(emu); in size_dram()
447 if ((EMU8000_SMALW_READ(emu) & 0x80000000) == 0) in size_dram()
453 snd_emu8000_dma_chan(emu, 0, EMU8000_RAM_CLOSE); in size_dram()
454 snd_emu8000_dma_chan(emu, 1, EMU8000_RAM_CLOSE); in size_dram()
457 emu->port1, size/1024); in size_dram()
459 emu->mem_size = size; in size_dram()
460 emu->dram_checked = 1; in size_dram()
469 snd_emu8000_init_fm(struct snd_emu8000 *emu) in snd_emu8000_init_fm() argument
477 EMU8000_DCYSUSV_WRITE(emu, 30, 0x80); in snd_emu8000_init_fm()
478 EMU8000_PSST_WRITE(emu, 30, 0xFFFFFFE0); /* full left */ in snd_emu8000_init_fm()
479 EMU8000_CSL_WRITE(emu, 30, 0x00FFFFE8 | (emu->fm_chorus_depth << 24)); in snd_emu8000_init_fm()
480 EMU8000_PTRX_WRITE(emu, 30, (emu->fm_reverb_depth << 8)); in snd_emu8000_init_fm()
481 EMU8000_CPF_WRITE(emu, 30, 0); in snd_emu8000_init_fm()
482 EMU8000_CCCA_WRITE(emu, 30, 0x00FFFFE3); in snd_emu8000_init_fm()
485 EMU8000_DCYSUSV_WRITE(emu, 31, 0x80); in snd_emu8000_init_fm()
486 EMU8000_PSST_WRITE(emu, 31, 0x00FFFFF0); /* full right */ in snd_emu8000_init_fm()
487 EMU8000_CSL_WRITE(emu, 31, 0x00FFFFF8 | (emu->fm_chorus_depth << 24)); in snd_emu8000_init_fm()
488 EMU8000_PTRX_WRITE(emu, 31, (emu->fm_reverb_depth << 8)); in snd_emu8000_init_fm()
489 EMU8000_CPF_WRITE(emu, 31, 0x8000); in snd_emu8000_init_fm()
490 EMU8000_CCCA_WRITE(emu, 31, 0x00FFFFF3); in snd_emu8000_init_fm()
492 snd_emu8000_poke((emu), EMU8000_DATA0(emu), EMU8000_CMD(1, (30)), 0); in snd_emu8000_init_fm()
494 spin_lock_irqsave(&emu->reg_lock, flags); in snd_emu8000_init_fm()
495 while (!(inw(EMU8000_PTR(emu)) & 0x1000)) in snd_emu8000_init_fm()
497 while ((inw(EMU8000_PTR(emu)) & 0x1000)) in snd_emu8000_init_fm()
499 spin_unlock_irqrestore(&emu->reg_lock, flags); in snd_emu8000_init_fm()
500 snd_emu8000_poke((emu), EMU8000_DATA0(emu), EMU8000_CMD(1, (30)), 0x4828); in snd_emu8000_init_fm()
502 outb(0x3C, EMU8000_PTR(emu)); in snd_emu8000_init_fm()
503 outb(0, EMU8000_DATA1(emu)); in snd_emu8000_init_fm()
506 EMU8000_VTFT_WRITE(emu, 30, 0x8000FFFF); in snd_emu8000_init_fm()
507 EMU8000_VTFT_WRITE(emu, 31, 0x8000FFFF); in snd_emu8000_init_fm()
515 snd_emu8000_init_hw(struct snd_emu8000 *emu) in snd_emu8000_init_hw() argument
519 emu->last_reg = 0xffff; /* reset the last register index */ in snd_emu8000_init_hw()
522 EMU8000_HWCF1_WRITE(emu, 0x0059); in snd_emu8000_init_hw()
523 EMU8000_HWCF2_WRITE(emu, 0x0020); in snd_emu8000_init_hw()
526 EMU8000_HWCF3_WRITE(emu, 0); in snd_emu8000_init_hw()
529 init_audio(emu); in snd_emu8000_init_hw()
532 init_dma(emu); in snd_emu8000_init_hw()
535 init_arrays(emu); in snd_emu8000_init_hw()
541 snd_emu8000_init_fm(emu); in snd_emu8000_init_hw()
545 EMU8000_DCYSUSV_WRITE(emu, 0, 0x807F); in snd_emu8000_init_hw()
548 size_dram(emu); in snd_emu8000_init_hw()
551 EMU8000_HWCF3_WRITE(emu, 0x4); in snd_emu8000_init_hw()
554 snd_emu8000_update_equalizer(emu); in snd_emu8000_init_hw()
555 snd_emu8000_update_chorus_mode(emu); in snd_emu8000_init_hw()
556 snd_emu8000_update_reverb_mode(emu); in snd_emu8000_init_hw()
599 snd_emu8000_update_equalizer(struct snd_emu8000 *emu) in snd_emu8000_update_equalizer() argument
602 int bass = emu->bass_level; in snd_emu8000_update_equalizer()
603 int treble = emu->treble_level; in snd_emu8000_update_equalizer()
607 EMU8000_INIT4_WRITE(emu, 0x01, bass_parm[bass][0]); in snd_emu8000_update_equalizer()
608 EMU8000_INIT4_WRITE(emu, 0x11, bass_parm[bass][1]); in snd_emu8000_update_equalizer()
609 EMU8000_INIT3_WRITE(emu, 0x11, treble_parm[treble][0]); in snd_emu8000_update_equalizer()
610 EMU8000_INIT3_WRITE(emu, 0x13, treble_parm[treble][1]); in snd_emu8000_update_equalizer()
611 EMU8000_INIT3_WRITE(emu, 0x1b, treble_parm[treble][2]); in snd_emu8000_update_equalizer()
612 EMU8000_INIT4_WRITE(emu, 0x07, treble_parm[treble][3]); in snd_emu8000_update_equalizer()
613 EMU8000_INIT4_WRITE(emu, 0x0b, treble_parm[treble][4]); in snd_emu8000_update_equalizer()
614 EMU8000_INIT4_WRITE(emu, 0x0d, treble_parm[treble][5]); in snd_emu8000_update_equalizer()
615 EMU8000_INIT4_WRITE(emu, 0x17, treble_parm[treble][6]); in snd_emu8000_update_equalizer()
616 EMU8000_INIT4_WRITE(emu, 0x19, treble_parm[treble][7]); in snd_emu8000_update_equalizer()
618 EMU8000_INIT4_WRITE(emu, 0x15, (unsigned short)(w + 0x0262)); in snd_emu8000_update_equalizer()
619 EMU8000_INIT4_WRITE(emu, 0x1d, (unsigned short)(w + 0x8362)); in snd_emu8000_update_equalizer()
664 snd_emu8000_load_chorus_fx(struct snd_emu8000 *emu, int mode, const void __user *buf, long len) in snd_emu8000_load_chorus_fx() argument
679 snd_emu8000_update_chorus_mode(struct snd_emu8000 *emu) in snd_emu8000_update_chorus_mode() argument
681 int effect = emu->chorus_mode; in snd_emu8000_update_chorus_mode()
685 EMU8000_INIT3_WRITE(emu, 0x09, chorus_parm[effect].feedback); in snd_emu8000_update_chorus_mode()
686 EMU8000_INIT3_WRITE(emu, 0x0c, chorus_parm[effect].delay_offset); in snd_emu8000_update_chorus_mode()
687 EMU8000_INIT4_WRITE(emu, 0x03, chorus_parm[effect].lfo_depth); in snd_emu8000_update_chorus_mode()
688 EMU8000_HWCF4_WRITE(emu, chorus_parm[effect].delay); in snd_emu8000_update_chorus_mode()
689 EMU8000_HWCF5_WRITE(emu, chorus_parm[effect].lfo_freq); in snd_emu8000_update_chorus_mode()
690 EMU8000_HWCF6_WRITE(emu, 0x8000); in snd_emu8000_update_chorus_mode()
691 EMU8000_HWCF7_WRITE(emu, 0x0000); in snd_emu8000_update_chorus_mode()
791 snd_emu8000_load_reverb_fx(struct snd_emu8000 *emu, int mode, const void __user *buf, long len) in snd_emu8000_load_reverb_fx() argument
807 snd_emu8000_update_reverb_mode(struct snd_emu8000 *emu) in snd_emu8000_update_reverb_mode() argument
809 int effect = emu->reverb_mode; in snd_emu8000_update_reverb_mode()
818 port = EMU8000_DATA1(emu); in snd_emu8000_update_reverb_mode()
820 port = EMU8000_DATA2(emu); in snd_emu8000_update_reverb_mode()
821 snd_emu8000_poke(emu, port, reverb_cmds[i].cmd, reverb_parm[effect].parms[i]); in snd_emu8000_update_reverb_mode()
844 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_bass_treble_get() local
846 ucontrol->value.integer.value[0] = kcontrol->private_value ? emu->treble_level : emu->bass_level; in mixer_bass_treble_get()
852 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_bass_treble_put() local
858 spin_lock_irqsave(&emu->control_lock, flags); in mixer_bass_treble_put()
860 change = val1 != emu->treble_level; in mixer_bass_treble_put()
861 emu->treble_level = val1; in mixer_bass_treble_put()
863 change = val1 != emu->bass_level; in mixer_bass_treble_put()
864 emu->bass_level = val1; in mixer_bass_treble_put()
866 spin_unlock_irqrestore(&emu->control_lock, flags); in mixer_bass_treble_put()
867 snd_emu8000_update_equalizer(emu); in mixer_bass_treble_put()
905 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_chorus_reverb_get() local
907 ucontrol->value.integer.value[0] = kcontrol->private_value ? emu->chorus_mode : emu->reverb_mode; in mixer_chorus_reverb_get()
913 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_chorus_reverb_put() local
918 spin_lock_irqsave(&emu->control_lock, flags); in mixer_chorus_reverb_put()
921 change = val1 != emu->chorus_mode; in mixer_chorus_reverb_put()
922 emu->chorus_mode = val1; in mixer_chorus_reverb_put()
925 change = val1 != emu->reverb_mode; in mixer_chorus_reverb_put()
926 emu->reverb_mode = val1; in mixer_chorus_reverb_put()
928 spin_unlock_irqrestore(&emu->control_lock, flags); in mixer_chorus_reverb_put()
931 snd_emu8000_update_chorus_mode(emu); in mixer_chorus_reverb_put()
933 snd_emu8000_update_reverb_mode(emu); in mixer_chorus_reverb_put()
972 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_fm_depth_get() local
974 …ucontrol->value.integer.value[0] = kcontrol->private_value ? emu->fm_chorus_depth : emu->fm_reverb… in mixer_fm_depth_get()
980 struct snd_emu8000 *emu = snd_kcontrol_chip(kcontrol); in mixer_fm_depth_put() local
986 spin_lock_irqsave(&emu->control_lock, flags); in mixer_fm_depth_put()
988 change = val1 != emu->fm_chorus_depth; in mixer_fm_depth_put()
989 emu->fm_chorus_depth = val1; in mixer_fm_depth_put()
991 change = val1 != emu->fm_reverb_depth; in mixer_fm_depth_put()
992 emu->fm_reverb_depth = val1; in mixer_fm_depth_put()
994 spin_unlock_irqrestore(&emu->control_lock, flags); in mixer_fm_depth_put()
996 snd_emu8000_init_fm(emu); in mixer_fm_depth_put()
1034 snd_emu8000_create_mixer(struct snd_card *card, struct snd_emu8000 *emu) in snd_emu8000_create_mixer() argument
1038 if (snd_BUG_ON(!emu || !card)) in snd_emu8000_create_mixer()
1041 spin_lock_init(&emu->control_lock); in snd_emu8000_create_mixer()
1043 memset(emu->controls, 0, sizeof(emu->controls)); in snd_emu8000_create_mixer()
1045 if ((err = snd_ctl_add(card, emu->controls[i] = snd_ctl_new1(mixer_defs[i], emu))) < 0) in snd_emu8000_create_mixer()
1053 if (emu->controls[i]) in snd_emu8000_create_mixer()
1054 snd_ctl_remove(card, emu->controls[i]); in snd_emu8000_create_mixer()