diff options
Diffstat (limited to 'include/sound/sb16_csp.h')
-rw-r--r-- | include/sound/sb16_csp.h | 104 |
1 files changed, 3 insertions, 101 deletions
diff --git a/include/sound/sb16_csp.h b/include/sound/sb16_csp.h index 7e950560e591..c7c7788005e4 100644 --- a/include/sound/sb16_csp.h +++ b/include/sound/sb16_csp.h | |||
@@ -1,6 +1,3 @@ | |||
1 | #ifndef __SOUND_SB16_CSP_H | ||
2 | #define __SOUND_SB16_CSP_H | ||
3 | |||
4 | /* | 1 | /* |
5 | * Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si> | 2 | * Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si> |
6 | * Takashi Iwai <tiwai@suse.de> | 3 | * Takashi Iwai <tiwai@suse.de> |
@@ -22,106 +19,13 @@ | |||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 | * | 20 | * |
24 | */ | 21 | */ |
22 | #ifndef __SOUND_SB16_CSP_H | ||
23 | #define __SOUND_SB16_CSP_H | ||
25 | 24 | ||
26 | /* CSP modes */ | ||
27 | #define SNDRV_SB_CSP_MODE_NONE 0x00 | ||
28 | #define SNDRV_SB_CSP_MODE_DSP_READ 0x01 /* Record from DSP */ | ||
29 | #define SNDRV_SB_CSP_MODE_DSP_WRITE 0x02 /* Play to DSP */ | ||
30 | #define SNDRV_SB_CSP_MODE_QSOUND 0x04 /* QSound */ | ||
31 | |||
32 | /* CSP load flags */ | ||
33 | #define SNDRV_SB_CSP_LOAD_FROMUSER 0x01 | ||
34 | #define SNDRV_SB_CSP_LOAD_INITBLOCK 0x02 | ||
35 | |||
36 | /* CSP sample width */ | ||
37 | #define SNDRV_SB_CSP_SAMPLE_8BIT 0x01 | ||
38 | #define SNDRV_SB_CSP_SAMPLE_16BIT 0x02 | ||
39 | |||
40 | /* CSP channels */ | ||
41 | #define SNDRV_SB_CSP_MONO 0x01 | ||
42 | #define SNDRV_SB_CSP_STEREO 0x02 | ||
43 | |||
44 | /* CSP rates */ | ||
45 | #define SNDRV_SB_CSP_RATE_8000 0x01 | ||
46 | #define SNDRV_SB_CSP_RATE_11025 0x02 | ||
47 | #define SNDRV_SB_CSP_RATE_22050 0x04 | ||
48 | #define SNDRV_SB_CSP_RATE_44100 0x08 | ||
49 | #define SNDRV_SB_CSP_RATE_ALL 0x0f | ||
50 | |||
51 | /* CSP running state */ | ||
52 | #define SNDRV_SB_CSP_ST_IDLE 0x00 | ||
53 | #define SNDRV_SB_CSP_ST_LOADED 0x01 | ||
54 | #define SNDRV_SB_CSP_ST_RUNNING 0x02 | ||
55 | #define SNDRV_SB_CSP_ST_PAUSED 0x04 | ||
56 | #define SNDRV_SB_CSP_ST_AUTO 0x08 | ||
57 | #define SNDRV_SB_CSP_ST_QSOUND 0x10 | ||
58 | |||
59 | /* maximum QSound value (180 degrees right) */ | ||
60 | #define SNDRV_SB_CSP_QSOUND_MAX_RIGHT 0x20 | ||
61 | |||
62 | /* maximum microcode RIFF file size */ | ||
63 | #define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000 | ||
64 | |||
65 | /* microcode header */ | ||
66 | struct snd_sb_csp_mc_header { | ||
67 | char codec_name[16]; /* id name of codec */ | ||
68 | unsigned short func_req; /* requested function */ | ||
69 | }; | ||
70 | |||
71 | /* microcode to be loaded */ | ||
72 | struct snd_sb_csp_microcode { | ||
73 | struct snd_sb_csp_mc_header info; | ||
74 | unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE]; | ||
75 | }; | ||
76 | |||
77 | /* start CSP with sample_width in mono/stereo */ | ||
78 | struct snd_sb_csp_start { | ||
79 | int sample_width; /* sample width, look above */ | ||
80 | int channels; /* channels, look above */ | ||
81 | }; | ||
82 | |||
83 | /* CSP information */ | ||
84 | struct snd_sb_csp_info { | ||
85 | char codec_name[16]; /* id name of codec */ | ||
86 | unsigned short func_nr; /* function number */ | ||
87 | unsigned int acc_format; /* accepted PCM formats */ | ||
88 | unsigned short acc_channels; /* accepted channels */ | ||
89 | unsigned short acc_width; /* accepted sample width */ | ||
90 | unsigned short acc_rates; /* accepted sample rates */ | ||
91 | unsigned short csp_mode; /* CSP mode, see above */ | ||
92 | unsigned short run_channels; /* current channels */ | ||
93 | unsigned short run_width; /* current sample width */ | ||
94 | unsigned short version; /* version id: 0x10 - 0x1f */ | ||
95 | unsigned short state; /* state bits */ | ||
96 | }; | ||
97 | |||
98 | /* HWDEP controls */ | ||
99 | /* get CSP information */ | ||
100 | #define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info) | ||
101 | /* load microcode to CSP */ | ||
102 | /* NOTE: struct snd_sb_csp_microcode overflows the max size (13 bits) | ||
103 | * defined for some architectures like MIPS, and it leads to build errors. | ||
104 | * (x86 and co have 14-bit size, thus it's valid, though.) | ||
105 | * As a workaround for skipping the size-limit check, here we don't use the | ||
106 | * normal _IOW() macro but _IOC() with the manual argument. | ||
107 | */ | ||
108 | #define SNDRV_SB_CSP_IOCTL_LOAD_CODE \ | ||
109 | _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode)) | ||
110 | /* unload microcode from CSP */ | ||
111 | #define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12) | ||
112 | /* start CSP */ | ||
113 | #define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start) | ||
114 | /* stop CSP */ | ||
115 | #define SNDRV_SB_CSP_IOCTL_STOP _IO('H', 0x14) | ||
116 | /* pause CSP and DMA transfer */ | ||
117 | #define SNDRV_SB_CSP_IOCTL_PAUSE _IO('H', 0x15) | ||
118 | /* restart CSP and DMA transfer */ | ||
119 | #define SNDRV_SB_CSP_IOCTL_RESTART _IO('H', 0x16) | ||
120 | |||
121 | #ifdef __KERNEL__ | ||
122 | #include <sound/sb.h> | 25 | #include <sound/sb.h> |
123 | #include <sound/hwdep.h> | 26 | #include <sound/hwdep.h> |
124 | #include <linux/firmware.h> | 27 | #include <linux/firmware.h> |
28 | #include <uapi/sound/sb16_csp.h> | ||
125 | 29 | ||
126 | struct snd_sb_csp; | 30 | struct snd_sb_csp; |
127 | 31 | ||
@@ -183,6 +87,4 @@ struct snd_sb_csp { | |||
183 | }; | 87 | }; |
184 | 88 | ||
185 | int snd_sb_csp_new(struct snd_sb *chip, int device, struct snd_hwdep ** rhwdep); | 89 | int snd_sb_csp_new(struct snd_sb *chip, int device, struct snd_hwdep ** rhwdep); |
186 | #endif | ||
187 | |||
188 | #endif /* __SOUND_SB16_CSP */ | 90 | #endif /* __SOUND_SB16_CSP */ |