Checking McASP I2S behavior on PocketBeagle?

Hello.
I am following the below post and trying to play audio on PCM5102A I2S board, connected to PocketBeagle header.

https://e2e.ti.com/support/processors/f/791/t/458085?Suggestion-for-improving-the-Sitara-Linux-Audio-DAC-Example

I am using the official Debian image (with PCM5102A driver eneabled).

So far (according to dmesg output) the drivers are initialized and newly created ALSA output device can be seen.

[ 1.553224] asoc-simple-card sound: ASoC: binding davinci-mcasp.0-pcm5102a-hifi
[ 1.662191] asoc-simple-card sound: pcm5102a-hifi 48038000.mcasp mapping ok
[ 1.666676] asoc-simple-card sound: ASoC: no DMI vendor name!

[ 1.697221] ALSA device list:
[ 1.697236] #0: I2S slave playback

The problem is, trying ‘aplay’, but no sound on I2S device.

The header pins are listed as follows in dtb.

0x190 0x8 /* P1.36 mcasp0_aclkx /
0x194 0x8 /
P1.33 mcasp0_fsx /
0x198 0x8 /
P2.32 mcasp0_axr0 */

I examined the pins with osilloscope, but I think there is no signal there.
(Looks like P1.36 left open, P1.33, P2.32 pulled down to GND without signal?)

I think there are at least two points I should look into next, but I am not sure how to.

  1. mcasp0 driver is it working?
  2. pinmux functioning so that I am seeing mcasp pins on P1.36/P1.33/P2.34 physical pins?

Sorry I am new to pinmuxing.
Maybe looking into some debugfs files I can be sure my pinmux definitions are working as expected?

FYI. Here are lines containing mcasp from debugfs:

/sys/kernel/debug/pinctrl/pinctrl_handles:

device: 48038000.mcasp current state: default
state: default
type: MUX_GROUP controller pinctrl-single group: mcasp0_pins (313) function: mcasp0_pins (313)

/sys/kernel/debug/pinctrl/pinctrl-maps

device 48038000.mcasp
state default
type MUX_GROUP (2)
controlling device 44e10800.pinmux
group mcasp0_pins
function mcasp0_pins

/sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups:

group: mcasp0_pins
pin 100 (PIN100)
pin 101 (PIN101)
pin 102 (PIN102)

/sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-functions:

function: mcasp0_pins, groups = [ mcasp0_pins ]

/sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins:

Well, it turned out that this is working very well.
The issue was in my hardware:

  1. My AXR0 line was mistakenly connected to the other line.
  2. My PCM5102A dac board required 5V, but I was feeding 3.3V

After these were corrected I could hear audio from my DAC board.

BTW, I noticed TI forum post had typo

system-clock-direction = “out”;

=>

system-clock-direction-out;

(see https://www.kernel.org/doc/Documentation/devicetree/bindings/sound/simple-card.txt)

Oscilloscope was my friend and learned it is a best tool to check I2S line outputs (at leaset for this initial design stage).