linux/include/sound/mixer_oss.h
<<
>>
Prefs
   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 defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
  26
  27#define SNDRV_OSS_MAX_MIXERS    32
  28
  29struct snd_mixer_oss_file;
  30
  31struct 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
  52struct 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
  71struct snd_mixer_oss_file {
  72        struct snd_card *card;
  73        struct snd_mixer_oss *mixer;
  74};
  75
  76int 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