File: linux_pcsp.h

package info (click to toggle)
koules 1.4-29
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,940 kB
  • sloc: ansic: 15,535; makefile: 779; asm: 379; tcl: 362; sh: 134
file content (230 lines) | stat: -rw-r--r-- 8,689 bytes parent folder | download | duplicates (13)
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