One thing that could work is to setup SND_SOC_DAPM_{PRE,POST}_REG events for the SWITCH widget. This callback gets called whenever user changes the control (and it is not disabled by DAPM). The next step then would be to set up an internal event callback for kcontrol widgets which then again calls the event callbacks for the kcontrol's widgets like we do in dapm_widget_update(). But I'm not convinced that this is the best way to solve this. I think it makes things more complicated than they need to be. I think having a OUTDRV widget along the path that runs the mute and unmute sequence might be a better option. And then have virtual switch control to let userspace disconnect the path, so that it is still possbile to manually mute it.
Does "virtual switch control" mean a switch control which will not touch the codec's register actually?
- Lars
------Please consider the environment before printing this e-mail.