[alsa-devel] [PATCH 1/2] ASoC: uda134x: replace a macro with a value in platform struct.

Liam Girdwood lrg at slimlogic.co.uk
Thu Jun 24 15:49:30 CEST 2010


On Thu, 2010-06-24 at 17:38 +0400, Vladimir Zapolskiy wrote:
> This change wipes out a hardcoded macro, which enables codec bias
> level control. Now is_powered_on_standby value shall be used instead.
> 
> Signed-off-by: Vladimir Zapolskiy <vzapolskiy at gmail.com>
> ---
>  include/sound/uda134x.h    |   12 ++++++++++++
>  sound/soc/codecs/uda134x.c |   21 +++++----------------
>  2 files changed, 17 insertions(+), 16 deletions(-)
> 
> diff --git a/include/sound/uda134x.h b/include/sound/uda134x.h
> index 509efb0..e475659 100644
> --- a/include/sound/uda134x.h
> +++ b/include/sound/uda134x.h
> @@ -18,6 +18,18 @@ struct uda134x_platform_data {
>  	struct l3_pins l3;
>  	void (*power) (int);
>  	int model;
> +	/*
> +	  ALSA SOC usually puts the device in standby mode when it's not used
> +	  for sometime. If you unset is_powered_on_standby the driver will
> +	  turn off the ADC/DAC when this callback is invoked and turn it back
> +	  on when needed. Unfortunately this will result in a very light bump
> +	  (it can be audible only with good earphones). If this bothers you
> +	  set is_powered_on_standby, you will have slightly higher power
> +	  consumption. Please note that sending the L3 command for ADC is
> +	  enough to make the bump, so it doesn't make difference if you
> +	  completely take off power from the codec.
> +	*/
> +	int is_powered_on_standby;
>  #define UDA134X_UDA1340 1
>  #define UDA134X_UDA1341 2
>  #define UDA134X_UDA1344 3
> diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
> index e8066b6..5c7b054 100644
> --- a/sound/soc/codecs/uda134x.c
> +++ b/sound/soc/codecs/uda134x.c
> @@ -27,19 +27,6 @@
>  #include "uda134x.h"
>  
> 
> -#define POWER_OFF_ON_STANDBY 1
> -/*
> -  ALSA SOC usually puts the device in standby mode when it's not used
> -  for sometime. If you define POWER_OFF_ON_STANDBY the driver will
> -  turn off the ADC/DAC when this callback is invoked and turn it back
> -  on when needed. Unfortunately this will result in a very light bump
> -  (it can be audible only with good earphones). If this bothers you
> -  just comment this line, you will have slightly higher power
> -  consumption . Please note that sending the L3 command for ADC is
> -  enough to make the bump, so it doesn't make difference if you
> -  completely take off power from the codec.
> - */
> -
>  #define UDA134X_RATES SNDRV_PCM_RATE_8000_48000
>  #define UDA134X_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE | \
>  		SNDRV_PCM_FMTBIT_S18_3LE | SNDRV_PCM_FMTBIT_S20_3LE)
> @@ -559,9 +546,11 @@ static int uda134x_soc_probe(struct platform_device *pdev)
>  	codec->num_dai = 1;
>  	codec->read = uda134x_read_reg_cache;
>  	codec->write = uda134x_write;
> -#ifdef POWER_OFF_ON_STANDBY
> -	codec->set_bias_level = uda134x_set_bias_level;
> -#endif
> +
> +	if (!pd->is_powered_on_standby) {
> +		codec->set_bias_level = uda134x_set_bias_level;

The codec ops pointers have moved in multi-component. Can you put this
check in your uda134x_set_bias_level() instead.

Thanks

Liam
-- 
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk



More information about the Alsa-devel mailing list