diff options
author | Mark Brown <broonie@kernel.org> | 2017-11-29 07:30:24 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-11-29 07:30:24 -0500 |
commit | 573994e4ea8780469ddd8869dbba7822ba0e7164 (patch) | |
tree | 507735c6ca9974b4baaf268da0c6c269dbc064b0 | |
parent | 01ca485171e3253f3aee555437519c0d316d4b0c (diff) | |
parent | 823dbb6eb08a2865bcd236b4f52b1b9de216418a (diff) |
Merge branch 'topic/pcm-20bit' of https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound into asoc-fsl-ssi
-rw-r--r-- | include/sound/pcm.h | 8 | ||||
-rw-r--r-- | include/sound/soc-dai.h | 2 | ||||
-rw-r--r-- | include/uapi/sound/asound.h | 9 | ||||
-rw-r--r-- | sound/core/pcm_misc.c | 19 |
4 files changed, 37 insertions, 1 deletions
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index 24febf9e177c..e054c583d3b3 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h | |||
@@ -169,6 +169,10 @@ struct snd_pcm_ops { | |||
169 | #define SNDRV_PCM_FMTBIT_IMA_ADPCM _SNDRV_PCM_FMTBIT(IMA_ADPCM) | 169 | #define SNDRV_PCM_FMTBIT_IMA_ADPCM _SNDRV_PCM_FMTBIT(IMA_ADPCM) |
170 | #define SNDRV_PCM_FMTBIT_MPEG _SNDRV_PCM_FMTBIT(MPEG) | 170 | #define SNDRV_PCM_FMTBIT_MPEG _SNDRV_PCM_FMTBIT(MPEG) |
171 | #define SNDRV_PCM_FMTBIT_GSM _SNDRV_PCM_FMTBIT(GSM) | 171 | #define SNDRV_PCM_FMTBIT_GSM _SNDRV_PCM_FMTBIT(GSM) |
172 | #define SNDRV_PCM_FMTBIT_S20_LE _SNDRV_PCM_FMTBIT(S20_LE) | ||
173 | #define SNDRV_PCM_FMTBIT_U20_LE _SNDRV_PCM_FMTBIT(U20_LE) | ||
174 | #define SNDRV_PCM_FMTBIT_S20_BE _SNDRV_PCM_FMTBIT(S20_BE) | ||
175 | #define SNDRV_PCM_FMTBIT_U20_BE _SNDRV_PCM_FMTBIT(U20_BE) | ||
172 | #define SNDRV_PCM_FMTBIT_SPECIAL _SNDRV_PCM_FMTBIT(SPECIAL) | 176 | #define SNDRV_PCM_FMTBIT_SPECIAL _SNDRV_PCM_FMTBIT(SPECIAL) |
173 | #define SNDRV_PCM_FMTBIT_S24_3LE _SNDRV_PCM_FMTBIT(S24_3LE) | 177 | #define SNDRV_PCM_FMTBIT_S24_3LE _SNDRV_PCM_FMTBIT(S24_3LE) |
174 | #define SNDRV_PCM_FMTBIT_U24_3LE _SNDRV_PCM_FMTBIT(U24_3LE) | 178 | #define SNDRV_PCM_FMTBIT_U24_3LE _SNDRV_PCM_FMTBIT(U24_3LE) |
@@ -202,6 +206,8 @@ struct snd_pcm_ops { | |||
202 | #define SNDRV_PCM_FMTBIT_FLOAT SNDRV_PCM_FMTBIT_FLOAT_LE | 206 | #define SNDRV_PCM_FMTBIT_FLOAT SNDRV_PCM_FMTBIT_FLOAT_LE |
203 | #define SNDRV_PCM_FMTBIT_FLOAT64 SNDRV_PCM_FMTBIT_FLOAT64_LE | 207 | #define SNDRV_PCM_FMTBIT_FLOAT64 SNDRV_PCM_FMTBIT_FLOAT64_LE |
204 | #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE | 208 | #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE |
209 | #define SNDRV_PCM_FMTBIT_S20 SNDRV_PCM_FMTBIT_S20_LE | ||
210 | #define SNDRV_PCM_FMTBIT_U20 SNDRV_PCM_FMTBIT_U20_LE | ||
205 | #endif | 211 | #endif |
206 | #ifdef SNDRV_BIG_ENDIAN | 212 | #ifdef SNDRV_BIG_ENDIAN |
207 | #define SNDRV_PCM_FMTBIT_S16 SNDRV_PCM_FMTBIT_S16_BE | 213 | #define SNDRV_PCM_FMTBIT_S16 SNDRV_PCM_FMTBIT_S16_BE |
@@ -213,6 +219,8 @@ struct snd_pcm_ops { | |||
213 | #define SNDRV_PCM_FMTBIT_FLOAT SNDRV_PCM_FMTBIT_FLOAT_BE | 219 | #define SNDRV_PCM_FMTBIT_FLOAT SNDRV_PCM_FMTBIT_FLOAT_BE |
214 | #define SNDRV_PCM_FMTBIT_FLOAT64 SNDRV_PCM_FMTBIT_FLOAT64_BE | 220 | #define SNDRV_PCM_FMTBIT_FLOAT64 SNDRV_PCM_FMTBIT_FLOAT64_BE |
215 | #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE | 221 | #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE |
222 | #define SNDRV_PCM_FMTBIT_S20 SNDRV_PCM_FMTBIT_S20_BE | ||
223 | #define SNDRV_PCM_FMTBIT_U20 SNDRV_PCM_FMTBIT_U20_BE | ||
216 | #endif | 224 | #endif |
217 | 225 | ||
218 | struct snd_pcm_file { | 226 | struct snd_pcm_file { |
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 58acd00cae19..d970879944fc 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h | |||
@@ -102,6 +102,8 @@ struct snd_compr_stream; | |||
102 | SNDRV_PCM_FMTBIT_S16_BE |\ | 102 | SNDRV_PCM_FMTBIT_S16_BE |\ |
103 | SNDRV_PCM_FMTBIT_S20_3LE |\ | 103 | SNDRV_PCM_FMTBIT_S20_3LE |\ |
104 | SNDRV_PCM_FMTBIT_S20_3BE |\ | 104 | SNDRV_PCM_FMTBIT_S20_3BE |\ |
105 | SNDRV_PCM_FMTBIT_S20_LE |\ | ||
106 | SNDRV_PCM_FMTBIT_S20_BE |\ | ||
105 | SNDRV_PCM_FMTBIT_S24_3LE |\ | 107 | SNDRV_PCM_FMTBIT_S24_3LE |\ |
106 | SNDRV_PCM_FMTBIT_S24_3BE |\ | 108 | SNDRV_PCM_FMTBIT_S24_3BE |\ |
107 | SNDRV_PCM_FMTBIT_S32_LE |\ | 109 | SNDRV_PCM_FMTBIT_S32_LE |\ |
diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h index c227ccba60ae..07d61583fd02 100644 --- a/include/uapi/sound/asound.h +++ b/include/uapi/sound/asound.h | |||
@@ -214,6 +214,11 @@ typedef int __bitwise snd_pcm_format_t; | |||
214 | #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22) | 214 | #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22) |
215 | #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23) | 215 | #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23) |
216 | #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24) | 216 | #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24) |
217 | #define SNDRV_PCM_FORMAT_S20_LE ((__force snd_pcm_format_t) 25) /* in four bytes, LSB justified */ | ||
218 | #define SNDRV_PCM_FORMAT_S20_BE ((__force snd_pcm_format_t) 26) /* in four bytes, LSB justified */ | ||
219 | #define SNDRV_PCM_FORMAT_U20_LE ((__force snd_pcm_format_t) 27) /* in four bytes, LSB justified */ | ||
220 | #define SNDRV_PCM_FORMAT_U20_BE ((__force snd_pcm_format_t) 28) /* in four bytes, LSB justified */ | ||
221 | /* gap in the numbering for a future standard linear format */ | ||
217 | #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31) | 222 | #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31) |
218 | #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32) /* in three bytes */ | 223 | #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32) /* in three bytes */ |
219 | #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33) /* in three bytes */ | 224 | #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33) /* in three bytes */ |
@@ -248,6 +253,8 @@ typedef int __bitwise snd_pcm_format_t; | |||
248 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE | 253 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE |
249 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE | 254 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE |
250 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE | 255 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE |
256 | #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_LE | ||
257 | #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_LE | ||
251 | #endif | 258 | #endif |
252 | #ifdef SNDRV_BIG_ENDIAN | 259 | #ifdef SNDRV_BIG_ENDIAN |
253 | #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE | 260 | #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE |
@@ -259,6 +266,8 @@ typedef int __bitwise snd_pcm_format_t; | |||
259 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE | 266 | #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE |
260 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE | 267 | #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE |
261 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE | 268 | #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE |
269 | #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_BE | ||
270 | #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_BE | ||
262 | #endif | 271 | #endif |
263 | 272 | ||
264 | typedef int __bitwise snd_pcm_subformat_t; | 273 | typedef int __bitwise snd_pcm_subformat_t; |
diff --git a/sound/core/pcm_misc.c b/sound/core/pcm_misc.c index 9be81025372f..c4eb561d2008 100644 --- a/sound/core/pcm_misc.c +++ b/sound/core/pcm_misc.c | |||
@@ -163,13 +163,30 @@ static struct pcm_format_data pcm_formats[(INT)SNDRV_PCM_FORMAT_LAST+1] = { | |||
163 | .width = 32, .phys = 32, .le = 0, .signd = 0, | 163 | .width = 32, .phys = 32, .le = 0, .signd = 0, |
164 | .silence = { 0x69, 0x69, 0x69, 0x69 }, | 164 | .silence = { 0x69, 0x69, 0x69, 0x69 }, |
165 | }, | 165 | }, |
166 | /* FIXME: the following three formats are not defined properly yet */ | 166 | /* FIXME: the following two formats are not defined properly yet */ |
167 | [SNDRV_PCM_FORMAT_MPEG] = { | 167 | [SNDRV_PCM_FORMAT_MPEG] = { |
168 | .le = -1, .signd = -1, | 168 | .le = -1, .signd = -1, |
169 | }, | 169 | }, |
170 | [SNDRV_PCM_FORMAT_GSM] = { | 170 | [SNDRV_PCM_FORMAT_GSM] = { |
171 | .le = -1, .signd = -1, | 171 | .le = -1, .signd = -1, |
172 | }, | 172 | }, |
173 | [SNDRV_PCM_FORMAT_S20_LE] = { | ||
174 | .width = 20, .phys = 32, .le = 1, .signd = 1, | ||
175 | .silence = {}, | ||
176 | }, | ||
177 | [SNDRV_PCM_FORMAT_S20_BE] = { | ||
178 | .width = 20, .phys = 32, .le = 0, .signd = 1, | ||
179 | .silence = {}, | ||
180 | }, | ||
181 | [SNDRV_PCM_FORMAT_U20_LE] = { | ||
182 | .width = 20, .phys = 32, .le = 1, .signd = 0, | ||
183 | .silence = { 0x00, 0x00, 0x08, 0x00 }, | ||
184 | }, | ||
185 | [SNDRV_PCM_FORMAT_U20_BE] = { | ||
186 | .width = 20, .phys = 32, .le = 0, .signd = 0, | ||
187 | .silence = { 0x00, 0x08, 0x00, 0x00 }, | ||
188 | }, | ||
189 | /* FIXME: the following format is not defined properly yet */ | ||
173 | [SNDRV_PCM_FORMAT_SPECIAL] = { | 190 | [SNDRV_PCM_FORMAT_SPECIAL] = { |
174 | .le = -1, .signd = -1, | 191 | .le = -1, .signd = -1, |
175 | }, | 192 | }, |