1 #ifndef __SOUND_MIXER_OSS_H 2 #define __SOUND_MIXER_OSS_H 3 4 /* 5 * OSS MIXER API 6 * Copyright (c) by Jaroslav Kysela <perex@perex.cz> 7 * 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 * 23 */ 24 25 #if IS_ENABLED(CONFIG_SND_MIXER_OSS) 26 27 #define SNDRV_OSS_MAX_MIXERS 32 28 29 struct snd_mixer_oss_file; 30 31 struct snd_mixer_oss_slot { 32 int number; 33 unsigned int stereo: 1; 34 int (*get_volume)(struct snd_mixer_oss_file *fmixer, 35 struct snd_mixer_oss_slot *chn, 36 int *left, int *right); 37 int (*put_volume)(struct snd_mixer_oss_file *fmixer, 38 struct snd_mixer_oss_slot *chn, 39 int left, int right); 40 int (*get_recsrc)(struct snd_mixer_oss_file *fmixer, 41 struct snd_mixer_oss_slot *chn, 42 int *active); 43 int (*put_recsrc)(struct snd_mixer_oss_file *fmixer, 44 struct snd_mixer_oss_slot *chn, 45 int active); 46 unsigned long private_value; 47 void *private_data; 48 void (*private_free)(struct snd_mixer_oss_slot *slot); 49 int volume[2]; 50 }; 51 52 struct snd_mixer_oss { 53 struct snd_card *card; 54 char id[16]; 55 char name[32]; 56 struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */ 57 unsigned int mask_recsrc; /* exclusive recsrc mask */ 58 int (*get_recsrc)(struct snd_mixer_oss_file *fmixer, 59 unsigned int *active_index); 60 int (*put_recsrc)(struct snd_mixer_oss_file *fmixer, 61 unsigned int active_index); 62 void *private_data_recsrc; 63 void (*private_free_recsrc)(struct snd_mixer_oss *mixer); 64 struct mutex reg_mutex; 65 struct snd_info_entry *proc_entry; 66 int oss_dev_alloc; 67 /* --- */ 68 int oss_recsrc; 69 }; 70 71 struct snd_mixer_oss_file { 72 struct snd_card *card; 73 struct snd_mixer_oss *mixer; 74 }; 75 76 int snd_mixer_oss_ioctl_card(struct snd_card *card, 77 unsigned int cmd, unsigned long arg); 78 79 #endif /* CONFIG_SND_MIXER_OSS */ 80 81 #endif /* __SOUND_MIXER_OSS_H */ 82