Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux...
[linux-2.6] / include / sound / mixer_oss.h
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@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 */