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 -- Tommaso Merciai Embedded Linux Engineer tommaso.merciai@xxxxxxxxxxxxxxxxxxxx __________________________________ Amarula Solutions SRL Via Le Canevare 30, 31100 Treviso, Veneto, IT T. +39 042 243 5310 info@xxxxxxxxxxxxxxxxxxxx www.amarulasolutions.com