On Mon, May 29, 2017 at 02:53:06PM +0100, Mark Brown wrote:
On Thu, May 18, 2017 at 04:32:39PM +0100, Charles Keepax wrote:
- SOC_SINGLE_EXT("SYNC Audio", CS35L35_MULT_DEV_SYNCH2, 1, 1, 0,
snd_soc_get_volsw, cs35l35_put_sync),
- SOC_SINGLE_EXT("SYNC VPBR", CS35L35_MULT_DEV_SYNCH2, 2, 1, 0,
snd_soc_get_volsw, cs35l35_put_sync),
- SOC_SINGLE_EXT("SYNC OTW", CS35L35_MULT_DEV_SYNCH2, 3, 1, 0,
snd_soc_get_volsw, cs35l35_put_sync),
I can't tell how this works. It feels like this shouldn't just be being controlled from userspace but rather should be handled in some more standard fashion, or possibly as part of the platform integration but right now it's just some totally undocumented application managed controls.
These activate the individual types of synchronisation between the two stereo amps over a proprietary single wire connection between the two amps. The audio option synchronises the group delay between the two amps. The VPBR links the brown out on the two amps and the OTW links the over temperature warning.
The issue is really one of it being use-case specific whether the amps are being used independently or in a stereo configuration. You could have only a single amp in use in which case the sync features are best turned off. Or one might even have use-cases with both amps where they are being used independently but at the same time.
I guess we could potentially do those as calls from the machine driver, although in some cases it might be hard to tell which use-case is being used. Alternatively, one could try to actually link the two amps in DAPM and control it that way although you probably still want some device tree stuff to say which things you want to sync and it might cause issues in any cases where you had both amps up but didn't want to sync.
Thanks, Charles