Lines Matching refs:emu
68 snd_emux_init_seq(struct snd_emux *emu, struct snd_card *card, int index) in snd_emux_init_seq() argument
74 emu->client = snd_seq_create_kernel_client(card, index, in snd_emux_init_seq()
75 "%s WaveTable", emu->name); in snd_emux_init_seq()
76 if (emu->client < 0) { in snd_emux_init_seq()
81 if (emu->num_ports < 0) { in snd_emux_init_seq()
83 emu->num_ports = 1; in snd_emux_init_seq()
84 } else if (emu->num_ports >= SNDRV_EMUX_MAX_PORTS) { in snd_emux_init_seq()
87 emu->num_ports = SNDRV_EMUX_MAX_PORTS; in snd_emux_init_seq()
96 for (i = 0; i < emu->num_ports; i++) { in snd_emux_init_seq()
99 sprintf(tmpname, "%s Port %d", emu->name, i); in snd_emux_init_seq()
100 p = snd_emux_create_port(emu, tmpname, MIDI_CHANNELS, in snd_emux_init_seq()
109 emu->ports[i] = p->chset.port; in snd_emux_init_seq()
110 emu->portptrs[i] = p; in snd_emux_init_seq()
122 snd_emux_detach_seq(struct snd_emux *emu) in snd_emux_detach_seq() argument
124 if (emu->voices) in snd_emux_detach_seq()
125 snd_emux_terminate_all(emu); in snd_emux_detach_seq()
127 if (emu->client >= 0) { in snd_emux_detach_seq()
128 snd_seq_delete_kernel_client(emu->client); in snd_emux_detach_seq()
129 emu->client = -1; in snd_emux_detach_seq()
139 snd_emux_create_port(struct snd_emux *emu, char *name, in snd_emux_create_port() argument
161 p->emu = emu; in snd_emux_create_port()
162 p->chset.client = emu->client; in snd_emux_create_port()
177 p->chset.port = snd_seq_event_port_attach(emu->client, callback, in snd_emux_create_port()
179 emu->max_voices, name); in snd_emux_create_port()
271 __snd_emux_inc_count(struct snd_emux *emu) in __snd_emux_inc_count() argument
273 emu->used++; in __snd_emux_inc_count()
274 if (!try_module_get(emu->ops.owner)) in __snd_emux_inc_count()
276 if (!try_module_get(emu->card->module)) { in __snd_emux_inc_count()
277 module_put(emu->ops.owner); in __snd_emux_inc_count()
279 emu->used--; in __snd_emux_inc_count()
285 int snd_emux_inc_count(struct snd_emux *emu) in snd_emux_inc_count() argument
289 mutex_lock(&emu->register_mutex); in snd_emux_inc_count()
290 ret = __snd_emux_inc_count(emu); in snd_emux_inc_count()
291 mutex_unlock(&emu->register_mutex); in snd_emux_inc_count()
299 __snd_emux_dec_count(struct snd_emux *emu) in __snd_emux_dec_count() argument
301 module_put(emu->card->module); in __snd_emux_dec_count()
302 emu->used--; in __snd_emux_dec_count()
303 if (emu->used <= 0) in __snd_emux_dec_count()
304 snd_emux_terminate_all(emu); in __snd_emux_dec_count()
305 module_put(emu->ops.owner); in __snd_emux_dec_count()
308 void snd_emux_dec_count(struct snd_emux *emu) in snd_emux_dec_count() argument
310 mutex_lock(&emu->register_mutex); in snd_emux_dec_count()
311 __snd_emux_dec_count(emu); in snd_emux_dec_count()
312 mutex_unlock(&emu->register_mutex); in snd_emux_dec_count()
322 struct snd_emux *emu; in snd_emux_use() local
327 emu = p->emu; in snd_emux_use()
328 if (snd_BUG_ON(!emu)) in snd_emux_use()
331 mutex_lock(&emu->register_mutex); in snd_emux_use()
333 __snd_emux_inc_count(emu); in snd_emux_use()
334 mutex_unlock(&emu->register_mutex); in snd_emux_use()
345 struct snd_emux *emu; in snd_emux_unuse() local
350 emu = p->emu; in snd_emux_unuse()
351 if (snd_BUG_ON(!emu)) in snd_emux_unuse()
354 mutex_lock(&emu->register_mutex); in snd_emux_unuse()
356 __snd_emux_dec_count(emu); in snd_emux_unuse()
357 mutex_unlock(&emu->register_mutex); in snd_emux_unuse()
365 int snd_emux_init_virmidi(struct snd_emux *emu, struct snd_card *card) in snd_emux_init_virmidi() argument
369 emu->vmidi = NULL; in snd_emux_init_virmidi()
370 if (emu->midi_ports <= 0) in snd_emux_init_virmidi()
373 emu->vmidi = kcalloc(emu->midi_ports, sizeof(struct snd_rawmidi *), GFP_KERNEL); in snd_emux_init_virmidi()
374 if (emu->vmidi == NULL) in snd_emux_init_virmidi()
377 for (i = 0; i < emu->midi_ports; i++) { in snd_emux_init_virmidi()
380 if (snd_virmidi_new(card, emu->midi_devidx + i, &rmidi) < 0) in snd_emux_init_virmidi()
383 sprintf(rmidi->name, "%s Synth MIDI", emu->name); in snd_emux_init_virmidi()
385 rdev->client = emu->client; in snd_emux_init_virmidi()
386 rdev->port = emu->ports[i]; in snd_emux_init_virmidi()
391 emu->vmidi[i] = rmidi; in snd_emux_init_virmidi()
398 snd_emux_delete_virmidi(emu); in snd_emux_init_virmidi()
402 int snd_emux_delete_virmidi(struct snd_emux *emu) in snd_emux_delete_virmidi() argument
406 if (emu->vmidi == NULL) in snd_emux_delete_virmidi()
409 for (i = 0; i < emu->midi_ports; i++) { in snd_emux_delete_virmidi()
410 if (emu->vmidi[i]) in snd_emux_delete_virmidi()
411 snd_device_free(emu->card, emu->vmidi[i]); in snd_emux_delete_virmidi()
413 kfree(emu->vmidi); in snd_emux_delete_virmidi()
414 emu->vmidi = NULL; in snd_emux_delete_virmidi()