20 Dec
2011
20 Dec
'11
12:40 p.m.
On Tue, Dec 20, 2011 at 11:45:42AM +0900, Tomoya MORINAGA wrote:
- switch (level) {
- case SND_SOC_BIAS_ON:
/* VMID ON */
snd_soc_update_bits(codec, ML26124_PW_REF_PW_MNG,
ML26124_VMID, ML26124_VMID);
msleep(500);
- case SND_SOC_BIAS_PREPARE:
You're missing a break here.
+static int ml26124_pcm_trigger(struct snd_pcm_substream *substream,
int cmd, struct snd_soc_dai *codec_dai)
+{
- struct snd_soc_codec *codec = codec_dai->codec;
- if (cmd == SNDRV_PCM_TRIGGER_STOP) {
snd_soc_update_bits(codec, ML26124_REC_PLYBAK_RUN, 0x3, 0);
return 0;
- } else if (cmd == SNDRV_PCM_TRIGGER_START) {
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
Use switch statements, though frankly I'd be astonished if this code actually runs as the trigger() callback is called in atomic context and the register I/O functionality needs interrupts. How have you tested this code?
- .reg_cache_size = ML26134_CACHESIZE,
- .reg_word_size = sizeof(u8),
- .reg_cache_default = ml26124_reg,
New drivers really should use regmap rather than the ASoC cache code.