Lines Matching refs:rdev

79 static int snd_virmidi_dev_receive_event(struct snd_virmidi_dev *rdev,  in snd_virmidi_dev_receive_event()  argument
86 read_lock(&rdev->filelist_lock); in snd_virmidi_dev_receive_event()
87 list_for_each_entry(vmidi, &rdev->filelist, list) { in snd_virmidi_dev_receive_event()
100 read_unlock(&rdev->filelist_lock); in snd_virmidi_dev_receive_event()
115 struct snd_virmidi_dev *rdev;
117 rdev = rmidi->private_data;
118 return snd_virmidi_dev_receive_event(rdev, ev);
128 struct snd_virmidi_dev *rdev; in snd_virmidi_event_input() local
130 rdev = private_data; in snd_virmidi_event_input()
131 if (!(rdev->flags & SNDRV_VIRMIDI_USE)) in snd_virmidi_event_input()
133 return snd_virmidi_dev_receive_event(rdev, ev); in snd_virmidi_event_input()
163 !(vmidi->rdev->flags & SNDRV_VIRMIDI_SUBSCRIBE)) { in snd_virmidi_output_trigger()
209 struct snd_virmidi_dev *rdev = substream->rmidi->private_data; in snd_virmidi_input_open() local
222 vmidi->seq_mode = rdev->seq_mode; in snd_virmidi_input_open()
223 vmidi->client = rdev->client; in snd_virmidi_input_open()
224 vmidi->port = rdev->port; in snd_virmidi_input_open()
226 write_lock_irqsave(&rdev->filelist_lock, flags); in snd_virmidi_input_open()
227 list_add_tail(&vmidi->list, &rdev->filelist); in snd_virmidi_input_open()
228 write_unlock_irqrestore(&rdev->filelist_lock, flags); in snd_virmidi_input_open()
229 vmidi->rdev = rdev; in snd_virmidi_input_open()
238 struct snd_virmidi_dev *rdev = substream->rmidi->private_data; in snd_virmidi_output_open() local
250 vmidi->seq_mode = rdev->seq_mode; in snd_virmidi_output_open()
251 vmidi->client = rdev->client; in snd_virmidi_output_open()
252 vmidi->port = rdev->port; in snd_virmidi_output_open()
254 vmidi->rdev = rdev; in snd_virmidi_output_open()
264 struct snd_virmidi_dev *rdev = substream->rmidi->private_data; in snd_virmidi_input_close() local
267 write_lock_irq(&rdev->filelist_lock); in snd_virmidi_input_close()
269 write_unlock_irq(&rdev->filelist_lock); in snd_virmidi_input_close()
294 struct snd_virmidi_dev *rdev; in snd_virmidi_subscribe() local
296 rdev = private_data; in snd_virmidi_subscribe()
297 if (!try_module_get(rdev->card->module)) in snd_virmidi_subscribe()
299 rdev->flags |= SNDRV_VIRMIDI_SUBSCRIBE; in snd_virmidi_subscribe()
309 struct snd_virmidi_dev *rdev; in snd_virmidi_unsubscribe() local
311 rdev = private_data; in snd_virmidi_unsubscribe()
312 rdev->flags &= ~SNDRV_VIRMIDI_SUBSCRIBE; in snd_virmidi_unsubscribe()
313 module_put(rdev->card->module); in snd_virmidi_unsubscribe()
324 struct snd_virmidi_dev *rdev; in snd_virmidi_use() local
326 rdev = private_data; in snd_virmidi_use()
327 if (!try_module_get(rdev->card->module)) in snd_virmidi_use()
329 rdev->flags |= SNDRV_VIRMIDI_USE; in snd_virmidi_use()
339 struct snd_virmidi_dev *rdev; in snd_virmidi_unuse() local
341 rdev = private_data; in snd_virmidi_unuse()
342 rdev->flags &= ~SNDRV_VIRMIDI_USE; in snd_virmidi_unuse()
343 module_put(rdev->card->module); in snd_virmidi_unuse()
367 static int snd_virmidi_dev_attach_seq(struct snd_virmidi_dev *rdev) in snd_virmidi_dev_attach_seq() argument
374 if (rdev->client >= 0) in snd_virmidi_dev_attach_seq()
383 client = snd_seq_create_kernel_client(rdev->card, rdev->device, in snd_virmidi_dev_attach_seq()
384 "%s %d-%d", rdev->rmidi->name, in snd_virmidi_dev_attach_seq()
385 rdev->card->number, in snd_virmidi_dev_attach_seq()
386 rdev->device); in snd_virmidi_dev_attach_seq()
391 rdev->client = client; in snd_virmidi_dev_attach_seq()
395 sprintf(pinfo->name, "VirMIDI %d-%d", rdev->card->number, rdev->device); in snd_virmidi_dev_attach_seq()
406 pcallbacks.private_data = rdev; in snd_virmidi_dev_attach_seq()
416 rdev->client = -1; in snd_virmidi_dev_attach_seq()
420 rdev->port = pinfo->addr.port; in snd_virmidi_dev_attach_seq()
432 static void snd_virmidi_dev_detach_seq(struct snd_virmidi_dev *rdev) in snd_virmidi_dev_detach_seq() argument
434 if (rdev->client >= 0) { in snd_virmidi_dev_detach_seq()
435 snd_seq_delete_kernel_client(rdev->client); in snd_virmidi_dev_detach_seq()
436 rdev->client = -1; in snd_virmidi_dev_detach_seq()
445 struct snd_virmidi_dev *rdev = rmidi->private_data; in snd_virmidi_dev_register() local
448 switch (rdev->seq_mode) { in snd_virmidi_dev_register()
450 err = snd_virmidi_dev_attach_seq(rdev); in snd_virmidi_dev_register()
455 if (rdev->client == 0) in snd_virmidi_dev_register()
460 pr_err("ALSA: seq_virmidi: seq_mode is not set: %d\n", rdev->seq_mode); in snd_virmidi_dev_register()
472 struct snd_virmidi_dev *rdev = rmidi->private_data; in snd_virmidi_dev_unregister() local
474 if (rdev->seq_mode == SNDRV_VIRMIDI_SEQ_DISPATCH) in snd_virmidi_dev_unregister()
475 snd_virmidi_dev_detach_seq(rdev); in snd_virmidi_dev_unregister()
492 struct snd_virmidi_dev *rdev = rmidi->private_data; in snd_virmidi_free() local
493 kfree(rdev); in snd_virmidi_free()
504 struct snd_virmidi_dev *rdev; in snd_virmidi_new() local
514 rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); in snd_virmidi_new()
515 if (rdev == NULL) { in snd_virmidi_new()
519 rdev->card = card; in snd_virmidi_new()
520 rdev->rmidi = rmidi; in snd_virmidi_new()
521 rdev->device = device; in snd_virmidi_new()
522 rdev->client = -1; in snd_virmidi_new()
523 rwlock_init(&rdev->filelist_lock); in snd_virmidi_new()
524 INIT_LIST_HEAD(&rdev->filelist); in snd_virmidi_new()
525 rdev->seq_mode = SNDRV_VIRMIDI_SEQ_DISPATCH; in snd_virmidi_new()
526 rmidi->private_data = rdev; in snd_virmidi_new()