Thanks Remington.
I ll go through the documentation.
This is how my device tree looks like
sai1: sai@30010000 {
#sound-dai-cells = <0>;
compatible = "fsl,imx8mq-sai",
"fsl,imx6sx-sai";
reg = <0x0 0x30010000 0x0 0x10000>;
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
<&clk IMX8MQ_CLK_SAI1_ROOT>,
<&clk IMX8MQ_AUDIO_PLL1>,<-------------------------- On upstream it is IMX8MQ_CLK_DUMMY, I supplied AUDIO_PLL1 as one of the mclck and it does fit for the stream playback, but fails when it tries to prepare and enable that clock.
<&clk IMX8MQ_CLK_DUMMY>;
clock-names = "bus", "mclk1", "mclk2", "mclk3";
dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
dma-names = "rx", "tx";
fsl,dataline = <0xff 0xff>;
status = "disabled";
};
&sai1 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
assigned-clocks = <&clk IMX8MQ_SAI1>;
assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
assigned-clock-rates = <49152000>;
status = "okay";
};
&clk {
assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1>;
assigned-clock-rates = <49152003>;
};
Here is the clock summary
As you can see, though I have configured SAI1 to run at 49152000 and derive from IMX8MQ_AUDIO_PLL1_OUT, which should derive from IMX8MQ_AUDIO_PLL1 configured to run at 49152003.
But on the board, when I dump the clock summary, SAI is configured to run on 25 MHz.
enable prepare protect duty
clock count count count rate accuracy phase cycle
---------------------------------------------------------------------------------------------
dummy 0 0 0 0 0 0 50000
clk_ext4 0 0 0 133000000 0 0 50000
clk_ext3 0 0 0 133000000 0 0 50000
clk_ext2 0 0 0 133000000 0 0 50000
clk_ext1 0 0 0 133000000 0 0 50000
osc_27m 0 0 0 27000000 0 0 50000
osc_25m 9 12 0 25000000 0 0 50000
gpt_3m 0 0 0 3125000 0 0 50000
pcie2_aux 0 0 0 25000000 0 0 50000
pcie2_phy 0 0 0 25000000 0 0 50000
pcie2_ctrl 0 0 0 25000000 0 0 50000
pcie2_root_clk 0 0 0 25000000 0 0 50000
csi2_esc 0 0 0 25000000 0 0 50000
csi2_phy_ref 0 0 0 25000000 0 0 50000
csi2_core 0 0 0 25000000 0 0 50000
csi2_root_clk 0 0 0 25000000 0 0 50000
csi1_esc 0 0 0 25000000 0 0 50000
csi1_phy_ref 0 0 0 25000000 0 0 50000
csi1_core 0 0 0 25000000 0 0 50000
csi1_root_clk 0 0 0 25000000 0 0 50000
dsi_ahb 0 0 0 25000000 0 0 50000
dsi_esc 0 0 0 25000000 0 0 50000
dsi_dbi 0 0 0 25000000 0 0 50000
dsi_phy_ref 0 0 0 25000000 0 0 50000
dsi_core 0 0 0 25000000 0 0 50000
clko2 0 0 0 25000000 0 0 50000
wdog 1 1 0 25000000 0 0 50000
wdog3_root_clk 0 0 0 25000000 0 0 50000
wdog2_root_clk 0 0 0 25000000 0 0 50000
wdog1_root_clk 1 1 0 25000000 0 0 50000
gpt1 0 0 0 25000000 0 0 50000
gpt1_root_clk 0 0 0 25000000 0 0 50000
pwm4 0 0 0 25000000 0 0 50000
pwm4_root_clk 0 0 0 25000000 0 0 50000
pwm3 0 0 0 25000000 0 0 50000
pwm3_root_clk 0 0 0 25000000 0 0 50000
pwm2 0 0 0 25000000 0 0 50000
pwm2_root_clk 0 0 0 25000000 0 0 50000
pwm1 0 0 0 25000000 0 0 50000
pwm1_root_clk 0 0 0 25000000 0 0 50000
uart4 0 0 0 25000000 0 0 50000
uart4_root_clk 0 0 0 25000000 0 0 50000
uart3 0 0 0 25000000 0 0 50000
uart3_root_clk 0 0 0 25000000 0 0 50000
uart2 0 0 0 25000000 0 0 50000
uart2_root_clk 0 0 0 25000000 0 0 50000
uart1 1 1 0 25000000 0 0 50000
uart1_root_clk 2 4 0 25000000 0 0 50000
i2c4 0 1 0 25000000 0 0 50000
i2c4_root_clk 0 1 0 25000000 0 0 50000
i2c3 0 0 0 25000000 0 0 50000
i2c3_root_clk 0 0 0 25000000 0 0 50000
i2c2 0 1 0 25000000 0 0 50000
i2c2_root_clk 0 1 0 25000000 0 0 50000
i2c1 1 1 0 25000000 0 0 50000
i2c1_root_clk 1 1 0 25000000 0 0 50000
enet_phy 1 1 0 25000000 0 0 50000
spdif2 0 0 0 25000000 0 0 50000
spdif1 0 0 0 25000000 0 0 50000
sai6 0 0 0 25000000 0 0 50000
sai6_root_clk 0 0 0 25000000 0 0 50000
sai5 0 0 0 25000000 0 0 50000
sai5_root_clk 0 0 0 25000000 0 0 50000
sai4 0 0 0 25000000 0 0 50000
sai4_root_clk 0 0 0 25000000 0 0 50000
sai3 0 0 0 25000000 0 0 50000
sai3_root_clk 0 0 0 25000000 0 0 50000
sai2 0 0 0 25000000 0 0 50000
sai2_root_clk 0 0 0 25000000 0 0 50000
lcdif_pixel 0 0 0 25000000 0 0 50000
dc_pixel 0 0 0 25000000 0 0 50000
pcie1_aux 0 0 0 25000000 0 0 50000
pcie1_phy 0 0 0 25000000 0 0 50000
pcie1_ctrl 0 0 0 25000000 0 0 50000
pcie1_root_clk 0 0 0 25000000 0 0 50000
disp_dc8000 0 0 0 25000000 0 0 50000
disp_root_clk 0 0 0 25000000 0 0 50000
disp_dtrc 0 0 0 25000000 0 0 50000
vpu_g2 0 0 0 25000000 0 0 50000
vpu_g2_root_clk 0 0 0 25000000 0 0 50000
vpu_g1 0 0 0 25000000 0 0 50000
vpu_g1_root_clk 0 0 0 25000000 0 0 50000
audio_ahb 0 1 0 25000000 0 0 50000
ipg_audio_root 0 1 0 12500000 0 0 50000
sdma2_clk 0 0 0 12500000 0 0 50000
sai6_ipg_clk 0 0 0 12500000 0 0 50000
sai5_ipg_clk 0 0 0 12500000 0 0 50000
sai4_ipg_clk 0 0 0 12500000 0 0 50000
sai1_ipg_clk 0 1 0 12500000 0 0 50000
noc_apb 1 1 0 25000000 0 0 50000
gpu_ahb 0 0 0 25000000 0 0 50000
gpu_axi 0 0 0 25000000 0 0 50000
vpu_bus 0 0 0 25000000 0 0 50000
vpu_dec_root_clk 0 0 0 25000000 0 0 50000
gpu_shader_src 0 0 0 25000000 0 0 50000
gpu_shader_cg 0 0 0 25000000 0 0 50000
gpu_shader_div 0 0 0 25000000 0 0 50000
gpu_core_src 0 0 0 25000000 0 0 50000
gpu_core_cg 0 0 0 25000000 0 0 50000
gpu_core_div 0 0 0 25000000 0 0 50000
gpu_root_clk 0 0 0 25000000 0 0 50000
dram_pll1_ref_sel 1 1 0 25000000 0 0 50000
dram_pll1_ref_div 1 1 0 25000000 0 0 50000
dram_pll1 1 1 0 2000000000 0 0 50000
dram_pll1_out 1 1 0 2000000000 0 0 50000
dram_pll1_out_div 1 1 0 66666667 0 0 50000
dram_pll2 1 1 0 800000000 0 0 50000
dram_pll2_div 1 1 0 800000000 0 0 50000
dram_pll2_out 1 1 0 800000000 0 0 50000
dram_pll_out 1 1 0 800000000 0 0 50000
dram_core_clk 1 1 0 800000000 0 0 50000
sys3_pll1_ref_sel 0 0 0 25000000 0 0 50000
sys3_pll1_out 0 0 0 25000000 0 0 50000
sys3_pll1_out_div 0 0 0 1041667 0 0 50000
sys3_pll2 0 0 0 1000000000 0 0 50000
sys3_pll2_div 0 0 0 1000000000 0 0 50000
sys3_pll1_ref_div 0 0 0 25000000 0 0 50000
sys3_pll1 0 0 0 1600000000 0 0 50000
sys2_pll1_ref_sel 1 1 0 25000000 0 0 50000
sys3_pll2_out 0 0 0 25000000 0 0 50000
sys3_pll_out 0 0 0 25000000 0 0 50000
sys2_pll1_ref_div 1 1 0 25000000 0 0 50000
sys2_pll1 1 1 0 1600000000 0 0 50000
sys2_pll1_out 1 1 0 1600000000 0 0 50000
sys2_pll1_out_div 1 1 0 66666667 0 0 50000
sys2_pll2 1 1 0 1000000000 0 0 50000
sys2_pll2_div 1 1 0 1000000000 0 0 50000
sys2_pll2_out 1 1 0 1000000000 0 0 50000
sys2_pll_out 3 4 0 1000000000 0 0 50000
sys2_pll_1000m 0 0 0 1000000000 0 0 50000
sys2_pll_500m 0 0 0 500000000 0 0 50000
usb_bus 0 0 0 500000000 0 0 50000
sys2_pll_333m 1 1 0 333333333 0 0 50000
main_axi 1 1 0 333333333 0 0 50000
sys2_pll_250m 0 0 0 250000000 0 0 50000
dram_alt 0 0 0 250000000 0 0 50000
dram_alt_root 0 0 0 62500000 0 0 50000
sys2_pll_200m 0 2 0 200000000 0 0 50000
ecspi3 0 0 0 200000000 0 0 50000
ecspi3_root_clk 0 0 0 200000000 0 0 50000
ecspi2 0 1 0 200000000 0 0 50000
ecspi2_root_clk 0 2 0 200000000 0 0 50000
ecspi1 0 1 0 200000000 0 0 50000
ecspi1_root_clk 0 2 0 200000000 0 0 50000
sys2_pll_166m 0 0 0 166666666 0 0 50000
sys2_pll_125m 1 1 0 125000000 0 0 50000
enet_ref 1 1 0 125000000 0 0 50000
sys2_pll_100m 1 1 0 100000000 0 0 50000
enet_timer 1 1 0 25000000 0 0 50000
sys2_pll_50m 0 0 0 50000000 0 0 50000
sys1_pll1_ref_sel 1 1 0 25000000 0 0 50000
sys1_pll1_ref_div 1 1 0 25000000 0 0 50000
sys1_pll1 1 1 0 1600000000 0 0 50000
sys1_pll1_out 1 1 0 1600000000 0 0 50000
sys1_pll1_out_div 1 1 0 66666667 0 0 50000
sys1_pll2 1 1 0 800000000 0 0 50000
sys1_pll2_div 1 1 0 800000000 0 0 50000
sys1_pll2_out 1 1 0 800000000 0 0 50000
sys1_pll_out 3 3 0 800000000 0 0 50000
sys1_pll_800m 2 2 0 800000000 0 0 50000
dram_apb 1 1 0 200000000 0 0 50000
noc 1 1 0 400000000 0 0 50000
disp_rtrm 0 0 0 400000000 0 0 50000
disp_rtrm_root_clk 0 0 0 400000000 0 0 50000
disp_apb 0 0 0 133333334 0 0 50000
disp_apb_root_clk 0 0 0 133333334 0 0 50000
disp_axi 0 0 0 800000000 0 0 50000
disp_axi_root_clk 0 0 0 800000000 0 0 50000
sys1_pll_400m 0 0 0 400000000 0 0 50000
usdhc2 0 0 0 200000000 0 0 50000
usdhc2_root_clk 0 0 0 200000000 0 0 50000
usdhc1 0 0 0 400000000 0 0 50000
usdhc1_root_clk 0 0 0 400000000 0 0 50000
nand 0 0 0 100000000 0 0 50000
nand_root_clk 0 0 0 100000000 0 0 50000
sys1_pll_266m 1 1 0 266666666 0 0 50000
nand_usdhc_bus 0 0 0 266666666 0 0 50000
nand_usdhc_rawnand_clk 0 0 0 266666666 0 0 50000
enet_axi 1 1 0 266666666 0 0 50000
enet1_root_clk 2 2 0 266666666 0 0 50000
sys1_pll_200m 0 0 0 200000000 0 0 50000
sys1_pll_160m 0 0 0 160000000 0 0 50000
sys1_pll_133m 1 1 0 133333333 0 0 50000
ahb 1 1 0 133333333 0 0 50000
ipg_root 2 2 0 66666667 0 0 50000
sdma1_clk 4 2 0 66666667 0 0 50000
tmu_root_clk 1 1 0 66666667 0 0 50000
sai3_ipg_clk 0 0 0 66666667 0 0 50000
sai2_ipg_clk 0 0 0 66666667 0 0 50000
ocotp_root_clk 0 0 0 66666667 0 0 50000
mu_root_clk 0 0 0 66666667 0 0 50000
sys1_pll_100m 0 0 0 100000000 0 0 50000
usb_phy_ref 0 0 0 100000000 0 0 50000
usb2_phy_root_clk 0 0 0 100000000 0 0 50000
usb1_phy_root_clk 0 0 0 100000000 0 0 50000
usb_core_ref 0 0 0 100000000 0 0 50000
usb2_ctrl_root_clk 0 0 0 100000000 0 0 50000
usb1_ctrl_root_clk 0 0 0 100000000 0 0 50000
qspi 0 0 0 100000000 0 0 50000
qspi_root_clk 0 0 0 100000000 0 0 50000
sys1_pll_80m 0 0 0 80000000 0 0 50000
sys1_pll_40m 0 0 0 40000000 0 0 50000
wrclk 0 0 0 40000000 0 0 50000
video_pll1_ref_sel 0 0 0 25000000 0 0 50000
video_pll1_bypass 0 0 0 25000000 0 0 50000
video_pll1_out 0 0 0 25000000 0 0 50000
video_pll1_ref_div 0 0 0 5000000 0 0 50000
video_pll1 0 0 0 650000000 0 0 50000
audio_pll2_ref_sel 0 0 0 25000000 0 0 50000
audio_pll2_bypass 0 0 0 25000000 0 0 50000
audio_pll2_out 0 0 0 25000000 0 0 50000
audio_pll2_ref_div 0 0 0 5000000 0 0 50000
audio_pll2 0 0 0 650000000 0 0 50000
audio_pll1_ref_sel 0 0 0 25000000 0 0 50000
audio_pll1_bypass 0 0 0 25000000 0 0 50000
audio_pll1_out 0 0 0 25000000 0 0 50000
sai1 0 0 0 25000000 0 0 50000
sai1_root_clk 0 0 0 25000000 0 0 50000
audio_pll1_ref_div 0 0 0 5000000 0 0 50000
audio_pll1 0 0 0 49152001 0 0 50000
vpu_pll_ref_sel 0 0 0 25000000 0 0 50000
vpu_pll_bypass 0 0 0 25000000 0 0 50000
vpu_pll_out 0 0 0 25000000 0 0 50000
vpu_pll_ref_div 0 0 0 5000000 0 0 50000
vpu_pll 0 0 0 600000000 0 0 50000
gpu_pll_ref_sel 0 0 0 25000000 0 0 50000
gpu_pll_bypass 0 0 0 25000000 0 0 50000
gpu_pll_out 0 0 0 25000000 0 0 50000
gpu_pll_ref_div 0 0 0 5000000 0 0 50000
gpu_pll 0 0 0 800000000 0 0 50000
arm_pll_ref_sel 1 1 0 25000000 0 0 50000
arm_pll_ref_div 1 1 0 5000000 0 0 50000
arm_pll 1 1 0 1000000000 0 0 50000
arm_pll_bypass 1 1 0 1000000000 0 0 50000
arm_pll_out 1 1 0 1000000000 0 0 50000
vpu_src 0 0 0 1000000000 0 0 50000
vpu_cg 0 0 0 1000000000 0 0 50000
vpu_div 0 0 0 1000000000 0 0 50000
arm_a53_src 1 1 0 1000000000 0 0 50000
arm_a53_cg 1 1 0 1000000000 0 0 50000
arm_a53_div 0 0 0 1000000000 0 0 50000
ckil 0 0 0 32768 0 0 50000
root@localhost:~#
root@localhost:~#