Lines Matching refs:emu
55 snd_emux_init_seq(struct snd_emux *emu, struct snd_card *card, int index) in snd_emux_init_seq() argument
61 emu->client = snd_seq_create_kernel_client(card, index, in snd_emux_init_seq()
62 "%s WaveTable", emu->name); in snd_emux_init_seq()
63 if (emu->client < 0) { in snd_emux_init_seq()
68 if (emu->num_ports < 0) { in snd_emux_init_seq()
70 emu->num_ports = 1; in snd_emux_init_seq()
71 } else if (emu->num_ports >= SNDRV_EMUX_MAX_PORTS) { in snd_emux_init_seq()
74 emu->num_ports = SNDRV_EMUX_MAX_PORTS; in snd_emux_init_seq()
83 for (i = 0; i < emu->num_ports; i++) { in snd_emux_init_seq()
86 sprintf(tmpname, "%s Port %d", emu->name, i); in snd_emux_init_seq()
87 p = snd_emux_create_port(emu, tmpname, MIDI_CHANNELS, in snd_emux_init_seq()
96 emu->ports[i] = p->chset.port; in snd_emux_init_seq()
97 emu->portptrs[i] = p; in snd_emux_init_seq()
109 snd_emux_detach_seq(struct snd_emux *emu) in snd_emux_detach_seq() argument
111 if (emu->voices) in snd_emux_detach_seq()
112 snd_emux_terminate_all(emu); in snd_emux_detach_seq()
114 if (emu->client >= 0) { in snd_emux_detach_seq()
115 snd_seq_delete_kernel_client(emu->client); in snd_emux_detach_seq()
116 emu->client = -1; in snd_emux_detach_seq()
126 snd_emux_create_port(struct snd_emux *emu, char *name, in snd_emux_create_port() argument
148 p->emu = emu; in snd_emux_create_port()
149 p->chset.client = emu->client; in snd_emux_create_port()
164 p->chset.port = snd_seq_event_port_attach(emu->client, callback, in snd_emux_create_port()
166 emu->max_voices, name); in snd_emux_create_port()
258 __snd_emux_inc_count(struct snd_emux *emu) in __snd_emux_inc_count() argument
260 emu->used++; in __snd_emux_inc_count()
261 if (!try_module_get(emu->ops.owner)) in __snd_emux_inc_count()
263 if (!try_module_get(emu->card->module)) { in __snd_emux_inc_count()
264 module_put(emu->ops.owner); in __snd_emux_inc_count()
266 emu->used--; in __snd_emux_inc_count()
272 int snd_emux_inc_count(struct snd_emux *emu) in snd_emux_inc_count() argument
276 mutex_lock(&emu->register_mutex); in snd_emux_inc_count()
277 ret = __snd_emux_inc_count(emu); in snd_emux_inc_count()
278 mutex_unlock(&emu->register_mutex); in snd_emux_inc_count()
286 __snd_emux_dec_count(struct snd_emux *emu) in __snd_emux_dec_count() argument
288 module_put(emu->card->module); in __snd_emux_dec_count()
289 emu->used--; in __snd_emux_dec_count()
290 if (emu->used <= 0) in __snd_emux_dec_count()
291 snd_emux_terminate_all(emu); in __snd_emux_dec_count()
292 module_put(emu->ops.owner); in __snd_emux_dec_count()
295 void snd_emux_dec_count(struct snd_emux *emu) in snd_emux_dec_count() argument
297 mutex_lock(&emu->register_mutex); in snd_emux_dec_count()
298 __snd_emux_dec_count(emu); in snd_emux_dec_count()
299 mutex_unlock(&emu->register_mutex); in snd_emux_dec_count()
309 struct snd_emux *emu; in snd_emux_use() local
314 emu = p->emu; in snd_emux_use()
315 if (snd_BUG_ON(!emu)) in snd_emux_use()
318 mutex_lock(&emu->register_mutex); in snd_emux_use()
320 __snd_emux_inc_count(emu); in snd_emux_use()
321 mutex_unlock(&emu->register_mutex); in snd_emux_use()
332 struct snd_emux *emu; in snd_emux_unuse() local
337 emu = p->emu; in snd_emux_unuse()
338 if (snd_BUG_ON(!emu)) in snd_emux_unuse()
341 mutex_lock(&emu->register_mutex); in snd_emux_unuse()
343 __snd_emux_dec_count(emu); in snd_emux_unuse()
344 mutex_unlock(&emu->register_mutex); in snd_emux_unuse()
352 int snd_emux_init_virmidi(struct snd_emux *emu, struct snd_card *card) in snd_emux_init_virmidi() argument
356 emu->vmidi = NULL; in snd_emux_init_virmidi()
357 if (emu->midi_ports <= 0) in snd_emux_init_virmidi()
360 emu->vmidi = kcalloc(emu->midi_ports, sizeof(*emu->vmidi), GFP_KERNEL); in snd_emux_init_virmidi()
361 if (!emu->vmidi) in snd_emux_init_virmidi()
364 for (i = 0; i < emu->midi_ports; i++) { in snd_emux_init_virmidi()
367 if (snd_virmidi_new(card, emu->midi_devidx + i, &rmidi) < 0) in snd_emux_init_virmidi()
370 sprintf(rmidi->name, "%s Synth MIDI", emu->name); in snd_emux_init_virmidi()
372 rdev->client = emu->client; in snd_emux_init_virmidi()
373 rdev->port = emu->ports[i]; in snd_emux_init_virmidi()
378 emu->vmidi[i] = rmidi; in snd_emux_init_virmidi()
385 snd_emux_delete_virmidi(emu); in snd_emux_init_virmidi()
389 int snd_emux_delete_virmidi(struct snd_emux *emu) in snd_emux_delete_virmidi() argument
393 if (!emu->vmidi) in snd_emux_delete_virmidi()
396 for (i = 0; i < emu->midi_ports; i++) { in snd_emux_delete_virmidi()
397 if (emu->vmidi[i]) in snd_emux_delete_virmidi()
398 snd_device_free(emu->card, emu->vmidi[i]); in snd_emux_delete_virmidi()
400 kfree(emu->vmidi); in snd_emux_delete_virmidi()
401 emu->vmidi = NULL; in snd_emux_delete_virmidi()