Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: Daniel Mack <zonque@gmail.com>
Cc: alsa-devel@alsa-project.org, broonie@kernel.org
Subject: Re: [PATCH v3 3/3] ASoC: codecs: adau1701: add support for pin muxing
Date: Fri, 21 Jun 2013 10:09:08 +0200	[thread overview]
Message-ID: <51C40A24.3040003@metafoo.de> (raw)
In-Reply-To: <1371801284-31603-4-git-send-email-zonque@gmail.com>

On 06/21/2013 09:54 AM, Daniel Mack wrote:
> The ADAU1701 has 12 pins that can be configured depending on the system
> configuration. Allow settting the corresponding registers from DT.
> 
> Signed-off-by: Daniel Mack <zonque@gmail.com>

Acked-by: Lars-Peter Clausen <lars@metafoo.de>

Thanks.

> ---
>  .../devicetree/bindings/sound/adi,adau1701.txt     |  6 +++++
>  sound/soc/codecs/adau1701.c                        | 29 ++++++++++++++++++++--
>  2 files changed, 33 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/sound/adi,adau1701.txt b/Documentation/devicetree/bindings/sound/adi,adau1701.txt
> index 173ae06..8582a45 100644
> --- a/Documentation/devicetree/bindings/sound/adi,adau1701.txt
> +++ b/Documentation/devicetree/bindings/sound/adi,adau1701.txt
> @@ -25,6 +25,10 @@ Optional properties:
>  			The state of the pins are set according to the
>  			configured clock divider on ASoC side before the
>  			firmware is loaded.
> + - adi,pin-config:	An array of 12 numerical values selecting one of the
> +			pin configurations as described in the datasheet,
> +			table 53. Note that the value of this property has
> +			to be prefixed with '/bits/ 8'.
>  
>  Examples:
>  
> @@ -34,5 +38,7 @@ Examples:
>  			reg = <0x34>;
>  			reset-gpio = <&gpio 23 0>;
>  			adi,pll-mode-gpios = <&gpio 24 0 &gpio 25 0>;
> +			adi,pin-config = /bits/ 8 <0x4 0x7 0x5 0x5 0x4 0x4
> +                                                   0x4 0x4 0x4 0x4 0x4 0x4>;
>  		};
>  	};
> diff --git a/sound/soc/codecs/adau1701.c b/sound/soc/codecs/adau1701.c
> index c48f4c5..95216c8 100644
> --- a/sound/soc/codecs/adau1701.c
> +++ b/sound/soc/codecs/adau1701.c
> @@ -30,6 +30,9 @@
>  #define ADAU1701_SERICTL	0x081f
>  
>  #define ADAU1701_AUXNPOW	0x0822
> +#define ADAU1701_PINCONF_0	0x0820
> +#define ADAU1701_PINCONF_1	0x0821
> +#define ADAU1701_AUXNPOW	0x0822
>  
>  #define ADAU1701_OSCIPOW	0x0826
>  #define ADAU1701_DACSET		0x0827
> @@ -97,6 +100,7 @@ struct adau1701 {
>  	unsigned int pll_clkdiv;
>  	unsigned int sysclk;
>  	struct regmap *regmap;
> +	u8 pin_config[12];
>  };
>  
>  static const struct snd_kcontrol_new adau1701_controls[] = {
> @@ -132,6 +136,9 @@ static unsigned int adau1701_register_size(struct device *dev,
>  		unsigned int reg)
>  {
>  	switch (reg) {
> +	case ADAU1701_PINCONF_0:
> +	case ADAU1701_PINCONF_1:
> +		return 3;
>  	case ADAU1701_DSPCTRL:
>  	case ADAU1701_SEROCTL:
>  	case ADAU1701_AUXNPOW:
> @@ -162,7 +169,7 @@ static int adau1701_reg_write(void *context, unsigned int reg,
>  	struct i2c_client *client = context;
>  	unsigned int i;
>  	unsigned int size;
> -	uint8_t buf[4];
> +	uint8_t buf[5];
>  	int ret;
>  
>  	size = adau1701_register_size(&client->dev, reg);
> @@ -561,7 +568,8 @@ MODULE_DEVICE_TABLE(of, adau1701_dt_ids);
>  
>  static int adau1701_probe(struct snd_soc_codec *codec)
>  {
> -	int ret;
> +	int ret, i;
> +	unsigned int val;
>  	struct i2c_client *client = to_i2c_client(codec->dev);
>  	struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec);
>  
> @@ -577,6 +585,19 @@ static int adau1701_probe(struct snd_soc_codec *codec)
>  	regmap_write(adau1701->regmap, ADAU1701_DACSET, ADAU1701_DACSET_DACINIT);
>  	regmap_write(adau1701->regmap, ADAU1701_DSPCTRL, ADAU1701_DSPCTRL_CR);
>  
> +	/* set up pin config */
> +	val = 0;
> +	for (i = 0; i < 6; i++)
> +		val |= adau1701->pin_config[i] << (i * 4);
> +
> +	regmap_write(adau1701->regmap, ADAU1701_PINCONF_0, val);
> +
> +	val = 0;
> +	for (i = 0; i < 6; i++)
> +		val |= adau1701->pin_config[i + 6] << (i * 4);
> +
> +	regmap_write(adau1701->regmap, ADAU1701_PINCONF_1, val);
> +
>  	return 0;
>  }
>  
> @@ -640,6 +661,10 @@ static int adau1701_i2c_probe(struct i2c_client *client,
>  
>  		of_property_read_u32(dev->of_node, "adi,pll-clkdiv",
>  				     &adau1701->pll_clkdiv);
> +
> +		of_property_read_u8_array(dev->of_node, "adi,pin-config",
> +					  adau1701->pin_config,
> +					  ARRAY_SIZE(adau1701->pin_config));
>  	}
>  
>  	if (gpio_is_valid(gpio_nreset)) {

      reply	other threads:[~2013-06-21  8:08 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-21  7:54 [PATCH v3 0/3] ASoC: codecs: some more improvements for adau1701 Daniel Mack
2013-06-21  7:54 ` [PATCH v3 1/3] ASoC: codecs: adau1701: allow configuration of PLL mode pins Daniel Mack
2013-06-21  8:09   ` Lars-Peter Clausen
2013-06-21 15:00   ` Mark Brown
2013-06-21 17:46     ` Daniel Mack
2013-06-22 22:10       ` [ucm] Adding list for caching multiple opened control devices sajeesh sidharthan
2013-06-24 17:09         ` Daniel Mack
2013-06-25  6:10           ` Takashi Iwai
2013-06-21  7:54 ` [PATCH v3 2/3] ASoC: codecs: adau1701: switch to direct regmap API usage Daniel Mack
2013-06-21  8:09   ` Lars-Peter Clausen
2013-06-21  7:54 ` [PATCH v3 3/3] ASoC: codecs: adau1701: add support for pin muxing Daniel Mack
2013-06-21  8:09   ` Lars-Peter Clausen [this message]

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=51C40A24.3040003@metafoo.de \
    --to=lars@metafoo.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=zonque@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox