Sound card problem with wm8978

I now use the external encoding of wm8978. I have completed the registration section, but I have no sound or even a clock signal

i2c@c240000 {
		status = "okay";
		lp8556-backlight-s-wqxga-10-1@2c {
			status = "disabled";
			disable-on-kernel-charging;
			compatible = "ti,lp8556";
			reg = <0x2C>;

			bl-name = "pwm-backlight"; /* Match liblights naming expectations */
			init-brt = /bits/ 8 <0xFF>; /* Max brightness */
			dev-ctrl = /bits/ 8 <0x80>; /* PWM, enable standby mode */
			pwm-period = <40161>;

			pwm-names = "lp8556";
			pwms = <&tegra_pwm1 0 40161>;

			bl-measured = < 0 1 2 3 4 5 5 6
					7 8 9 10 11 11 12 13
					14 15 15 16 17 18 19 20
					21 22 22 23 24 25 26 27
					28 29 30 31 31 32 33 34
					35 36 37 37 38 39 40 41
					41 42 43 44 45 46 47 48
					48 49 50 51 52 53 54 54
					55 56 57 58 58 59 60 61
					62 63 64 65 66 67 68 69
					70 71 72 73 74 75 75 76
					77 78 79 80 81 82 83 84
					85 86 87 88 89 90 91 92
					93 94 94 95 96 97 98 99
					100 101 102 104 105 106 107 108
					109 110 111 112 113 114 115 116
					117 118 119 120 121 122 123 125
					126 127 128 129 130 131 132 133
					134 135 136 137 138 139 140 141
					142 143 144 146 147 148 149 150
					151 152 153 154 155 156 157 158
					159 160 161 162 163 164 165 167
					168 169 170 171 172 173 174 175
					176 178 179 180 181 182 183 184
					185 186 187 188 189 190 191 192
					193 194 195 196 197 199 200 201
					202 203 204 205 206 207 208 210
					211 212 213 214 215 216 217 219
					220 221 222 223 225 226 227 228
					229 230 231 233 234 235 236 237
					238 239 240 241 242 244 245 246
					247 248 249 250 251 253 254 255 >;
		};
         wm8978: wm8978.1-001a@1a{
         		compatible = "wm,wm8978";
         		status = "okay";
         		reg = <0x1a>;
         		clocks = <&tegra_car TEGRA186_CLK_AUD_MCLK>;
         		clock-names = "mclk";
         		
         };
	};
