home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / xgalaga-2_0_tar.gz / xgalaga-2_0_tar / xgalaga-2.0 / linux_pcsp.h < prev    next >
C/C++ Source or Header  |  1998-04-12  |  8KB  |  219 lines

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