11da177e4SLinus Torvalds #ifndef __SOUND_MIXER_OSS_H 21da177e4SLinus Torvalds #define __SOUND_MIXER_OSS_H 31da177e4SLinus Torvalds 41da177e4SLinus Torvalds /* 51da177e4SLinus Torvalds * OSS MIXER API 6c1017a4cSJaroslav Kysela * Copyright (c) by Jaroslav Kysela <perex@perex.cz> 71da177e4SLinus Torvalds * 81da177e4SLinus Torvalds * 91da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or modify 101da177e4SLinus Torvalds * it under the terms of the GNU General Public License as published by 111da177e4SLinus Torvalds * the Free Software Foundation; either version 2 of the License, or 121da177e4SLinus Torvalds * (at your option) any later version. 131da177e4SLinus Torvalds * 141da177e4SLinus Torvalds * This program is distributed in the hope that it will be useful, 151da177e4SLinus Torvalds * but WITHOUT ANY WARRANTY; without even the implied warranty of 161da177e4SLinus Torvalds * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 171da177e4SLinus Torvalds * GNU General Public License for more details. 181da177e4SLinus Torvalds * 191da177e4SLinus Torvalds * You should have received a copy of the GNU General Public License 201da177e4SLinus Torvalds * along with this program; if not, write to the Free Software 211da177e4SLinus Torvalds * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 221da177e4SLinus Torvalds * 231da177e4SLinus Torvalds */ 241da177e4SLinus Torvalds 251da177e4SLinus Torvalds #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE) 261da177e4SLinus Torvalds 271da177e4SLinus Torvalds #define SNDRV_OSS_MAX_MIXERS 32 281da177e4SLinus Torvalds 29f956b4a3STakashi Iwai struct snd_mixer_oss_file; 30f956b4a3STakashi Iwai 31f956b4a3STakashi Iwai struct snd_mixer_oss_slot { 321da177e4SLinus Torvalds int number; 331da177e4SLinus Torvalds unsigned int stereo: 1; 34f956b4a3STakashi Iwai int (*get_volume)(struct snd_mixer_oss_file *fmixer, 35f956b4a3STakashi Iwai struct snd_mixer_oss_slot *chn, 36f956b4a3STakashi Iwai int *left, int *right); 37f956b4a3STakashi Iwai int (*put_volume)(struct snd_mixer_oss_file *fmixer, 38f956b4a3STakashi Iwai struct snd_mixer_oss_slot *chn, 39f956b4a3STakashi Iwai int left, int right); 40f956b4a3STakashi Iwai int (*get_recsrc)(struct snd_mixer_oss_file *fmixer, 41f956b4a3STakashi Iwai struct snd_mixer_oss_slot *chn, 42f956b4a3STakashi Iwai int *active); 43f956b4a3STakashi Iwai int (*put_recsrc)(struct snd_mixer_oss_file *fmixer, 44f956b4a3STakashi Iwai struct snd_mixer_oss_slot *chn, 45f956b4a3STakashi Iwai int active); 461da177e4SLinus Torvalds unsigned long private_value; 471da177e4SLinus Torvalds void *private_data; 48f956b4a3STakashi Iwai void (*private_free)(struct snd_mixer_oss_slot *slot); 491da177e4SLinus Torvalds int volume[2]; 501da177e4SLinus Torvalds }; 511da177e4SLinus Torvalds 52f956b4a3STakashi Iwai struct snd_mixer_oss { 53f956b4a3STakashi Iwai struct snd_card *card; 541da177e4SLinus Torvalds char id[16]; 551da177e4SLinus Torvalds char name[32]; 56f956b4a3STakashi Iwai struct snd_mixer_oss_slot slots[SNDRV_OSS_MAX_MIXERS]; /* OSS mixer slots */ 571da177e4SLinus Torvalds unsigned int mask_recsrc; /* exclusive recsrc mask */ 58f956b4a3STakashi Iwai int (*get_recsrc)(struct snd_mixer_oss_file *fmixer, 59f956b4a3STakashi Iwai unsigned int *active_index); 60f956b4a3STakashi Iwai int (*put_recsrc)(struct snd_mixer_oss_file *fmixer, 61f956b4a3STakashi Iwai unsigned int active_index); 621da177e4SLinus Torvalds void *private_data_recsrc; 63f956b4a3STakashi Iwai void (*private_free_recsrc)(struct snd_mixer_oss *mixer); 641a60d4c5SIngo Molnar struct mutex reg_mutex; 65f956b4a3STakashi Iwai struct snd_info_entry *proc_entry; 661da177e4SLinus Torvalds int oss_dev_alloc; 671da177e4SLinus Torvalds /* --- */ 681da177e4SLinus Torvalds int oss_recsrc; 691da177e4SLinus Torvalds }; 701da177e4SLinus Torvalds 71f956b4a3STakashi Iwai struct snd_mixer_oss_file { 72f956b4a3STakashi Iwai struct snd_card *card; 73f956b4a3STakashi Iwai struct snd_mixer_oss *mixer; 741da177e4SLinus Torvalds }; 751da177e4SLinus Torvalds 76fea952e5SClemens Ladisch int snd_mixer_oss_ioctl_card(struct snd_card *card, 77fea952e5SClemens Ladisch unsigned int cmd, unsigned long arg); 78fea952e5SClemens Ladisch 791da177e4SLinus Torvalds #endif /* CONFIG_SND_MIXER_OSS */ 801da177e4SLinus Torvalds 811da177e4SLinus Torvalds #endif /* __SOUND_MIXER_OSS_H */ 82