Home | History | Annotate | Download | only in sound
      1 #ifndef __SOUND_MIXER_OSS_H
      2 #define __SOUND_MIXER_OSS_H
      3 
      4 /*
      5  *  OSS MIXER API
      6  *  Copyright (c) by Jaroslav Kysela <perex (at) perex.cz>
      7  *
      8  *
      9  *   This program is free software; you can redistribute it and/or modify
     10  *   it under the terms of the GNU General Public License as published by
     11  *   the Free Software Foundation; either version 2 of the License, or
     12  *   (at your option) any later version.
     13  *
     14  *   This program is distributed in the hope that it will be useful,
     15  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
     16  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17  *   GNU General Public License for more details.
     18  *
     19  *   You should have received a copy of the GNU General Public License
     20  *   along with this program; if not, write to the Free Software
     21  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
     22  *
     23  */
     24 
     25 #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
     26 
     27 #define SNDRV_OSS_MAX_MIXERS	32
     28 
     29 struct snd_mixer_oss_file;
     30 
     31 struct snd_mixer_oss_slot {
     32 	int number;
     33 	unsigned int stereo: 1;
     34 	int (*get_volume)(struct snd_mixer_oss_file *fmixer,
     35 			  struct snd_mixer_oss_slot *chn,
     36 			  int *left, int *right);
     37 	int (*put_volume)(struct snd_mixer_oss_file *fmixer,
     38 			  struct snd_mixer_oss_slot *chn,
     39 			  int left, int right);
     40 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
     41 			  struct snd_mixer_oss_slot *chn,
     42 			  int *active);
     43 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
     44 			  struct snd_mixer_oss_slot *chn,
     45 			  int active);
     46 	unsigned long private_value;
     47 	void *private_data;
     48 	void (*private_free)(struct snd_mixer_oss_slot *slot);
     49 	int volume[2];
     50 };
     51 
     52 struct snd_mixer_oss {
     53 	struct snd_card *card;
     54 	char id[16];
     55 	char name[32];
     56 	struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
     57 	unsigned int mask_recsrc;		/* exclusive recsrc mask */
     58 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
     59 			  unsigned int *active_index);
     60 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
     61 			  unsigned int active_index);
     62 	void *private_data_recsrc;
     63 	void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
     64 	struct mutex reg_mutex;
     65 	struct snd_info_entry *proc_entry;
     66 	int oss_dev_alloc;
     67 	/* --- */
     68 	int oss_recsrc;
     69 };
     70 
     71 struct snd_mixer_oss_file {
     72 	struct snd_card *card;
     73 	struct snd_mixer_oss *mixer;
     74 };
     75 
     76 #endif /* CONFIG_SND_MIXER_OSS */
     77 
     78 #endif /* __SOUND_MIXER_OSS_H */
     79