1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
|
#ifndef _LINUX_PCSP_H
#define _LINUX_PCSP_H
/*
* include/linux/pcsp.h
*
* /dev/pcsp implementation (dsp & audio for PC Speaker)
*
* Copyright (C) 1993, 1994 Michael Beck
* Some Parts (C) Hannu Savolainen 1992, 1993
*
* Minor Alterations for Paradise Sound Client
*/
#include <sys/ioctl.h>
/* MUST BE defined from 0.5 */
/* #define SOUND_VERSION 0x60 */
#define PCSP_MAJOR 30
#define PCSP_MIXER_MINOR 0
#define PCSP_DSP_MINOR 3
#define PCSP_AUD_MINOR 4
/* card ID, real soundcards use 0 to ... */
#define SNDCARD_PCSP 128
#define SNDCARD_STO1 129
#define SNDCARD_DACM 130
#define SNDCARD_DACS 131
/* IOCTL commands, compatible to real /dev/dsp */
/* SAMPLESIZE returns only the value, doesn't support changes */
#ifndef SNDCTL_DSP_RESET
#define SNDCTL_DSP_RESET _IO ('P', 0)
#define SNDCTL_DSP_SYNC _IO ('P', 1)
#define SNDCTL_DSP_SPEED _IOWR('P', 2, int)
#define SNDCTL_DSP_STEREO _IOWR('P', 3, int)
#define SNDCTL_DSP_GETBLKSIZE _IOWR('P', 4, int)
/* #define SNDCTL_DSP_SAMPLESIZE _IOWR('P', 5, int) */
/*
#define SOUND_PCM_WRITE_CHANNELS _IOWR('P', 6, int)
#define SOUND_PCM_WRITE_FILTER _IOWR('P', 7, int)
*/
/* #define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SAMPLESIZE */
#define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
#define SOUND_PCM_READ_RATE _IOR ('P', 2, int)
#define SOUND_PCM_READ_CHANNELS _IOR ('P', 6, int)
#define SOUND_PCM_READ_BITS _IOR ('P', 5, int)
#define SOUND_PCM_READ_FILTER _IOR ('P', 7, int)
#endif
/* IOCTL for changing the play-device, real sample rate etc. */
#define PCSP_SET_DEV 0x00014350
#define PCSP_GET_DEV 0x00024350
#define PCSP_SET_PORTS 0x00034350
#define PCSP_GET_PORTS 0x00044350
#define PCSP_SET_VOL 0x00054350
#define PCSP_GET_VOL 0x00064350
#define PCSP_SET_SRATE 0x00074350
#define PCSP_GET_SRATE 0x00084350
#define PCSP_GET_MEASURE 0x00094350
/*********************************************
* IOCTL commands for /dev/mixer
*/
/* Mixer devices */
#undef SOUND_DEVICE_NAMES
#undef SOUND_DEVICE_LABELS
#undef SOUND_MIXER_NRDEVICES
#define SOUND_MIXER_NRDEVICES 12
#define SOUND_MIXER_VOLUME 0
#define SOUND_MIXER_BASS 1
#define SOUND_MIXER_TREBLE 2
#define SOUND_MIXER_SYNTH 3
#define SOUND_MIXER_PCM 4
#define SOUND_MIXER_SPEAKER 5
#define SOUND_MIXER_LINE 6
#define SOUND_MIXER_MIC 7
#define SOUND_MIXER_CD 8
#define SOUND_MIXER_IMIX 9 /* Recording monitor */
#define SOUND_MIXER_ALTPCM 10
#define SOUND_MIXER_RECLEV 11 /* Recording level */
/* Some on/off settings (SOUND_SPECIAL_MIN - SOUND_SPECIAL_MAX) */
/* Not counted to SOUND_MIXER_NRDEVICES, but use the same number space */
#define SOUND_ONOFF_MIN 28
#define SOUND_ONOFF_MAX 30
#if 0
#define SOUND_MIXER_MUTE 28 /* 0 or 1 */
#define SOUND_MIXER_ENHANCE 29 /* Enhanced stereo (0, 40, 60 or 80) */
#define SOUND_MIXER_LOUD 30 /* 0 or 1 */
#endif
/* Note! Number 31 cannot be used since the sign bit is reserved */
#define SOUND_DEVICE_LABELS {"Vol ", "Bass ", "Trebl", "Synth", "Pcm ", "Spkr ", "Line ", \
"Mic ", "CD ", "Mix ", "Pcm2 ", "rec"}
#define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \
"mic", "cd", "mix", "pcm2", "rec"}
/* Device bitmask identifiers */
#define SOUND_MIXER_RECSRC 0xff /* Arg contains a bit for each recording source */
#define SOUND_MIXER_DEVMASK 0xfe /* Arg contains a bit for each supported device */
#define SOUND_MIXER_RECMASK 0xfd /* Arg contains a bit for each supported recording source */
#define SOUND_MIXER_CAPS 0xfc
#define SOUND_CAP_EXCL_INPUT 0x00000001 /* Only one recording source at a time */
#define SOUND_MIXER_STEREODEVS 0xfb /* Mixer channels supporting stereo */
/* Device mask bits */
#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
#define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)
#define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)
#define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)
#ifndef MIXER_READ
#define MIXER_READ(dev) _IOR('M', dev, int)
#endif
#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
#define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)
#define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)
#define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)
#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
#ifndef MIXER_WRITE
#define MIXER_WRITE(dev) _IOWR('M', dev, int)
#endif
#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
#define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)
#define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)
#define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)
#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
/*
* The following mixer ioctl calls are compatible with the BSD driver by
* Steve Haehnichen <shaehnic@ucsd.edu>
*/
typedef unsigned char BYTE;
typedef unsigned char FLAG;
struct stereo_vol
{
BYTE l; /* Left volume */
BYTE r; /* Right volume */
};
#define MIXER_IOCTL_SET_LEVELS _IOW ('s', 20, struct sb_mixer_levels)
#define MIXER_IOCTL_SET_PARAMS _IOW ('s', 21, struct sb_mixer_params)
#define MIXER_IOCTL_READ_LEVELS _IOR ('s', 22, struct sb_mixer_levels)
#define MIXER_IOCTL_READ_PARAMS _IOR ('s', 23, struct sb_mixer_params)
#define MIXER_IOCTL_RESET _IO ('s', 24)
/*
* Mixer volume levels for MIXER_IOCTL_SET_VOL & MIXER_IOCTL_READ_VOL
*/
struct sb_mixer_levels
{
struct stereo_vol master; /* Master volume */
struct stereo_vol voc; /* DSP Voice volume */
struct stereo_vol fm; /* FM volume */
struct stereo_vol line; /* Line-in volume */
struct stereo_vol cd; /* CD audio */
BYTE mic; /* Microphone level */
};
/*
* Mixer parameters for MIXER_IOCTL_SET_PARAMS & MIXER_IOCTL_READ_PARAMS
*/
struct sb_mixer_params
{
BYTE record_source; /* Recording source (See SRC_xxx below) */
FLAG hifreq_filter; /* Filter frequency (hi/low) */
FLAG filter_input; /* ANFI input filter */
FLAG filter_output; /* DNFI output filter */
FLAG dsp_stereo; /* 1 if DSP is in Stereo mode */
};
#define SRC_MIC 1 /* Select Microphone recording source */
#define SRC_CD 3 /* Select CD recording source */
#define SRC_LINE 7 /* Use Line-in for recording source */
#endif
|