Audio codec in Jeston nano

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.

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.

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

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 ?

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

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.

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.

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.

Hi,
That’s unfortunate, regarding the noisy playback on Headphone. There are few things to be checked now.

  1. Again on same point, either Tegra or Codec has to be Master not both configured to same mode.
  2. Check on the required codec mixer control. If needed check with codec vendor on right controls to be used.
  3. Dump the codec registers if needed to cross check for right configuration.