1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #ifndef __SOUND_MIXER_OSS_H
3 #define __SOUND_MIXER_OSS_H
7 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
10 #if IS_ENABLED(CONFIG_SND_MIXER_OSS)
12 #define SNDRV_OSS_MAX_MIXERS 32
14 struct snd_mixer_oss_file;
16 struct snd_mixer_oss_slot {
18 unsigned int stereo: 1;
19 int (*get_volume)(struct snd_mixer_oss_file *fmixer,
20 struct snd_mixer_oss_slot *chn,
21 int *left, int *right);
22 int (*put_volume)(struct snd_mixer_oss_file *fmixer,
23 struct snd_mixer_oss_slot *chn,
25 int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
26 struct snd_mixer_oss_slot *chn,
28 int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
29 struct snd_mixer_oss_slot *chn,
31 unsigned long private_value;
33 void (*private_free)(struct snd_mixer_oss_slot *slot);
37 struct snd_mixer_oss {
38 struct snd_card *card;
41 struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
42 unsigned int mask_recsrc; /* exclusive recsrc mask */
43 int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
44 unsigned int *active_index);
45 int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
46 unsigned int active_index);
47 void *private_data_recsrc;
48 void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
49 struct mutex reg_mutex;
50 struct snd_info_entry *proc_entry;
56 struct snd_mixer_oss_file {
57 struct snd_card *card;
58 struct snd_mixer_oss *mixer;
61 int snd_mixer_oss_ioctl_card(struct snd_card *card,
62 unsigned int cmd, unsigned long arg);
64 #endif /* CONFIG_SND_MIXER_OSS */
66 #endif /* __SOUND_MIXER_OSS_H */