On Fri, May 13, 2022 at 05:20:55PM +0200, Tommaso Merciai wrote:
On Thu, May 12, 2022 at 12:19:03PM +0100, Mark Brown wrote:
That sounds exactly like a DAPM control, please make them DAPM controls.
Sorry again, but I'm quite new on alsa subsystem. I need an help on figuring out on how to implements your solution. From what you suggest I got that I need to create a bypass mixer for every switch (4 -> SPK, REC, MIC2, INA):
It depends how the audio is routed - that would be a fairly unusual structure for hardware but it's possible. Often bypass paths feed into mixers that have other, non-bypass paths.
After that, I need to route the new control mixers on the switch:
{"Out Mixer SPK", "SPK Bypass Switch", "RECN"}, {"Out Mixer REC", "REC Bypass Switch", "RECP"}, {"Out Mixer MIC", "MIC2 Bypass Switch", "MIC1"}, {"Out Mixer INA", "INA Bypass Switch", "INA"},
Then route the bypass switch to the new output:
{"SPKL", NULL, "SPK Bypass Switch"}, {"RECN", NULL, "REC Bypass Switch"}, {"MIC2", NULL, "MIC2 Bypass Switch"}, {"MIC1", NULL, "INA Bypass Switch"},
I'm in the right way? What do you think about?
That's pretty much it if they're a bunch of separate things.
Can you point me a similar bypass switch into the kernel to take as reference?
If you search for "Bypass" in sound/soc/codecs you'll see a bunch of examples - a lot of the Wolfson devices have bypass paths for example. You'll see that for example with wm9713 the bypass paths go into mixers that have other inputs rather than being totally separate things - I see that this device has things like "Right SPK Mixer" which look like they might fit here.