• Home
  • Raw
  • Download

Lines Matching refs:opl3

25 int snd_opl3_synth_use_inc(struct snd_opl3 * opl3)  in snd_opl3_synth_use_inc()  argument
27 if (!try_module_get(opl3->card->module)) in snd_opl3_synth_use_inc()
33 void snd_opl3_synth_use_dec(struct snd_opl3 * opl3) in snd_opl3_synth_use_dec() argument
35 module_put(opl3->card->module); in snd_opl3_synth_use_dec()
38 int snd_opl3_synth_setup(struct snd_opl3 * opl3) in snd_opl3_synth_setup() argument
41 struct snd_hwdep *hwdep = opl3->hwdep; in snd_opl3_synth_setup()
51 snd_opl3_reset(opl3); in snd_opl3_synth_setup()
54 opl3->voices[idx].state = SNDRV_OPL3_ST_OFF; in snd_opl3_synth_setup()
55 opl3->voices[idx].time = 0; in snd_opl3_synth_setup()
56 opl3->voices[idx].keyon_reg = 0x00; in snd_opl3_synth_setup()
58 opl3->use_time = 0; in snd_opl3_synth_setup()
59 opl3->connection_reg = 0x00; in snd_opl3_synth_setup()
60 if (opl3->hardware >= OPL3_HW_OPL3) { in snd_opl3_synth_setup()
62 opl3->command(opl3, OPL3_RIGHT | OPL3_REG_CONNECTION_SELECT, in snd_opl3_synth_setup()
63 opl3->connection_reg); in snd_opl3_synth_setup()
64 opl3->max_voices = MAX_OPL3_VOICES; in snd_opl3_synth_setup()
69 void snd_opl3_synth_cleanup(struct snd_opl3 * opl3) in snd_opl3_synth_cleanup() argument
75 spin_lock_irqsave(&opl3->sys_timer_lock, flags); in snd_opl3_synth_cleanup()
76 if (opl3->sys_timer_status) { in snd_opl3_synth_cleanup()
77 del_timer(&opl3->tlist); in snd_opl3_synth_cleanup()
78 opl3->sys_timer_status = 0; in snd_opl3_synth_cleanup()
80 spin_unlock_irqrestore(&opl3->sys_timer_lock, flags); in snd_opl3_synth_cleanup()
82 snd_opl3_reset(opl3); in snd_opl3_synth_cleanup()
83 hwdep = opl3->hwdep; in snd_opl3_synth_cleanup()
92 struct snd_opl3 *opl3 = private_data; in snd_opl3_synth_use() local
95 if ((err = snd_opl3_synth_setup(opl3)) < 0) in snd_opl3_synth_use()
100 opl3->voices[6].state = opl3->voices[7].state = in snd_opl3_synth_use()
101 opl3->voices[8].state = SNDRV_OPL3_ST_NOT_AVAIL; in snd_opl3_synth_use()
102 snd_opl3_load_drums(opl3); in snd_opl3_synth_use()
103 opl3->drum_reg = OPL3_PERCUSSION_ENABLE; in snd_opl3_synth_use()
104 opl3->command(opl3, OPL3_LEFT | OPL3_REG_PERCUSSION, opl3->drum_reg); in snd_opl3_synth_use()
106 opl3->drum_reg = 0x00; in snd_opl3_synth_use()
110 if ((err = snd_opl3_synth_use_inc(opl3)) < 0) in snd_opl3_synth_use()
113 opl3->synth_mode = SNDRV_OPL3_MODE_SEQ; in snd_opl3_synth_use()
119 struct snd_opl3 *opl3 = private_data; in snd_opl3_synth_unuse() local
121 snd_opl3_synth_cleanup(opl3); in snd_opl3_synth_unuse()
124 snd_opl3_synth_use_dec(opl3); in snd_opl3_synth_unuse()
144 struct snd_opl3 *opl3 = private_data; in snd_opl3_synth_event_input() local
146 snd_midi_process_event(&opl3_ops, ev, opl3->chset); in snd_opl3_synth_event_input()
154 struct snd_opl3 *opl3 = private_data; in snd_opl3_synth_free_port() local
156 snd_midi_channel_free_set(opl3->chset); in snd_opl3_synth_free_port()
159 static int snd_opl3_synth_create_port(struct snd_opl3 * opl3) in snd_opl3_synth_create_port() argument
165 voices = (opl3->hardware < OPL3_HW_OPL3) ? in snd_opl3_synth_create_port()
167 opl3->chset = snd_midi_channel_alloc_set(16); in snd_opl3_synth_create_port()
168 if (opl3->chset == NULL) in snd_opl3_synth_create_port()
170 opl3->chset->private_data = opl3; in snd_opl3_synth_create_port()
178 callbacks.private_data = opl3; in snd_opl3_synth_create_port()
180 opl_ver = (opl3->hardware & OPL3_HW_MASK) >> 8; in snd_opl3_synth_create_port()
183 opl3->chset->client = opl3->seq_client; in snd_opl3_synth_create_port()
184 opl3->chset->port = snd_seq_event_port_attach(opl3->seq_client, &callbacks, in snd_opl3_synth_create_port()
194 if (opl3->chset->port < 0) { in snd_opl3_synth_create_port()
196 port = opl3->chset->port; in snd_opl3_synth_create_port()
197 snd_midi_channel_free_set(opl3->chset); in snd_opl3_synth_create_port()
208 struct snd_opl3 *opl3; in snd_opl3_seq_probe() local
213 opl3 = *(struct snd_opl3 **)SNDRV_SEQ_DEVICE_ARGPTR(dev); in snd_opl3_seq_probe()
214 if (opl3 == NULL) in snd_opl3_seq_probe()
217 spin_lock_init(&opl3->voice_lock); in snd_opl3_seq_probe()
219 opl3->seq_client = -1; in snd_opl3_seq_probe()
222 opl_ver = (opl3->hardware & OPL3_HW_MASK) >> 8; in snd_opl3_seq_probe()
224 client = opl3->seq_client = in snd_opl3_seq_probe()
225 snd_seq_create_kernel_client(opl3->card, opl3->seq_dev_num, in snd_opl3_seq_probe()
230 if ((err = snd_opl3_synth_create_port(opl3)) < 0) { in snd_opl3_seq_probe()
232 opl3->seq_client = -1; in snd_opl3_seq_probe()
237 timer_setup(&opl3->tlist, snd_opl3_timer_func, 0); in snd_opl3_seq_probe()
238 spin_lock_init(&opl3->sys_timer_lock); in snd_opl3_seq_probe()
239 opl3->sys_timer_status = 0; in snd_opl3_seq_probe()
242 snd_opl3_init_seq_oss(opl3, name); in snd_opl3_seq_probe()
250 struct snd_opl3 *opl3; in snd_opl3_seq_remove() local
252 opl3 = *(struct snd_opl3 **)SNDRV_SEQ_DEVICE_ARGPTR(dev); in snd_opl3_seq_remove()
253 if (opl3 == NULL) in snd_opl3_seq_remove()
257 snd_opl3_free_seq_oss(opl3); in snd_opl3_seq_remove()
259 if (opl3->seq_client >= 0) { in snd_opl3_seq_remove()
260 snd_seq_delete_kernel_client(opl3->seq_client); in snd_opl3_seq_remove()
261 opl3->seq_client = -1; in snd_opl3_seq_remove()