tegra_sound: sound {
		compatible = "nvidia,tegra-audio-t186ref-mobile-rt565x";
		nvidia,model = "tegra-snd-t186ref-mobile-rt565x";
		nvidia,num-codec-link = <13>;
		nvidia,num-clk = <8>;
		nvidia,clk-rates = < 270950400	/* PLLA_x11025_RATE */
				     11289600	/* AUD_MCLK_x11025_RATE */
				     45158400	/* PLLA_OUT0_x11025_RATE */
				     45158400	/* AHUB_x11025_RATE */
				     245760000  /* PLLA_x8000_RATE */
				     12288000	/* AUD_MCLK_x8000_RATE */
				     49152000	/* PLLA_OUT0_x8000_RATE */
				     49152000 >;/* AHUB_x8000_RATE */
		clocks = <&tegra_car TEGRA186_CLK_PLLP_OUT0>,
			<&tegra_car TEGRA186_CLK_PLLA>,
			<&tegra_car TEGRA186_CLK_PLL_A_OUT0>,
			<&tegra_car TEGRA186_CLK_AHUB>,
			<&tegra_car TEGRA186_CLK_CLK_M>,
			<&tegra_car TEGRA186_CLK_AUD_MCLK>;
		clock-names = "pll_p_out1", "pll_a", "pll_a_out0", "ahub",
				"clk_m", "extern1";
		resets = <&tegra_car TEGRA186_RESET_AUD_MCLK>;
		reset-names = "extern1_rst";

		status = "okay";
		nvidia,audio-routing =
			"x Headphone",		"x OUT",
			"x IN",			"x Mic",
			"y Headphone",		"y OUT",
			"y IN",			"y Mic",
			"z IN",			"z OUT",
			"m Headphone",		"m OUT",
			"m IN",			"m Mic",
			"n Headphone",		"n OUT",
			"n IN",			"n Mic",
			"o Headphone",		"o OUT",
			"o IN",			"o Mic",
			"a IN",			"a Mic",
			"b IN",			"b Mic",
			"c IN",			"c Mic",
			"d IN",			"d Mic",
			"e Headphone",		"e OUT",
			"e IN",			"e Mic",
			"d1 Headphone",		"d1 OUT",
			"d2 Headphone",		"d2 OUT",
			"z LMICN",			"z IN",
			"z LMICP",			"z IN",
            "z OUT",		"z RHP",
            "z OUT",		"z LHP",
            "z OUT",		"z LSPK",
            "z OUT",		"z RSPK";
            
		nvidia,xbar = <&tegra_axbar>;
/*
		rt565x_dai_link: nvidia,dai-link-1 {
			link-name = "rt565x-playback";
			cpu-dai = <&tegra_i2s1>;
			codec-dai = <&spdif_dit0>;
			cpu-dai-name = "I2S1";
			codec-dai-name = "dit-hifi";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			bclk_ratio = <0>;
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "x";
			status = "okay";
		};
		*/
		rt565x_dai_link: nvidia,dai-link-1 {
			link-name = "wm8978-playback";
			cpu-dai = <&tegra_i2s1>;
			codec-dai = <&wm8978>;
			cpu-dai-name = "I2S1";
			codec-dai-name = "wm8978-hifi";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			bclk_ratio = <0>;
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "z";
			status = "okay";
		};
		nvidia,dai-link-2 {
			link-name = "spdif-dit-1";
			cpu-dai = <&tegra_i2s2>;
			codec-dai = <&spdif_dit1>;
			cpu-dai-name = "I2S2";
			codec-dai-name = "dit-hifi";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			bclk_ratio = <1>;
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "y";
			status = "okay";
		};
		nvidia,dai-link-3 {
			link-name = "spdif-dit-2";
			cpu-dai = <&tegra_i2s3>;
			codec-dai = <&spdif_dit2>;
			cpu-dai-name = "I2S3";
			codec-dai-name = "dit-hifi";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			bclk_ratio = <1>;
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "x";
			status = "okay";
		};
root@tegra-ubuntu:~# cat /sys/kernel/debug/asoc/codecs 
tegra186-dspk.1
tegra186-dspk.0
tegra210-afc.5
tegra210-afc.4
tegra210-afc.3
tegra210-afc.2
tegra210-afc.1
tegra210-afc.0
tegra186-asrc
tegra210-ope.0
tegra210-spdif
tegra210-mvc.1
tegra210-mvc.0
tegra210-dmic.3
tegra210-dmic.2
tegra210-dmic.1
tegra210-dmic.0
tegra210-adx.3
tegra210-adx.2
tegra210-adx.1
tegra210-adx.0
tegra210-amx.3
tegra210-amx.2
tegra210-amx.1
tegra210-amx.0
tegra210-i2s.5
tegra210-i2s.4
tegra210-i2s.3
tegra210-i2s.2
tegra210-i2s.1
tegra210-i2s.0
tegra210-mixer
tegra210-sfc.3
tegra210-sfc.2
tegra210-sfc.1
tegra210-sfc.0
tegra210-admaif
2900800.ahub
adsp_audio
wm8978.1-001a
spdif_dit:spdif-dit.13@d
spdif_dit:spdif-dit.12@c
spdif_dit:spdif-dit.11@b
spdif_dit:spdif-dit.10@a
spdif_dit:spdif-dit.9@9
spdif_dit:spdif-dit.8@8
spdif_dit:spdif-dit.7@7
spdif_dit:spdif-dit.6@6
spdif_dit:spdif-dit.5@5
spdif_dit:spdif-dit.4@4
spdif_dit:spdif-dit.3@3
spdif_dit:spdif-dit.2@2
spdif_dit:spdif-dit.1@1
spdif_dit:spdif-dit.0@0
snd-soc-dummy
root@tegra-ubuntu:~# cat /sys/kernel/debug/asoc/dais 
CIF Left
DAP Right
CIF Right
DAP Left
CIF Left
DAP Right
CIF Right
DAP Left
AFC OUT
......
ADSP-ADMAIF5
ADSP-ADMAIF4
ADSP-ADMAIF3
ADSP-ADMAIF2
ADSP-ADMAIF1
ADSP-EAVB
ADSP-FE5
ADSP-FE4
ADSP-FE3
ADSP-FE2
ADSP-FE1
ADSP EAVB
ADSP COMPR2
ADSP COMPR1
ADSP PCM2
ADSP PCM1
wm8978-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
dit-hifi
snd-soc-dummy-dai
[    3.746363] usbcore: registered new interface driver snd-usb-audio
[    3.748294] tegra210_adsp_audio_platform_probe: platform probe started
[    3.749516] tegra210-adsp adsp_audio: Default param-type to BYTE for mp3-dec1
[    3.753125] tegra210-adsp adsp_audio: Default param-type to BYTE for spkprot
[    3.753947] input: tegra-hda HDMI/DP,pcm=3 as /devices/3510000.hda/sound/card0/input0
[    3.754120] input: tegra-hda HDMI/DP,pcm=7 as /devices/3510000.hda/sound/card0/input1
[    3.754448] tegra210-adsp adsp_audio: Default param-type to BYTE for src
[    3.754852] tegra210-adsp adsp_audio: Default param-type to BYTE for aac-dec1
[    3.755296] tegra210-adsp adsp_audio: Default param-type to BYTE for aec
[    3.755302] tegra210-adsp adsp_audio: adma channel page address dt entry not found
[    3.755304] tegra210-adsp adsp_audio: using adma channel page 0
[    3.766591] tegra210_adsp_audio_platform_probe probe successfull.
[    3.766592] OPE platform probe
[    3.766695] OPE platform probe successful
[    3.782700] tegra-snd-t186ref-mobile-rt565x sound: Failed to get HP Det GPIO, should be handled by codec
[    3.862524] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF1 <-> ADMAIF1 mapping ok
[    3.862607] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF2 <-> ADMAIF2 mapping ok
[    3.862692] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF3 <-> ADMAIF3 mapping ok
[    3.862774] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF4 <-> ADMAIF4 mapping ok
[    3.862853] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF5 <-> ADMAIF5 mapping ok
[    3.862958] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF6 <-> ADMAIF6 mapping ok
[    3.863039] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF7 <-> ADMAIF7 mapping ok
[    3.863118] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF8 <-> ADMAIF8 mapping ok
[    3.863198] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF9 <-> ADMAIF9 mapping ok
[    3.863278] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF10 <-> ADMAIF10 mapping ok
[    3.863361] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF11 <-> ADMAIF11 mapping ok
[    3.863447] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF12 <-> ADMAIF12 mapping ok
[    3.863523] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF13 <-> ADMAIF13 mapping ok
[    3.863617] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF14 <-> ADMAIF14 mapping ok
[    3.863695] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF15 <-> ADMAIF15 mapping ok
[    3.863774] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF16 <-> ADMAIF16 mapping ok
[    3.863852] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF17 <-> ADMAIF17 mapping ok
[    3.863934] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF18 <-> ADMAIF18 mapping ok
[    3.864032] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF19 <-> ADMAIF19 mapping ok
[    3.864108] tegra-snd-t186ref-mobile-rt565x sound: ADMAIF20 <-> ADMAIF20 mapping ok
[    3.867123] tegra-snd-t186ref-mobile-rt565x sound: ADSP-FE1 <-> ADSP PCM1 mapping ok
[    3.867224] tegra-snd-t186ref-mobile-rt565x sound: ADSP-FE2 <-> ADSP PCM2 mapping ok
[    3.867249] compress asoc: ADSP-FE3 <-> ADSP COMPR1 mapping ok
[    3.867269] compress asoc: ADSP-FE4 <-> ADSP COMPR2 mapping ok
[    3.997169] input: tegra-snd-t186ref-mobile-rt565x Headphone Jack as /devices/sound/sound/card1/input2
[    3.997723] tegra-snd-t186ref-mobile-rt565x sound: codec-dai "wm8978-hifi" registered
[    3.998233] GACT probability NOT on
[    3.998240] Mirror/redirect action on
[    3.998248] u32 classifier
[    3.998249]     Actions configured
[    3.998257] nf_conntrack version 0.5.0 (65536 buckets, 262144 max)
[    3.998657] ipip: IPv4 over IPv4 tunneling driver
[    3.998894] Initializing XFRM netlink socket

I should be registered, but the i2c address has not been detected? Still occupied?

root@tegra-ubuntu:~# sudo i2cdetect -r -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --
root@tegra-ubuntu:~# sudo i2cdump -f -y 1 0x1a
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

When playing music, I saw it on the serial port.

root@tegra-ubuntu:~# aplay lucky.wav 
Playing WAVE 'lucky.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

[  680.991612] tegra-i2c c240000.i2c: no acknowledge from address 0x1a          
[  680.998819] tegra-i2c c240000.i2c: no acknowledge from address 0x1a          
[  681.006080] tegra-i2c c240000.i2c: no acknowledge from address 0x1a          
[  681.013202] tegra-i2c c240000.i2c: arb lost in communicate to add 0x1a       
[  681.020468] tegra-i2c c240000.i2c: no acknowledge from address 0x1a          
[  681.027558] tegra-i2c c240000.i2c: arb lost in communicate to add 0x1a

What is this situation someone encountered?

root@tegra-ubuntu:/sys/bus/i2c/devices/1-001a# cat name 
wm8978
root@tegra-ubuntu:/sys/bus/i2c/devices/1-001a# cat modalias 
i2c:wm8978
root@tegra-ubuntu:/sys/bus/i2c/devices/1-001a# cat uevent 
DRIVER=wm8978
OF_NAME=wm8978.1-001a
OF_FULLNAME=/i2c@c240000/wm8978.1-001a@1a
OF_COMPATIBLE_0=wm,wm8978
OF_COMPATIBLE_N=1
MODALIAS=i2c:wm8978

If you record, you can record it. The size of the audio file is correct, but there is no sound.

Hello,

Please can you clarify which pins on which header the codec is connected to on the Jetson TX2?

Thanks
Jon

@jonathanh
J21
Pin7 AUDIO_I2S_MCLK_3V3-------------MCK
Pin35 AUDIO_I2S_SFSYNC_3V3-----------LRCK
Pin12 AUDIO_I2S_SRCLK_3V3-------------BCK
Pin40 AUDIO_I2S_SOUT_3V3--------------DOUT
Pin38 AUDIO_I2S_SDIN_3V3---------------DIN
I2C
Pin5 SDL
Pin3 SDA

Thanks. Can you share the output from …

$ sudo grep gpio_sen /sys/kernel/debug/tegra_pinctrl_reg

Also, do you have a link to the wm8978 module you are using?

Thanks
Jon