Hi,Nvidia, I have created the codec ES8388, but if i set
bitclock-slave;
frame-slave;
in dai-link, i can not measure the I2S_SCLK by oscilloscope, when i aplay the test.wav, i can measure the I2S_LRCK.
then if i change it as master mode
bitclock-master;
frame-master;
it shows the I2S_SCLK, but when I aplay test.wav, it stop immediately.
So, could someone help me to solve this problem, thank you.
@mkumard would you mind helping me to solve this problem, please.
mkumard
November 29, 2022, 4:41am
3
Hi,
Did you set I2S Pinmux setting for all I2S signals?. You can use jetson io tool available with “sudo /opt/nvidia/jetson-io/jetson-io.py”
Please confirm on the I2S Pinmux configuration which could be the issue here.
i used NV_Jetson_Nano_Module_Pinmux_Config_Template.xlsm to generate the pinmux.dtsi and gpio.dtsi.
but i dont know the value of nvidia,pull and nvidia,enable-input.
mkumard
November 29, 2022, 7:54am
6
Hi,
Please use the below config for the I2S4 pinmux in your file.
dap4_din_pj5 {
nvidia,pins = "dap4_din_pj5";
nvidia,function = "i2s4b";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
dap4_dout_pj6 {
nvidia,pins = "dap4_dout_pj6";
nvidia,function = "i2s4b";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
dap4_fs_pj4 {
nvidia,pins = "dap4_fs_pj4";
nvidia,function = "i2s4b";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
dap4_sclk_pj7 {
nvidia,pins = "dap4_sclk_pj7";
nvidia,function = "i2s4b";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
I have change the pinmux conifg, but nothing changed , master mode have all signals but play test.wav end immediately, slave mode can play test.wav normally, but no SCLK.
aplay-8578 [003] .... 284.728300: snd_soc_dapm_start: card=tegra-snd-t210ref-mobile-rt565x
aplay-8578 [003] .... 284.728344: snd_soc_dapm_widget_power: widget=Playback 1 val=1
aplay-8578 [003] .... 284.728345: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=1
aplay-8578 [003] .... 284.728347: snd_soc_dapm_path: *ADMAIF1 RX <- (direct) <- ADMAIF1 Receive
aplay-8578 [003] .... 284.728348: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=1
aplay-8578 [003] .... 284.728351: snd_soc_dapm_path: I2S4 Mux <- OPE2 <- OPE2 RX
aplay-8578 [003] .... 284.728352: snd_soc_dapm_path: I2S4 Mux <- ADX2-4 <- ADX2-4 RX
aplay-8578 [003] .... 284.728353: snd_soc_dapm_path: I2S4 Mux <- ADX2-3 <- ADX2-3 RX
aplay-8578 [003] .... 284.728354: snd_soc_dapm_path: I2S4 Mux <- ADX2-2 <- ADX2-2 RX
aplay-8578 [003] .... 284.728355: snd_soc_dapm_path: I2S4 Mux <- ADX2-1 <- ADX2-1 RX
aplay-8578 [003] .... 284.728355: snd_soc_dapm_path: I2S4 Mux <- AMX2 <- AMX2 RX
aplay-8578 [003] .... 284.728356: snd_soc_dapm_path: I2S4 Mux <- ADX1-4 <- ADX1-4 RX
aplay-8578 [003] .... 284.728357: snd_soc_dapm_path: I2S4 Mux <- ADX1-3 <- ADX1-3 RX
aplay-8578 [003] .... 284.728358: snd_soc_dapm_path: I2S4 Mux <- ADX1-2 <- ADX1-2 RX
aplay-8578 [003] .... 284.728358: snd_soc_dapm_path: I2S4 Mux <- ADX1-1 <- ADX1-1 RX
aplay-8578 [003] .... 284.728359: snd_soc_dapm_path: I2S4 Mux <- AMX1 <- AMX1 RX
aplay-8578 [003] .... 284.728360: snd_soc_dapm_path: I2S4 Mux <- DMIC3 <- DMIC3 RX
aplay-8578 [003] .... 284.728360: snd_soc_dapm_path: I2S4 Mux <- DMIC2 <- DMIC2 RX
aplay-8578 [003] .... 284.728361: snd_soc_dapm_path: I2S4 Mux <- DMIC1 <- DMIC1 RX
aplay-8578 [003] .... 284.728362: snd_soc_dapm_path: I2S4 Mux <- IQC2-2 <- IQC2-2 RX
aplay-8578 [003] .... 284.728362: snd_soc_dapm_path: I2S4 Mux <- IQC2-1 <- IQC2-1 RX
aplay-8578 [003] .... 284.728363: snd_soc_dapm_path: I2S4 Mux <- IQC1-2 <- IQC1-2 RX
aplay-8578 [003] .... 284.728364: snd_soc_dapm_path: I2S4 Mux <- IQC1-1 <- IQC1-1 RX
aplay-8578 [003] .... 284.728365: snd_soc_dapm_path: I2S4 Mux <- MVC2 <- MVC2 RX
aplay-8578 [003] .... 284.728365: snd_soc_dapm_path: I2S4 Mux <- MVC1 <- MVC1 RX
aplay-8578 [003] .... 284.728366: snd_soc_dapm_path: I2S4 Mux <- OPE1 <- OPE1 RX
aplay-8578 [003] .... 284.728366: snd_soc_dapm_path: I2S4 Mux <- AFC6 <- AFC6 RX
aplay-8578 [003] .... 284.728367: snd_soc_dapm_path: I2S4 Mux <- AFC5 <- AFC5 RX
aplay-8578 [003] .... 284.728368: snd_soc_dapm_path: I2S4 Mux <- AFC4 <- AFC4 RX
aplay-8578 [003] .... 284.728368: snd_soc_dapm_path: I2S4 Mux <- AFC3 <- AFC3 RX
aplay-8578 [003] .... 284.728369: snd_soc_dapm_path: I2S4 Mux <- AFC2 <- AFC2 RX
aplay-8578 [003] .... 284.728369: snd_soc_dapm_path: I2S4 Mux <- AFC1 <- AFC1 RX
aplay-8578 [003] .... 284.728370: snd_soc_dapm_path: I2S4 Mux <- MIXER1-5 <- MIXER1-5 RX
aplay-8578 [003] .... 284.728371: snd_soc_dapm_path: I2S4 Mux <- MIXER1-4 <- MIXER1-4 RX
aplay-8578 [003] .... 284.728371: snd_soc_dapm_path: I2S4 Mux <- MIXER1-3 <- MIXER1-3 RX
aplay-8578 [003] .... 284.728372: snd_soc_dapm_path: I2S4 Mux <- MIXER1-2 <- MIXER1-2 RX
aplay-8578 [003] .... 284.728374: snd_soc_dapm_path: I2S4 Mux <- MIXER1-1 <- MIXER1-1 RX
aplay-8578 [003] .... 284.728374: snd_soc_dapm_path: I2S4 Mux <- SFC4 <- SFC4 RX
aplay-8578 [003] .... 284.728375: snd_soc_dapm_path: I2S4 Mux <- SFC3 <- SFC3 RX
aplay-8578 [003] .... 284.728376: snd_soc_dapm_path: I2S4 Mux <- SFC2 <- SFC2 RX
aplay-8578 [003] .... 284.728376: snd_soc_dapm_path: I2S4 Mux <- SFC1 <- SFC1 RX
aplay-8578 [003] .... 284.728377: snd_soc_dapm_path: I2S4 Mux <- I2S5 <- I2S5 RX
aplay-8578 [003] .... 284.728378: snd_soc_dapm_path: I2S4 Mux <- I2S4 <- I2S4 RX
aplay-8578 [003] .... 284.728379: snd_soc_dapm_path: I2S4 Mux <- I2S3 <- I2S3 RX
aplay-8578 [003] .... 284.728379: snd_soc_dapm_path: I2S4 Mux <- I2S2 <- I2S2 RX
aplay-8578 [003] .... 284.728380: snd_soc_dapm_path: I2S4 Mux <- I2S1 <- I2S1 RX
aplay-8578 [003] .... 284.728381: snd_soc_dapm_path: I2S4 Mux <- ADMAIF10 <- ADMAIF10 RX
aplay-8578 [003] .... 284.728381: snd_soc_dapm_path: I2S4 Mux <- ADMAIF9 <- ADMAIF9 RX
aplay-8578 [003] .... 284.728382: snd_soc_dapm_path: I2S4 Mux <- ADMAIF8 <- ADMAIF8 RX
aplay-8578 [003] .... 284.728383: snd_soc_dapm_path: I2S4 Mux <- ADMAIF7 <- ADMAIF7 RX
aplay-8578 [003] .... 284.728383: snd_soc_dapm_path: I2S4 Mux <- ADMAIF6 <- ADMAIF6 RX
aplay-8578 [003] .... 284.728384: snd_soc_dapm_path: I2S4 Mux <- ADMAIF5 <- ADMAIF5 RX
aplay-8578 [003] .... 284.728385: snd_soc_dapm_path: I2S4 Mux <- ADMAIF4 <- ADMAIF4 RX
aplay-8578 [003] .... 284.728386: snd_soc_dapm_path: I2S4 Mux <- ADMAIF3 <- ADMAIF3 RX
aplay-8578 [003] .... 284.728386: snd_soc_dapm_path: I2S4 Mux <- ADMAIF2 <- ADMAIF2 RX
aplay-8578 [003] .... 284.728387: snd_soc_dapm_path: *I2S4 Mux <- ADMAIF1 <- ADMAIF1 RX
aplay-8578 [003] .... 284.728387: snd_soc_dapm_widget_power: widget=I2S4 Mux val=1
aplay-8578 [003] .... 284.728389: snd_soc_dapm_path: *I2S4 TX <- (direct) <- I2S4 Mux
aplay-8578 [003] .... 284.728390: snd_soc_dapm_widget_power: widget=I2S4 TX val=1
aplay-8578 [003] .... 284.728390: snd_soc_dapm_path: *I2S4 Transmit <- (direct) <- I2S4 TX
aplay-8578 [003] .... 284.728391: snd_soc_dapm_widget_power: widget=I2S4 Transmit val=1
aplay-8578 [003] .... 284.728392: snd_soc_dapm_path: *I2S4 Transmit-I2S4 CIF Receive <- (direct) <- I2S4 Transmit
aplay-8578 [003] .... 284.728393: snd_soc_dapm_widget_power: widget=I2S4 Transmit-I2S4 CIF Receive val=1
aplay-8578 [003] .... 284.728394: snd_soc_dapm_path: *I2S4 CIF Receive <- (direct) <- I2S4 Transmit-I2S4 CIF Receive
aplay-8578 [003] .... 284.728394: snd_soc_dapm_widget_power: widget=I2S4 CIF Receive val=1
aplay-8578 [003] .... 284.728395: snd_soc_dapm_path: *I2S4 CIF RX <- (direct) <- I2S4 CIF Receive
aplay-8578 [003] .... 284.728396: snd_soc_dapm_widget_power: widget=I2S4 CIF RX val=1
aplay-8578 [003] .... 284.728397: snd_soc_dapm_path: *I2S4 DAP TX <- (direct) <- I2S4 CIF RX
aplay-8578 [003] .... 284.728398: snd_soc_dapm_widget_power: widget=I2S4 DAP TX val=1
aplay-8578 [003] .... 284.728399: snd_soc_dapm_path: *I2S4 DAP Transmit <- (direct) <- I2S4 DAP TX
aplay-8578 [003] .... 284.728399: snd_soc_dapm_widget_power: widget=I2S4 DAP Transmit val=1
aplay-8578 [003] .... 284.728400: snd_soc_dapm_path: *I2S4 DAP Transmit-x Playback <- (direct) <- I2S4 DAP Transmit
aplay-8578 [003] .... 284.728401: snd_soc_dapm_widget_power: widget=I2S4 DAP Transmit-x Playback val=1
aplay-8578 [003] .... 284.728402: snd_soc_dapm_path: *x Playback <- (direct) <- I2S4 DAP Transmit-x Playback
aplay-8578 [003] .... 284.728402: snd_soc_dapm_widget_power: widget=x Playback val=1
aplay-8578 [003] .... 284.728403: snd_soc_dapm_path: *x Left DAC <- (direct) <- x Playback
aplay-8578 [003] .... 284.728404: snd_soc_dapm_widget_power: widget=x Left DAC val=1
aplay-8578 [003] .... 284.728405: snd_soc_dapm_path: *x Right DAC <- (direct) <- x Playback
aplay-8578 [003] .... 284.728405: snd_soc_dapm_widget_power: widget=x Right DAC val=1
aplay-8578 [003] .... 284.728407: snd_soc_dapm_path: x Left Mixer <- Left Bypass Switch <- x Left Line Mux
aplay-8578 [003] .... 284.728408: snd_soc_dapm_path: *x Left Mixer <- Left Playback Switch <- x Left DAC
aplay-8578 [003] .... 284.728408: snd_soc_dapm_widget_power: widget=x Left Mixer val=1
aplay-8578 [003] .... 284.728409: snd_soc_dapm_path: x Right Mixer <- Right Bypass Switch <- x Right Line Mux
aplay-8578 [003] .... 284.728410: snd_soc_dapm_path: *x Right Mixer <- Right Playback Switch <- x Right DAC
aplay-8578 [003] .... 284.728411: snd_soc_dapm_widget_power: widget=x Right Mixer val=1
aplay-8578 [003] .... 284.728412: snd_soc_dapm_path: *x Left Out 2 <- (direct) <- x Left Mixer
aplay-8578 [003] .... 284.728413: snd_soc_dapm_path: *x Left Out 1 <- (direct) <- x Left Mixer
aplay-8578 [003] .... 284.728413: snd_soc_dapm_widget_power: widget=x Left Out 1 val=1
aplay-8578 [003] .... 284.728414: snd_soc_dapm_path: *x Right Out 2 <- (direct) <- x Right Mixer
aplay-8578 [003] .... 284.728415: snd_soc_dapm_path: *x Right Out 1 <- (direct) <- x Right Mixer
aplay-8578 [003] .... 284.728415: snd_soc_dapm_widget_power: widget=x Right Out 1 val=1
aplay-8578 [003] .... 284.728417: snd_soc_dapm_path: *x LOUT1 <- (direct) <- x Left Out 1
aplay-8578 [003] .... 284.728417: snd_soc_dapm_widget_power: widget=x LOUT1 val=1
aplay-8578 [003] .... 284.728418: snd_soc_dapm_path: *x ROUT1 <- (direct) <- x Right Out 1
aplay-8578 [003] .... 284.728419: snd_soc_dapm_widget_power: widget=x ROUT1 val=1
aplay-8578 [003] .... 284.728419: snd_soc_dapm_path: *x Headphone <- (direct) <- x ROUT1
aplay-8578 [003] .... 284.728420: snd_soc_dapm_path: *x Headphone <- (direct) <- x LOUT1
aplay-8578 [003] .... 284.728421: snd_soc_dapm_widget_power: widget=x Headphone val=1
aplay-8578 [003] .... 284.728472: snd_soc_dapm_walk_done: tegra-snd-t210ref-mobile-rt565x: checks 25 power, 24 path, 75 neighbour
aplay-8578 [000] .... 290.996605: snd_soc_dapm_start: card=tegra-snd-t210ref-mobile-rt565x
aplay-8578 [000] .... 290.996642: snd_soc_dapm_widget_power: widget=Playback 1 val=0
aplay-8578 [000] .... 290.996644: snd_soc_dapm_path: *ADMAIF1 Receive <- (direct) <- Playback 1
aplay-8578 [000] .... 290.996645: snd_soc_dapm_path: *ADMAIF1 Receive <- (direct) <- ADMAIF1 CIF Receive-ADMAIF1 Receive
aplay-8578 [000] .... 290.996645: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=0
aplay-8578 [000] .... 290.996646: snd_soc_dapm_path: *ADMAIF1 RX <- (direct) <- ADMAIF1 Receive
aplay-8578 [000] .... 290.996647: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=0
aplay-8578 [000] .... 290.996649: snd_soc_dapm_path: I2S4 Mux <- OPE2 <- OPE2 RX
aplay-8578 [000] .... 290.996650: snd_soc_dapm_path: I2S4 Mux <- ADX2-4 <- ADX2-4 RX
aplay-8578 [000] .... 290.996651: snd_soc_dapm_path: I2S4 Mux <- ADX2-3 <- ADX2-3 RX
aplay-8578 [000] .... 290.996652: snd_soc_dapm_path: I2S4 Mux <- ADX2-2 <- ADX2-2 RX
aplay-8578 [000] .... 290.996653: snd_soc_dapm_path: I2S4 Mux <- ADX2-1 <- ADX2-1 RX
aplay-8578 [000] .... 290.996654: snd_soc_dapm_path: I2S4 Mux <- AMX2 <- AMX2 RX
aplay-8578 [000] .... 290.996654: snd_soc_dapm_path: I2S4 Mux <- ADX1-4 <- ADX1-4 RX
aplay-8578 [000] .... 290.996655: snd_soc_dapm_path: I2S4 Mux <- ADX1-3 <- ADX1-3 RX
aplay-8578 [000] .... 290.996655: snd_soc_dapm_path: I2S4 Mux <- ADX1-2 <- ADX1-2 RX
aplay-8578 [000] .... 290.996656: snd_soc_dapm_path: I2S4 Mux <- ADX1-1 <- ADX1-1 RX
aplay-8578 [000] .... 290.996657: snd_soc_dapm_path: I2S4 Mux <- AMX1 <- AMX1 RX
aplay-8578 [000] .... 290.996657: snd_soc_dapm_path: I2S4 Mux <- DMIC3 <- DMIC3 RX
aplay-8578 [000] .... 290.996658: snd_soc_dapm_path: I2S4 Mux <- DMIC2 <- DMIC2 RX
aplay-8578 [000] .... 290.996659: snd_soc_dapm_path: I2S4 Mux <- DMIC1 <- DMIC1 RX
aplay-8578 [000] .... 290.996659: snd_soc_dapm_path: I2S4 Mux <- IQC2-2 <- IQC2-2 RX
aplay-8578 [000] .... 290.996660: snd_soc_dapm_path: I2S4 Mux <- IQC2-1 <- IQC2-1 RX
aplay-8578 [000] .... 290.996660: snd_soc_dapm_path: I2S4 Mux <- IQC1-2 <- IQC1-2 RX
aplay-8578 [000] .... 290.996661: snd_soc_dapm_path: I2S4 Mux <- IQC1-1 <- IQC1-1 RX
aplay-8578 [000] .... 290.996662: snd_soc_dapm_path: I2S4 Mux <- MVC2 <- MVC2 RX
aplay-8578 [000] .... 290.996663: snd_soc_dapm_path: I2S4 Mux <- MVC1 <- MVC1 RX
aplay-8578 [000] .... 290.996663: snd_soc_dapm_path: I2S4 Mux <- OPE1 <- OPE1 RX
aplay-8578 [000] .... 290.996664: snd_soc_dapm_path: I2S4 Mux <- AFC6 <- AFC6 RX
aplay-8578 [000] .... 290.996664: snd_soc_dapm_path: I2S4 Mux <- AFC5 <- AFC5 RX
aplay-8578 [000] .... 290.996665: snd_soc_dapm_path: I2S4 Mux <- AFC4 <- AFC4 RX
aplay-8578 [000] .... 290.996666: snd_soc_dapm_path: I2S4 Mux <- AFC3 <- AFC3 RX
aplay-8578 [000] .... 290.996666: snd_soc_dapm_path: I2S4 Mux <- AFC2 <- AFC2 RX
aplay-8578 [000] .... 290.996667: snd_soc_dapm_path: I2S4 Mux <- AFC1 <- AFC1 RX
aplay-8578 [000] .... 290.996668: snd_soc_dapm_path: I2S4 Mux <- MIXER1-5 <- MIXER1-5 RX
aplay-8578 [000] .... 290.996669: snd_soc_dapm_path: I2S4 Mux <- MIXER1-4 <- MIXER1-4 RX
aplay-8578 [000] .... 290.996670: snd_soc_dapm_path: I2S4 Mux <- MIXER1-3 <- MIXER1-3 RX
aplay-8578 [000] .... 290.996671: snd_soc_dapm_path: I2S4 Mux <- MIXER1-2 <- MIXER1-2 RX
aplay-8578 [000] .... 290.996672: snd_soc_dapm_path: I2S4 Mux <- MIXER1-1 <- MIXER1-1 RX
aplay-8578 [000] .... 290.996672: snd_soc_dapm_path: I2S4 Mux <- SFC4 <- SFC4 RX
aplay-8578 [000] .... 290.996673: snd_soc_dapm_path: I2S4 Mux <- SFC3 <- SFC3 RX
aplay-8578 [000] .... 290.996673: snd_soc_dapm_path: I2S4 Mux <- SFC2 <- SFC2 RX
aplay-8578 [000] .... 290.996674: snd_soc_dapm_path: I2S4 Mux <- SFC1 <- SFC1 RX
aplay-8578 [000] .... 290.996675: snd_soc_dapm_path: I2S4 Mux <- I2S5 <- I2S5 RX
aplay-8578 [000] .... 290.996675: snd_soc_dapm_path: I2S4 Mux <- I2S4 <- I2S4 RX
aplay-8578 [000] .... 290.996676: snd_soc_dapm_path: I2S4 Mux <- I2S3 <- I2S3 RX
aplay-8578 [000] .... 290.996677: snd_soc_dapm_path: I2S4 Mux <- I2S2 <- I2S2 RX
aplay-8578 [000] .... 290.996677: snd_soc_dapm_path: I2S4 Mux <- I2S1 <- I2S1 RX
aplay-8578 [000] .... 290.996678: snd_soc_dapm_path: I2S4 Mux <- ADMAIF10 <- ADMAIF10 RX
aplay-8578 [000] .... 290.996679: snd_soc_dapm_path: I2S4 Mux <- ADMAIF9 <- ADMAIF9 RX
aplay-8578 [000] .... 290.996679: snd_soc_dapm_path: I2S4 Mux <- ADMAIF8 <- ADMAIF8 RX
aplay-8578 [000] .... 290.996680: snd_soc_dapm_path: I2S4 Mux <- ADMAIF7 <- ADMAIF7 RX
aplay-8578 [000] .... 290.996681: snd_soc_dapm_path: I2S4 Mux <- ADMAIF6 <- ADMAIF6 RX
aplay-8578 [000] .... 290.996682: snd_soc_dapm_path: I2S4 Mux <- ADMAIF5 <- ADMAIF5 RX
aplay-8578 [000] .... 290.996682: snd_soc_dapm_path: I2S4 Mux <- ADMAIF4 <- ADMAIF4 RX
aplay-8578 [000] .... 290.996683: snd_soc_dapm_path: I2S4 Mux <- ADMAIF3 <- ADMAIF3 RX
aplay-8578 [000] .... 290.996684: snd_soc_dapm_path: I2S4 Mux <- ADMAIF2 <- ADMAIF2 RX
aplay-8578 [000] .... 290.996684: snd_soc_dapm_path: *I2S4 Mux <- ADMAIF1 <- ADMAIF1 RX
aplay-8578 [000] .... 290.996685: snd_soc_dapm_widget_power: widget=I2S4 Mux val=0
aplay-8578 [000] .... 290.996687: snd_soc_dapm_path: *I2S4 TX <- (direct) <- I2S4 Mux
aplay-8578 [000] .... 290.996687: snd_soc_dapm_widget_power: widget=I2S4 TX val=0
aplay-8578 [000] .... 290.996688: snd_soc_dapm_path: *I2S4 Transmit <- (direct) <- I2S4 TX
aplay-8578 [000] .... 290.996689: snd_soc_dapm_widget_power: widget=I2S4 Transmit val=0
aplay-8578 [000] .... 290.996690: snd_soc_dapm_path: *I2S4 Transmit-I2S4 CIF Receive <- (direct) <- I2S4 Transmit
aplay-8578 [000] .... 290.996690: snd_soc_dapm_widget_power: widget=I2S4 Transmit-I2S4 CIF Receive val=0
aplay-8578 [000] .... 290.996691: snd_soc_dapm_path: *I2S4 CIF Receive <- (direct) <- I2S4 Transmit-I2S4 CIF Receive
aplay-8578 [000] .... 290.996692: snd_soc_dapm_widget_power: widget=I2S4 CIF Receive val=0
aplay-8578 [000] .... 290.996693: snd_soc_dapm_path: *I2S4 CIF RX <- (direct) <- I2S4 CIF Receive
aplay-8578 [000] .... 290.996693: snd_soc_dapm_widget_power: widget=I2S4 CIF RX val=0
aplay-8578 [000] .... 290.996694: snd_soc_dapm_path: *I2S4 DAP TX <- (direct) <- I2S4 CIF RX
aplay-8578 [000] .... 290.996695: snd_soc_dapm_widget_power: widget=I2S4 DAP TX val=0
aplay-8578 [000] .... 290.996696: snd_soc_dapm_path: *I2S4 DAP Transmit <- (direct) <- I2S4 DAP TX
aplay-8578 [000] .... 290.996696: snd_soc_dapm_widget_power: widget=I2S4 DAP Transmit val=0
aplay-8578 [000] .... 290.996697: snd_soc_dapm_path: *I2S4 DAP Transmit-x Playback <- (direct) <- I2S4 DAP Transmit
aplay-8578 [000] .... 290.996698: snd_soc_dapm_widget_power: widget=I2S4 DAP Transmit-x Playback val=0
aplay-8578 [000] .... 290.996699: snd_soc_dapm_path: *x Playback <- (direct) <- I2S4 DAP Transmit-x Playback
aplay-8578 [000] .... 290.996700: snd_soc_dapm_widget_power: widget=x Playback val=0
aplay-8578 [000] .... 290.996700: snd_soc_dapm_path: *x Left DAC <- (direct) <- x Playback
aplay-8578 [000] .... 290.996701: snd_soc_dapm_widget_power: widget=x Left DAC val=0
aplay-8578 [000] .... 290.996702: snd_soc_dapm_path: *x Right DAC <- (direct) <- x Playback
aplay-8578 [000] .... 290.996702: snd_soc_dapm_widget_power: widget=x Right DAC val=0
aplay-8578 [000] .... 290.996703: snd_soc_dapm_path: x Left Mixer <- Left Bypass Switch <- x Left Line Mux
aplay-8578 [000] .... 290.996704: snd_soc_dapm_path: *x Left Mixer <- Left Playback Switch <- x Left DAC
aplay-8578 [000] .... 290.996705: snd_soc_dapm_widget_power: widget=x Left Mixer val=0
aplay-8578 [000] .... 290.996706: snd_soc_dapm_path: x Right Mixer <- Right Bypass Switch <- x Right Line Mux
aplay-8578 [000] .... 290.996706: snd_soc_dapm_path: *x Right Mixer <- Right Playback Switch <- x Right DAC
aplay-8578 [000] .... 290.996707: snd_soc_dapm_widget_power: widget=x Right Mixer val=0
aplay-8578 [000] .... 290.996708: snd_soc_dapm_path: *x Left Out 1 <- (direct) <- x Left Mixer
aplay-8578 [000] .... 290.996708: snd_soc_dapm_widget_power: widget=x Left Out 1 val=0
aplay-8578 [000] .... 290.996709: snd_soc_dapm_path: *x Right Out 1 <- (direct) <- x Right Mixer
aplay-8578 [000] .... 290.996710: snd_soc_dapm_widget_power: widget=x Right Out 1 val=0
aplay-8578 [000] .... 290.996710: snd_soc_dapm_path: *x LOUT1 <- (direct) <- x Left Out 1
aplay-8578 [000] .... 290.996711: snd_soc_dapm_widget_power: widget=x LOUT1 val=0
aplay-8578 [000] .... 290.996712: snd_soc_dapm_path: *x ROUT1 <- (direct) <- x Right Out 1
aplay-8578 [000] .... 290.996712: snd_soc_dapm_widget_power: widget=x ROUT1 val=0
aplay-8578 [000] .... 290.996713: snd_soc_dapm_path: *x Headphone <- (direct) <- x ROUT1
aplay-8578 [000] .... 290.996714: snd_soc_dapm_path: *x Headphone <- (direct) <- x LOUT1
aplay-8578 [000] .... 290.996714: snd_soc_dapm_widget_power: widget=x Headphone val=0
aplay-8578 [000] .... 290.996752: snd_soc_dapm_walk_done: tegra-snd-t210ref-mobile-rt565x: checks 22 power, 22 path, 75 neighbour
mkumard
November 29, 2022, 2:53pm
9
Hi,
This is something strange. Can you confirm from the target on whether pinmux change actually applied by dumping sysfs node info for pinmux.
It can’t be a case like LRCK coming out and SCLK not as the I2S controller generates both from a single clock source during playback. We need to make sure in Tegra Master mode both these clocks are coming out of 40 pin header.
In Tegra Slave, though Codec sends both clock again due to wrong pinmux setting SCLK may not be reaching I2S Controller in that case playback won’t run.
how to confirm that,
ES8388 user Guide.pdf (6.0 MB)
would you mind helping me to check the doc , chapter 6.1, it seems that i need set LRCK and SCLK as output in mater mode , so dap4_sclk_pj7 is SCLK, and dap4_fs_pj4 is LRCK, it’s right ?
mkumard
November 30, 2022, 4:17am
11
Hi,
ES8388 codec supports both Master and Slave. So ideally if you set ES8388 as Master then Tegra I2S should be configured as Slave and vise-versa. Can you check on this.
dap4_sclk_pj7 is SCLK, and dap4_fs_pj4 is LRCK, it’s right ?
Yes, this is right. Make sure pinmux are set properly on target as mentioned.
hi, how to set Tegra I2S as Slave or master, and the register value shows below
~/Developer$ sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg
[sudo] password for biao:
Bank: 1 Reg: 0x70003144 Val: 0x00000044 -> dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000044 -> dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000004 -> dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000044 -> dap4_sclk_pj7
and if i set codec as mater
bitclock-master;
frame-master;
i get this dmesg
[ 11.103518] tegra210-i2s tegra210-i2s.3: Failed at I2S4 DAP TX sw reset
[ 11.110190] tegra210-i2s tegra210-i2s.3: ASoC: PRE_PMU: I2S4 DAP TX event failed: -22
maybe this is the reason why i play the test.wav, it end immediately, so hot to fix it
hi, when i set codec as slave mode, i check the i2s regsiter a0 value is
sudo cat /sys/kernel/debug/regmap/tegra210-i2s.3/registers | grep a0
a0: 0f000403
and when it as master mode, the value is
sudo grep "a0:" /sys/kernel/debug/regmap/tegra210-i2s.3/registers
a0: 0f000003
mkumard
December 2, 2022, 4:50am
15
Hi,
The pinmux values are correct for I2S4. Yes, the I2S register 0xa0 is showing right values based on slave/master config.
What happens to the I2S clock out when Tegra was master with below settings. Do you able to probe both clocks out of pin?. Can you provide info on which pin number on 40 pin header you probing for I2S signals.
bitclock-slave;
frame-slave;
when Tegra was master ,codec as slave, the MCLK should be 12288000, and dap4_fs_pj4 is 48khz, dap4_din_pj5 have value, dap4_dout_pj6 no value, dap4_sclk_pj7 when play test.wave have some noise, but no clear value.
for pin number on 40 pin header i am not sure , the hardware engineer told me that the pin number is same in picutre, 195 ,193,197,199.
sudo cat /sys/kernel/debug/pinctrl/700008d4.pinmux/pinconf-groups | grep dap4
92 (dap4_fs_pj4):
93 (dap4_din_pj5):
94 (dap4_dout_pj6):
95 (dap4_sclk_pj7):
i am not sure the value of above has help or not , just list here.
mkumard
December 2, 2022, 7:13am
18
Hi,
From 40 pin header you need to connect the codec I2S to
Signal
Pin Number
I2S4_DIN
38
I2S4_DOUT
40
I2S4_FS
35
I2S4_LRCK
12
I assume above pins are used for Codec I2S connections. you need to probe above pins on 40 pin and check if signals are as expected.
From CVM module **P3448 ** 199,197, 193, 195 pin on the connector maps to I2S4.
hi ,we use the customer board, and using tegra210-p3448-0002-p3449-0000-b00.dtb, and the pin of those header shows in picture above, and result that sclk have no signals.
I2S4_FS value 48khz
I2S4_DIN
SCLK have noise when palyed, cannot read value.
mkumard
December 2, 2022, 9:17am
23
Hi,
To make things bit more clear, Can you help me understand where exactly the signal probing done on the board. As pinmux settings are proper we expect SCLK to be working fine.
hi, we changed other nano board then got the SCLK so that it seems the hardware issue, so now we have MCLK, MCLK, LRCK and DOUT signal when played test.wav, but the headphone still not voice, only have bee bee noise at beginning of playing.
mkumard
December 7, 2022, 11:52am
25
Hi,
That’s unfortunate, regarding the noisy playback on Headphone. There are few things to be checked now.
Again on same point, either Tegra or Codec has to be Master not both configured to same mode.
Check on the required codec mixer control. If needed check with codec vendor on right controls to be used.
Dump the codec registers if needed to cross check for right configuration.