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? Best Regards, Tim