With I2S2 as clock master and a stream running, there is no BCLK (pin 12), FS (pin 35),
DOUT (pin 40) or MCLK (pin 7) on the 40-pin header — yet every register, the clock and the pinmux read correct. The same pads drive a clean 3.3 V in GPIO mode.
How to reproduce: raw ALSA, no custom code. (The stock DT leaves the I2S2 DAP with no codec, so we bound a dummy spdif-dit codec to it to complete the audio-graph DAI link.)
# Terminal 1 — route + master/frame mode, then start the stream and LEAVE IT RUNNING:
amixer -c APE cset name='I2S2 Mux' 'ADMAIF1'
amixer -c APE cset name='I2S2 codec master mode' 'cbs-cfs'
amixer -c APE cset name='I2S2 codec frame mode' 'i2s'
speaker-test -D hw:1,0 -c 2 -r 48000 -F S32_LE -t sine
Verified correct in a second terminal, while Terminal 1 keeps streaming
cat /sys/kernel/debug/regmap/2901100.i2s/registers (key offsets):
# cat /sys/kernel/debug/regmap/2901100.i2s/registers (key offsets):
00: 00000001 # RX_ENABLE = 1 playback path enabled
0c: 00000001 # RX_STATUS = 1 active
40: 00000000 # TX_ENABLE = 0 capture off (correct)
80: 00000001 # I2S_ENABLE = 1
88: 00000001 # I2S_CG = 1 clock gate open
a0: 00000407 # I2S_CTRL = 0x407 MASTER_EN=1 (master) + 32-bit
a4: 0000001f # I2S_TIMING = 0x1f 32-bit slot width — non-zero, programmed
# grep i2s2 /sys/kernel/debug/clk/clk_summary` (clock · enable_cnt · prepare_cnt · protect · rate):
i2s2 1 1 0 3071997 ... Y i2s@2901100 # enabled, prepared, ~3.072 MHz
# /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups` — the three I2S2 output pads:
141 (soc_gpio41_ph7): tristate=0 enable-input=0 # BCLK
142 (soc_gpio42_pi0): tristate=0 enable-input=0 # DOUT
144 (soc_gpio44_pi2): tristate=0 enable-input=0 # FS
NOTE: driving each pad as a GPIO puts 3.3 V on the header pin (scope-confirmed → pad/trace
good). In i2s2 mode, a wiring-validated scope reads 0V.
These are my questions:
The carrier spec (SP-11324-001 v1.3, Table 3-3, Note 3) says these audio pins go through TI TXB0108 level translators. Is the 40-pin header expected to carry a 3.072 MHz I2S master bit clock (and even the 48 kHz FS) out through the TXB0108 at all, or is that a known limitation of this dev kit? Since the TXB0108 is auto-direction there is no DIR/OE GPIO to set — correct?
And is there a SoC-side (1.8 V) test point before the translator we can probe to confirm the DAP output is actually driving?
I’ve attached the Device Tree Source (`.dts`, human-readable) overlays used during my tests:
- jetson-io-hdr40-user-custom.dts (the 40-pin header pinmux)
- tegra234-i2s2-dummy-codec.dts (the dummy-codec overlay that completes the I2S2 DAI link).
Thank you and Best Regards,
Gilberto
dts.zip (2.5 KB)