All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mack <zonque@gmail.com>
To: broonie@kernel.org
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH 2/3] ASoC: ak4104: add regulator consumer support
Date: Wed, 26 Mar 2014 16:06:49 +0100	[thread overview]
Message-ID: <5332ED09.3090209@gmail.com> (raw)
In-Reply-To: <1395829378-13055-2-git-send-email-zonque@gmail.com>

On 03/26/2014 11:22 AM, Daniel Mack wrote:
> The AK4104 has only one power supply, called VDD. Make sure it is
> enabled during the life-time of the module.

Sorry, I just noticed there was an update for this driver in the ASoC
for-next branch that causes a trivial conflict for this particular
patch. If desired, I can resend a rebased version. The other two patches
are unaffected.


> 
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> ---
>  sound/soc/codecs/ak4104.c | 30 +++++++++++++++++++++++++-----
>  1 file changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c
> index b4819dc..c7a541d 100644
> --- a/sound/soc/codecs/ak4104.c
> +++ b/sound/soc/codecs/ak4104.c
> @@ -11,13 +11,14 @@
>  
>  #include <linux/module.h>
>  #include <linux/slab.h>
> -#include <sound/core.h>
> -#include <sound/soc.h>
> -#include <sound/initval.h>
>  #include <linux/spi/spi.h>
>  #include <linux/of_device.h>
>  #include <linux/of_gpio.h>
> +#include <linux/regulator/consumer.h>
>  #include <sound/asoundef.h>
> +#include <sound/core.h>
> +#include <sound/soc.h>
> +#include <sound/initval.h>
>  
>  /* AK4104 registers addresses */
>  #define AK4104_REG_CONTROL1		0x00
> @@ -47,6 +48,7 @@
>  
>  struct ak4104_private {
>  	struct regmap *regmap;
> +	struct regulator *regulator;
>  };
>  
>  static const struct snd_soc_dapm_widget ak4104_dapm_widgets[] = {
> @@ -176,20 +178,30 @@ static int ak4104_probe(struct snd_soc_codec *codec)
>  
>  	codec->control_data = ak4104->regmap;
>  
> +	ret = regulator_enable(ak4104->regulator);
> +	if (ret < 0) {
> +		dev_err(codec->dev, "Unable to enable regulator: %d\n", ret);
> +		return ret;
> +	}
> +
>  	/* set power-up and non-reset bits */
>  	ret = regmap_update_bits(ak4104->regmap, AK4104_REG_CONTROL1,
>  				 AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN,
>  				 AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN);
>  	if (ret < 0)
> -		return ret;
> +		goto exit_disable_regulator;
>  
>  	/* enable transmitter */
>  	ret = regmap_update_bits(ak4104->regmap, AK4104_REG_TX,
>  				 AK4104_TX_TXE, AK4104_TX_TXE);
>  	if (ret < 0)
> -		return ret;
> +		goto exit_disable_regulator;
>  
>  	return 0;
> +
> +exit_disable_regulator:
> +	regulator_disable(ak4104->regulator);
> +	return ret;
>  }
>  
>  static int ak4104_remove(struct snd_soc_codec *codec)
> @@ -198,6 +210,7 @@ static int ak4104_remove(struct snd_soc_codec *codec)
>  
>  	regmap_update_bits(ak4104->regmap, AK4104_REG_CONTROL1,
>  			   AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN, 0);
> +	regulator_disable(ak4104->regulator);
>  
>  	return 0;
>  }
> @@ -241,6 +254,13 @@ static int ak4104_spi_probe(struct spi_device *spi)
>  	if (ak4104 == NULL)
>  		return -ENOMEM;
>  
> +	ak4104->regulator = devm_regulator_get(&spi->dev, "vdd");
> +	if (IS_ERR(ak4104->regulator)) {
> +		ret = PTR_ERR(ak4104->regulator);
> +		dev_err(&spi->dev, "Unable to get Vdd regulator: %d\n", ret);
> +		return ret;
> +	}
> +
>  	ak4104->regmap = devm_regmap_init_spi(spi, &ak4104_regmap);
>  	if (IS_ERR(ak4104->regmap)) {
>  		ret = PTR_ERR(ak4104->regmap);
> 

  reply	other threads:[~2014-03-26 15:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-26 10:22 [PATCH 1/3] ASoC: ak5386: add regulator consumer support Daniel Mack
2014-03-26 10:22 ` [PATCH 2/3] ASoC: ak4104: " Daniel Mack
2014-03-26 15:06   ` Daniel Mack [this message]
2014-03-26 10:22 ` [PATCH 3/3] ASoC: tas5086: " Daniel Mack
2014-03-26 16:31   ` Daniel Mack
2014-03-26 16:38     ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5332ED09.3090209@gmail.com \
    --to=zonque@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.