Hi all, We're looking into using the generic simple-card.c driver to glue together WM8510 codec driver and Atmel SSC platform driver without a specific machine code. It turned out that the DTS configuration below fails to set the codec PLL and clkdiv values. In fact, wm8510_set_dai_pll() and wm8510_set_dai_clkdiv() get never called. After adding following lines (omitting determination of myboard_* values) into wm8510_pcm_hw_params(), the audio starts working properly: wm8510_set_dai_clkdiv(dai, WM8510_BCLKDIV, myboard_bclk_div); wm8510_set_dai_pll(dai, 0, 0, 12000000, myboard_pll_out); wm8510_set_dai_clkdiv(dai, WM8510_MCLKDIV, myboard_mclk_div); What is actually the missing part? Did we forget to configure something in DTS? Or is this a limitation of simple-card driver? If so, what would be the proper way to implement the missing features? We're using Linux v4.14-rc1. The codec clock comes from a constantly running 12 MHz oscillator, and the codec is the clock and frame master. DTS configuration is as follows: ahb { apb { ssc0: ssc@fff9c000 { #sound-dai-cells = <0>; status = "okay"; dmas = <&dma 1 AT91_DMA_CFG_PER_ID(5)>, <&dma 1 AT91_DMA_CFG_PER_ID(6)>; dma-names = "tx", "rx"; pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; }; spi0: spi@fffa4000{ status = "okay"; cs-gpios = <&pioB 3 0>, <&pioA 28 0>, <0>, <0>; audio_codec: wm8510@1 { #sound-dai-cells = <0>; compatible = "wlf,wm8510"; spi-max-frequency = <2000000>; reg = <1>; }; }; }; sound { compatible = "simple-audio-card"; simple-audio-card,name = "wm8510_WID"; simple-audio-card,format = "i2s"; simple-audio-card,routing = "Mono Out", "MONOOUT"; simple-audio-card,codec { sound-dai = <&audio_codec>; system-clock-frequency = <12000000>; bitclock-master; frame-master; }; simple-audio-card,cpu { sound-dai = <&ssc0>; }; }; -Jukka _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel