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)) {
prev parent 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 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.