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