diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-08 10:47:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-08 10:47:46 -0500 |
commit | a421018e8c10e5593a1fee076af72a66c3fe8ca3 (patch) | |
tree | 2854511845d0e07d33726a13eda6de1059a5c9df /sound/soc/soc-utils.c | |
parent | 3ad1f3b35e8309ec93454dbf89beaafcdb5312da (diff) | |
parent | 86e1d57e4f24ca27ce813bdc2afaac4adafcbaf4 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (294 commits)
S3C64XX: Staticise platform data for PCM devices
ASoC: Rename controls with a / in wm_hubs
snd-fm801: autodetect SF64-PCR (tuner-only) card
ALSA: tea575x-tuner: fix mute
ASoC: au1x: dbdma2: plug memleak in pcm device creation error path
ASoC: au1x: dbdma2: fix oops on soc device removal.
ALSA: hda - Fix memory leaks in the previous patch
ALSA: hda - Add ALC661/259, ALC892/888VD support
ALSA: opti9xx: remove snd_opti9xx fields
ALSA: aaci - Clean up duplicate code
ALSA: usb - Fix mixer map for Hercules Gamesurround Muse Pocket LT
ALSA: hda - Add position_fix quirk for HP dv3
ALSA: hda - Add a pin-fix for FSC Amilo Pi1505
ALSA: hda - Fix Cxt5047 test mode
ASoC: pxa/raumfeld: adopt new snd_soc_dai_set_pll() API
ASoC: sh: fsi: Add runtime PM support
sh: ms7724se: Add runtime PM support for FSI
ALSA: hda - Add a position_fix quirk for MSI Wind U115
ALSA: opti-miro: add PnP detection
ALSA: opti-miro: separate comon probing code
...
Diffstat (limited to 'sound/soc/soc-utils.c')
-rw-r--r-- | sound/soc/soc-utils.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/sound/soc/soc-utils.c b/sound/soc/soc-utils.c new file mode 100644 index 000000000000..1d07b931f3d8 --- /dev/null +++ b/sound/soc/soc-utils.c | |||
@@ -0,0 +1,74 @@ | |||
1 | /* | ||
2 | * soc-util.c -- ALSA SoC Audio Layer utility functions | ||
3 | * | ||
4 | * Copyright 2009 Wolfson Microelectronics PLC. | ||
5 | * | ||
6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
7 | * Liam Girdwood <lrg@slimlogic.co.uk> | ||
8 | * | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <sound/core.h> | ||
17 | #include <sound/pcm.h> | ||
18 | #include <sound/pcm_params.h> | ||
19 | #include <sound/soc.h> | ||
20 | |||
21 | int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots) | ||
22 | { | ||
23 | return sample_size * channels * tdm_slots; | ||
24 | } | ||
25 | EXPORT_SYMBOL_GPL(snd_soc_calc_frame_size); | ||
26 | |||
27 | int snd_soc_params_to_frame_size(struct snd_pcm_hw_params *params) | ||
28 | { | ||
29 | int sample_size; | ||
30 | |||
31 | switch (params_format(params)) { | ||
32 | case SNDRV_PCM_FORMAT_S16_LE: | ||
33 | case SNDRV_PCM_FORMAT_S16_BE: | ||
34 | sample_size = 16; | ||
35 | break; | ||
36 | case SNDRV_PCM_FORMAT_S20_3LE: | ||
37 | case SNDRV_PCM_FORMAT_S20_3BE: | ||
38 | sample_size = 20; | ||
39 | break; | ||
40 | case SNDRV_PCM_FORMAT_S24_LE: | ||
41 | case SNDRV_PCM_FORMAT_S24_BE: | ||
42 | sample_size = 24; | ||
43 | break; | ||
44 | case SNDRV_PCM_FORMAT_S32_LE: | ||
45 | case SNDRV_PCM_FORMAT_S32_BE: | ||
46 | sample_size = 32; | ||
47 | break; | ||
48 | default: | ||
49 | return -ENOTSUPP; | ||
50 | } | ||
51 | |||
52 | return snd_soc_calc_frame_size(sample_size, params_channels(params), | ||
53 | 1); | ||
54 | } | ||
55 | EXPORT_SYMBOL_GPL(snd_soc_params_to_frame_size); | ||
56 | |||
57 | int snd_soc_calc_bclk(int fs, int sample_size, int channels, int tdm_slots) | ||
58 | { | ||
59 | return fs * snd_soc_calc_frame_size(sample_size, channels, tdm_slots); | ||
60 | } | ||
61 | EXPORT_SYMBOL_GPL(snd_soc_calc_bclk); | ||
62 | |||
63 | int snd_soc_params_to_bclk(struct snd_pcm_hw_params *params) | ||
64 | { | ||
65 | int ret; | ||
66 | |||
67 | ret = snd_soc_params_to_frame_size(params); | ||
68 | |||
69 | if (ret > 0) | ||
70 | return ret * params_rate(params); | ||
71 | else | ||
72 | return ret; | ||
73 | } | ||
74 | EXPORT_SYMBOL_GPL(snd_soc_params_to_bclk); | ||