• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/sound/drivers/opl3/

Lines Matching defs:opl3

124 static void debug_alloc(struct snd_opl3 *opl3, char *s, int voice) {
128 printk("time %.5i: %s [%.2i]: ", opl3->use_time, s, voice);
129 for (i = 0; i < opl3->max_voices; i++)
130 printk("%c", *(str + opl3->voices[i].state + 1));
138 static int opl3_get_voice(struct snd_opl3 *opl3, int instr_4op,
169 for (i = 0; i < opl3->max_voices; i++) {
170 vp = &opl3->voices[i];
193 vp2 = &opl3->voices[i + 3];
240 struct snd_opl3 *opl3 = (struct snd_opl3 *)data;
245 spin_lock_irqsave(&opl3->sys_timer_lock, flags);
246 for (i = 0; i < opl3->max_voices; i++) {
247 struct snd_opl3_voice *vp = &opl3->voices[i];
250 snd_opl3_note_off(opl3, vp->note, 0, vp->chan);
256 opl3->tlist.expires = jiffies + 1; /* invoke again */
257 add_timer(&opl3->tlist);
259 opl3->sys_timer_status = 0;
261 spin_unlock_irqrestore(&opl3->sys_timer_lock, flags);
267 static void snd_opl3_start_timer(struct snd_opl3 *opl3)
270 spin_lock_irqsave(&opl3->sys_timer_lock, flags);
271 if (! opl3->sys_timer_status) {
272 opl3->tlist.expires = jiffies + 1;
273 add_timer(&opl3->tlist);
274 opl3->sys_timer_status = 1;
276 spin_unlock_irqrestore(&opl3->sys_timer_lock, flags);
291 struct snd_opl3 *opl3;
317 opl3 = p;
328 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) {
347 spin_lock_irqsave(&opl3->voice_lock, flags);
350 snd_opl3_drum_switch(opl3, note, vel, 1, chan);
351 spin_unlock_irqrestore(&opl3->voice_lock, flags);
356 kinstr = snd_seq_instr_find(opl3->ilist, &wanted, 1, 0);
358 spin_unlock_irqrestore(&opl3->voice_lock, flags);
369 if (opl3->hardware >= OPL3_HW_OPL3) {
374 snd_seq_instr_free_use(opl3->ilist, kinstr);
375 spin_unlock_irqrestore(&opl3->voice_lock, flags);
385 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) {
386 voice = opl3_get_voice(opl3, instr_4op, chan);
405 vp = &opl3->voices[voice];
409 opl3->command(opl3, opl3_reg, reg_val);
412 vp2 = &opl3->voices[voice + 3];
417 opl3->command(opl3, opl3_reg, reg_val);
423 if ((opl3->connection_reg ^ connect_mask) & connect_mask) {
424 opl3->connection_reg |= connect_mask;
427 opl3->command(opl3, opl3_reg, opl3->connection_reg);
430 if ((opl3->connection_reg ^ ~connect_mask) & connect_mask) {
431 opl3->connection_reg &= ~connect_mask;
434 opl3->command(opl3, opl3_reg, opl3->connection_reg);
440 opl3->connection_reg);
444 * between FM operators (see include/opl3.h)
481 opl3->command(opl3, opl3_reg, reg_val);
486 opl3->command(opl3, opl3_reg, reg_val);
491 opl3->command(opl3, opl3_reg, reg_val);
496 opl3->command(opl3, opl3_reg, reg_val);
501 opl3->command(opl3, opl3_reg, reg_val);
513 opl3->command(opl3, opl3_reg, reg_val);
526 opl3->command(opl3, opl3_reg, reg_val);
546 opl3->command(opl3, opl3_reg, fnum);
548 opl3->voices[voice].keyon_reg = blocknum;
558 opl3->command(opl3, opl3_reg, blocknum);
562 opl3->voices[voice].note_off = jiffies +
564 snd_opl3_start_timer(opl3);
565 opl3->voices[voice].note_off_check = 1;
567 opl3->voices[voice].note_off_check = 0;
572 snd_seq_instr_free_use(opl3->ilist, kinstr);
575 vp->time = opl3->use_time++;
582 vp2 = &opl3->voices[voice + 3];
583 vp2->time = opl3->use_time++;
590 vp2 = &opl3->voices[voice + 3];
591 vp2->time = opl3->use_time++;
598 debug_alloc(opl3, "note on ", voice);
616 spin_unlock_irqrestore(&opl3->voice_lock, flags);
619 static void snd_opl3_kill_voice(struct snd_opl3 *opl3, int voice)
629 vp = &opl3->voices[voice];
646 opl3->command(opl3, opl3_reg, vp->keyon_reg);
649 vp->time = opl3->use_time++;
652 vp2 = &opl3->voices[voice + 3];
654 vp2->time = opl3->use_time++;
659 debug_alloc(opl3, "note off", voice);
669 struct snd_opl3 *opl3;
676 opl3 = p;
683 spin_lock_irqsave(&opl3->voice_lock, flags);
685 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) {
687 snd_opl3_drum_switch(opl3, note, vel, 0, chan);
688 spin_unlock_irqrestore(&opl3->voice_lock, flags);
693 for (voice = 0; voice < opl3->max_voices; voice++) {
694 vp = &opl3->voices[voice];
696 snd_opl3_kill_voice(opl3, voice);
703 snd_opl3_kill_voice(opl3, voice);
706 spin_unlock_irqrestore(&opl3->voice_lock, flags);
714 struct snd_opl3 *opl3;
716 opl3 = p;
728 struct snd_opl3 *opl3;
730 opl3 = p;
737 static void snd_opl3_update_pitch(struct snd_opl3 *opl3, int voice)
749 vp = &opl3->voices[voice];
767 opl3->command(opl3, opl3_reg, fnum);
776 opl3->command(opl3, opl3_reg, blocknum);
778 vp->time = opl3->use_time++;
784 static void snd_opl3_pitch_ctrl(struct snd_opl3 *opl3, struct snd_midi_channel *chan)
791 spin_lock_irqsave(&opl3->voice_lock, flags);
793 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) {
794 for (voice = 0; voice < opl3->max_voices; voice++) {
795 vp = &opl3->voices[voice];
797 snd_opl3_update_pitch(opl3, voice);
804 snd_opl3_update_pitch(opl3, voice);
807 spin_unlock_irqrestore(&opl3->voice_lock, flags);
816 struct snd_opl3 *opl3;
818 opl3 = p;
827 opl3->drum_reg |= OPL3_VIBRATO_DEPTH;
829 opl3->drum_reg &= ~OPL3_VIBRATO_DEPTH;
830 opl3->command(opl3, OPL3_LEFT | OPL3_REG_PERCUSSION,
831 opl3->drum_reg);
835 opl3->drum_reg |= OPL3_TREMOLO_DEPTH;
837 opl3->drum_reg &= ~OPL3_TREMOLO_DEPTH;
838 opl3->command(opl3, OPL3_LEFT | OPL3_REG_PERCUSSION,
839 opl3->drum_reg);
842 snd_opl3_pitch_ctrl(opl3, chan);
853 struct snd_opl3 *opl3;
855 opl3 = p;
868 struct snd_opl3 *opl3;
870 opl3 = p;