Merge tag 'pm-6.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-block.git] / include / sound / mixer_oss.h
CommitLineData
1a59d1b8 1/* SPDX-License-Identifier: GPL-2.0-or-later */
1da177e4
LT
2#ifndef __SOUND_MIXER_OSS_H
3#define __SOUND_MIXER_OSS_H
4
5/*
6 * OSS MIXER API
c1017a4c 7 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
1da177e4
LT
8 */
9
6d2412b8 10#if IS_ENABLED(CONFIG_SND_MIXER_OSS)
1da177e4 11
1da177e4
LT
12#define SNDRV_OSS_MAX_MIXERS 32
13
f956b4a3
TI
14struct snd_mixer_oss_file;
15
16struct snd_mixer_oss_slot {
1da177e4
LT
17 int number;
18 unsigned int stereo: 1;
f956b4a3
TI
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);
1da177e4
LT
31 unsigned long private_value;
32 void *private_data;
f956b4a3 33 void (*private_free)(struct snd_mixer_oss_slot *slot);
1da177e4
LT
34 int volume[2];
35};
36
f956b4a3
TI
37struct snd_mixer_oss {
38 struct snd_card *card;
1da177e4
LT
39 char id[16];
40 char name[32];
f956b4a3 41 struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
1da177e4 42 unsigned int mask_recsrc; /* exclusive recsrc mask */
f956b4a3
TI
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);
1da177e4 47 void *private_data_recsrc;
f956b4a3 48 void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
1a60d4c5 49 struct mutex reg_mutex;
f956b4a3 50 struct snd_info_entry *proc_entry;
1da177e4
LT
51 int oss_dev_alloc;
52 /* --- */
53 int oss_recsrc;
54};
55
f956b4a3
TI
56struct snd_mixer_oss_file {
57 struct snd_card *card;
58 struct snd_mixer_oss *mixer;
1da177e4
LT
59};
60
fea952e5
CL
61int snd_mixer_oss_ioctl_card(struct snd_card *card,
62 unsigned int cmd, unsigned long arg);
63
1da177e4
LT
64#endif /* CONFIG_SND_MIXER_OSS */
65
66#endif /* __SOUND_MIXER_OSS_H */