44
43
static struct regulator *omap3pandora_dac_reg;
46
static int omap3pandora_cmn_hw_params(struct snd_pcm_substream *substream,
47
struct snd_pcm_hw_params *params, unsigned int fmt)
45
static int omap3pandora_hw_params(struct snd_pcm_substream *substream,
46
struct snd_pcm_hw_params *params)
49
48
struct snd_soc_pcm_runtime *rtd = substream->private_data;
50
struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
51
struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
49
struct snd_soc_dai *codec_dai = rtd->codec_dai;
50
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
51
int fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
52
SND_SOC_DAIFMT_CBS_CFS;
54
55
/* Set codec DAI configuration */
183
166
{"Mic Bias 2", NULL, "Mic (external)"},
186
static int omap3pandora_out_init(struct snd_soc_codec *codec)
169
static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
171
struct snd_soc_codec *codec = rtd->codec;
172
struct snd_soc_dapm_context *dapm = &codec->dapm;
190
175
/* All TWL4030 output pins are floating */
191
snd_soc_dapm_nc_pin(codec, "OUTL");
192
snd_soc_dapm_nc_pin(codec, "OUTR");
193
snd_soc_dapm_nc_pin(codec, "EARPIECE");
194
snd_soc_dapm_nc_pin(codec, "PREDRIVEL");
195
snd_soc_dapm_nc_pin(codec, "PREDRIVER");
196
snd_soc_dapm_nc_pin(codec, "HSOL");
197
snd_soc_dapm_nc_pin(codec, "HSOR");
198
snd_soc_dapm_nc_pin(codec, "CARKITL");
199
snd_soc_dapm_nc_pin(codec, "CARKITR");
200
snd_soc_dapm_nc_pin(codec, "HFL");
201
snd_soc_dapm_nc_pin(codec, "HFR");
202
snd_soc_dapm_nc_pin(codec, "VIBRA");
176
snd_soc_dapm_nc_pin(dapm, "EARPIECE");
177
snd_soc_dapm_nc_pin(dapm, "PREDRIVEL");
178
snd_soc_dapm_nc_pin(dapm, "PREDRIVER");
179
snd_soc_dapm_nc_pin(dapm, "HSOL");
180
snd_soc_dapm_nc_pin(dapm, "HSOR");
181
snd_soc_dapm_nc_pin(dapm, "CARKITL");
182
snd_soc_dapm_nc_pin(dapm, "CARKITR");
183
snd_soc_dapm_nc_pin(dapm, "HFL");
184
snd_soc_dapm_nc_pin(dapm, "HFR");
185
snd_soc_dapm_nc_pin(dapm, "VIBRA");
204
ret = snd_soc_dapm_new_controls(codec, omap3pandora_out_dapm_widgets,
187
ret = snd_soc_dapm_new_controls(dapm, omap3pandora_out_dapm_widgets,
205
188
ARRAY_SIZE(omap3pandora_out_dapm_widgets));
209
snd_soc_dapm_add_routes(codec, omap3pandora_out_map,
192
snd_soc_dapm_add_routes(dapm, omap3pandora_out_map,
210
193
ARRAY_SIZE(omap3pandora_out_map));
212
return snd_soc_dapm_sync(codec);
195
return snd_soc_dapm_sync(dapm);
215
static int omap3pandora_in_init(struct snd_soc_codec *codec)
198
static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
200
struct snd_soc_codec *codec = rtd->codec;
201
struct snd_soc_dapm_context *dapm = &codec->dapm;
219
204
/* Not comnnected */
220
snd_soc_dapm_nc_pin(codec, "HSMIC");
221
snd_soc_dapm_nc_pin(codec, "CARKITMIC");
222
snd_soc_dapm_nc_pin(codec, "DIGIMIC0");
223
snd_soc_dapm_nc_pin(codec, "DIGIMIC1");
205
snd_soc_dapm_nc_pin(dapm, "HSMIC");
206
snd_soc_dapm_nc_pin(dapm, "CARKITMIC");
207
snd_soc_dapm_nc_pin(dapm, "DIGIMIC0");
208
snd_soc_dapm_nc_pin(dapm, "DIGIMIC1");
225
ret = snd_soc_dapm_new_controls(codec, omap3pandora_in_dapm_widgets,
210
ret = snd_soc_dapm_new_controls(dapm, omap3pandora_in_dapm_widgets,
226
211
ARRAY_SIZE(omap3pandora_in_dapm_widgets));
230
snd_soc_dapm_add_routes(codec, omap3pandora_in_map,
215
snd_soc_dapm_add_routes(dapm, omap3pandora_in_map,
231
216
ARRAY_SIZE(omap3pandora_in_map));
233
return snd_soc_dapm_sync(codec);
218
return snd_soc_dapm_sync(dapm);
236
static struct snd_soc_ops omap3pandora_out_ops = {
237
.hw_params = omap3pandora_out_hw_params,
240
static struct snd_soc_ops omap3pandora_in_ops = {
241
.hw_params = omap3pandora_in_hw_params,
221
static struct snd_soc_ops omap3pandora_ops = {
222
.hw_params = omap3pandora_hw_params,
244
225
/* Digital audio interface glue - connects codec <--> CPU */
247
228
.name = "PCM1773",
248
229
.stream_name = "HiFi Out",
249
.cpu_dai = &omap_mcbsp_dai[0],
250
.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
251
.ops = &omap3pandora_out_ops,
230
.cpu_dai_name = "omap-mcbsp-dai.1",
231
.codec_dai_name = "twl4030-hifi",
232
.platform_name = "omap-pcm-audio",
233
.codec_name = "twl4030-codec",
234
.ops = &omap3pandora_ops,
252
235
.init = omap3pandora_out_init,
254
237
.name = "TWL4030",
255
238
.stream_name = "Line/Mic In",
256
.cpu_dai = &omap_mcbsp_dai[1],
257
.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
258
.ops = &omap3pandora_in_ops,
239
.cpu_dai_name = "omap-mcbsp-dai.3",
240
.codec_dai_name = "twl4030-hifi",
241
.platform_name = "omap-pcm-audio",
242
.codec_name = "twl4030-codec",
243
.ops = &omap3pandora_ops,
259
244
.init = omap3pandora_in_init,