aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound
diff options
context:
space:
mode:
authorLiam Girdwood <lg@opensource.wolfsonmicro.com>2006-10-19 14:35:56 -0400
committerJaroslav Kysela <perex@suse.cz>2007-02-09 03:01:07 -0500
commita71a468a50f1385855e28864e26251b02df829bb (patch)
tree243daee96ea5c55c88a186aa03b7917f7ad533f6 /include/sound
parent543a0fbe18d0b44f3d037fe6b59458fa0c0d5e4b (diff)
[ALSA] ASoC: Add support for BCLK based on (Rate * Chn * Word Size)
This patch adds support for the DAI BCLK to be generated by multiplying Rate * Channels * Word Size (RCW). This now gives 3 options for BCLK clocking and synchronisation :- 1. BCLK = Rate * x 2. BCLK = MCLK / x 3. BCLK = Rate * Chn * Word Size. (New) Changes:- o Add support for RCW generation of BCLK o Update Documentation to include RCW. o Update DAI documentation for label = value DAI modes. o Add RCW support to wm8731, wm8750 and pxa2xx-i2s drivers. Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'include/sound')
-rw-r--r--include/sound/soc.h23
1 files changed, 14 insertions, 9 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h
index ecdd1fac94b6..3dfe052e0788 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -21,7 +21,7 @@
21#include <sound/control.h> 21#include <sound/control.h>
22#include <sound/ac97_codec.h> 22#include <sound/ac97_codec.h>
23 23
24#define SND_SOC_VERSION "0.11.8" 24#define SND_SOC_VERSION "0.12"
25 25
26/* 26/*
27 * Convenience kcontrol builders 27 * Convenience kcontrol builders
@@ -141,19 +141,24 @@
141/* bit clock dividers */ 141/* bit clock dividers */
142#define SND_SOC_FSBD(x) (1 << (x - 1)) /* ratio mclk:bclk */ 142#define SND_SOC_FSBD(x) (1 << (x - 1)) /* ratio mclk:bclk */
143#define SND_SOC_FSBD_REAL(x) (ffs(x)) 143#define SND_SOC_FSBD_REAL(x) (ffs(x))
144#define SND_SOC_FSBD_ALL 0xffff /* all bit clock dividers supported */
145 144
146/* bit clock ratio to sample rate */ 145/* bit clock ratio to (sample rate * channels * word size) */
147#define SND_SOC_FSB(x) (1 << ((x - 16) / 16)) 146#define SND_SOC_FSBW(x) (1 << (x - 1))
148#define SND_SOC_FSB_REAL(x) (((ffs(x) - 1) * 16) + 16) 147#define SND_SOC_FSBW_REAL(x) (ffs(x))
149/* all bclk ratios supported */ 148/* all bclk ratios supported */
150#define SND_SOC_FSB_ALL SND_SOC_FSBD_ALL 149#define SND_SOC_FSB_ALL ~0ULL
151 150
152/* 151/*
153 * DAI hardware flags 152 * DAI hardware flags
154 */ 153 */
155/* use bfs mclk divider mode, else sample rate ratio */ 154/* use bfs mclk divider mode (BCLK = MCLK / x) */
156#define SND_SOC_DAI_BFS_DIV 0x1 155#define SND_SOC_DAI_BFS_DIV 0x1
156/* use bfs rate mulitplier (BCLK = RATE * x)*/
157#define SND_SOC_DAI_BFS_RATE 0x2
158/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
159#define SND_SOC_DAI_BFS_RCW 0x4
160/* capture and playback can use different clocks */
161#define SND_SOC_DAI_ASYNC 0x8
157 162
158/* 163/*
159 * AC97 codec ID's bitmask 164 * AC97 codec ID's bitmask
@@ -264,7 +269,7 @@ struct snd_soc_dai_mode {
264 u16 pcmdir:2; /* SND_SOC_HWDIR_* */ 269 u16 pcmdir:2; /* SND_SOC_HWDIR_* */
265 u16 flags:8; /* hw flags */ 270 u16 flags:8; /* hw flags */
266 u16 fs; /* mclk to rate divider */ 271 u16 fs; /* mclk to rate divider */
267 u32 bfs; /* mclk to bclk dividers */ 272 u64 bfs; /* mclk to bclk dividers */
268 unsigned long priv; /* private mode data */ 273 unsigned long priv; /* private mode data */
269}; 274};
270 275