home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / sound / seq_device.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.5 KB  |  85 lines

  1. #ifndef __SOUND_SEQ_DEVICE_H
  2. #define __SOUND_SEQ_DEVICE_H
  3.  
  4. /*
  5.  *  ALSA sequencer device management
  6.  *  Copyright (c) 1999 by Takashi Iwai <tiwai@suse.de>
  7.  *
  8.  *   This program is free software; you can redistribute it and/or modify
  9.  *   it under the terms of the GNU General Public License as published by
  10.  *   the Free Software Foundation; either version 2 of the License, or
  11.  *   (at your option) any later version.
  12.  *
  13.  *   This program is distributed in the hope that it will be useful,
  14.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *   GNU General Public License for more details.
  17.  *
  18.  *   You should have received a copy of the GNU General Public License
  19.  *   along with this program; if not, write to the Free Software
  20.  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  21.  *
  22.  */
  23.  
  24. /*
  25.  * registered device information
  26.  */
  27.  
  28. #define ID_LEN    32
  29.  
  30. /* status flag */
  31. #define SNDRV_SEQ_DEVICE_FREE        0
  32. #define SNDRV_SEQ_DEVICE_REGISTERED    1
  33.  
  34. struct snd_seq_device {
  35.     /* device info */
  36.     struct snd_card *card;    /* sound card */
  37.     int device;        /* device number */
  38.     char id[ID_LEN];    /* driver id */
  39.     char name[80];        /* device name */
  40.     int argsize;        /* size of the argument */
  41.     void *driver_data;    /* private data for driver */
  42.     int status;        /* flag - read only */
  43.     void *private_data;    /* private data for the caller */
  44.     void (*private_free)(struct snd_seq_device *device);
  45.     struct list_head list;    /* link to next device */
  46. };
  47.  
  48.  
  49. /* driver operators
  50.  * init_device:
  51.  *    Initialize the device with given parameters.
  52.  *    Typically,
  53.  *        1. call snd_hwdep_new
  54.  *        2. allocate private data and initialize it
  55.  *        3. call snd_hwdep_register
  56.  *        4. store the instance to dev->driver_data pointer.
  57.  *        
  58.  * free_device:
  59.  *    Release the private data.
  60.  *    Typically, call snd_device_free(dev->card, dev->driver_data)
  61.  */
  62. struct snd_seq_dev_ops {
  63.     int (*init_device)(struct snd_seq_device *dev);
  64.     int (*free_device)(struct snd_seq_device *dev);
  65. };
  66.  
  67. /*
  68.  * prototypes
  69.  */
  70. void snd_seq_device_load_drivers(void);
  71. int snd_seq_device_new(struct snd_card *card, int device, char *id, int argsize, struct snd_seq_device **result);
  72. int snd_seq_device_register_driver(char *id, struct snd_seq_dev_ops *entry, int argsize);
  73. int snd_seq_device_unregister_driver(char *id);
  74.  
  75. #define SNDRV_SEQ_DEVICE_ARGPTR(dev) (void *)((char *)(dev) + sizeof(struct snd_seq_device))
  76.  
  77.  
  78. /*
  79.  * id strings for generic devices
  80.  */
  81. #define SNDRV_SEQ_DEV_ID_MIDISYNTH    "seq-midi"
  82. #define SNDRV_SEQ_DEV_ID_OPL3        "opl3-synth"
  83.  
  84. #endif /* __SOUND_SEQ_DEVICE_H */
  85.