[alsa-devel] [PATCH 2/4] ASoC: msm8916-wcd-analog: Fix MIC BIAS Internal1

Srinivas Kandagatla srinivas.kandagatla at linaro.org
Mon Jan 13 15:08:33 CET 2020



On 11/01/2020 16:40, Stephan Gerhold wrote:
> MIC BIAS Internal1 is broken at the moment because we always
> enable the internal rbias resistor to the TX2 line (connected to
> the headset microphone), rather than enabling the resistor connected
> to TX1.
> 
> Move the RBIAS code to pm8916_wcd_analog_enable_micbias_int1/2()
> to fix this.
> 
> Fixes: 585e881e5b9e ("ASoC: codecs: Add msm8916-wcd analog codec")
> Cc: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
> Signed-off-by: Stephan Gerhold <stephan at gerhold.net>

LGTM,

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>


> ---
>   sound/soc/codecs/msm8916-wcd-analog.c | 16 +++++++++++++---
>   1 file changed, 13 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/soc/codecs/msm8916-wcd-analog.c b/sound/soc/codecs/msm8916-wcd-analog.c
> index 30b19f12fabc..1f7964beb20c 100644
> --- a/sound/soc/codecs/msm8916-wcd-analog.c
> +++ b/sound/soc/codecs/msm8916-wcd-analog.c
> @@ -396,9 +396,6 @@ static int pm8916_wcd_analog_enable_micbias_int(struct snd_soc_component
>   
>   	switch (event) {
>   	case SND_SOC_DAPM_PRE_PMU:
> -		snd_soc_component_update_bits(component, CDC_A_MICB_1_INT_RBIAS,
> -				    MICB_1_INT_TX2_INT_RBIAS_EN_MASK,
> -				    MICB_1_INT_TX2_INT_RBIAS_EN_ENABLE);
>   		snd_soc_component_update_bits(component, reg, MICB_1_EN_PULL_DOWN_EN_MASK, 0);
>   		snd_soc_component_update_bits(component, CDC_A_MICB_1_EN,
>   				    MICB_1_EN_OPA_STG2_TAIL_CURR_MASK,
> @@ -448,6 +445,14 @@ static int pm8916_wcd_analog_enable_micbias_int1(struct
>   	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
>   	struct pm8916_wcd_analog_priv *wcd = snd_soc_component_get_drvdata(component);
>   
> +	switch (event) {
> +	case SND_SOC_DAPM_PRE_PMU:
> +		snd_soc_component_update_bits(component, CDC_A_MICB_1_INT_RBIAS,
> +				    MICB_1_INT_TX1_INT_RBIAS_EN_MASK,
> +				    MICB_1_INT_TX1_INT_RBIAS_EN_ENABLE);
> +		break;
> +	}
> +
>   	return pm8916_wcd_analog_enable_micbias_int(component, event, w->reg,
>   						     wcd->micbias1_cap_mode);
>   }
> @@ -558,6 +563,11 @@ static int pm8916_wcd_analog_enable_micbias_int2(struct
>   	struct pm8916_wcd_analog_priv *wcd = snd_soc_component_get_drvdata(component);
>   
>   	switch (event) {
> +	case SND_SOC_DAPM_PRE_PMU:
> +		snd_soc_component_update_bits(component, CDC_A_MICB_1_INT_RBIAS,
> +				    MICB_1_INT_TX2_INT_RBIAS_EN_MASK,
> +				    MICB_1_INT_TX2_INT_RBIAS_EN_ENABLE);
> +		break;
>   	case SND_SOC_DAPM_POST_PMU:
>   		pm8916_mbhc_configure_bias(wcd, true);
>   		break;
> 


More information about the Alsa-devel mailing list