xref: /openbmc/linux/include/sound/mixer_oss.h (revision 1a59d1b8)
11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21da177e4SLinus Torvalds #ifndef __SOUND_MIXER_OSS_H
31da177e4SLinus Torvalds #define __SOUND_MIXER_OSS_H
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds /*
61da177e4SLinus Torvalds  *  OSS MIXER API
7c1017a4cSJaroslav Kysela  *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
81da177e4SLinus Torvalds  */
91da177e4SLinus Torvalds 
106d2412b8STakashi Iwai #if IS_ENABLED(CONFIG_SND_MIXER_OSS)
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #define SNDRV_OSS_MAX_MIXERS	32
131da177e4SLinus Torvalds 
14f956b4a3STakashi Iwai struct snd_mixer_oss_file;
15f956b4a3STakashi Iwai 
16f956b4a3STakashi Iwai struct snd_mixer_oss_slot {
171da177e4SLinus Torvalds 	int number;
181da177e4SLinus Torvalds 	unsigned int stereo: 1;
19f956b4a3STakashi Iwai 	int (*get_volume)(struct snd_mixer_oss_file *fmixer,
20f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
21f956b4a3STakashi Iwai 			  int *left, int *right);
22f956b4a3STakashi Iwai 	int (*put_volume)(struct snd_mixer_oss_file *fmixer,
23f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
24f956b4a3STakashi Iwai 			  int left, int right);
25f956b4a3STakashi Iwai 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
26f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
27f956b4a3STakashi Iwai 			  int *active);
28f956b4a3STakashi Iwai 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
29f956b4a3STakashi Iwai 			  struct snd_mixer_oss_slot *chn,
30f956b4a3STakashi Iwai 			  int active);
311da177e4SLinus Torvalds 	unsigned long private_value;
321da177e4SLinus Torvalds 	void *private_data;
33f956b4a3STakashi Iwai 	void (*private_free)(struct snd_mixer_oss_slot *slot);
341da177e4SLinus Torvalds 	int volume[2];
351da177e4SLinus Torvalds };
361da177e4SLinus Torvalds 
37f956b4a3STakashi Iwai struct snd_mixer_oss {
38f956b4a3STakashi Iwai 	struct snd_card *card;
391da177e4SLinus Torvalds 	char id[16];
401da177e4SLinus Torvalds 	char name[32];
41f956b4a3STakashi Iwai 	struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
421da177e4SLinus Torvalds 	unsigned int mask_recsrc;		/* exclusive recsrc mask */
43f956b4a3STakashi Iwai 	int (*get_recsrc)(struct snd_mixer_oss_file *fmixer,
44f956b4a3STakashi Iwai 			  unsigned int *active_index);
45f956b4a3STakashi Iwai 	int (*put_recsrc)(struct snd_mixer_oss_file *fmixer,
46f956b4a3STakashi Iwai 			  unsigned int active_index);
471da177e4SLinus Torvalds 	void *private_data_recsrc;
48f956b4a3STakashi Iwai 	void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
491a60d4c5SIngo Molnar 	struct mutex reg_mutex;
50f956b4a3STakashi Iwai 	struct snd_info_entry *proc_entry;
511da177e4SLinus Torvalds 	int oss_dev_alloc;
521da177e4SLinus Torvalds 	/* --- */
531da177e4SLinus Torvalds 	int oss_recsrc;
541da177e4SLinus Torvalds };
551da177e4SLinus Torvalds 
56f956b4a3STakashi Iwai struct snd_mixer_oss_file {
57f956b4a3STakashi Iwai 	struct snd_card *card;
58f956b4a3STakashi Iwai 	struct snd_mixer_oss *mixer;
591da177e4SLinus Torvalds };
601da177e4SLinus Torvalds 
61fea952e5SClemens Ladisch int snd_mixer_oss_ioctl_card(struct snd_card *card,
62fea952e5SClemens Ladisch 			     unsigned int cmd, unsigned long arg);
63fea952e5SClemens Ladisch 
641da177e4SLinus Torvalds #endif /* CONFIG_SND_MIXER_OSS */
651da177e4SLinus Torvalds 
661da177e4SLinus Torvalds #endif /* __SOUND_MIXER_OSS_H */
67