Merge branch 'akpm' (patches from Andrew)
[linux-2.6-microblaze.git] / include / sound / mixer_oss.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #ifndef __SOUND_MIXER_OSS_H
3 #define __SOUND_MIXER_OSS_H
4
5 /*
6  *  OSS MIXER API
7  *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
8  */
9
10 #if IS_ENABLED(CONFIG_SND_MIXER_OSS)
11
12 #define SNDRV_OSS_MAX_MIXERS    32
13
14 struct snd_mixer_oss_file;
15
16 struct snd_mixer_oss_slot {
17         int number;
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,
24                           int left, int right);
25         int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
26                           struct snd_mixer_oss_slot *chn,
27                           int *active);
28         int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
29                           struct snd_mixer_oss_slot *chn,
30                           int active);
31         unsigned long private_value;
32         void *private_data;
33         void (*private_free)(struct snd_mixer_oss_slot *slot);
34         int volume[2];
35 };
36
37 struct snd_mixer_oss {
38         struct snd_card *card;
39         char id[16];
40         char name[32];
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;
51         int oss_dev_alloc;
52         /* --- */
53         int oss_recsrc;
54 };
55
56 struct snd_mixer_oss_file {
57         struct snd_card *card;
58         struct snd_mixer_oss *mixer;
59 };
60
61 int snd_mixer_oss_ioctl_card(struct snd_card *card,
62                              unsigned int cmd, unsigned long arg);
63
64 #endif /* CONFIG_SND_MIXER_OSS */
65
66 #endif /* __SOUND_MIXER_OSS_H */