blob: 9a212c0cebe95d53c056dad085d1e9455d2065b6 [file] [log] [blame]
Thomas Gleixner1a59d1b82019-05-27 08:55:05 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#ifndef __SOUND_MIXER_OSS_H
3#define __SOUND_MIXER_OSS_H
4
5/*
6 * OSS MIXER API
Jaroslav Kyselac1017a42007-10-15 09:50:19 +02007 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
Linus Torvalds1da177e2005-04-16 15:20:36 -07008 */
9
Takashi Iwai6d2412b2017-05-12 11:44:03 +020010#if IS_ENABLED(CONFIG_SND_MIXER_OSS)
Linus Torvalds1da177e2005-04-16 15:20:36 -070011
Linus Torvalds1da177e2005-04-16 15:20:36 -070012#define SNDRV_OSS_MAX_MIXERS 32
13
Takashi Iwaif956b4a2005-11-17 14:01:22 +010014struct snd_mixer_oss_file;
15
16struct snd_mixer_oss_slot {
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 int number;
18 unsigned int stereo: 1;
Takashi Iwaif956b4a2005-11-17 14:01:22 +010019 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);
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 unsigned long private_value;
32 void *private_data;
Takashi Iwaif956b4a2005-11-17 14:01:22 +010033 void (*private_free)(struct snd_mixer_oss_slot *slot);
Linus Torvalds1da177e2005-04-16 15:20:36 -070034 int volume[2];
35};
36
Takashi Iwaif956b4a2005-11-17 14:01:22 +010037struct snd_mixer_oss {
38 struct snd_card *card;
Linus Torvalds1da177e2005-04-16 15:20:36 -070039 char id[16];
40 char name[32];
Takashi Iwaif956b4a2005-11-17 14:01:22 +010041 struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */
Linus Torvalds1da177e2005-04-16 15:20:36 -070042 unsigned int mask_recsrc; /* exclusive recsrc mask */
Takashi Iwaif956b4a2005-11-17 14:01:22 +010043 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);
Linus Torvalds1da177e2005-04-16 15:20:36 -070047 void *private_data_recsrc;
Takashi Iwaif956b4a2005-11-17 14:01:22 +010048 void (*private_free_recsrc)(struct snd_mixer_oss *mixer);
Ingo Molnar1a60d4c2006-01-16 16:29:08 +010049 struct mutex reg_mutex;
Takashi Iwaif956b4a2005-11-17 14:01:22 +010050 struct snd_info_entry *proc_entry;
Linus Torvalds1da177e2005-04-16 15:20:36 -070051 int oss_dev_alloc;
52 /* --- */
53 int oss_recsrc;
54};
55
Takashi Iwaif956b4a2005-11-17 14:01:22 +010056struct snd_mixer_oss_file {
57 struct snd_card *card;
58 struct snd_mixer_oss *mixer;
Linus Torvalds1da177e2005-04-16 15:20:36 -070059};
60
Clemens Ladischfea952e2011-02-14 11:00:47 +010061int snd_mixer_oss_ioctl_card(struct snd_card *card,
62 unsigned int cmd, unsigned long arg);
63
Linus Torvalds1da177e2005-04-16 15:20:36 -070064#endif /* CONFIG_SND_MIXER_OSS */
65
66#endif /* __SOUND_MIXER_OSS_H */