Jetson Xavier NX soundcard not shown

Thankyou Jonathan.

I just tried adding that change. Now that particular error is not shown.

Next, we tried executing amixer command.
We are observing a kernel crash.

[ 109.750045] Unable to handle kernel NULL pointer dereference at virtual address 00000008
[ 109.750225] Mem abort info:
[ 109.750283] ESR = 0x96000005
[ 109.750345] Exception class = DABT (current EL), IL = 32 bits
[ 109.750451] SET = 0, FnV = 0
[ 109.750515] EA = 0, S1PTW = 0
[ 109.750579] Data abort info:
[ 109.750636] ISV = 0, ISS = 0x00000005
[ 109.750711] CM = 0, WnR = 0
[ 109.750779] user pgtable: 4k pages, 39-bit VAs, pgd = ffffffc1ddcb4000
[ 109.750892] [0000000000000008] *pgd=0000000000000000, *pud=0000000000000000
[ 109.751042] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ 109.751146] Modules linked in: bnep btusb btrtl btbcm btintel zram overlay spidev nvgpu bluedroid_pm ip_tables x_tables
[ 109.751452] CPU: 1 PID: 9569 Comm: amixer Not tainted 4.9.140-tegra #28
[ 109.751729] Hardware name: NVIDIA Jetson Xavier NX Developer Kit (DT)
[ 109.752228] task: ffffffc1d1765400 task.stack: ffffffc1e4a44000
[ 109.752686] PC is at zl380tw_hbi_rd16.isra.0+0x54/0x148
[ 109.753076] LR is at zl380tw_hbi_rd16.isra.0+0x40/0x148
[ 109.755437] pc : [] lr : [] pstate: 80400145
[ 109.762785] sp : ffffffc1e4a47c90
[ 109.766201] x29: ffffffc1e4a47c90 x28: ffffffc1d1765400
[ 109.771980] x27: ffffff8008f72000 x26: 000000000000001d
[ 109.777406] x25: 0000000000000123 x24: 0000000000000001
[ 109.783253] x23: 0000000000000001 x22: ffffffc1e4a47d3e
[ 109.788505] x21: 0000000000000008 x20: 0000000000000003
[ 109.793594] x19: 0000000000000001 x18: 0000000000000020
[ 109.799442] x17: 0000007f8cac7b10 x16: ffffff8008272980
[ 109.804881] x15: ffffffffffffffff x14: ffffff800a13c1e0
[ 109.810815] x13: ffffff800a13be0e x12: 0000000000000006
[ 109.816340] x11: 0000000000000000 x10: 0000000000000ad8
[ 109.822368] x9 : 0000000000000001 x8 : ffffffc1ffd033df
[ 109.828142] x7 : ffffffc1e4a47c90 x6 : ffffff800a13b0ae
[ 109.833404] x5 : 0000000000000000 x4 : 0000000000000000
[ 109.838990] x3 : ffffffffffffffff x2 : 0000000000000004
[ 109.844329] x1 : 00000000fffffffe x0 : 0000000000000002

[ 109.850814] Process amixer (pid: 9569, stack limit = 0xffffffc1e4a44000)
[ 109.857457] Call trace:
[ 109.859826] [] zl380tw_hbi_rd16.isra.0+0x54/0x148
[ 109.865688] [] zl380tw_control_read+0x70/0xd0
[ 109.871288] [] snd_ctl_elem_read+0xc8/0x100
[ 109.876623] [] snd_ctl_ioctl+0x8ec/0xa50
[ 109.881703] [] do_vfs_ioctl+0xb0/0x8d8
[ 109.886772] [] SyS_ioctl+0x8c/0xa8
[ 109.891324] [] el0_svc_naked+0x34/0x38
[ 109.896403] —[ end trace 843db07a6311f9a2 ]—

Debugging it, I see the kernel crash is coming from

