• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/core/

Lines Matching refs:rmidi

230 static int assign_substream(struct snd_rawmidi *rmidi, int subdevice,
235 struct snd_rawmidi_str *s = &rmidi->streams[stream];
241 if (!(rmidi->info_flags & info_flags[stream]))
262 static int open_substream(struct snd_rawmidi *rmidi,
282 rmidi->streams[substream->stream].substream_opened++;
288 static void close_substream(struct snd_rawmidi *rmidi,
292 static int rawmidi_open_priv(struct snd_rawmidi *rmidi, int subdevice, int mode,
300 err = assign_substream(rmidi, subdevice,
307 err = assign_substream(rmidi, subdevice,
315 err = open_substream(rmidi, sinput, mode);
320 err = open_substream(rmidi, soutput, mode);
323 close_substream(rmidi, sinput, 0);
328 rfile->rmidi = rmidi;
338 struct snd_rawmidi *rmidi;
345 rmidi = snd_rawmidi_search(card, device);
346 if (rmidi == NULL) {
350 if (!try_module_get(rmidi->card->module)) {
356 mutex_lock(&rmidi->open_mutex);
357 err = rawmidi_open_priv(rmidi, subdevice, mode, rfile);
358 mutex_unlock(&rmidi->open_mutex);
360 module_put(rmidi->card->module);
371 struct snd_rawmidi *rmidi;
384 rmidi = snd_lookup_minor_data(iminor(inode),
388 rmidi = snd_lookup_oss_minor_data(iminor(inode),
394 if (rmidi == NULL)
397 if (!try_module_get(rmidi->card->module))
400 mutex_lock(&rmidi->open_mutex);
401 card = rmidi->card;
414 add_wait_queue(&rmidi->open_wait, &wait);
426 err = rawmidi_open_priv(rmidi, subdevice, fflags, rawmidi_file);
437 mutex_unlock(&rmidi->open_mutex);
439 mutex_lock(&rmidi->open_mutex);
445 remove_wait_queue(&rmidi->open_wait, &wait);
457 mutex_unlock(&rmidi->open_mutex);
463 mutex_unlock(&rmidi->open_mutex);
464 module_put(rmidi->card->module);
468 static void close_substream(struct snd_rawmidi *rmidi,
498 rmidi->streams[substream->stream].substream_opened--;
503 struct snd_rawmidi *rmidi;
505 rmidi = rfile->rmidi;
506 mutex_lock(&rmidi->open_mutex);
508 close_substream(rmidi, rfile->input, 1);
512 close_substream(rmidi, rfile->output, 1);
515 rfile->rmidi = NULL;
516 mutex_unlock(&rmidi->open_mutex);
517 wake_up(&rmidi->open_wait);
523 struct snd_rawmidi *rmidi;
528 rmidi = rfile->rmidi;
530 module_put(rmidi->card->module);
537 struct snd_rawmidi *rmidi;
541 rmidi = rfile->rmidi;
544 module = rmidi->card->module;
545 snd_card_file_remove(rmidi->card, file);
553 struct snd_rawmidi *rmidi;
557 rmidi = substream->rmidi;
559 info->card = rmidi->card->number;
560 info->device = rmidi->device;
563 info->flags = rmidi->info_flags;
564 strcpy(info->id, rmidi->id);
565 strcpy(info->name, rmidi->name);
587 struct snd_rawmidi *rmidi;
592 rmidi = snd_rawmidi_search(card, info->device);
594 if (!rmidi)
598 pstr = &rmidi->streams[info->stream];
1333 struct snd_rawmidi *rmidi;
1337 rmidi = entry->private_data;
1338 snd_iprintf(buffer, "%s\n\n", rmidi->name);
1339 mutex_lock(&rmidi->open_mutex);
1340 if (rmidi->info_flags & SNDRV_RAWMIDI_INFO_OUTPUT) {
1342 &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams,
1364 if (rmidi->info_flags & SNDRV_RAWMIDI_INFO_INPUT) {
1366 &rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT].substreams,
1388 mutex_unlock(&rmidi->open_mutex);
1408 static int snd_rawmidi_alloc_substreams(struct snd_rawmidi *rmidi,
1424 substream->rmidi = rmidi;
1450 struct snd_rawmidi *rmidi;
1462 rmidi = kzalloc(sizeof(*rmidi), GFP_KERNEL);
1463 if (rmidi == NULL) {
1467 rmidi->card = card;
1468 rmidi->device = device;
1469 mutex_init(&rmidi->open_mutex);
1470 init_waitqueue_head(&rmidi->open_wait);
1471 INIT_LIST_HEAD(&rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT].substreams);
1472 INIT_LIST_HEAD(&rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams);
1475 strlcpy(rmidi->id, id, sizeof(rmidi->id));
1476 if ((err = snd_rawmidi_alloc_substreams(rmidi,
1477 &rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT],
1480 snd_rawmidi_free(rmidi);
1483 if ((err = snd_rawmidi_alloc_substreams(rmidi,
1484 &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT],
1487 snd_rawmidi_free(rmidi);
1490 if ((err = snd_device_new(card, SNDRV_DEV_RAWMIDI, rmidi, &ops)) < 0) {
1491 snd_rawmidi_free(rmidi);
1495 *rrawmidi = rmidi;
1510 static int snd_rawmidi_free(struct snd_rawmidi *rmidi)
1512 if (!rmidi)
1515 snd_info_free_entry(rmidi->proc_entry);
1516 rmidi->proc_entry = NULL;
1518 if (rmidi->ops && rmidi->ops->dev_unregister)
1519 rmidi->ops->dev_unregister(rmidi);
1522 snd_rawmidi_free_substreams(&rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT]);
1523 snd_rawmidi_free_substreams(&rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT]);
1524 if (rmidi->private_free)
1525 rmidi->private_free(rmidi);
1526 kfree(rmidi);
1532 struct snd_rawmidi *rmidi = device->device_data;
1533 return snd_rawmidi_free(rmidi);
1540 struct snd_rawmidi *rmidi = device->private_data;
1541 rmidi->seq_dev = NULL;
1550 struct snd_rawmidi *rmidi = device->device_data;
1552 if (rmidi->device >= SNDRV_RAWMIDI_DEVICES)
1555 if (snd_rawmidi_search(rmidi->card, rmidi->device)) {
1559 list_add_tail(&rmidi->list, &snd_rawmidi_devices);
1560 sprintf(name, "midiC%iD%i", rmidi->card->number, rmidi->device);
1562 rmidi->card, rmidi->device,
1563 &snd_rawmidi_f_ops, rmidi, name)) < 0) {
1564 snd_printk(KERN_ERR "unable to register rawmidi device %i:%i\n", rmidi->card->number, rmidi->device);
1565 list_del(&rmidi->list);
1569 if (rmidi->ops && rmidi->ops->dev_register &&
1570 (err = rmidi->ops->dev_register(rmidi)) < 0) {
1571 snd_unregister_device(SNDRV_DEVICE_TYPE_RAWMIDI, rmidi->card, rmidi->device);
1572 list_del(&rmidi->list);
1577 rmidi->ossreg = 0;
1578 if ((int)rmidi->device == midi_map[rmidi->card->number]) {
1580 rmidi->card, 0, &snd_rawmidi_f_ops,
1581 rmidi, name) < 0) {
1582 snd_printk(KERN_ERR "unable to register OSS rawmidi device %i:%i\n", rmidi->card->number, 0);
1584 rmidi->ossreg++;
1586 snd_oss_info_register(SNDRV_OSS_INFO_DEV_MIDI, rmidi->card->number, rmidi->name);
1590 if ((int)rmidi->device == amidi_map[rmidi->card->number]) {
1592 rmidi->card, 1, &snd_rawmidi_f_ops,
1593 rmidi, name) < 0) {
1594 snd_printk(KERN_ERR "unable to register OSS rawmidi device %i:%i\n", rmidi->card->number, 1);
1596 rmidi->ossreg++;
1601 sprintf(name, "midi%d", rmidi->device);
1602 entry = snd_info_create_card_entry(rmidi->card, name, rmidi->card->proc_root);
1604 entry->private_data = rmidi;
1611 rmidi->proc_entry = entry;
1614 if (!rmidi->ops || !rmidi->ops->dev_register) { /* own registration mechanism */
1615 if (snd_seq_device_new(rmidi->card, rmidi->device, SNDRV_SEQ_DEV_ID_MIDISYNTH, 0, &rmidi->seq_dev) >= 0) {
1616 rmidi->seq_dev->private_data = rmidi;
1617 rmidi->seq_dev->private_free = snd_rawmidi_dev_seq_free;
1618 sprintf(rmidi->seq_dev->name, "MIDI %d-%d", rmidi->card->number, rmidi->device);
1619 snd_device_register(rmidi->card, rmidi->seq_dev);
1628 struct snd_rawmidi *rmidi = device->device_data;
1631 list_del_init(&rmidi->list);
1633 if (rmidi->ossreg) {
1634 if ((int)rmidi->device == midi_map[rmidi->card->number]) {
1635 snd_unregister_oss_device(SNDRV_OSS_DEVICE_TYPE_MIDI, rmidi->card, 0);
1637 snd_oss_info_unregister(SNDRV_OSS_INFO_DEV_MIDI, rmidi->card->number);
1640 if ((int)rmidi->device == amidi_map[rmidi->card->number])
1641 snd_unregister_oss_device(SNDRV_OSS_DEVICE_TYPE_MIDI, rmidi->card, 1);
1642 rmidi->ossreg = 0;
1645 snd_unregister_device(SNDRV_DEVICE_TYPE_RAWMIDI, rmidi->card, rmidi->device);
1652 * @rmidi: the rawmidi instance
1658 void snd_rawmidi_set_ops(struct snd_rawmidi *rmidi, int stream,
1663 list_for_each_entry(substream, &rmidi->streams[stream].substreams, list)