On 29.08.2018 17:53, Mark Brown wrote:
On Wed, Aug 29, 2018 at 05:47:26PM +0300, Codrin Ciubotariu wrote:
+static const unsigned int wm8731_rates_12288000[] = {
- 8000, 32000, 48000, 96000,
+};
+static struct snd_pcm_hw_constraint_list wm8731_constraints_12288000 = {
- .list = wm8731_rates_12288000,
- .count = ARRAY_SIZE(wm8731_rates_12288000),
+};
+static int snd_proto_startup(struct snd_pcm_substream *substream) +{
- /* Setup constraints, because there is a 12.288 MHz XTAL on the board */
- snd_pcm_hw_constraint_list(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_RATE,
&wm8731_constraints_12288000);
- return 0;
+}
This bit is better added to the CODEC driver since it'll apply to any system where there's this clock rate (someone else could come in and add other rates, no need to do that yourself though it'd be nice of course).
I could do it.
That also has the nice bonus that with that I think you'd be able to use the graph card rather than a custom driver?
The main reason for adding a custom driver and not using graph/simple card is the snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL, XTAL_RATE, SND_SOC_CLOCK_IN) call. This enables the oscillator found in the wm8731 codec. Since WM8731_SYSCLK_XTAL is not 0, we can't use system-clock-frequency DT property to set it.
Best regards, Codrin