67 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2#ifndef __SOUND_MIXER_OSS_H3#define __SOUND_MIXER_OSS_H4 5/*6 * OSS MIXER API7 * 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 3213 14struct snd_mixer_oss_file;15 16struct 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 37struct 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 56struct snd_mixer_oss_file {57 struct snd_card *card;58 struct snd_mixer_oss *mixer;59};60 61int 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