> From: Tim Harvey <tharvey@xxxxxxxxxxxxx> > 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@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