On Fri, Nov 18, 2016 at 10:58:46AM +0530, Vinod Koul wrote: > On Thu, Nov 17, 2016 at 02:35:15PM +0800, Grace Kao wrote: > > 256FS sysclk gives the best audio quality per nau8825 datasheet. > > > > Loud headphone pop happens if there is no sysclk during nau8825 > > playback power up sequence. Currently Skylake does not output MCLK/FS > > when the back-end DAI op hw_param is called, so we cannot switch to > > MCLK/FS in hw_param. This patch reduces pop by leting nau8825 keep > > using its internal VCO clock during widget power up sequence, until > > SNDRV_PCM_TRIGGER_START when MCLK/FS is available. <snip> > > > +static int skylake_nau8825_trigger(struct snd_pcm_substream *substream, int cmd) > > +{ > > + struct snd_soc_pcm_runtime *rtd = substream->private_data; > > + struct snd_pcm_runtime *runtime = substream->runtime; > > + struct snd_soc_dai *codec_dai = rtd->codec_dai; > > + int ret = 0; > > + > > + switch (cmd) { > > + case SNDRV_PCM_TRIGGER_START: > > + ret = snd_soc_dai_set_sysclk(codec_dai, NAU8825_CLK_FLL_FS, 0, > > + SND_SOC_CLOCK_IN); > > + if (ret < 0) > > + dev_err(codec_dai->dev, "can't set FS clock %d\n", ret); > > + ret = snd_soc_dai_set_pll(codec_dai, 0, 0, runtime->rate, > > + runtime->rate * 256); > > + if (ret < 0) > > + dev_err(codec_dai->dev, "can't set FLL: %d\n", ret); > > + break; > > starting clock on trigger doesnt sound right to me.. > Me neither can't trigger be called from an atomic context? In which case I would expect operations on an external CODEC to be very likely to cause issues. Thanks, Charles _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel