imx8mm fsl_sai clock config failing
Aisheng Dong
aisheng.dong at nxp.com
Mon May 18 11:11:44 CEST 2020
> From: Tim Harvey <tharvey at gateworks.com>
> Sent: Tuesday, May 12, 2020 5:58 AM
>
> Greetings,
>
> I'm trying to get imx8mm sai working with a tlv320aic3x codec on a new board
> and am finding that the sai3 bus clock is getting derived from the wrong source
> leading hw_params() to fail with 'fsl-sai
> 30030000.sai: failed to derive required Tx rate: 3072000'
>
> In comparison to the imx8mm-evk I find it's clock gets configured as desired yet
> I have the same device-tree configuration for sai3.
>
> Here is my board's dts:
> / {
> ...
> sound {
> compatible = "simple-audio-card";
> simple-audio-card,name = "tlv320-audio";
> simple-audio-card,format = "i2s";
> simple-audio-card,frame-master = <&cpudai>;
> simple-audio-card,bitclock-master = <&cpudai>;
> simple-audio-card,widgets =
> "Line", "Left Line Out Jack",
> "Line", "Right Line Out Jack";
> simple-audio-card,routing =
> "Left Line Out Jack", "LLOUT",
> "Right Line Out Jack", "RLOUT";
>
> cpudai: simple-audio-card,cpu {
> sound-dai = <&sai3>;
> dai-tdm-slot-num = <2>;
> dai-tdm-slot-width = <32>;
> };
>
> simple-audio-card,codec {
> sound-dai = <&tlv320aic3105>;
> clocks = <&clk IMX8MM_CLK_SAI3_ROOT>;
> };
> };
> };
>
> &i2c2 {
> ...
> tlv320aic3105: codec at 18 {
> #sound-dai-cells = <0>;
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_tlv>;
> compatible = "ti,tlv320aic3x";
> reg = <0x18>;
> reset-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>;
> ai3x-micbias-vg = <2>; /* MICBIAS_2_5V */
> /* Regulators */
> DRVDD-supply = <®_3p3v>;
> AVDD-supply = <®_3p3v>;
> IOVDD-supply = <®_3p3v>;
> DVDD-supply = <®_1p8v>;
> };
> }
>
> &sai3 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_sai3>;
> assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
> assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
> assigned-clock-rates = <24576000>;
> status = "okay";
> };
>
> and /sys/kernel/debug/clk/clk_summary from my board:
> osc_24m 7 10 0
> 24000000
> 0 0 50000
> ...
> audio_pll1_ref_sel 0 0 0
> 24000000
> 0 0 50000
> audio_pll1 0 0 0
> 650000000
> 0 0 50000
> audio_pll1_bypass 0 0 0
> 650000000
> 0 0 50000
> audio_pll1_out 0 0 0
> 650000000
> 0 0 50000
> sai3 0 0 0
> 25000000
> 0 0 50000
> sai3_root_clk 0 0 0
> 25000000
> 0 0 50000
> ^^^^ note 25000000 instead of requested 24576000
>
> And Here is the imx8mm-evk dts:
> / {
> ...
> wm8524: audio-codec {
> #sound-dai-cells = <0>;
> compatible = "wlf,wm8524";
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_gpio_wlf>;
> wlf,mute-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> };
>
> sound-wm8524 {
> compatible = "simple-audio-card";
> simple-audio-card,name = "wm8524-audio";
> simple-audio-card,format = "i2s";
> simple-audio-card,frame-master = <&cpudai>;
> simple-audio-card,bitclock-master = <&cpudai>;
> simple-audio-card,widgets =
> "Line", "Left Line Out Jack",
> "Line", "Right Line Out Jack";
> simple-audio-card,routing =
> "Left Line Out Jack", "LINEVOUTL",
> "Right Line Out Jack", "LINEVOUTR";
>
> cpudai: simple-audio-card,cpu {
> sound-dai = <&sai3>;
> dai-tdm-slot-num = <2>;
> dai-tdm-slot-width = <32>;
> };
>
> simple-audio-card,codec {
> sound-dai = <&wm8524>;
> clocks = <&clk IMX8MM_CLK_SAI3_ROOT>;
> };
> };
> };
>
> &sai3 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_sai3>;
> assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
> assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
> assigned-clock-rates = <24576000>;
> status = "okay";
> };
>
> and /sys/kernel/debug/clk/clk_summary from imx8mm_evk:
> osc_24m 7 10 0
> 24000000
> 0 0 50000
> ...
> audio_pll1_ref_sel 0 0 0
> 24000000
> 0 0 50000
> audio_pll1 0 0 0
> 393215995
> 0 0 50000
> audio_pll1_bypass 0 0 0
> 393215995
> 0 0 50000
> audio_pll1_out 0 0 0
> 393215995
> 0 0 50000
> sai3 0 0 0
> 24576000
> 0 0 50000
> sai3_root_clk 0 0 0
> 24576000
> 0 0 50000
> ^^^^ note 24576000 as requested
>
> Any ideas what I'm doing wrong here?
>
> Note that even though the imx8mm-evk appears to configure its clock correctly I
> still have not been able to play audio out the wm8524 and the system appears
> to hang during playback as if BCLK/MCLK were not clocking.
>
> Perhaps there is something not supported yet upstream with regards to
> IMX8MM SAI?
>
Copy Daniel in case he has some comments.
Regards
Aisheng
> Best Regards,
>
> Tim
More information about the Alsa-devel
mailing list