Hi,
2015-05-29 14:16 GMT+02:00 Peter Ujfalusi peter.ujfalusi@ti.com:
On 05/29/2015 12:24 PM, Enric Balletbo Serra wrote:
It might be really 24MHz. If the MCLK in your board is wired like am335x-evmsk or how BeagleBone's audio capes are wired (MCLK is coming from AM335x's EVENT_INTR0/1 pin as CLKOUT1/2) then 24MHz is correct. On the am335x-evm there is a dedicated crystal providing the 12MHz.
Well, in my board there is also a dedicated crystal providing the 12MHz, so I expect that the correct value for clock-frequency is 12MHz not 24MHz.
I was wrong with the BBW audio cape.. At least the RevA which I have does have 12MHz crystal connected to aic3106 MCLK, but there is a line to the SoC's CLKOUT2. By default the codec runs using the 12MHz. I have checked with a scope and yep, I have 12MHz for MCLK.
clocks { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <0>; /* audio external oscillator */ tlv320aic3x_mclk: oscillator@0 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <12000000>; /* 12MHz */ }; }; sound { compatible = "ti,da830-evm-audio"; ti,model = "AM335x-SL50"; ti,audio-codec = <&audio_codec>; ti,mcasp-controller = <&mcasp0>; clocks = <&tlv320aic3x_mclk>; clock-names = "mclk"; ti,audio-routing = "Headphone Jack", "HPLOUT", "Headphone Jack", "HPROUT", "LINE1R", "Line In", "LINE1L", "Line In"; };
If I use this with my BBW+Audio cape: audio is fine.
Tested with linux-next and same problem here, I also checked with a scope my clock and it's 12MHz but I need to apply this patch to make it work.
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c index 731fb0d..8ce0d32 100644 --- a/sound/soc/davinci/davinci-evm.c +++ b/sound/soc/davinci/davinci-evm.c @@ -64,6 +64,11 @@ static int evm_hw_params(struct snd_pcm_substream *substream, unsigned sysclk = ((struct snd_soc_card_drvdata_davinci *) snd_soc_card_get_drvdata(soc_card))->sysclk;
+ ret = snd_soc_dai_set_clkdiv(cpu_dai, 0, 2); + if (ret < 0) + return ret; + /* set the codec system clock */ ret = snd_soc_dai_set_sysclk(codec_dai, 0, sysclk, SND_SOC_CLOCK_OUT); if (ret < 0)
Really odd, so we'll have something different, at the moment I don't know what could be the difference.
For me it's really odd have to set the clock-frequency to 24MHz to make it work
clock-frequency = <24000000>;
If I change it to this, I will have slow motion playback, as expected.
For that reason I'm wondering if there is a bug in the driver, did anyone test with an am335x-evm board ?
I'm using linux-next. Not sure what could be the issue.
[1] https://patchwork.kernel.org/patch/6480071/
Thanks in advance, Enric
-- Péter
Thanks, Enric
-- Péter