Audio not working on RB3

We have deployed a Yocto build rpb console image.

root@dragonboard-845c:~# cat /etc/os-release
ID=poky
NAME="Poky (Yocto Project Reference Distro)"
VERSION="4.0.3 (kirkstone)"
VERSION_ID=4.0.3
PRETTY_NAME="Poky (Yocto Project Reference Distro) 4.0.3 (kirkstone)"
DISTRO_CODENAME="kirkstone"
root@dragonboard-845c:~# uname -a
Linux dragonboard-845c 5.15.7-linaro-lt-qcom #1 SMP PREEMPT Tue Dec 14 00:11:28 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

The sound cards seem to be detected

root@dragonboard-845c:~# ls /dev/snd
by-path  comprC0D3  controlC0  pcmC0D0c  pcmC0D0p  pcmC0D1c  pcmC0D1p  pcmC0D2c  pcmC0D2p  timer
root@dragonboard-845c:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: DB845c [DB845c], device 0: MultiMedia1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: DB845c [DB845c], device 1: MultiMedia2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: DB845c [DB845c], device 2: MultiMedia3 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

However, trying to play any audio file like

root@dragonboard-845c:~# aplay /mnt/sample01.wav
Playing WAVE '/mnt/sample01.wav' : Float 32 bit Little Endian, R[ 2666.991328]  Multiate 192000 Hz, Mono
[ 2667.003115]  MultiMedia1: ASoC: dpcm_fe_dai_prepare() failed (-22)
aplay: set_params:1416: Unable to install hw params:
ACCESS:  RW_INTERLEAVED
FORMAT:  FLOAT_LE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: 32
CHANNELS: 1
RATE: 192000
PERIOD_TIME: (85333 85334)
PERIOD_SIZE: 16384
PERIOD_BYTES: 65536
PERIODS: 6
BUFFER_TIME: 512000
BUFFER_SIZE: 98304
BUFFER_BYTES: 393216
TICK_TIME: 0

Checking in dmesg shows

[   79.214823]  MultiMedia1: ASoC: no backend DAIs enabled for MultiMedia1
[   79.222824]  MultiMedia1: ASoC: dpcm_fe_dai_prepare() failed (-22)
[ 2666.991328]  MultiMedia1: ASoC: no backend DAIs enabled for MultiMedia1
[ 2667.003115]  MultiMedia1: ASoC: dpcm_fe_dai_prepare() failed (-22)

I have also tried with Linaro release on this link and get the same result. Linaro Releases

Can someone help with getting this working? Ideally, we wanted to check compressed offload support provided by comprC0D3 node, but it seems even basic audio playback is broken.

On the hardware side, Audio mezzanine is connected to RB3. Is there some hardware setting that we might be missing?

Looking at the hardware schematics, it seems that the speaker output on RB3 should suffice. Audio mezzanine isn’t all that useful for RB3.

UCM configuration is needed before either aplay or cplay can be used

# alsaucm -n -b - <<EOM
open sdm845
set _verb HiFi
list _devices
EOM

For compressed node to use cplay
amixer cset name='SLIMBUS_0_RX Audio Mixer MultiMedia4' 1

For PCM Playback to use aplay
amixer cset name='SLIMBUS_0_RX Audio Mixer MultiMedia2' 1