[alsa-devel] [PATCH] ASoC: tpa6130a2: Fix unbalanced regulator disables

Takashi Iwai tiwai at suse.de
Wed Nov 3 15:00:12 CET 2010


At Thu, 28 Oct 2010 14:05:40 +0300,
Jarkko Nikula wrote:
> 
> This driver has unbalanced regulator_disable when doing module loading and
> unloading. This is because tpa6130a2_probe followed by tpa6130a2_remove
> calls twice tpa6130a2_power(0). Fix this by implementing a state checking
> in tpa6130a2_power.
> 
> Signed-off-by: Jarkko Nikula <jhnikula at gmail.com>
> Cc: Peter Ujfalusi <peter.ujfalusi at nokia.com>
> ---
>  sound/soc/codecs/tpa6130a2.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c
> index 329acc1..83b5631 100644
> --- a/sound/soc/codecs/tpa6130a2.c
> +++ b/sound/soc/codecs/tpa6130a2.c
> @@ -125,7 +125,7 @@ static int tpa6130a2_power(int power)
>  	data = i2c_get_clientdata(tpa6130a2_client);
>  
>  	mutex_lock(&data->mutex);
> -	if (power) {
> +	if (power && !data->power_state) {
>  		/* Power on */
>  		if (data->power_gpio >= 0)
>  			gpio_set_value(data->power_gpio, 1);
> @@ -153,7 +153,7 @@ static int tpa6130a2_power(int power)
>  		val = tpa6130a2_read(TPA6130A2_REG_CONTROL);
>  		val &= ~TPA6130A2_SWS;
>  		tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val);
> -	} else {
> +	} else if (!power && data->power_state) {
>  		/* set SWS */
>  		val = tpa6130a2_read(TPA6130A2_REG_CONTROL);
>  		val |= TPA6130A2_SWS;

This seems triggering a compile warning:

  sound/soc/codecs/tpa6130a2.c:122:6: warning: ‘ret’ may be used uninitialized in this function


Takashi


More information about the Alsa-devel mailing list