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