ASoC: question about asoc and external modem used with mux

Dev Null devnull at uvos.xyz
Thu Aug 12 17:53:48 CEST 2021


Hi,

On the motorola droid 4 (xt894 rch/arm/boot/dts/omap4-droid4-xt894.dts)
the cpcap asoc codec  is used for sound (sound/soc/codecs/cpcap.c). The
codec contains a hifi and voice DAI and mixer controlls to connect the
various outputs (headphones, internal speaker, earpiece etc) to these
dai. The hardware setup looks like this
https://lkml.org/lkml/2018/3/27/1225 with the cpcap chip acting as a
mux for various other devices on the pcb. The modem is one of these
devices. 

The problem is that the kernel has really no way of knowing if the
modem is outputing anything or not and thus if the mixer is setup sutch
that the modem is driving some output though dapm route (eg the
earpiece), the entire dapm route chain will remain off and inactive
causeing the kernel to disable the Earpiece PGA. Thus no output makes
it out of the device and the voice call fails unless one messes with
the registers to enable Earpiece PGA by hand.

Now i know of various ways to hack this problem away and have been
looking at the asoc/ alsa documentation for some time now but i really
cant seam to figure out how to solve this problem correctly. Really i
would need a way to pin the voice dai to be considerd allways active by
the kernel so that all downsteam devices get truned on when the mixer
is setup sutch that they are conected in a route.  Or give userspace a
mixer switch or other mechanisum to tell the kernel that the modem is
currently actively playing sound.

any help that can be given in this problem would me mutch appreciated.

-- 
Dev Null <devnull at uvos.xyz>


More information about the Alsa-devel mailing list