8 Jul
2013
8 Jul
'13
4:39 p.m.
On 07/08/2013 03:29 PM, Richard Genoud wrote: [...]
+/*
- Logic for a wm8731 as connected on a at91sam9x5 based board.
- */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd) +{
[...]
- codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000;
- codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_96000;
That's not right. The driver structure is shared between all instances of the codec, a single instance should not modify it. If you need to constrain the list of supported rates use snd_pcm_hw_constraint_list().
- /* set the codec system clock for DAC and ADC */
- ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
MCLK_RATE, SND_SOC_CLOCK_IN);
- if (ret < 0) {
dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
return ret;
- }
- /* signal a DAPM event */
- snd_soc_dapm_sync(dapm);
This should not be necessary.
- return 0;
+}