xref: /openbmc/linux/include/sound/mixer_oss.h (revision 1a60d4c5)
11da177e4SLinus Torvalds #ifndef __SOUND_MIXER_OSS_H
21da177e4SLinus Torvalds #define __SOUND_MIXER_OSS_H
31da177e4SLinus Torvalds 
41da177e4SLinus Torvalds /*
51da177e4SLinus Torvalds  *  OSS MIXER API
61da177e4SLinus Torvalds  *  Copyright (c) by Jaroslav Kysela <perex@suse.cz>
71da177e4SLinus Torvalds  *
81da177e4SLinus Torvalds  *
91da177e4SLinus Torvalds  *   This program is free software; you can redistribute it and/or modify
101da177e4SLinus Torvalds  *   it under the terms of the GNU General Public License as published by
111da177e4SLinus Torvalds  *   the Free Software Foundation; either version 2 of the License, or
121da177e4SLinus Torvalds  *   (at your option) any later version.
131da177e4SLinus Torvalds  *
141da177e4SLinus Torvalds  *   This program is distributed in the hope that it will be useful,
151da177e4SLinus Torvalds  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
161da177e4SLinus Torvalds  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
171da177e4SLinus Torvalds  *   GNU General Public License for more details.
181da177e4SLinus Torvalds  *
191da177e4SLinus Torvalds  *   You should have received a copy of the GNU General Public License
201da177e4SLinus Torvalds  *   along with this program; if not, write to the Free Software
211da177e4SLinus Torvalds  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
221da177e4SLinus Torvalds  *
231da177e4SLinus Torvalds  */
241da177e4SLinus Torvalds 
251da177e4SLinus Torvalds #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds #define SNDRV_OSS_MAX_MIXERS	32
281da177e4SLinus Torvalds 
29f956b4a3STakashi Iwai struct snd_mixer_oss_file;
30f956b4a3STakashi Iwai 
31f956b4a3STakashi Iwai struct snd_mixer_oss_slot {
321da177e4SLinus Torvalds 	int number;
331da177e4SLinus Torvalds 	unsigned int stereo: 1;
34f956b4a3STakashi Iwai 	int (*get_volume)(struct snd_mixer_oss_file *fmixer,
35f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
36f956b4a3STakashi Iwai 			  int *left, int *right);
37f956b4a3STakashi Iwai 	int (*put_volume)(struct snd_mixer_oss_file *fmixer,
38f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
39f956b4a3STakashi Iwai 			  int left, int right);
40f956b4a3STakashi Iwai 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
41f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
42f956b4a3STakashi Iwai 			  int *active);
43f956b4a3STakashi Iwai 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
44f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
45f956b4a3STakashi Iwai 			  int active);
461da177e4SLinus Torvalds 	unsigned long private_value;
471da177e4SLinus Torvalds 	void *private_data;
48f956b4a3STakashi Iwai 	void (*private_free)(struct snd_mixer_oss_slot *slot);
491da177e4SLinus Torvalds 	int volume[2];
501da177e4SLinus Torvalds };
511da177e4SLinus Torvalds 
52f956b4a3STakashi Iwai struct snd_mixer_oss {
53f956b4a3STakashi Iwai 	struct snd_card *card;
541da177e4SLinus Torvalds 	char id[16];
551da177e4SLinus Torvalds 	char name[32];
56f956b4a3STakashi Iwai 	struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
571da177e4SLinus Torvalds 	unsigned int mask_recsrc;		/* exclusive recsrc mask */
58f956b4a3STakashi Iwai 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
59f956b4a3STakashi Iwai 			  unsigned int *active_index);
60f956b4a3STakashi Iwai 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
61f956b4a3STakashi Iwai 			  unsigned int active_index);
621da177e4SLinus Torvalds 	void *private_data_recsrc;
63f956b4a3STakashi Iwai 	void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
641a60d4c5SIngo Molnar 	struct mutex reg_mutex;
65f956b4a3STakashi Iwai 	struct snd_info_entry *proc_entry;
661da177e4SLinus Torvalds 	int oss_dev_alloc;
671da177e4SLinus Torvalds 	/* --- */
681da177e4SLinus Torvalds 	int oss_recsrc;
691da177e4SLinus Torvalds };
701da177e4SLinus Torvalds 
71f956b4a3STakashi Iwai struct snd_mixer_oss_file {
72f956b4a3STakashi Iwai 	struct snd_card *card;
73f956b4a3STakashi Iwai 	struct snd_mixer_oss *mixer;
741da177e4SLinus Torvalds };
751da177e4SLinus Torvalds 
761da177e4SLinus Torvalds #endif /* CONFIG_SND_MIXER_OSS */
771da177e4SLinus Torvalds 
781da177e4SLinus Torvalds #endif /* __SOUND_MIXER_OSS_H */
79