* [PATCH v6 0/4] ASoC: tlv320aic32x4: DT support
@ 2014-02-20 17:22 Markus Pargmann
[not found] ` <1392916981-9333-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Markus Pargmann @ 2014-02-20 17:22 UTC (permalink / raw)
To: Mark Brown
Cc: Markus Pargmann, alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
Hi,
This series adds master clock and regulators to the tlv320aic32x4 driver.
In v6 I added error handling for the regulator setup. master clock is required
for the driver now but still optional in the DT bindings.
Regards,
Markus
Markus Pargmann (4):
ASoC: tlv320aic32x4: Support for master clock
ASoC: tlv320aic32x4: Support for regulators
ASoC: tlv320aic32x4: Rearrange clock tree shutdown
Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x
.../devicetree/bindings/sound/tlv320aic32x4.txt | 12 ++
.../devicetree/bindings/sound/tlv320aic3x.txt | 1 -
sound/soc/codecs/tlv320aic32x4.c | 177 +++++++++++++++++++--
3 files changed, 173 insertions(+), 17 deletions(-)
--
1.8.5.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 1/4] ASoC: tlv320aic32x4: Support for master clock
[not found] ` <1392916981-9333-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
@ 2014-02-20 17:22 ` Markus Pargmann
[not found] ` <1392916981-9333-2-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Markus Pargmann @ 2014-02-20 17:22 UTC (permalink / raw)
To: Mark Brown
Cc: Liam Girdwood, Lars-Peter Clausen,
alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
Markus Pargmann, Rob Herring, Pawel Moll, Mark Rutland,
Ian Campbell, Kumar Gala, devicetree-u79uwXL29TY76Z2rM5mHXA
Add support for a master clock passed through DT. The master clock of
the codec is only active when the codec is in use.
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>
Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
Cc: Ian Campbell <ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>
Cc: Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Markus Pargmann <mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
---
.../devicetree/bindings/sound/tlv320aic32x4.txt | 4 ++++
sound/soc/codecs/tlv320aic32x4.c | 21 +++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
index db05510..352be7b 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
@@ -8,6 +8,8 @@ Required properties:
Optional properties:
- reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt
+ - clocks/clock-names: Clock named 'mclk' for the master clock of the codec.
+ See clock/clock-bindings.txt for information about the detailed format.
Example:
@@ -15,4 +17,6 @@ Example:
codec: tlv320aic32x4@18 {
compatible = "ti,tlv320aic32x4";
reg = <0x18>;
+ clocks = <&clks 201>;
+ clock-names = "mclk";
};
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index 1dd50e4..643fa53 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -33,6 +33,7 @@
#include <linux/i2c.h>
#include <linux/cdev.h>
#include <linux/slab.h>
+#include <linux/clk.h>
#include <sound/tlv320aic32x4.h>
#include <sound/core.h>
@@ -67,6 +68,7 @@ struct aic32x4_priv {
u32 micpga_routing;
bool swapdacs;
int rstn_gpio;
+ struct clk *mclk;
};
/* 0dB min, 0.5dB steps */
@@ -487,8 +489,18 @@ static int aic32x4_mute(struct snd_soc_dai *dai, int mute)
static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
enum snd_soc_bias_level level)
{
+ struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
+ int ret;
+
switch (level) {
case SND_SOC_BIAS_ON:
+ /* Switch on master clock */
+ ret = clk_prepare_enable(aic32x4->mclk);
+ if (ret) {
+ dev_err(codec->dev, "Failed to enable master clock\n");
+ return ret;
+ }
+
/* Switch on PLL */
snd_soc_update_bits(codec, AIC32X4_PLLPR,
AIC32X4_PLLEN, AIC32X4_PLLEN);
@@ -539,6 +551,9 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
/* Switch off BCLK_N Divider */
snd_soc_update_bits(codec, AIC32X4_BCLKN,
AIC32X4_BCLKEN, 0);
+
+ /* Switch off master clock */
+ clk_disable_unprepare(aic32x4->mclk);
break;
case SND_SOC_BIAS_OFF:
break;
@@ -717,6 +732,12 @@ static int aic32x4_i2c_probe(struct i2c_client *i2c,
aic32x4->rstn_gpio = -1;
}
+ aic32x4->mclk = devm_clk_get(&i2c->dev, "mclk");
+ if (IS_ERR(aic32x4->mclk)) {
+ dev_err(&i2c->dev, "Failed getting the mclk. The current implementation does not support the usage of this codec without mclk\n");
+ return PTR_ERR(aic32x4->mclk);
+ }
+
if (gpio_is_valid(aic32x4->rstn_gpio)) {
ret = devm_gpio_request_one(&i2c->dev, aic32x4->rstn_gpio,
GPIOF_OUT_INIT_LOW, "tlv320aic32x4 rstn");
--
1.8.5.3
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 2/4] ASoC: tlv320aic32x4: Support for regulators
2014-02-20 17:22 [PATCH v6 0/4] ASoC: tlv320aic32x4: DT support Markus Pargmann
[not found] ` <1392916981-9333-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
@ 2014-02-20 17:22 ` Markus Pargmann
2014-02-23 4:00 ` Mark Brown
2014-02-20 17:23 ` [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown Markus Pargmann
2014-02-20 17:23 ` [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x Markus Pargmann
3 siblings, 1 reply; 9+ messages in thread
From: Markus Pargmann @ 2014-02-20 17:22 UTC (permalink / raw)
To: Mark Brown
Cc: Markus Pargmann, alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
Support regulators to power up the codec. This patch also enables the
AVDD LDO if no AV regulator was found.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
---
.../devicetree/bindings/sound/tlv320aic32x4.txt | 8 ++
sound/soc/codecs/tlv320aic32x4.c | 126 ++++++++++++++++++++-
2 files changed, 133 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
index 352be7b..5e2741a 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
@@ -5,6 +5,14 @@ The tlv320aic32x4 serial control bus communicates through I2C protocols
Required properties:
- compatible: Should be "ti,tlv320aic32x4"
- reg: I2C slave address
+ - supply-*: Required supply regulators are:
+ "iov" - digital IO power supply
+ "ldoin" - LDO power supply
+ "dv" - Digital core power supply
+ "av" - Analog core power supply
+ If you supply ldoin, dv and av are optional. Otherwise they are required
+ See regulator/regulator.txt for more information about the detailed binding
+ format.
Optional properties:
- reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index 643fa53..d69c61f 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -34,6 +34,7 @@
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/clk.h>
+#include <linux/regulator/consumer.h>
#include <sound/tlv320aic32x4.h>
#include <sound/core.h>
@@ -69,6 +70,11 @@ struct aic32x4_priv {
bool swapdacs;
int rstn_gpio;
struct clk *mclk;
+
+ struct regulator *supply_ldo;
+ struct regulator *supply_iov;
+ struct regulator *supply_dv;
+ struct regulator *supply_av;
};
/* 0dB min, 0.5dB steps */
@@ -695,6 +701,106 @@ static int aic32x4_parse_dt(struct aic32x4_priv *aic32x4,
return 0;
}
+static void aic32x4_disable_regulators(struct aic32x4_priv *aic32x4)
+{
+ regulator_disable(aic32x4->supply_iov);
+
+ if (!IS_ERR(aic32x4->supply_ldo))
+ regulator_disable(aic32x4->supply_ldo);
+
+ if (!IS_ERR(aic32x4->supply_dv))
+ regulator_disable(aic32x4->supply_dv);
+
+ if (!IS_ERR(aic32x4->supply_av))
+ regulator_disable(aic32x4->supply_av);
+}
+
+static int aic32x4_setup_regulators(struct device *dev,
+ struct aic32x4_priv *aic32x4)
+{
+ int ret = 0;
+
+ aic32x4->supply_ldo = devm_regulator_get_optional(dev, "ldoin");
+ aic32x4->supply_iov = devm_regulator_get(dev, "iov");
+ aic32x4->supply_dv = devm_regulator_get_optional(dev, "dv");
+ aic32x4->supply_av = devm_regulator_get_optional(dev, "av");
+
+ /* Check if the regulator requirements are fulfilled */
+
+ if (IS_ERR(aic32x4->supply_iov)) {
+ dev_err(dev, "Missing supply 'iov'\n");
+ return PTR_ERR(aic32x4->supply_iov);
+ }
+
+ if (IS_ERR(aic32x4->supply_ldo)) {
+ if (PTR_ERR(aic32x4->supply_ldo) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+
+ if (IS_ERR(aic32x4->supply_dv)) {
+ dev_err(dev, "Missing supply 'dv' or 'ldoin'\n");
+ return PTR_ERR(aic32x4->supply_dv);
+ }
+ if (IS_ERR(aic32x4->supply_av)) {
+ dev_err(dev, "Missing supply 'av' or 'ldoin'\n");
+ return PTR_ERR(aic32x4->supply_av);
+ }
+ } else {
+ if (IS_ERR(aic32x4->supply_dv) &&
+ PTR_ERR(aic32x4->supply_dv) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ if (IS_ERR(aic32x4->supply_av) &&
+ PTR_ERR(aic32x4->supply_av) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ }
+
+ ret = regulator_enable(aic32x4->supply_iov);
+ if (ret) {
+ dev_err(dev, "Failed to enable regulator iov\n");
+ return ret;
+ }
+
+ if (!IS_ERR(aic32x4->supply_ldo)) {
+ ret = regulator_enable(aic32x4->supply_ldo);
+ if (ret) {
+ dev_err(dev, "Failed to enable regulator ldo\n");
+ goto error_ldo;
+ }
+ }
+
+ if (!IS_ERR(aic32x4->supply_dv)) {
+ ret = regulator_enable(aic32x4->supply_dv);
+ if (ret) {
+ dev_err(dev, "Failed to enable regulator dv\n");
+ goto error_dv;
+ }
+ }
+
+ if (!IS_ERR(aic32x4->supply_av)) {
+ ret = regulator_enable(aic32x4->supply_av);
+ if (ret) {
+ dev_err(dev, "Failed to enable regulator av\n");
+ goto error_av;
+ }
+ }
+
+ if (!IS_ERR(aic32x4->supply_ldo) && IS_ERR(aic32x4->supply_av))
+ aic32x4->power_cfg |= AIC32X4_PWR_AIC32X4_LDO_ENABLE;
+
+ return 0;
+
+error_av:
+ if (!IS_ERR(aic32x4->supply_dv))
+ regulator_disable(aic32x4->supply_dv);
+
+error_dv:
+ if (!IS_ERR(aic32x4->supply_ldo))
+ regulator_disable(aic32x4->supply_ldo);
+
+error_ldo:
+ regulator_disable(aic32x4->supply_iov);
+ return ret;
+}
+
static int aic32x4_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
@@ -745,13 +851,31 @@ static int aic32x4_i2c_probe(struct i2c_client *i2c,
return ret;
}
+ ret = aic32x4_setup_regulators(&i2c->dev, aic32x4);
+ if (ret) {
+ dev_err(&i2c->dev, "Failed to setup regulators\n");
+ return ret;
+ }
+
ret = snd_soc_register_codec(&i2c->dev,
&soc_codec_dev_aic32x4, &aic32x4_dai, 1);
- return ret;
+ if (ret) {
+ dev_err(&i2c->dev, "Failed to register codec\n");
+ aic32x4_disable_regulators(aic32x4);
+ return ret;
+ }
+
+ i2c_set_clientdata(i2c, aic32x4);
+
+ return 0;
}
static int aic32x4_i2c_remove(struct i2c_client *client)
{
+ struct aic32x4_priv *aic32x4 = i2c_get_clientdata(client);
+
+ aic32x4_disable_regulators(aic32x4);
+
snd_soc_unregister_codec(&client->dev);
return 0;
}
--
1.8.5.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown
2014-02-20 17:22 [PATCH v6 0/4] ASoC: tlv320aic32x4: DT support Markus Pargmann
[not found] ` <1392916981-9333-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-02-20 17:22 ` [PATCH v6 2/4] ASoC: tlv320aic32x4: Support for regulators Markus Pargmann
@ 2014-02-20 17:23 ` Markus Pargmann
2014-02-23 4:00 ` Mark Brown
2014-02-20 17:23 ` [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x Markus Pargmann
3 siblings, 1 reply; 9+ messages in thread
From: Markus Pargmann @ 2014-02-20 17:23 UTC (permalink / raw)
To: Mark Brown
Cc: Markus Pargmann, alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
Rearrange clock tree shutdown to disable them in the reversed order of
startup. First disable all dividers, then PLL followed by master clock.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
---
sound/soc/codecs/tlv320aic32x4.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index d69c61f..c6bd7e7 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -534,29 +534,29 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
case SND_SOC_BIAS_PREPARE:
break;
case SND_SOC_BIAS_STANDBY:
- /* Switch off PLL */
- snd_soc_update_bits(codec, AIC32X4_PLLPR,
- AIC32X4_PLLEN, 0);
-
- /* Switch off NDAC Divider */
- snd_soc_update_bits(codec, AIC32X4_NDAC,
- AIC32X4_NDACEN, 0);
+ /* Switch off BCLK_N Divider */
+ snd_soc_update_bits(codec, AIC32X4_BCLKN,
+ AIC32X4_BCLKEN, 0);
- /* Switch off MDAC Divider */
- snd_soc_update_bits(codec, AIC32X4_MDAC,
- AIC32X4_MDACEN, 0);
+ /* Switch off MADC Divider */
+ snd_soc_update_bits(codec, AIC32X4_MADC,
+ AIC32X4_MADCEN, 0);
/* Switch off NADC Divider */
snd_soc_update_bits(codec, AIC32X4_NADC,
AIC32X4_NADCEN, 0);
- /* Switch off MADC Divider */
- snd_soc_update_bits(codec, AIC32X4_MADC,
- AIC32X4_MADCEN, 0);
+ /* Switch off MDAC Divider */
+ snd_soc_update_bits(codec, AIC32X4_MDAC,
+ AIC32X4_MDACEN, 0);
- /* Switch off BCLK_N Divider */
- snd_soc_update_bits(codec, AIC32X4_BCLKN,
- AIC32X4_BCLKEN, 0);
+ /* Switch off NDAC Divider */
+ snd_soc_update_bits(codec, AIC32X4_NDAC,
+ AIC32X4_NDACEN, 0);
+
+ /* Switch off PLL */
+ snd_soc_update_bits(codec, AIC32X4_PLLPR,
+ AIC32X4_PLLEN, 0);
/* Switch off master clock */
clk_disable_unprepare(aic32x4->mclk);
--
1.8.5.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x
2014-02-20 17:22 [PATCH v6 0/4] ASoC: tlv320aic32x4: DT support Markus Pargmann
` (2 preceding siblings ...)
2014-02-20 17:23 ` [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown Markus Pargmann
@ 2014-02-20 17:23 ` Markus Pargmann
2014-02-20 17:37 ` Fabio Estevam
3 siblings, 1 reply; 9+ messages in thread
From: Markus Pargmann @ 2014-02-20 17:23 UTC (permalink / raw)
To: Mark Brown
Cc: Markus Pargmann, alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
This reverts tlv320aic32x4 as compatible for tlv320aic3x as it has its
own bindings now.
---
Documentation/devicetree/bindings/sound/tlv320aic3x.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
index 9d8ea14..5e6040c 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
@@ -6,7 +6,6 @@ Required properties:
- compatible - "string" - One of:
"ti,tlv320aic3x" - Generic TLV320AIC3x device
- "ti,tlv320aic32x4" - TLV320AIC32x4
"ti,tlv320aic33" - TLV320AIC33
"ti,tlv320aic3007" - TLV320AIC3007
"ti,tlv320aic3106" - TLV320AIC3106
--
1.8.5.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x
2014-02-20 17:23 ` [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x Markus Pargmann
@ 2014-02-20 17:37 ` Fabio Estevam
0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2014-02-20 17:37 UTC (permalink / raw)
To: Markus Pargmann
Cc: alsa-devel, Mark Brown, Lars-Peter Clausen, Sascha Hauer, Liam Girdwood
On Thu, Feb 20, 2014 at 2:23 PM, Markus Pargmann <mpa@pengutronix.de> wrote:
> This reverts tlv320aic32x4 as compatible for tlv320aic3x as it has its
> own bindings now.
> ---
You missed your SOB.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/4] ASoC: tlv320aic32x4: Support for master clock
[not found] ` <1392916981-9333-2-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
@ 2014-02-23 3:59 ` Mark Brown
0 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2014-02-23 3:59 UTC (permalink / raw)
To: Markus Pargmann
Cc: Liam Girdwood, Lars-Peter Clausen,
alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
devicetree-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 208 bytes --]
On Thu, Feb 20, 2014 at 06:22:58PM +0100, Markus Pargmann wrote:
> Add support for a master clock passed through DT. The master clock of
> the codec is only active when the codec is in use.
Applied, thanks.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/4] ASoC: tlv320aic32x4: Support for regulators
2014-02-20 17:22 ` [PATCH v6 2/4] ASoC: tlv320aic32x4: Support for regulators Markus Pargmann
@ 2014-02-23 4:00 ` Mark Brown
0 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2014-02-23 4:00 UTC (permalink / raw)
To: Markus Pargmann; +Cc: alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
[-- Attachment #1.1: Type: text/plain, Size: 196 bytes --]
On Thu, Feb 20, 2014 at 06:22:59PM +0100, Markus Pargmann wrote:
> Support regulators to power up the codec. This patch also enables the
> AVDD LDO if no AV regulator was found.
Applied, thanks.
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown
2014-02-20 17:23 ` [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown Markus Pargmann
@ 2014-02-23 4:00 ` Mark Brown
0 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2014-02-23 4:00 UTC (permalink / raw)
To: Markus Pargmann; +Cc: alsa-devel, Lars-Peter Clausen, Liam Girdwood, kernel
[-- Attachment #1.1: Type: text/plain, Size: 230 bytes --]
On Thu, Feb 20, 2014 at 06:23:00PM +0100, Markus Pargmann wrote:
> Rearrange clock tree shutdown to disable them in the reversed order of
> startup. First disable all dividers, then PLL followed by master clock.
Applied, thanks.
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-02-23 4:10 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-20 17:22 [PATCH v6 0/4] ASoC: tlv320aic32x4: DT support Markus Pargmann
[not found] ` <1392916981-9333-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-02-20 17:22 ` [PATCH v6 1/4] ASoC: tlv320aic32x4: Support for master clock Markus Pargmann
[not found] ` <1392916981-9333-2-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-02-23 3:59 ` Mark Brown
2014-02-20 17:22 ` [PATCH v6 2/4] ASoC: tlv320aic32x4: Support for regulators Markus Pargmann
2014-02-23 4:00 ` Mark Brown
2014-02-20 17:23 ` [PATCH v6 3/4] ASoC: tlv320aic32x4: Rearrange clock tree shutdown Markus Pargmann
2014-02-23 4:00 ` Mark Brown
2014-02-20 17:23 ` [PATCH v6 4/4] Asoc: codecs: Remove tlv320aic32x4 from compatibles of tlv320aic3x Markus Pargmann
2014-02-20 17:37 ` Fabio Estevam
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.