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?