On Thu, May 12, 2022 at 12:19:03PM +0100, Mark Brown wrote:
On Thu, May 12, 2022 at 01:09:59PM +0200, Tommaso Merciai wrote:
On Thu, May 12, 2022 at 11:53:07AM +0100, Mark Brown wrote:
On Thu, May 12, 2022 at 12:46:42PM +0200, Tommaso Merciai wrote:
On Thu, May 12, 2022 at 11:12:02AM +0100, Mark Brown wrote:
These look like they should be DAPM controls since they're controlling audio routing but they're being added as regular controls.
Sorry again. You suggest to create a new structure for these entries, for example:
If that's how they fit into the routing for the device, yes - you'd need to define the bypass mixer as well and set up appropraite routes.
I added this reg as regular controls because this reg is pretty generic as you can see this controll bypass of some output, not all. What do you think about?
That sounds exactly like a DAPM control, please make them DAPM controls.
Hi Mark, 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):
/* Out Mixer SPK */ static const struct snd_kcontrol_new max98088_output_bypass_spk_mixer_controls[] = { SOC_DAPM_SINGLE("SPK Bypass Switch", M98088_REG_4A_CFG_BYPASS, 0, 1, 0), };
/* Out Mixer REC */ static const struct snd_kcontrol_new max98088_output_bypass_rec_mixer_controls[] = { SOC_DAPM_SINGLE("REC Bypass Switch", M98088_REG_4A_CFG_BYPASS, 1, 1, 0), };
/* Out Mixer MIC */ static const struct snd_kcontrol_new max98088_output_bypass_mic_mixer_controls[] = { SOC_DAPM_SINGLE("MIC2 Bypass Switch", M98088_REG_4A_CFG_BYPASS, 4, 1, 0), };
/* Out Mixer INA */ static const struct snd_kcontrol_new max98088_output_bypass_ina_mixer_controls[] = { SOC_DAPM_SINGLE("INA Bypass Switch", M98088_REG_4A_CFG_BYPASS, 7, 1, 0), };
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? Can you point me a similar bypass switch into the kernel to take as reference? Thanks in advance
Regards, Tommmaso