static int zl380tw_control_read(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
struct zl380tw_priv *zl380tw = snd_soc_codec_get_drvdata(codec);

zl380tw is always = NULL. Why is that so?

Hello!

Looks like the drvdata is only stored for SPI and not I2C …

	/* Initialize the driver data */
	spi_set_drvdata(spi, zl380tw);
	printk(KERN_ERR "SPI slave device found at bus::cs = %d::%d\n", spi->master->bus_num, spi->chip_select);

So most likely the drvdata has not been stored during initialisation.

Regards,
Jon

Hi Jonathan,

We are initializing the driver data,
i2c_set_clientdata(i2c, zl380tw);

Hello!

Oh yes, I do see that. Hmmm … then I am not sure why that would be. You need to debug the driver and see what device codec->dev is pointing to.

Regards
Jon

Hi Jonathan,

Thankyou for the help.
How do we verify whether the audio routing is correct? How do we debug it?

Hello!

The best way is to use the kernel tracing as follows …

$ echo 0 | sudo tee /sys/kernel/debug/tracing/trace
$ echo 0 | sudo tee /sys/kernel/debug/tracing/events/enable
$ echo 1 | sudo tee /sys/kernel/debug/tracing/tracing_on
$ echo 1 | sudo tee /sys/kernel/debug/tracing/events/asoc/snd_soc_dapm_widget_power/enable
$ aplay <args>
$ sudo cat /sys/kernel/debug/tracing/trace

If the trace is empty or incomplete then this shows that something is not right. You should see something like thishttps://forums.developer.nvidia.com/t/configuring-a-pcm1863-codec-on-tx2/149561/7?u=jonathanh but obviously this is a different codec.

Regards,
Jon

Hi Jonathan,

Please find the below output from the debug trace

root@localhost:/home/nvidia# sudo cat /sys/kernel/debug/tracing/trace

tracer: nop

entries-in-buffer/entries-written: 30/30 #P:6

                          _-----=> irqs-off
                         / _----=> need-resched
                        | / _---=> hardirq/softirq
                        || / _--=> preempt-depth
                        ||| /     delay
       TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
          | |       |   ||||       |         |
       aplay-15857 [000] ....  1188.783405: snd_soc_dapm_widget_power: widget=Playback 1 val=1

    aplay-15857 [000] ....  1188.783412: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=1
       aplay-15857 [000] ....  1188.783416: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=1
       aplay-15857 [000] ....  1188.783421: snd_soc_dapm_widget_power: widget=I2S5 Mux val=1
       aplay-15857 [000] ....  1188.783424: snd_soc_dapm_widget_power: widget=I2S5 TX val=1
       aplay-15857 [000] ....  1188.783425: snd_soc_dapm_widget_power: widget=I2S5 Transmit val=1
       aplay-15857 [000] ....  1188.783427: snd_soc_dapm_widget_power: widget=I2S5 Transmit-I2S5 CIF Receive val=1
       aplay-15857 [000] ....  1188.783429: snd_soc_dapm_widget_power: widget=I2S5 CIF Receive val=1
       aplay-15857 [000] ....  1188.783431: snd_soc_dapm_widget_power: widget=I2S5 CIF RX val=1
       aplay-15857 [000] ....  1188.783433: snd_soc_dapm_widget_power: widget=I2S5 DAP TX val=1
       aplay-15857 [000] ....  1188.783435: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit val=1
       aplay-15857 [000] ....  1188.783437: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit-x Playback val=1
       aplay-15857 [000] ....  1188.783439: snd_soc_dapm_widget_power: widget=x Playback val=1
       aplay-15857 [000] ....  1188.783440: snd_soc_dapm_widget_power: widget=x OUT val=1
       aplay-15857 [000] ....  1188.783442: snd_soc_dapm_widget_power: widget=x Headphone val=1
       aplay-15857 [000] ....  1198.818264: snd_soc_dapm_widget_power: widget=Playback 1 val=0
       aplay-15857 [000] ....  1198.818270: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=0
       aplay-15857 [000] ....  1198.818273: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=0
       aplay-15857 [000] ....  1198.818278: snd_soc_dapm_widget_power: widget=I2S5 Mux val=0
       aplay-15857 [000] ....  1198.818281: snd_soc_dapm_widget_power: widget=I2S5 TX val=0
       aplay-15857 [000] ....  1198.818282: snd_soc_dapm_widget_power: widget=I2S5 Transmit val=0
       aplay-15857 [000] ....  1198.818284: snd_soc_dapm_widget_power: widget=I2S5 Transmit-I2S5 CIF Receive val=0
       aplay-15857 [000] ....  1198.818286: snd_soc_dapm_widget_power: widget=I2S5 CIF Receive val=0
       aplay-15857 [000] ....  1198.818288: snd_soc_dapm_widget_power: widget=I2S5 CIF RX val=0
       aplay-15857 [000] ....  1198.818290: snd_soc_dapm_widget_power: widget=I2S5 DAP TX val=0
       aplay-15857 [000] ....  1198.818291: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit val=0
       aplay-15857 [000] ....  1198.818293: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit-x Playback val=0
       aplay-15857 [000] ....  1198.818295: snd_soc_dapm_widget_power: widget=x Playback val=0
       aplay-15857 [000] ....  1198.818297: snd_soc_dapm_widget_power: widget=x OUT val=0
       aplay-15857 [000] ....  1198.818299: snd_soc_dapm_widget_power: widget=x Headphone val=0

Is it okay? Our audio codec is connected to I2S1 of jetson xaver nx. So thats supposed to be I2S3 right?

Hello!

I2S3 is the I2S interface available via the M.2 connector. If this is the interface you are using, then from the above trace I can see that audio is being played to I2S5 and not I2S3. Per the audio documentation you need to mux the I2S3 to one of the DMA interfaces, for example …

amixer -c jetsonxaviernxa cset name="I2S3 Mux" ADMAIF2
aplay -D hw:jetsonxaviernxa,1 <args> <wav>

Regards,
Jon

Hi Jonathan,

After executing

amixer -c jetsonxaviernxa cset name=“ADMAIF2 Mux” I2S3

We get the below error while recording.

arecord -D hw:jetsonxaviernxa,1 -r 16000 -c 1 -d 10 -f S16_LE out.wav
Recording WAVE ‘out.wav’ : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
arecord: pcm_read:2103: read error: Input/output error

Hello!

You also need to ensure that you have configured the capture mux as well.

amixer -c jetsonxaviernxa cset name="ADMAIF2 Mux" I2S3
arecord -D hw:jetsonxaviernxa,1 <args> <wav>

By default sub-device0 is muxed to I2S5 and so when using that subdevice, you will not see an error.

Regards,
Jon

Hi Jonathan,

Sorry I have edited my question. I tried the same commands you had mentioned. I am getting the below error.

arecord -D hw:jetsonxaviernxa,1 -r 16000 -c 1 -d 10 -f S16_LE out.wav
Recording WAVE ‘out.wav’ : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
arecord: pcm_read:2103: read error: Input/output erro

Hi Jonathan,

I tried playing an audio file,
amixer -c jetsonxaviernxa cset name=“I2S3 Mux” ADMAIF1
aplay -D hw:jetsonxaviernxa,0 100Hz_44100Hz_16bit_05sec.wav

below is the debug log for the same,
amixer-10949 [001] … 153.491039: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-10949 [001] … 153.491178: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 3 power, 0 path, 0 neighbour
amixer-10949 [001] … 153.491216: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-10949 [001] … 153.491267: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
amixer-10949 [001] … 153.491279: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-10949 [001] … 153.491330: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
amixer-10949 [001] … 153.491341: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-10949 [001] … 153.491392: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
aplay-12249 [001] … 202.780361: snd_soc_dapm_start: card=jetson-xaviernx-ape
aplay-12249 [001] … 202.780455: snd_soc_dapm_path: *Playback 1 → (direct) → ADMAIF1 Receive
aplay-12249 [001] … 202.780457: snd_soc_dapm_path: *ADMAIF1 Receive → (direct) → ADMAIF1 RX
aplay-12249 [001] … 202.780460: snd_soc_dapm_widget_power: widget=Playback 1 val=1
aplay-12249 [001] … 202.780462: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=1
aplay-12249 [001] … 202.780465: snd_soc_dapm_path: *ADMAIF1 CIF Receive-ADMAIF1 Receive → (direct) → ADMAIF1 Receive
aplay-12249 [001] … 202.780466: snd_soc_dapm_path: *ADMAIF1 RX ← (direct) ← ADMAIF1 Receive
aplay-12249 [001] … 202.780468: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=1
aplay-12249 [001] … 202.780472: snd_soc_dapm_path: I2S5 Mux ← ARAD1 ← ARAD1 RX
aplay-12249 [001] … 202.780473: snd_soc_dapm_path: I2S5 Mux ← ADX4-4 ← ADX4-4 RX
aplay-12249 [001] … 202.780475: snd_soc_dapm_path: I2S5 Mux ← ADX4-3 ← ADX4-3 RX
aplay-12249 [001] … 202.780477: snd_soc_dapm_path: I2S5 Mux ← ADX4-2 ← ADX4-2 RX
aplay-12249 [001] … 202.780504: snd_soc_dapm_path: I2S5 Mux ← ADX4-1 ← ADX4-1 RX
aplay-12249 [001] … 202.780506: snd_soc_dapm_path: I2S5 Mux ← AMX4 ← AMX4 RX
aplay-12249 [001] … 202.780508: snd_soc_dapm_path: I2S5 Mux ← ADX3-4 ← ADX3-4 RX
aplay-12249 [001] … 202.780509: snd_soc_dapm_path: I2S5 Mux ← ADX3-3 ← ADX3-3 RX
aplay-12249 [001] … 202.780511: snd_soc_dapm_path: I2S5 Mux ← ADX3-2 ← ADX3-2 RX
aplay-12249 [001] … 202.780512: snd_soc_dapm_path: I2S5 Mux ← ADX3-1 ← ADX3-1 RX
aplay-12249 [001] … 202.780514: snd_soc_dapm_path: I2S5 Mux ← AMX3 ← AMX3 RX
aplay-12249 [001] … 202.780515: snd_soc_dapm_path: I2S5 Mux ← ASRC1-6 ← ASRC1-6 RX
aplay-12249 [001] … 202.780517: snd_soc_dapm_path: I2S5 Mux ← ASRC1-5 ← ASRC1-5 RX
aplay-12249 [001] … 202.780518: snd_soc_dapm_path: I2S5 Mux ← ASRC1-4 ← ASRC1-4 RX
aplay-12249 [001] … 202.780520: snd_soc_dapm_path: I2S5 Mux ← ASRC1-3 ← ASRC1-3 RX
aplay-12249 [001] … 202.780521: snd_soc_dapm_path: I2S5 Mux ← ASRC1-2 ← ASRC1-2 RX
aplay-12249 [001] … 202.780523: snd_soc_dapm_path: I2S5 Mux ← ASRC1-1 ← ASRC1-1 RX
aplay-12249 [001] … 202.780524: snd_soc_dapm_path: I2S5 Mux ← I2S6 ← I2S6 RX
aplay-12249 [001] … 202.780526: snd_soc_dapm_path: I2S5 Mux ← DMIC4 ← DMIC4 RX
aplay-12249 [001] … 202.780528: snd_soc_dapm_path: I2S5 Mux ← ADMAIF20 ← ADMAIF20 RX
aplay-12249 [001] … 202.780529: snd_soc_dapm_path: I2S5 Mux ← ADMAIF19 ← ADMAIF19 RX
aplay-12249 [001] … 202.780530: snd_soc_dapm_path: I2S5 Mux ← ADMAIF18 ← ADMAIF18 RX
aplay-12249 [001] … 202.780532: snd_soc_dapm_path: I2S5 Mux ← ADMAIF17 ← ADMAIF17 RX
aplay-12249 [001] … 202.780533: snd_soc_dapm_path: I2S5 Mux ← ADMAIF16 ← ADMAIF16 RX
aplay-12249 [001] … 202.780535: snd_soc_dapm_path: I2S5 Mux ← ADMAIF15 ← ADMAIF15 RX
aplay-12249 [001] … 202.780536: snd_soc_dapm_path: I2S5 Mux ← ADMAIF14 ← ADMAIF14 RX
aplay-12249 [001] … 202.780538: snd_soc_dapm_path: I2S5 Mux ← ADMAIF13 ← ADMAIF13 RX
aplay-12249 [001] … 202.780539: snd_soc_dapm_path: I2S5 Mux ← ADMAIF12 ← ADMAIF12 RX
aplay-12249 [001] … 202.780541: snd_soc_dapm_path: I2S5 Mux ← ADMAIF11 ← ADMAIF11 RX
aplay-12249 [001] … 202.780542: snd_soc_dapm_path: I2S5 Mux ← ADX2-4 ← ADX2-4 RX
aplay-12249 [001] … 202.780544: snd_soc_dapm_path: I2S5 Mux ← ADX2-3 ← ADX2-3 RX
aplay-12249 [001] … 202.780545: snd_soc_dapm_path: I2S5 Mux ← ADX2-2 ← ADX2-2 RX
aplay-12249 [001] … 202.780546: snd_soc_dapm_path: I2S5 Mux ← ADX2-1 ← ADX2-1 RX
aplay-12249 [001] … 202.780548: snd_soc_dapm_path: I2S5 Mux ← AMX2 ← AMX2 RX
aplay-12249 [001] … 202.780549: snd_soc_dapm_path: I2S5 Mux ← ADX1-4 ← ADX1-4 RX
aplay-12249 [001] … 202.780551: snd_soc_dapm_path: I2S5 Mux ← ADX1-3 ← ADX1-3 RX
aplay-12249 [001] … 202.780552: snd_soc_dapm_path: I2S5 Mux ← ADX1-2 ← ADX1-2 RX
aplay-12249 [001] … 202.780554: snd_soc_dapm_path: I2S5 Mux ← ADX1-1 ← ADX1-1 RX
aplay-12249 [001] … 202.780555: snd_soc_dapm_path: I2S5 Mux ← AMX1 ← AMX1 RX
aplay-12249 [001] … 202.780557: snd_soc_dapm_path: I2S5 Mux ← DMIC3 ← DMIC3 RX
aplay-12249 [001] … 202.780558: snd_soc_dapm_path: I2S5 Mux ← DMIC2 ← DMIC2 RX
aplay-12249 [001] … 202.780580: snd_soc_dapm_path: I2S5 Mux ← DMIC1 ← DMIC1 RX
aplay-12249 [001] … 202.780581: snd_soc_dapm_path: I2S5 Mux ← IQC2-2 ← IQC2-2 RX
aplay-12249 [001] … 202.780583: snd_soc_dapm_path: I2S5 Mux ← IQC2-1 ← IQC2-1 RX
aplay-12249 [001] … 202.780584: snd_soc_dapm_path: I2S5 Mux ← IQC1-2 ← IQC1-2 RX
aplay-12249 [001] … 202.780586: snd_soc_dapm_path: I2S5 Mux ← IQC1-1 ← IQC1-1 RX
aplay-12249 [001] … 202.780587: snd_soc_dapm_path: I2S5 Mux ← MVC2 ← MVC2 RX
aplay-12249 [001] … 202.780589: snd_soc_dapm_path: I2S5 Mux ← MVC1 ← MVC1 RX
aplay-12249 [001] … 202.780590: snd_soc_dapm_path: I2S5 Mux ← OPE1 ← OPE1 RX
aplay-12249 [001] … 202.780592: snd_soc_dapm_path: I2S5 Mux ← AFC6 ← AFC6 RX
aplay-12249 [001] … 202.780593: snd_soc_dapm_path: I2S5 Mux ← AFC5 ← AFC5 RX
aplay-12249 [001] … 202.780596: snd_soc_dapm_path: I2S5 Mux ← AFC4 ← AFC4 RX
aplay-12249 [001] … 202.780598: snd_soc_dapm_path: I2S5 Mux ← AFC3 ← AFC3 RX
aplay-12249 [001] … 202.780599: snd_soc_dapm_path: I2S5 Mux ← AFC2 ← AFC2 RX
aplay-12249 [001] … 202.780601: snd_soc_dapm_path: I2S5 Mux ← AFC1 ← AFC1 RX
aplay-12249 [001] … 202.780602: snd_soc_dapm_path: I2S5 Mux ← MIXER1-5 ← MIXER1-5 RX
aplay-12249 [001] … 202.780604: snd_soc_dapm_path: I2S5 Mux ← MIXER1-4 ← MIXER1-4 RX
aplay-12249 [001] … 202.780605: snd_soc_dapm_path: I2S5 Mux ← MIXER1-3 ← MIXER1-3 RX
aplay-12249 [001] … 202.780607: snd_soc_dapm_path: I2S5 Mux ← MIXER1-2 ← MIXER1-2 RX
aplay-12249 [001] … 202.780608: snd_soc_dapm_path: I2S5 Mux ← MIXER1-1 ← MIXER1-1 RX
aplay-12249 [001] … 202.780609: snd_soc_dapm_path: I2S5 Mux ← SFC4 ← SFC4 RX
aplay-12249 [001] … 202.780611: snd_soc_dapm_path: I2S5 Mux ← SFC3 ← SFC3 RX
aplay-12249 [001] … 202.780613: snd_soc_dapm_path: I2S5 Mux ← SFC2 ← SFC2 RX
aplay-12249 [001] … 202.780614: snd_soc_dapm_path: I2S5 Mux ← SFC1 ← SFC1 RX
aplay-12249 [001] … 202.780615: snd_soc_dapm_path: I2S5 Mux ← I2S5 ← I2S5 RX
aplay-12249 [001] … 202.780617: snd_soc_dapm_path: I2S5 Mux ← I2S4 ← I2S4 RX
aplay-12249 [001] … 202.780619: snd_soc_dapm_path: I2S5 Mux ← I2S3 ← I2S3 RX
aplay-12249 [001] … 202.780620: snd_soc_dapm_path: I2S5 Mux ← I2S2 ← I2S2 RX
aplay-12249 [001] … 202.780622: snd_soc_dapm_path: I2S5 Mux ← I2S1 ← I2S1 RX
aplay-12249 [001] … 202.780623: snd_soc_dapm_path: I2S5 Mux ← ADMAIF10 ← ADMAIF10 RX
aplay-12249 [001] … 202.780625: snd_soc_dapm_path: I2S5 Mux ← ADMAIF9 ← ADMAIF9 RX
aplay-12249 [001] … 202.780626: snd_soc_dapm_path: I2S5 Mux ← ADMAIF8 ← ADMAIF8 RX
aplay-12249 [001] … 202.780628: snd_soc_dapm_path: I2S5 Mux ← ADMAIF7 ← ADMAIF7 RX
aplay-12249 [001] … 202.780629: snd_soc_dapm_path: I2S5 Mux ← ADMAIF6 ← ADMAIF6 RX
aplay-12249 [001] … 202.780631: snd_soc_dapm_path: I2S5 Mux ← ADMAIF5 ← ADMAIF5 RX
aplay-12249 [001] … 202.780632: snd_soc_dapm_path: I2S5 Mux ← ADMAIF4 ← ADMAIF4 RX
aplay-12249 [001] … 202.780634: snd_soc_dapm_path: I2S5 Mux ← ADMAIF3 ← ADMAIF3 RX
aplay-12249 [001] … 202.780635: snd_soc_dapm_path: I2S5 Mux ← ADMAIF2 ← ADMAIF2 RX
aplay-12249 [001] … 202.780636: snd_soc_dapm_path: *I2S5 Mux ← ADMAIF1 ← ADMAIF1 RX
aplay-12249 [001] … 202.780638: snd_soc_dapm_widget_power: widget=I2S5 Mux val=1
aplay-12249 [001] … 202.780641: snd_soc_dapm_path: I2S3 Mux ← ARAD1 ← ARAD1 RX
aplay-12249 [001] … 202.780643: snd_soc_dapm_path: I2S3 Mux ← ADX4-4 ← ADX4-4 RX
aplay-12249 [001] … 202.780644: snd_soc_dapm_path: I2S3 Mux ← ADX4-3 ← ADX4-3 RX
aplay-12249 [001] … 202.780646: snd_soc_dapm_path: I2S3 Mux ← ADX4-2 ← ADX4-2 RX
aplay-12249 [001] … 202.780647: snd_soc_dapm_path: I2S3 Mux ← ADX4-1 ← ADX4-1 RX
aplay-12249 [001] … 202.780649: snd_soc_dapm_path: I2S3 Mux ← AMX4 ← AMX4 RX
aplay-12249 [001] … 202.780650: snd_soc_dapm_path: I2S3 Mux ← ADX3-4 ← ADX3-4 RX
aplay-12249 [001] … 202.780652: snd_soc_dapm_path: I2S3 Mux ← ADX3-3 ← ADX3-3 RX
aplay-12249 [001] … 202.780653: snd_soc_dapm_path: I2S3 Mux ← ADX3-2 ← ADX3-2 RX
aplay-12249 [001] … 202.780655: snd_soc_dapm_path: I2S3 Mux ← ADX3-1 ← ADX3-1 RX
aplay-12249 [001] … 202.780656: snd_soc_dapm_path: I2S3 Mux ← AMX3 ← AMX3 RX
aplay-12249 [001] … 202.780657: snd_soc_dapm_path: I2S3 Mux ← ASRC1-6 ← ASRC1-6 RX
aplay-12249 [001] … 202.780659: snd_soc_dapm_path: I2S3 Mux ← ASRC1-5 ← ASRC1-5 RX
aplay-12249 [001] … 202.780660: snd_soc_dapm_path: I2S3 Mux ← ASRC1-4 ← ASRC1-4 RX
aplay-12249 [001] … 202.780662: snd_soc_dapm_path: I2S3 Mux ← ASRC1-3 ← ASRC1-3 RX
aplay-12249 [001] … 202.780663: snd_soc_dapm_path: I2S3 Mux ← ASRC1-2 ← ASRC1-2 RX
aplay-12249 [001] … 202.780665: snd_soc_dapm_path: I2S3 Mux ← ASRC1-1 ← ASRC1-1 RX
aplay-12249 [001] … 202.780666: snd_soc_dapm_path: I2S3 Mux ← I2S6 ← I2S6 RX
aplay-12249 [001] … 202.780668: snd_soc_dapm_path: I2S3 Mux ← DMIC4 ← DMIC4 RX
aplay-12249 [001] … 202.780669: snd_soc_dapm_path: I2S3 Mux ← ADMAIF20 ← ADMAIF20 RX
aplay-12249 [001] … 202.780671: snd_soc_dapm_path: I2S3 Mux ← ADMAIF19 ← ADMAIF19 RX
aplay-12249 [001] … 202.780672: snd_soc_dapm_path: I2S3 Mux ← ADMAIF18 ← ADMAIF18 RX
aplay-12249 [001] … 202.780674: snd_soc_dapm_path: I2S3 Mux ← ADMAIF17 ← ADMAIF17 RX
aplay-12249 [001] … 202.780675: snd_soc_dapm_path: I2S3 Mux ← ADMAIF16 ← ADMAIF16 RX
aplay-12249 [001] … 202.780677: snd_soc_dapm_path: I2S3 Mux ← ADMAIF15 ← ADMAIF15 RX
aplay-12249 [001] … 202.780678: snd_soc_dapm_path: I2S3 Mux ← ADMAIF14 ← ADMAIF14 RX
aplay-12249 [001] … 202.780679: snd_soc_dapm_path: I2S3 Mux ← ADMAIF13 ← ADMAIF13 RX
aplay-12249 [001] … 202.780681: snd_soc_dapm_path: I2S3 Mux ← ADMAIF12 ← ADMAIF12 RX
aplay-12249 [001] … 202.780682: snd_soc_dapm_path: I2S3 Mux ← ADMAIF11 ← ADMAIF11 RX
aplay-12249 [001] … 202.780684: snd_soc_dapm_path: I2S3 Mux ← ADX2-4 ← ADX2-4 RX
aplay-12249 [001] … 202.780685: snd_soc_dapm_path: I2S3 Mux ← ADX2-3 ← ADX2-3 RX
aplay-12249 [001] … 202.780687: snd_soc_dapm_path: I2S3 Mux ← ADX2-2 ← ADX2-2 RX
aplay-12249 [001] … 202.780688: snd_soc_dapm_path: I2S3 Mux ← ADX2-1 ← ADX2-1 RX
aplay-12249 [001] … 202.780690: snd_soc_dapm_path: I2S3 Mux ← AMX2 ← AMX2 RX
aplay-12249 [001] … 202.780691: snd_soc_dapm_path: I2S3 Mux ← ADX1-4 ← ADX1-4 RX
aplay-12249 [001] … 202.780693: snd_soc_dapm_path: I2S3 Mux ← ADX1-3 ← ADX1-3 RX
aplay-12249 [001] … 202.780695: snd_soc_dapm_path: I2S3 Mux ← ADX1-2 ← ADX1-2 RX
aplay-12249 [001] … 202.780696: snd_soc_dapm_path: I2S3 Mux ← ADX1-1 ← ADX1-1 RX
aplay-12249 [001] … 202.780698: snd_soc_dapm_path: I2S3 Mux ← AMX1 ← AMX1 RX
aplay-12249 [001] … 202.780699: snd_soc_dapm_path: I2S3 Mux ← DMIC3 ← DMIC3 RX
aplay-12249 [001] … 202.780701: snd_soc_dapm_path: I2S3 Mux ← DMIC2 ← DMIC2 RX
aplay-12249 [001] … 202.780702: snd_soc_dapm_path: I2S3 Mux ← DMIC1 ← DMIC1 RX
aplay-12249 [001] … 202.780704: snd_soc_dapm_path: I2S3 Mux ← IQC2-2 ← IQC2-2 RX
aplay-12249 [001] … 202.780705: snd_soc_dapm_path: I2S3 Mux ← IQC2-1 ← IQC2-1 RX
aplay-12249 [001] … 202.780706: snd_soc_dapm_path: I2S3 Mux ← IQC1-2 ← IQC1-2 RX
aplay-12249 [001] … 202.780708: snd_soc_dapm_path: I2S3 Mux ← IQC1-1 ← IQC1-1 RX
aplay-12249 [001] … 202.780709: snd_soc_dapm_path: I2S3 Mux ← MVC2 ← MVC2 RX
aplay-12249 [001] … 202.780711: snd_soc_dapm_path: I2S3 Mux ← MVC1 ← MVC1 RX
aplay-12249 [001] … 202.780712: snd_soc_dapm_path: I2S3 Mux ← OPE1 ← OPE1 RX
aplay-12249 [001] … 202.780714: snd_soc_dapm_path: I2S3 Mux ← AFC6 ← AFC6 RX
aplay-12249 [001] … 202.780715: snd_soc_dapm_path: I2S3 Mux ← AFC5 ← AFC5 RX
aplay-12249 [001] … 202.780716: snd_soc_dapm_path: I2S3 Mux ← AFC4 ← AFC4 RX
aplay-12249 [001] … 202.780718: snd_soc_dapm_path: I2S3 Mux ← AFC3 ← AFC3 RX
aplay-12249 [001] … 202.780719: snd_soc_dapm_path: I2S3 Mux ← AFC2 ← AFC2 RX
aplay-12249 [001] … 202.780721: snd_soc_dapm_path: I2S3 Mux ← AFC1 ← AFC1 RX
aplay-12249 [001] … 202.780722: snd_soc_dapm_path: I2S3 Mux ← MIXER1-5 ← MIXER1-5 RX
aplay-12249 [001] … 202.780724: snd_soc_dapm_path: I2S3 Mux ← MIXER1-4 ← MIXER1-4 RX
aplay-12249 [001] … 202.780725: snd_soc_dapm_path: I2S3 Mux ← MIXER1-3 ← MIXER1-3 RX
aplay-12249 [001] … 202.780727: snd_soc_dapm_path: I2S3 Mux ← MIXER1-2 ← MIXER1-2 RX
aplay-12249 [001] … 202.780728: snd_soc_dapm_path: I2S3 Mux ← MIXER1-1 ← MIXER1-1 RX
aplay-12249 [001] … 202.780730: snd_soc_dapm_path: I2S3 Mux ← SFC4 ← SFC4 RX
aplay-12249 [001] … 202.780731: snd_soc_dapm_path: I2S3 Mux ← SFC3 ← SFC3 RX
aplay-12249 [001] … 202.780732: snd_soc_dapm_path: I2S3 Mux ← SFC2 ← SFC2 RX
aplay-12249 [001] … 202.780734: snd_soc_dapm_path: I2S3 Mux ← SFC1 ← SFC1 RX
aplay-12249 [001] … 202.780735: snd_soc_dapm_path: I2S3 Mux ← I2S5 ← I2S5 RX
aplay-12249 [001] … 202.780737: snd_soc_dapm_path: I2S3 Mux ← I2S4 ← I2S4 RX
aplay-12249 [001] … 202.780738: snd_soc_dapm_path: I2S3 Mux ← I2S3 ← I2S3 RX
aplay-12249 [001] … 202.780740: snd_soc_dapm_path: I2S3 Mux ← I2S2 ← I2S2 RX
aplay-12249 [001] … 202.780741: snd_soc_dapm_path: I2S3 Mux ← I2S1 ← I2S1 RX
aplay-12249 [001] … 202.780742: snd_soc_dapm_path: I2S3 Mux ← ADMAIF10 ← ADMAIF10 RX
aplay-12249 [001] … 202.780744: snd_soc_dapm_path: I2S3 Mux ← ADMAIF9 ← ADMAIF9 RX
aplay-12249 [001] … 202.780745: snd_soc_dapm_path: I2S3 Mux ← ADMAIF8 ← ADMAIF8 RX
aplay-12249 [001] … 202.780747: snd_soc_dapm_path: I2S3 Mux ← ADMAIF7 ← ADMAIF7 RX
aplay-12249 [001] … 202.780748: snd_soc_dapm_path: I2S3 Mux ← ADMAIF6 ← ADMAIF6 RX
aplay-12249 [001] … 202.780750: snd_soc_dapm_path: I2S3 Mux ← ADMAIF5 ← ADMAIF5 RX
aplay-12249 [001] … 202.780751: snd_soc_dapm_path: I2S3 Mux ← ADMAIF4 ← ADMAIF4 RX
aplay-12249 [001] … 202.780753: snd_soc_dapm_path: I2S3 Mux ← ADMAIF3 ← ADMAIF3 RX
aplay-12249 [001] … 202.780754: snd_soc_dapm_path: I2S3 Mux ← ADMAIF2 ← ADMAIF2 RX
aplay-12249 [001] … 202.780756: snd_soc_dapm_path: *I2S3 Mux ← ADMAIF1 ← ADMAIF1 RX
aplay-12249 [001] … 202.780757: snd_soc_dapm_path: *I2S5 TX ← (direct) ← I2S5 Mux
aplay-12249 [001] … 202.780759: snd_soc_dapm_widget_power: widget=I2S5 TX val=1
aplay-12249 [001] … 202.780761: snd_soc_dapm_path: *I2S5 Transmit ← (direct) ← I2S5 TX
aplay-12249 [001] … 202.780762: snd_soc_dapm_widget_power: widget=I2S5 Transmit val=1
aplay-12249 [001] … 202.780764: snd_soc_dapm_path: *I2S5 Transmit-I2S5 CIF Receive ← (direct) ← I2S5 Transmit
aplay-12249 [001] … 202.780766: snd_soc_dapm_widget_power: widget=I2S5 Transmit-I2S5 CIF Receive val=1
aplay-12249 [001] … 202.780767: snd_soc_dapm_path: *I2S5 CIF Receive ← (direct) ← I2S5 Transmit-I2S5 CIF Receive
aplay-12249 [001] … 202.780769: snd_soc_dapm_widget_power: widget=I2S5 CIF Receive val=1
aplay-12249 [001] … 202.780771: snd_soc_dapm_path: *I2S5 CIF RX ← (direct) ← I2S5 CIF Receive
aplay-12249 [001] … 202.780773: snd_soc_dapm_widget_power: widget=I2S5 CIF RX val=1
aplay-12249 [001] … 202.780774: snd_soc_dapm_path: *I2S5 DAP TX ← (direct) ← I2S5 CIF RX
aplay-12249 [001] … 202.780776: snd_soc_dapm_widget_power: widget=I2S5 DAP TX val=1
aplay-12249 [001] … 202.780778: snd_soc_dapm_path: *I2S5 DAP Transmit ← (direct) ← I2S5 DAP TX
aplay-12249 [001] … 202.780779: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit val=1
aplay-12249 [001] … 202.780781: snd_soc_dapm_path: *I2S5 DAP Transmit-x Playback ← (direct) ← I2S5 DAP Transmit
aplay-12249 [001] … 202.780783: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit-x Playback val=1
aplay-12249 [001] … 202.780841: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 14 power, 16 path, 170 neighbour
aplay-12249 [003] … 207.797596: snd_soc_dapm_start: card=jetson-xaviernx-ape
aplay-12249 [003] … 207.797746: snd_soc_dapm_widget_power: widget=Playback 1 val=0
aplay-12249 [003] … 207.797750: snd_soc_dapm_path: *ADMAIF1 Receive ← (direct) ← Playback 1
aplay-12249 [003] … 207.797752: snd_soc_dapm_path: *ADMAIF1 Receive ← (direct) ← ADMAIF1 CIF Receive-ADMAIF1 Receive
aplay-12249 [003] … 207.797753: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=0
aplay-12249 [003] … 207.797755: snd_soc_dapm_path: *ADMAIF1 RX ← (direct) ← ADMAIF1 Receive
aplay-12249 [003] … 207.797756: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=0
aplay-12249 [003] … 207.797761: snd_soc_dapm_path: I2S5 Mux ← ARAD1 ← ARAD1 RX
aplay-12249 [003] … 207.797762: snd_soc_dapm_path: I2S5 Mux ← ADX4-4 ← ADX4-4 RX
aplay-12249 [003] … 207.797764: snd_soc_dapm_path: I2S5 Mux ← ADX4-3 ← ADX4-3 RX
aplay-12249 [003] … 207.797766: snd_soc_dapm_path: I2S5 Mux ← ADX4-2 ← ADX4-2 RX
aplay-12249 [003] … 207.797767: snd_soc_dapm_path: I2S5 Mux ← ADX4-1 ← ADX4-1 RX
aplay-12249 [003] … 207.797769: snd_soc_dapm_path: I2S5 Mux ← AMX4 ← AMX4 RX
aplay-12249 [003] … 207.797770: snd_soc_dapm_path: I2S5 Mux ← ADX3-4 ← ADX3-4 RX
aplay-12249 [003] … 207.797771: snd_soc_dapm_path: I2S5 Mux ← ADX3-3 ← ADX3-3 RX
aplay-12249 [003] … 207.797772: snd_soc_dapm_path: I2S5 Mux ← ADX3-2 ← ADX3-2 RX
aplay-12249 [003] … 207.797774: snd_soc_dapm_path: I2S5 Mux ← ADX3-1 ← ADX3-1 RX
aplay-12249 [003] … 207.797775: snd_soc_dapm_path: I2S5 Mux ← AMX3 ← AMX3 RX
aplay-12249 [003] … 207.797776: snd_soc_dapm_path: I2S5 Mux ← ASRC1-6 ← ASRC1-6 RX
aplay-12249 [003] … 207.797778: snd_soc_dapm_path: I2S5 Mux ← ASRC1-5 ← ASRC1-5 RX
aplay-12249 [003] … 207.797779: snd_soc_dapm_path: I2S5 Mux ← ASRC1-4 ← ASRC1-4 RX
aplay-12249 [003] … 207.797781: snd_soc_dapm_path: I2S5 Mux ← ASRC1-3 ← ASRC1-3 RX
aplay-12249 [003] … 207.797782: snd_soc_dapm_path: I2S5 Mux ← ASRC1-2 ← ASRC1-2 RX
aplay-12249 [003] … 207.797783: snd_soc_dapm_path: I2S5 Mux ← ASRC1-1 ← ASRC1-1 RX
aplay-12249 [003] … 207.797784: snd_soc_dapm_path: I2S5 Mux ← I2S6 ← I2S6 RX
aplay-12249 [003] … 207.797786: snd_soc_dapm_path: I2S5 Mux ← DMIC4 ← DMIC4 RX
aplay-12249 [003] … 207.797787: snd_soc_dapm_path: I2S5 Mux ← ADMAIF20 ← ADMAIF20 RX
aplay-12249 [003] … 207.797789: snd_soc_dapm_path: I2S5 Mux ← ADMAIF19 ← ADMAIF19 RX
aplay-12249 [003] … 207.797790: snd_soc_dapm_path: I2S5 Mux ← ADMAIF18 ← ADMAIF18 RX
aplay-12249 [003] … 207.797791: snd_soc_dapm_path: I2S5 Mux ← ADMAIF17 ← ADMAIF17 RX
aplay-12249 [003] … 207.797793: snd_soc_dapm_path: I2S5 Mux ← ADMAIF16 ← ADMAIF16 RX
aplay-12249 [003] … 207.797794: snd_soc_dapm_path: I2S5 Mux ← ADMAIF15 ← ADMAIF15 RX
aplay-12249 [003] … 207.797795: snd_soc_dapm_path: I2S5 Mux ← ADMAIF14 ← ADMAIF14 RX
aplay-12249 [003] … 207.797796: snd_soc_dapm_path: I2S5 Mux ← ADMAIF13 ← ADMAIF13 RX
aplay-12249 [003] … 207.797797: snd_soc_dapm_path: I2S5 Mux ← ADMAIF12 ← ADMAIF12 RX
aplay-12249 [003] … 207.797799: snd_soc_dapm_path: I2S5 Mux ← ADMAIF11 ← ADMAIF11 RX
aplay-12249 [003] … 207.797800: snd_soc_dapm_path: I2S5 Mux ← ADX2-4 ← ADX2-4 RX
aplay-12249 [003] … 207.797801: snd_soc_dapm_path: I2S5 Mux ← ADX2-3 ← ADX2-3 RX
aplay-12249 [003] … 207.797802: snd_soc_dapm_path: I2S5 Mux ← ADX2-2 ← ADX2-2 RX
aplay-12249 [003] … 207.797804: snd_soc_dapm_path: I2S5 Mux ← ADX2-1 ← ADX2-1 RX
aplay-12249 [003] … 207.797805: snd_soc_dapm_path: I2S5 Mux ← AMX2 ← AMX2 RX
aplay-12249 [003] … 207.797806: snd_soc_dapm_path: I2S5 Mux ← ADX1-4 ← ADX1-4 RX
aplay-12249 [003] … 207.797807: snd_soc_dapm_path: I2S5 Mux ← ADX1-3 ← ADX1-3 RX
aplay-12249 [003] … 207.797809: snd_soc_dapm_path: I2S5 Mux ← ADX1-2 ← ADX1-2 RX
aplay-12249 [003] … 207.797810: snd_soc_dapm_path: I2S5 Mux ← ADX1-1 ← ADX1-1 RX
aplay-12249 [003] … 207.797811: snd_soc_dapm_path: I2S5 Mux ← AMX1 ← AMX1 RX
aplay-12249 [003] … 207.797812: snd_soc_dapm_path: I2S5 Mux ← DMIC3 ← DMIC3 RX
aplay-12249 [003] … 207.797814: snd_soc_dapm_path: I2S5 Mux ← DMIC2 ← DMIC2 RX
aplay-12249 [003] … 207.797815: snd_soc_dapm_path: I2S5 Mux ← DMIC1 ← DMIC1 RX
aplay-12249 [003] … 207.797816: snd_soc_dapm_path: I2S5 Mux ← IQC2-2 ← IQC2-2 RX
aplay-12249 [003] … 207.797818: snd_soc_dapm_path: I2S5 Mux ← IQC2-1 ← IQC2-1 RX
aplay-12249 [003] … 207.797819: snd_soc_dapm_path: I2S5 Mux ← IQC1-2 ← IQC1-2 RX
aplay-12249 [003] … 207.797820: snd_soc_dapm_path: I2S5 Mux ← IQC1-1 ← IQC1-1 RX
aplay-12249 [003] … 207.797821: snd_soc_dapm_path: I2S5 Mux ← MVC2 ← MVC2 RX
aplay-12249 [003] … 207.797823: snd_soc_dapm_path: I2S5 Mux ← MVC1 ← MVC1 RX
aplay-12249 [003] … 207.797824: snd_soc_dapm_path: I2S5 Mux ← OPE1 ← OPE1 RX
aplay-12249 [003] … 207.797825: snd_soc_dapm_path: I2S5 Mux ← AFC6 ← AFC6 RX
aplay-12249 [003] … 207.797827: snd_soc_dapm_path: I2S5 Mux ← AFC5 ← AFC5 RX
aplay-12249 [003] … 207.797828: snd_soc_dapm_path: I2S5 Mux ← AFC4 ← AFC4 RX
aplay-12249 [003] … 207.797829: snd_soc_dapm_path: I2S5 Mux ← AFC3 ← AFC3 RX
aplay-12249 [003] … 207.797830: snd_soc_dapm_path: I2S5 Mux ← AFC2 ← AFC2 RX
aplay-12249 [003] … 207.797832: snd_soc_dapm_path: I2S5 Mux ← AFC1 ← AFC1 RX
aplay-12249 [003] … 207.797833: snd_soc_dapm_path: I2S5 Mux ← MIXER1-5 ← MIXER1-5 RX
aplay-12249 [003] … 207.797863: snd_soc_dapm_path: I2S5 Mux ← MIXER1-4 ← MIXER1-4 RX
aplay-12249 [003] … 207.797865: snd_soc_dapm_path: I2S5 Mux ← MIXER1-3 ← MIXER1-3 RX
aplay-12249 [003] … 207.797867: snd_soc_dapm_path: I2S5 Mux ← MIXER1-2 ← MIXER1-2 RX
aplay-12249 [003] … 207.797868: snd_soc_dapm_path: I2S5 Mux ← MIXER1-1 ← MIXER1-1 RX
aplay-12249 [003] … 207.797870: snd_soc_dapm_path: I2S5 Mux ← SFC4 ← SFC4 RX
aplay-12249 [003] … 207.797871: snd_soc_dapm_path: I2S5 Mux ← SFC3 ← SFC3 RX
aplay-12249 [003] … 207.797872: snd_soc_dapm_path: I2S5 Mux ← SFC2 ← SFC2 RX
aplay-12249 [003] … 207.797874: snd_soc_dapm_path: I2S5 Mux ← SFC1 ← SFC1 RX
aplay-12249 [003] … 207.797875: snd_soc_dapm_path: I2S5 Mux ← I2S5 ← I2S5 RX
aplay-12249 [003] … 207.797876: snd_soc_dapm_path: I2S5 Mux ← I2S4 ← I2S4 RX
aplay-12249 [003] … 207.797877: snd_soc_dapm_path: I2S5 Mux ← I2S3 ← I2S3 RX
aplay-12249 [003] … 207.797879: snd_soc_dapm_path: I2S5 Mux ← I2S2 ← I2S2 RX
aplay-12249 [003] … 207.797880: snd_soc_dapm_path: I2S5 Mux ← I2S1 ← I2S1 RX
aplay-12249 [003] … 207.797881: snd_soc_dapm_path: I2S5 Mux ← ADMAIF10 ← ADMAIF10 RX
aplay-12249 [003] … 207.797883: snd_soc_dapm_path: I2S5 Mux ← ADMAIF9 ← ADMAIF9 RX
aplay-12249 [003] … 207.797884: snd_soc_dapm_path: I2S5 Mux ← ADMAIF8 ← ADMAIF8 RX
aplay-12249 [003] … 207.797885: snd_soc_dapm_path: I2S5 Mux ← ADMAIF7 ← ADMAIF7 RX
aplay-12249 [003] … 207.797886: snd_soc_dapm_path: I2S5 Mux ← ADMAIF6 ← ADMAIF6 RX
aplay-12249 [003] … 207.797888: snd_soc_dapm_path: I2S5 Mux ← ADMAIF5 ← ADMAIF5 RX
aplay-12249 [003] … 207.797889: snd_soc_dapm_path: I2S5 Mux ← ADMAIF4 ← ADMAIF4 RX
aplay-12249 [003] … 207.797890: snd_soc_dapm_path: I2S5 Mux ← ADMAIF3 ← ADMAIF3 RX
aplay-12249 [003] … 207.797891: snd_soc_dapm_path: I2S5 Mux ← ADMAIF2 ← ADMAIF2 RX
aplay-12249 [003] … 207.797892: snd_soc_dapm_path: *I2S5 Mux ← ADMAIF1 ← ADMAIF1 RX
aplay-12249 [003] … 207.797894: snd_soc_dapm_widget_power: widget=I2S5 Mux val=0
aplay-12249 [003] … 207.797896: snd_soc_dapm_path: *I2S5 TX ← (direct) ← I2S5 Mux
aplay-12249 [003] … 207.797897: snd_soc_dapm_widget_power: widget=I2S5 TX val=0
aplay-12249 [003] … 207.797899: snd_soc_dapm_path: *I2S5 Transmit ← (direct) ← I2S5 TX
aplay-12249 [003] … 207.797900: snd_soc_dapm_widget_power: widget=I2S5 Transmit val=0
aplay-12249 [003] … 207.797902: snd_soc_dapm_path: *I2S5 Transmit-I2S5 CIF Receive ← (direct) ← I2S5 Transmit
aplay-12249 [003] … 207.797903: snd_soc_dapm_widget_power: widget=I2S5 Transmit-I2S5 CIF Receive val=0
aplay-12249 [003] … 207.797905: snd_soc_dapm_path: *I2S5 CIF Receive ← (direct) ← I2S5 Transmit-I2S5 CIF Receive
aplay-12249 [003] … 207.797906: snd_soc_dapm_widget_power: widget=I2S5 CIF Receive val=0
aplay-12249 [003] … 207.797908: snd_soc_dapm_path: *I2S5 CIF RX ← (direct) ← I2S5 CIF Receive
aplay-12249 [003] … 207.797909: snd_soc_dapm_widget_power: widget=I2S5 CIF RX val=0
aplay-12249 [003] … 207.797911: snd_soc_dapm_path: *I2S5 DAP TX ← (direct) ← I2S5 CIF RX
aplay-12249 [003] … 207.797912: snd_soc_dapm_widget_power: widget=I2S5 DAP TX val=0
aplay-12249 [003] … 207.797913: snd_soc_dapm_path: *I2S5 DAP Transmit ← (direct) ← I2S5 DAP TX
aplay-12249 [003] … 207.797915: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit val=0
aplay-12249 [003] … 207.797916: snd_soc_dapm_path: *I2S5 DAP Transmit-x Playback ← (direct) ← I2S5 DAP Transmit
aplay-12249 [003] … 207.797936: snd_soc_dapm_widget_power: widget=I2S5 DAP Transmit-x Playback val=0
aplay-12249 [003] … 207.797938: snd_soc_dapm_path: *x Playback ← (direct) ← x OUT
aplay-12249 [003] … 207.797939: snd_soc_dapm_path: *x OUT ← (direct) ← x Playback
aplay-12249 [003] … 207.797941: snd_soc_dapm_path: *x Playback ← (direct) ← I2S5 DAP Transmit-x Playback
aplay-12249 [003] … 207.798116: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 13 power, 15 path, 94 neighbour

We use I2S3 instance. Does the audio routing look fine?

For recording, as I had mentioned we are getting an error.
amixer -c jetsonxaviernxa cset name=“ADMAIF1 Mux” I2S3
arecord -f S16_LE -d 10 -r 16000 --device=“hw:jetsonxaviernxa,0” test-mic.wav
Recording WAVE ‘test-mic.wav’ : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
arecord: pcm_read:2103: read error: Input/output error

Below is the debug log for the same,
amixer-15512 [002] … 430.067835: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-15512 [002] … 430.067920: snd_soc_dapm_path: ADMAIF1 Mux ← ARAD1 ← ARAD1 RX
amixer-15512 [002] … 430.067922: snd_soc_dapm_path: ADMAIF1 Mux ← ADX4-4 ← ADX4-4 RX
amixer-15512 [002] … 430.067923: snd_soc_dapm_path: ADMAIF1 Mux ← ADX4-3 ← ADX4-3 RX
amixer-15512 [002] … 430.067925: snd_soc_dapm_path: ADMAIF1 Mux ← ADX4-2 ← ADX4-2 RX
amixer-15512 [002] … 430.067926: snd_soc_dapm_path: ADMAIF1 Mux ← ADX4-1 ← ADX4-1 RX
amixer-15512 [002] … 430.067927: snd_soc_dapm_path: ADMAIF1 Mux ← AMX4 ← AMX4 RX
amixer-15512 [002] … 430.067929: snd_soc_dapm_path: ADMAIF1 Mux ← ADX3-4 ← ADX3-4 RX
amixer-15512 [002] … 430.067930: snd_soc_dapm_path: ADMAIF1 Mux ← ADX3-3 ← ADX3-3 RX
amixer-15512 [002] … 430.067957: snd_soc_dapm_path: ADMAIF1 Mux ← ADX3-2 ← ADX3-2 RX
amixer-15512 [002] … 430.067958: snd_soc_dapm_path: ADMAIF1 Mux ← ADX3-1 ← ADX3-1 RX
amixer-15512 [002] … 430.067960: snd_soc_dapm_path: ADMAIF1 Mux ← AMX3 ← AMX3 RX
amixer-15512 [002] … 430.067961: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-6 ← ASRC1-6 RX
amixer-15512 [002] … 430.067962: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-5 ← ASRC1-5 RX
amixer-15512 [002] … 430.067964: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-4 ← ASRC1-4 RX
amixer-15512 [002] … 430.067965: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-3 ← ASRC1-3 RX
amixer-15512 [002] … 430.067966: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-2 ← ASRC1-2 RX
amixer-15512 [002] … 430.067968: snd_soc_dapm_path: ADMAIF1 Mux ← ASRC1-1 ← ASRC1-1 RX
amixer-15512 [002] … 430.067969: snd_soc_dapm_path: ADMAIF1 Mux ← I2S6 ← I2S6 RX
amixer-15512 [002] … 430.067970: snd_soc_dapm_path: ADMAIF1 Mux ← DMIC4 ← DMIC4 RX
amixer-15512 [002] … 430.067972: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF20 ← ADMAIF20 RX
amixer-15512 [002] … 430.067973: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF19 ← ADMAIF19 RX
amixer-15512 [002] … 430.067974: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF18 ← ADMAIF18 RX
amixer-15512 [002] … 430.067976: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF17 ← ADMAIF17 RX
amixer-15512 [002] … 430.067977: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF16 ← ADMAIF16 RX
amixer-15512 [002] … 430.067978: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF15 ← ADMAIF15 RX
amixer-15512 [002] … 430.067979: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF14 ← ADMAIF14 RX
amixer-15512 [002] … 430.067981: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF13 ← ADMAIF13 RX
amixer-15512 [002] … 430.067982: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF12 ← ADMAIF12 RX
amixer-15512 [002] … 430.067983: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF11 ← ADMAIF11 RX
amixer-15512 [002] … 430.067984: snd_soc_dapm_path: ADMAIF1 Mux ← ADX2-4 ← ADX2-4 RX
amixer-15512 [002] … 430.067986: snd_soc_dapm_path: ADMAIF1 Mux ← ADX2-3 ← ADX2-3 RX
amixer-15512 [002] … 430.067987: snd_soc_dapm_path: ADMAIF1 Mux ← ADX2-2 ← ADX2-2 RX
amixer-15512 [002] … 430.067988: snd_soc_dapm_path: ADMAIF1 Mux ← ADX2-1 ← ADX2-1 RX
amixer-15512 [002] … 430.067990: snd_soc_dapm_path: ADMAIF1 Mux ← AMX2 ← AMX2 RX
amixer-15512 [002] … 430.067991: snd_soc_dapm_path: ADMAIF1 Mux ← ADX1-4 ← ADX1-4 RX
amixer-15512 [002] … 430.067992: snd_soc_dapm_path: ADMAIF1 Mux ← ADX1-3 ← ADX1-3 RX
amixer-15512 [002] … 430.067993: snd_soc_dapm_path: ADMAIF1 Mux ← ADX1-2 ← ADX1-2 RX
amixer-15512 [002] … 430.067995: snd_soc_dapm_path: ADMAIF1 Mux ← ADX1-1 ← ADX1-1 RX
amixer-15512 [002] … 430.067996: snd_soc_dapm_path: ADMAIF1 Mux ← AMX1 ← AMX1 RX
amixer-15512 [002] … 430.067997: snd_soc_dapm_path: ADMAIF1 Mux ← DMIC3 ← DMIC3 RX
amixer-15512 [002] … 430.067998: snd_soc_dapm_path: ADMAIF1 Mux ← DMIC2 ← DMIC2 RX
amixer-15512 [002] … 430.068000: snd_soc_dapm_path: ADMAIF1 Mux ← DMIC1 ← DMIC1 RX
amixer-15512 [002] … 430.068001: snd_soc_dapm_path: ADMAIF1 Mux ← IQC2-2 ← IQC2-2 RX
amixer-15512 [002] … 430.068002: snd_soc_dapm_path: ADMAIF1 Mux ← IQC2-1 ← IQC2-1 RX
amixer-15512 [002] … 430.068003: snd_soc_dapm_path: ADMAIF1 Mux ← IQC1-2 ← IQC1-2 RX
amixer-15512 [002] … 430.068005: snd_soc_dapm_path: ADMAIF1 Mux ← IQC1-1 ← IQC1-1 RX
amixer-15512 [002] … 430.068006: snd_soc_dapm_path: ADMAIF1 Mux ← MVC2 ← MVC2 RX
amixer-15512 [002] … 430.068007: snd_soc_dapm_path: ADMAIF1 Mux ← MVC1 ← MVC1 RX
amixer-15512 [002] … 430.068009: snd_soc_dapm_path: ADMAIF1 Mux ← OPE1 ← OPE1 RX
amixer-15512 [002] … 430.068010: snd_soc_dapm_path: ADMAIF1 Mux ← AFC6 ← AFC6 RX
amixer-15512 [002] … 430.068011: snd_soc_dapm_path: ADMAIF1 Mux ← AFC5 ← AFC5 RX
amixer-15512 [002] … 430.068012: snd_soc_dapm_path: ADMAIF1 Mux ← AFC4 ← AFC4 RX
amixer-15512 [002] … 430.068014: snd_soc_dapm_path: ADMAIF1 Mux ← AFC3 ← AFC3 RX
amixer-15512 [002] … 430.068015: snd_soc_dapm_path: ADMAIF1 Mux ← AFC2 ← AFC2 RX
amixer-15512 [002] … 430.068016: snd_soc_dapm_path: ADMAIF1 Mux ← AFC1 ← AFC1 RX
amixer-15512 [002] … 430.068017: snd_soc_dapm_path: ADMAIF1 Mux ← MIXER1-5 ← MIXER1-5 RX
amixer-15512 [002] … 430.068019: snd_soc_dapm_path: ADMAIF1 Mux ← MIXER1-4 ← MIXER1-4 RX
amixer-15512 [002] … 430.068020: snd_soc_dapm_path: ADMAIF1 Mux ← MIXER1-3 ← MIXER1-3 RX
amixer-15512 [002] … 430.068021: snd_soc_dapm_path: ADMAIF1 Mux ← MIXER1-2 ← MIXER1-2 RX
amixer-15512 [002] … 430.068024: snd_soc_dapm_path: ADMAIF1 Mux ← MIXER1-1 ← MIXER1-1 RX
amixer-15512 [002] … 430.068025: snd_soc_dapm_path: ADMAIF1 Mux ← SFC4 ← SFC4 RX
amixer-15512 [002] … 430.068026: snd_soc_dapm_path: ADMAIF1 Mux ← SFC3 ← SFC3 RX
amixer-15512 [002] … 430.068028: snd_soc_dapm_path: ADMAIF1 Mux ← SFC2 ← SFC2 RX
amixer-15512 [002] … 430.068029: snd_soc_dapm_path: ADMAIF1 Mux ← SFC1 ← SFC1 RX
amixer-15512 [002] … 430.068030: snd_soc_dapm_path: ADMAIF1 Mux ← I2S5 ← I2S5 RX
amixer-15512 [002] … 430.068031: snd_soc_dapm_path: ADMAIF1 Mux ← I2S4 ← I2S4 RX
amixer-15512 [002] … 430.068033: snd_soc_dapm_path: *ADMAIF1 Mux ← I2S3 ← I2S3 RX
amixer-15512 [002] … 430.068034: snd_soc_dapm_path: ADMAIF1 Mux ← I2S2 ← I2S2 RX
amixer-15512 [002] … 430.068035: snd_soc_dapm_path: ADMAIF1 Mux ← I2S1 ← I2S1 RX
amixer-15512 [002] … 430.068036: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF10 ← ADMAIF10 RX
amixer-15512 [002] … 430.068038: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF9 ← ADMAIF9 RX
amixer-15512 [002] … 430.068039: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF8 ← ADMAIF8 RX
amixer-15512 [002] … 430.068040: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF7 ← ADMAIF7 RX
amixer-15512 [002] … 430.068046: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF6 ← ADMAIF6 RX
amixer-15512 [002] … 430.068048: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF5 ← ADMAIF5 RX
amixer-15512 [002] … 430.068049: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF4 ← ADMAIF4 RX
amixer-15512 [002] … 430.068050: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF3 ← ADMAIF3 RX
amixer-15512 [002] … 430.068051: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF2 ← ADMAIF2 RX
amixer-15512 [002] … 430.068053: snd_soc_dapm_path: ADMAIF1 Mux ← ADMAIF1 ← ADMAIF1 RX
amixer-15512 [002] … 430.068105: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 3 power, 1 path, 79 neighbour
amixer-15512 [002] … 430.068142: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-15512 [002] … 430.068194: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
amixer-15512 [002] … 430.068206: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-15512 [002] … 430.068256: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
amixer-15512 [002] … 430.068267: snd_soc_dapm_start: card=jetson-xaviernx-ape
amixer-15512 [002] … 430.068324: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
arecord-15722 [000] … 704.546664: snd_soc_dapm_start: card=jetson-xaviernx-ape
arecord-15722 [000] … 704.546769: snd_soc_dapm_path: *Capture 1 ← (direct) ← ADMAIF1 Transmit
arecord-15722 [000] … 704.546772: snd_soc_dapm_path: *ADMAIF1 Transmit ← (direct) ← ADMAIF1 TX
arecord-15722 [000] … 704.546773: snd_soc_dapm_path: *ADMAIF1 TX ← (direct) ← ADMAIF1 Mux
arecord-15722 [000] … 704.546843: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 2 power, 5 path, 3 neighbour
arecord-15722 [000] … 714.579194: snd_soc_dapm_start: card=jetson-xaviernx-ape
arecord-15722 [000] … 714.579284: snd_soc_dapm_path: *ADMAIF1 Transmit → (direct) → Capture 1
arecord-15722 [000] … 714.579287: snd_soc_dapm_path: *ADMAIF1 Transmit → (direct) → ADMAIF1 Transmit-ADMAIF1 CIF Transmit
arecord-15722 [000] … 714.579364: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 2 power, 2 path, 2 neighbour

@jonathanh

Hi,

Probing I2S1_SCLK we do not see any clock. It is always 0.
Please find the pinctrl.

cat /sys/kernel/debug/tegra_pinctrl_reg | grep dap3
Bank: 0 Reg: 0x02431048 Val: 0x00000440 → dap3_fs_pt4
Bank: 0 Reg: 0x02431050 Val: 0x00000450 → dap3_din_pt3
Bank: 0 Reg: 0x02431058 Val: 0x00000400 → dap3_dout_pt2
Bank: 0 Reg: 0x02431060 Val: 0x00000440 → dap3_sclk_pt1

Hello!

For the playback case, make sure that you don’t have the I2S5 muxed to the ADMAIF1 as well …

$ amixer -c jetsonxaviernxa cset name=“I2S5 Mux” None
$ amixer -c jetsonxaviernxa cset name=“I2S3 Mux” ADMAIF1

On the record side the route is not complete because as you can see the DMA interface is not routed to the I2S and codec …

arecord-15722 [000] … 714.579284: snd_soc_dapm_path: *ADMAIF1 Transmit -> (direct) -> Capture 1
arecord-15722 [000] … 714.579287: snd_soc_dapm_path: *ADMAIF1 Transmit -> (direct) -> ADMAIF1 Transmit-ADMAIF1 CIF Transmit

If you do something like this you can see the connections between all the dapm widgets …

dapm_dirs=$(sudo find /sys/kernel/debug/asoc -type d -name dapm)

for dir in ${dapm_dirs}; do
    sudo find ${dir} -type f -exec echo {} \; -exec cat {} \;
done

Regards,
Jon

Hi Jonathan,

I guess the play doesnt work too.

root@localhost:/home/nvidia# sudo cat /sys/kernel/debug/tracing/trace
tracer: nop

entries-in-buffer/entries-written: 103/103 #P:6

                          _-----=> irqs-off
                         / _----=> need-resched
                        | / _---=> hardirq/softirq
                        || / _--=> preempt-depth
                        ||| /     delay
       TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
          | |       |   ||||       |         |
      amixer-10777 [000] ....   153.775737: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-10777 [000] ....   153.775822: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> DSPK2 Mux
      amixer-10777 [000] ....   153.775823: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> DSPK1 Mux
      amixer-10777 [000] ....   153.775853: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-7 Mux
      amixer-10777 [000] ....   153.775855: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-6 Mux
      amixer-10777 [000] ....   153.775857: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-5 Mux
      amixer-10777 [000] ....   153.775858: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-4 Mux
      amixer-10777 [000] ....   153.775859: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-3 Mux
      amixer-10777 [000] ....   153.775861: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-2 Mux
      amixer-10777 [000] ....   153.775862: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ASRC1-1 Mux
      amixer-10777 [000] ....   153.775864: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S6 Mux
      amixer-10777 [000] ....   153.775865: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADX4 Mux
      amixer-10777 [000] ....   153.775866: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADX3 Mux
      amixer-10777 [000] ....   153.775867: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX4-4 Mux
      amixer-10777 [000] ....   153.775869: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX4-3 Mux
      amixer-10777 [000] ....   153.775870: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX4-2 Mux
      amixer-10777 [000] ....   153.775871: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX4-1 Mux
      amixer-10777 [000] ....   153.775873: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX3-4 Mux
      amixer-10777 [000] ....   153.775874: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX3-3 Mux
      amixer-10777 [000] ....   153.775875: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX3-2 Mux
      amixer-10777 [000] ....   153.775877: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX3-1 Mux
      amixer-10777 [000] ....   153.775878: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF20 Mux
      amixer-10777 [000] ....   153.775879: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF19 Mux
      amixer-10777 [000] ....   153.775881: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF18 Mux
      amixer-10777 [000] ....   153.775882: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF17 Mux
      amixer-10777 [000] ....   153.775883: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF16 Mux
      amixer-10777 [000] ....   153.775885: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF15 Mux
      amixer-10777 [000] ....   153.775886: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF14 Mux
      amixer-10777 [000] ....   153.775887: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF13 Mux
      amixer-10777 [000] ....   153.775888: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF12 Mux
      amixer-10777 [000] ....   153.775890: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF11 Mux
      amixer-10777 [000] ....   153.775891: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADX2 Mux
      amixer-10777 [000] ....   153.775892: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADX1 Mux
      amixer-10777 [000] ....   153.775894: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX2-4 Mux
      amixer-10777 [000] ....   153.775895: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX2-3 Mux
      amixer-10777 [000] ....   153.775896: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX2-2 Mux
      amixer-10777 [000] ....   153.775898: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX2-1 Mux
      amixer-10777 [000] ....   153.775899: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX1-4 Mux
      amixer-10777 [000] ....   153.775901: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX1-3 Mux
      amixer-10777 [000] ....   153.775902: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX1-2 Mux
      amixer-10777 [000] ....   153.775903: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AMX1-1 Mux
      amixer-10777 [000] ....   153.775905: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MVC2 Mux
      amixer-10777 [000] ....   153.775906: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MVC1 Mux
      amixer-10777 [000] ....   153.775907: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> SPKPROT1 Mux
      amixer-10777 [000] ....   153.775909: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> OPE1 Mux
      amixer-10777 [000] ....   153.775910: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC6 Mux
      amixer-10777 [000] ....   153.775911: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC5 Mux
      amixer-10777 [000] ....   153.775913: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC4 Mux
      amixer-10777 [000] ....   153.775914: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC3 Mux
      amixer-10777 [000] ....   153.775915: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC2 Mux
      amixer-10777 [000] ....   153.775916: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> AFC1 Mux
      amixer-10777 [000] ....   153.775918: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-10 Mux
      amixer-10777 [000] ....   153.775919: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-9 Mux
      amixer-10777 [000] ....   153.775920: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-8 Mux
      amixer-10777 [000] ....   153.775922: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-7 Mux
      amixer-10777 [000] ....   153.775923: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-6 Mux
      amixer-10777 [000] ....   153.775924: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-5 Mux
      amixer-10777 [000] ....   153.775926: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-4 Mux
      amixer-10777 [000] ....   153.775927: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-3 Mux
      amixer-10777 [000] ....   153.775928: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-2 Mux
      amixer-10777 [000] ....   153.775930: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> MIXER1-1 Mux
      amixer-10777 [000] ....   153.775932: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> SFC4 Mux
      amixer-10777 [000] ....   153.775933: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> SFC3 Mux
      amixer-10777 [000] ....   153.775935: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> SFC2 Mux
      amixer-10777 [000] ....   153.775936: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> SFC1 Mux
      amixer-10777 [000] ....   153.775937: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S5 Mux
      amixer-10777 [000] ....   153.775938: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S4 Mux
      amixer-10777 [000] ....   153.775940: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S3 Mux
      amixer-10777 [000] ....   153.775941: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S2 Mux
      amixer-10777 [000] ....   153.775942: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> I2S1 Mux
      amixer-10777 [000] ....   153.775944: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF10 Mux
      amixer-10777 [000] ....   153.775945: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF9 Mux
      amixer-10777 [000] ....   153.775947: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF8 Mux
      amixer-10777 [000] ....   153.775948: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF7 Mux
      amixer-10777 [000] ....   153.775949: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF6 Mux
      amixer-10777 [000] ....   153.775950: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF5 Mux
      amixer-10777 [000] ....   153.775952: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF4 Mux
      amixer-10777 [000] ....   153.775953: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF3 Mux
      amixer-10777 [000] ....   153.775954: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF2 Mux
      amixer-10777 [000] ....   153.775956: snd_soc_dapm_path:  ADMAIF1 RX -> ADMAIF1 -> ADMAIF1 Mux
      amixer-10777 [000] ....   153.776008: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 2 power, 1 path, 79 neighbour
      amixer-10777 [000] ....   153.776047: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-10777 [000] ....   153.776098: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
      amixer-10777 [000] ....   153.776110: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-10777 [000] ....   153.776160: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
      amixer-10777 [000] ....   153.776172: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-10777 [000] ....   153.776334: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
      amixer-11289 [002] ....   174.629911: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-11289 [002] ....   174.630122: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 3 power, 0 path, 0 neighbour
      amixer-11289 [002] ....   174.630192: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-11289 [002] ....   174.630242: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
      amixer-11289 [002] ....   174.630256: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-11289 [002] ....   174.630331: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
      amixer-11289 [002] ....   174.630360: snd_soc_dapm_start: card=jetson-xaviernx-ape
      amixer-11289 [002] ....   174.630409: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 0 power, 0 path, 0 neighbour
       aplay-11332 [001] ....   228.738486: snd_soc_dapm_start: card=jetson-xaviernx-ape
       aplay-11332 [001] ....   228.738575: snd_soc_dapm_path: *Playback 1 -> (direct) -> ADMAIF1 Receive
       aplay-11332 [001] ....   228.738578: snd_soc_dapm_path: *ADMAIF1 Receive -> (direct) -> ADMAIF1 RX
       aplay-11332 [001] ....   228.738633: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 2 power, 4 path, 2 neighbour
       aplay-11332 [000] ....   228.785314: snd_soc_dapm_start: card=jetson-xaviernx-ape
       aplay-11332 [000] ....   228.785420: snd_soc_dapm_path: *ADMAIF1 Receive <- (direct) <- Playback 1
       aplay-11332 [000] ....   228.785423: snd_soc_dapm_path: *ADMAIF1 Receive <- (direct) <- ADMAIF1 CIF Receive-ADMAIF1 Receive
       aplay-11332 [000] ....   228.785477: snd_soc_dapm_walk_done: jetson-xaviernx-ape: checks 2 power, 2 path, 2 neighbour

Hello!

Yes that is what I expected. Given that the codec driver does not have any DAPM widgets and route defined by default, I am wondering if you actually just need the I2S interface to drive the pins? If so, then you should be able to using the default dummy spdif codec in the ‘nvidia,dai-link-3’ and not modify this.

The only reason you would need to add the codec to the route is if there is something that needs to be enabled in the codec when the I2S interface is turned on.

Regards,
Jon

Hi Jonathan,

So are you telling to retain the nvidia,dai-link-3 node as it is?

            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";
                    bit-format = "s16_le";
                    srate = <48000>;
                    num-channel = <2>;
                    ignore_suspend;
                    name-prefix = "z";
                    status = "okay";
            };

?

Hello!

Yes, I was wondering if we could leave the node as-is. There are some simple I2S codecs that do not require any configuration at runtime, however, looking again at the driver I do see it has a hw_params callback and so we need to ensure that this gets called when playback/capture is started. So no we cannot leave the dai-link-3 node as it is and we need to modify like you have done. So we just need to figure out what is wrong with the route.

Jon

Hi Jonathan,

Awesome! It works.

I left the node as it is. We were able to get the I2S signals. The recorded audio is not proper. We are verifying it.

Thankyou for addressing our queries.

Hi Jonathan,

I had left the node as it is. And i was able to get the I2S signals while recording and playing. But the recorded audio is not proper. We couldn’t verify the played audio yet.

hw_params is not getting called on playback/capture.