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