And what about microphone bias?
Would this be OK?
static int sun4i_codec_handle_mic_bias_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { struct sun4i_codec *scodec = snd_soc_card_get_drvdata(w->dapm->card); if (SND_SOC_DAPM_EVENT_ON(event)) regmap_update_bits(scodec->regmap, SUN4I_CODEC_ADC_ACTL, BIT(SUN4I_CODEC_ADC_ACTL_VMICEN), BIT(SUN4I_CODEC_ADC_ACTL_VMICEN)); else regmap_update_bits(scodec->regmap, SUN4I_CODEC_ADC_ACTL, BIT(SUN4I_CODEC_ADC_ACTL_VMICEN), 0); }
static const struct snd_soc_dapm_widget sun4i_codec_codec_dapm_widgets[] = { ... SND_SOC_DAPM_MIC("Mic1", sun4i_codec_handle_mic_bias_event), SND_SOC_DAPM_MIC("Mic2", sun4i_codec_handle_mic_bias_event),
Do I then remove
SND_SOC_DAPM_SUPPLY("VMIC", SUN4I_CODEC_ADC_ACTL, SUN4I_CODEC_ADC_ACTL_VMICEN, 0, NULL, 0),
completely? What about the routes?