On Tue, Aug 17, 2010 at 7:02 PM, Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote: > On Tue, Aug 17, 2010 at 06:44:44PM +0800, Haojian Zhuang wrote: >> On Tue, Aug 17, 2010 at 5:58 PM, Mark Brown > >> >> + switch (event) { >> >> + case SND_SOC_DAPM_PRE_PMU: >> >> + snd_soc_update_bits(codec, PM860X_ADC_EN_1, en1, en1); >> >> + snd_soc_update_bits(codec, PM860X_ADC_EN_2, en2, en2); > >> > I still don't follow why you need a custom event for this. > >> Enabling both bit 0 of ADC_EN_1 and bit 5 of ADC_EN_2 can enable left >> ADC. Enabling both bit 1 of ADC_EN_1 and bit 4 of ADC_EN_2 can enable >> right ADC. I can't find any DAPM API can handle this. So I implement >> the custom event. > > As I said previously I would expect you to be using a DAPM supply widget > for this. > Supply widget should be always on while DAPM is working. How about only enable left ADC? >> >> + /* set master/slave audio interface */ >> >> + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { >> >> + case SND_SOC_DAIFMT_CBM_CFM: >> >> + case SND_SOC_DAIFMT_CBM_CFS: >> >> + if (pm860x->dir == PM860X_CLK_DIR_OUT) >> >> + *inf |= PCM_INF2_MASTER; >> >> + else >> >> + return -EINVAL; >> >> + break; > >> > You're setting the same register configuration for two different DAI >> > clock master configurations here. Presumably one of the settings is >> > inaccurate? > >> No, they're different registers. But offsets are same. So I just return pointer. > > I can't associate your comment there with the code at all. The code > does nothing different for the two case statements and there's no other > code I can see. > You can find pm860x_pcm_set_dai_fmt() and pm860x_i2s_set_dai_fmt(). Both functions called set_dai_fmt(). In set_dai_fmt(), all bit operations are based on variable, not registers. Register operation is implemented in pcm_set_dai_fmt() and i2s_set_dai_fmt(). >> >> + if (shrt & (SHORT_LO1 | SHORT_LO2)) >> >> + report |= PM860X_SHORT_LINEOUT; >> >> + if (shrt & (SHORT_HS1 | SHORT_HS2)) >> >> + report |= PM860X_SHORT_HEADSET; >> >> + dev_dbg(pm860x->codec->dev, "report:0x%x\n", report); >> >> + return IRQ_HANDLED; > >> > It would seem better to just remove the interrupt handling support >> > entirely if you're not going to implement jack detection. Right now all >> > the curernt code will do is waste power by enabling the feature but >> > ignoring the result. > >> I need a document on illustrating jack on alsa. Could you share one? > > There's a number of in tree examples - seach for snd_soc_jack. > OK. How to test it? Still no document? _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel