Purpose of this virtual Detection pin is to keep codec bias on whenever the GPIO or jack detection features are needed.
Jack detection needs a mic bias so machine drivers can construct a following route for instance for keeping the path and codec bias on:
"Input Jack" -> "Mic Bias xV" -> "Detection" -> detection block inside codec.
For the GPIO the machine driver can force the pin on with snd_soc_dapm_force_enable_pin.
Signed-off-by: Jarkko Nikula jhnikula@gmail.com --- PLL is activated when in SND_SOC_BIAS_PREPARE or _ON so it could be running but I have a vague impression that it's active only when ADC or DAC is on. I don't have at the moment possibility to measure it and don't want to move it to DAPM either before doing some oscilloscope and pop & clicks measurements. Current consumption anyway doesn't differ between standby and on when there is no active stream and other widgets are off. --- sound/soc/codecs/tlv320aic3x.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 7b5f159..6190351 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -605,6 +605,14 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { SND_SOC_DAPM_INPUT("LINE1R"), SND_SOC_DAPM_INPUT("LINE2L"), SND_SOC_DAPM_INPUT("LINE2R"), + + /* + * Virtual output pin to detection block inside codec. This can be + * used to keep codec bias on if gpio or detection features are needed. + * Force pin on or construct a path with an input jack and mic bias + * widgets. + */ + SND_SOC_DAPM_OUTPUT("Detection"), };
static const struct snd_soc_dapm_widget aic3007_dapm_widgets[] = {