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@suse.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
29struct snd_mixer_oss_file;
30
31struct 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
52struct 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
71struct 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