aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/pxa/pxa2xx-i2s.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/pxa/pxa2xx-i2s.c')
-rw-r--r--sound/soc/pxa/pxa2xx-i2s.c91
1 files changed, 69 insertions, 22 deletions
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c
index c3b7a4bb7bd7..db2310f87fbe 100644
--- a/sound/soc/pxa/pxa2xx-i2s.c
+++ b/sound/soc/pxa/pxa2xx-i2s.c
@@ -58,30 +58,77 @@ static struct pxa_i2s_port pxa_i2s;
58/* priv is divider */ 58/* priv is divider */
59static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = { 59static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = {
60 /* pxa2xx I2S frame and clock master modes */ 60 /* pxa2xx I2S frame and clock master modes */
61 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 61 {
62 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_8000, PXA_I2S_DIR, 62 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
63 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0x48}, 63 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
64 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 64 .pcmrate = SNDRV_PCM_RATE_8000,
65 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_11025, PXA_I2S_DIR, 65 .pcmdir = PXA_I2S_DIR,
66 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0x34}, 66 .flags = SND_SOC_DAI_BFS_DIV,
67 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 67 .fs = 256,
68 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_16000, PXA_I2S_DIR, 68 .bfs = SND_SOC_FSBD(4),
69 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0x24}, 69 .priv = 0x48,
70 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 70 },
71 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_22050, PXA_I2S_DIR, 71 {
72 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0x1a}, 72 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
73 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 73 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
74 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_44100, PXA_I2S_DIR, 74 .pcmrate = SNDRV_PCM_RATE_11025,
75 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0xd}, 75 .pcmdir = PXA_I2S_DIR,
76 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0), 76 .flags = SND_SOC_DAI_BFS_DIV,
77 SNDRV_PCM_FMTBIT_S16_LE, SNDRV_PCM_RATE_48000, PXA_I2S_DIR, 77 .fs = 256,
78 SND_SOC_DAI_BFS_DIV, 256, SND_SOC_FSBD(4), 0xc}, 78 .bfs = SND_SOC_FSBD(4),
79 .priv = 0x34,
80 },
81 {
82 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
83 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
84 .pcmrate = SNDRV_PCM_RATE_16000,
85 .pcmdir = PXA_I2S_DIR,
86 .flags = SND_SOC_DAI_BFS_DIV,
87 .fs = 256,
88 .bfs = SND_SOC_FSBD(4),
89 .priv = 0x24,
90 },
91 {
92 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
93 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
94 .pcmrate = SNDRV_PCM_RATE_22050,
95 .pcmdir = PXA_I2S_DIR,
96 .flags = SND_SOC_DAI_BFS_DIV,
97 .fs = 256,
98 .bfs = SND_SOC_FSBD(4),
99 .priv = 0x1a,
100 },
101 {
102 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
103 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
104 .pcmrate = SNDRV_PCM_RATE_44100,
105 .pcmdir = PXA_I2S_DIR,
106 .flags = SND_SOC_DAI_BFS_DIV,
107 .fs = 256,
108 .bfs = SND_SOC_FSBD(4),
109 .priv = 0xd,
110 },
111 {
112 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
113 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
114 .pcmrate = SNDRV_PCM_RATE_48000,
115 .pcmdir = PXA_I2S_DIR,
116 .flags = SND_SOC_DAI_BFS_DIV,
117 .fs = 256,
118 .bfs = SND_SOC_FSBD(4),
119 .priv = 0xc,
120 },
79 121
80 /* pxa2xx I2S frame master and clock slave mode */ 122 /* pxa2xx I2S frame master and clock slave mode */
81 {PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS, SND_SOC_DAITDM_LRDW(0,0), 123 {
82 SNDRV_PCM_FMTBIT_S16_LE, PXA_I2S_RATES, PXA_I2S_DIR, 0, 124 .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
83 SND_SOC_FS_ALL, SND_SOC_FSB(64), 0x48}, 125 .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
84 126 .pcmrate = PXA_I2S_RATES,
127 .pcmdir = PXA_I2S_DIR,
128 .fs = SND_SOC_FS_ALL,
129 .bfs = SND_SOC_FSB(64),
130 .priv = 0x48,
131 },
85}; 132};
86 133
87static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = { 134static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {