mixer controls not updating when changed in another process for ASoC aux devices

Matt Campbell mcampbell at izotope.com
Sat Feb 13 20:02:13 CET 2021


I am using the snd-soc-simple-card driver to glue together a DAI, Codec,
and a few aux devices that have custom drivers for pre-amp control. When I
have two instances of alsamixer open and change the output control (a
control  that is part of the main Codec driver) that change immediately
shows in the second instance of alsamixer. However, when changing any of
the controls that come from an aux device, these changes do not show up in
the second instance. Exiting and re-launching the second alsamixer will
then show the changes. I would expect these controls to behave the same as
the main codec master output level with immediate update in all instances.

I'm speculating that the aux devices might be treated differently in a way
that is causing the unexpected behavior. I haven't been able to identify
anything through a few hours of code inspection, but I'm far from an expert
on the internals of ASoC. I'm hoping someone on this list might be able to
confirm or deny that suspicion and possibly help me get to the bottom of
this.

 A few other possibly relevant details:
* This happens both with snd-soc-simple-driver and a different custom
in-house platform driver that uses aux devs.
* I am on an older version of the kernel (4.14.2). I scanned logs between
the head of master and that version for ASoC changes and nothing popped out
to me as relevant.
* The aux dev causing this is an in-house driver for the THAT 5xx3 series
of pre-amplifier controller that we intend to upstream. I'm happy to share
code from that if it helps.

Best,
~Matt
-- 
Matthew Campbell
Principal Engineer
mcampbell at izotope.com

iZotope, Inc.
www.izotope.com


More information about the Alsa-devel mailing list