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 */