* [PATCH v2 1/5] ASoC: adau17x1: Fix incorrect BCLK ratio definitions
2016-02-16 12:56 [PATCH v2 0/5] Minor fixes and DT support Andreas Irestål
@ 2016-02-16 12:56 ` Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 2/5] ASoC: adau17x1: Correct typos in file headers Andreas Irestål
` (3 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Andreas Irestål @ 2016-02-16 12:56 UTC (permalink / raw)
To: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Rob Herring,
Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
Cc: devicetree, alsa-devel, linux-kernel, Andreas Irestål
Signed-off-by: Andreas Irestål <andire@axis.com>
---
sound/soc/codecs/adau17x1.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/adau17x1.h b/sound/soc/codecs/adau17x1.h
index e13583e..5ae87a0 100644
--- a/sound/soc/codecs/adau17x1.h
+++ b/sound/soc/codecs/adau17x1.h
@@ -103,9 +103,9 @@ bool adau17x1_has_dsp(struct adau *adau);
#define ADAU17X1_CLOCK_CONTROL_CORECLK_SRC_PLL BIT(3)
#define ADAU17X1_CLOCK_CONTROL_SYSCLK_EN BIT(0)
-#define ADAU17X1_SERIAL_PORT1_BCLK32 (0x0 << 5)
-#define ADAU17X1_SERIAL_PORT1_BCLK48 (0x1 << 5)
-#define ADAU17X1_SERIAL_PORT1_BCLK64 (0x2 << 5)
+#define ADAU17X1_SERIAL_PORT1_BCLK64 (0x0 << 5)
+#define ADAU17X1_SERIAL_PORT1_BCLK32 (0x1 << 5)
+#define ADAU17X1_SERIAL_PORT1_BCLK48 (0x2 << 5)
#define ADAU17X1_SERIAL_PORT1_BCLK128 (0x3 << 5)
#define ADAU17X1_SERIAL_PORT1_BCLK256 (0x4 << 5)
#define ADAU17X1_SERIAL_PORT1_BCLK_MASK (0x7 << 5)
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/5] ASoC: adau17x1: Correct typos in file headers
2016-02-16 12:56 [PATCH v2 0/5] Minor fixes and DT support Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 1/5] ASoC: adau17x1: Fix incorrect BCLK ratio definitions Andreas Irestål
@ 2016-02-16 12:56 ` Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document Andreas Irestål
` (2 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Andreas Irestål @ 2016-02-16 12:56 UTC (permalink / raw)
To: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Rob Herring,
Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
Cc: devicetree, alsa-devel, linux-kernel, Andreas Irestål
Signed-off-by: Andreas Irestål <andire@axis.com>
---
include/linux/platform_data/adau17x1.h | 2 +-
sound/soc/codecs/adau1761-i2c.c | 2 +-
sound/soc/codecs/adau1761-spi.c | 2 +-
sound/soc/codecs/adau1761.c | 2 +-
sound/soc/codecs/adau1781.c | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/linux/platform_data/adau17x1.h b/include/linux/platform_data/adau17x1.h
index a81766c..9db1b90 100644
--- a/include/linux/platform_data/adau17x1.h
+++ b/include/linux/platform_data/adau17x1.h
@@ -1,5 +1,5 @@
/*
- * Driver for ADAU1761/ADAU1461/ADAU1761/ADAU1961/ADAU1781/ADAU1781 codecs
+ * Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961/ADAU1381/ADAU1781 codecs
*
* Copyright 2011-2014 Analog Devices Inc.
* Author: Lars-Peter Clausen <lars@metafoo.de>
diff --git a/sound/soc/codecs/adau1761-i2c.c b/sound/soc/codecs/adau1761-i2c.c
index 348ccb1..a1b1267 100644
--- a/sound/soc/codecs/adau1761-i2c.c
+++ b/sound/soc/codecs/adau1761-i2c.c
@@ -1,5 +1,5 @@
/*
- * Driver for ADAU1761/ADAU1461/ADAU1761/ADAU1961 codec
+ * Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961 codec
*
* Copyright 2014 Analog Devices Inc.
* Author: Lars-Peter Clausen <lars@metafoo.de>
diff --git a/sound/soc/codecs/adau1761-spi.c b/sound/soc/codecs/adau1761-spi.c
index 8bc1fbd..1883349 100644
--- a/sound/soc/codecs/adau1761-spi.c
+++ b/sound/soc/codecs/adau1761-spi.c
@@ -1,5 +1,5 @@
/*
- * Driver for ADAU1761/ADAU1461/ADAU1761/ADAU1961 codec
+ * Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961 codec
*
* Copyright 2014 Analog Devices Inc.
* Author: Lars-Peter Clausen <lars@metafoo.de>
diff --git a/sound/soc/codecs/adau1761.c b/sound/soc/codecs/adau1761.c
index 2f12477..16fed36 100644
--- a/sound/soc/codecs/adau1761.c
+++ b/sound/soc/codecs/adau1761.c
@@ -1,5 +1,5 @@
/*
- * Driver for ADAU1761/ADAU1461/ADAU1761/ADAU1961 codec
+ * Driver for ADAU1361/ADAU1461/ADAU1761/ADAU1961 codec
*
* Copyright 2011-2013 Analog Devices Inc.
* Author: Lars-Peter Clausen <lars@metafoo.de>
diff --git a/sound/soc/codecs/adau1781.c b/sound/soc/codecs/adau1781.c
index fde9068..bc1bb56 100644
--- a/sound/soc/codecs/adau1781.c
+++ b/sound/soc/codecs/adau1781.c
@@ -1,5 +1,5 @@
/*
- * Driver for ADAU1781/ADAU1781 codec
+ * Driver for ADAU1381/ADAU1781 codec
*
* Copyright 2011-2013 Analog Devices Inc.
* Author: Lars-Peter Clausen <lars@metafoo.de>
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document
2016-02-16 12:56 [PATCH v2 0/5] Minor fixes and DT support Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 1/5] ASoC: adau17x1: Fix incorrect BCLK ratio definitions Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 2/5] ASoC: adau17x1: Correct typos in file headers Andreas Irestål
@ 2016-02-16 12:56 ` Andreas Irestål
2016-02-18 14:37 ` Rob Herring
2016-02-24 4:15 ` Applied "ASoC: adau17x1: Add adau17x1 bindings document" to the asoc tree Mark Brown
2016-02-16 12:56 ` [PATCH v2 4/5] ASoC: adau17x1: Add basic DT support for adau17x1 Andreas Irestål
2016-02-16 12:56 ` [PATCH v2 5/5] ASoC: adau17x1: Support platform data via DT Andreas Irestål
4 siblings, 2 replies; 13+ messages in thread
From: Andreas Irestål @ 2016-02-16 12:56 UTC (permalink / raw)
To: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Rob Herring,
Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
Cc: devicetree, alsa-devel, linux-kernel, Andreas Irestål
Signed-off-by: Andreas Irestål <andire@axis.com>
---
.../devicetree/bindings/sound/adi,adau17x1.txt | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/adi,adau17x1.txt
diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
new file mode 100644
index 0000000..8dbce0e
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
@@ -0,0 +1,24 @@
+Analog Devices ADAU1361/ADAU1461/ADAU1761/ADAU1961/ADAU1381/ADAU1781
+
+Required properties:
+
+ - compatible: Should contain one of the following:
+ "adi,adau1361"
+ "adi,adau1461"
+ "adi,adau1761"
+ "adi,adau1961"
+ "adi,adau1381"
+ "adi,adau1781"
+
+ - reg: The i2c address. Value depends on the state of ADDR0
+ and ADDR1, as wired in hardware.
+
+Examples:
+#include <dt-bindings/sound/adau17x1.h>
+
+ i2c_bus {
+ adau1361@38 {
+ compatible = "adi,adau1761";
+ reg = <0x38>;
+ };
+ };
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document
2016-02-16 12:56 ` [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document Andreas Irestål
@ 2016-02-18 14:37 ` Rob Herring
2016-02-24 4:15 ` Applied "ASoC: adau17x1: Add adau17x1 bindings document" to the asoc tree Mark Brown
1 sibling, 0 replies; 13+ messages in thread
From: Rob Herring @ 2016-02-18 14:37 UTC (permalink / raw)
To: Andreas Irestål
Cc: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, devicetree, alsa-devel,
linux-kernel, Andreas Irestål
On Tue, Feb 16, 2016 at 01:56:43PM +0100, Andreas Irestål wrote:
> Signed-off-by: Andreas Irestål <andire@axis.com>
> ---
> .../devicetree/bindings/sound/adi,adau17x1.txt | 24 ++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/adi,adau17x1.txt
>
> diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
> new file mode 100644
> index 0000000..8dbce0e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
> @@ -0,0 +1,24 @@
> +Analog Devices ADAU1361/ADAU1461/ADAU1761/ADAU1961/ADAU1381/ADAU1781
> +
> +Required properties:
> +
> + - compatible: Should contain one of the following:
> + "adi,adau1361"
> + "adi,adau1461"
> + "adi,adau1761"
> + "adi,adau1961"
> + "adi,adau1381"
> + "adi,adau1781"
> +
> + - reg: The i2c address. Value depends on the state of ADDR0
> + and ADDR1, as wired in hardware.
> +
> +Examples:
> +#include <dt-bindings/sound/adau17x1.h>
> +
> + i2c_bus {
> + adau1361@38 {
codec@38
Otherwise:
Acked-by: Rob Herring <robh@kernel.org>
> + compatible = "adi,adau1761";
> + reg = <0x38>;
> + };
> + };
> --
> 2.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Applied "ASoC: adau17x1: Add adau17x1 bindings document" to the asoc tree
2016-02-16 12:56 ` [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document Andreas Irestål
2016-02-18 14:37 ` Rob Herring
@ 2016-02-24 4:15 ` Mark Brown
1 sibling, 0 replies; 13+ messages in thread
From: Mark Brown @ 2016-02-24 4:15 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 2363 bytes --]
The patch
ASoC: adau17x1: Add adau17x1 bindings document
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
>From ef329457237d885baf3408a56db9a02df97cde87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Irest=C3=A5l?= <andreas.irestal@axis.com>
Date: Tue, 16 Feb 2016 13:56:43 +0100
Subject: [PATCH] ASoC: adau17x1: Add adau17x1 bindings document
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Andreas Irestål <andire@axis.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
.../devicetree/bindings/sound/adi,adau17x1.txt | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/adi,adau17x1.txt
diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
new file mode 100644
index 000000000000..8dbce0e18dda
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
@@ -0,0 +1,24 @@
+Analog Devices ADAU1361/ADAU1461/ADAU1761/ADAU1961/ADAU1381/ADAU1781
+
+Required properties:
+
+ - compatible: Should contain one of the following:
+ "adi,adau1361"
+ "adi,adau1461"
+ "adi,adau1761"
+ "adi,adau1961"
+ "adi,adau1381"
+ "adi,adau1781"
+
+ - reg: The i2c address. Value depends on the state of ADDR0
+ and ADDR1, as wired in hardware.
+
+Examples:
+#include <dt-bindings/sound/adau17x1.h>
+
+ i2c_bus {
+ adau1361@38 {
+ compatible = "adi,adau1761";
+ reg = <0x38>;
+ };
+ };
--
2.7.0
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] ASoC: adau17x1: Add basic DT support for adau17x1
2016-02-16 12:56 [PATCH v2 0/5] Minor fixes and DT support Andreas Irestål
` (2 preceding siblings ...)
2016-02-16 12:56 ` [PATCH v2 3/5] ASoC: adau17x1: Add adau17x1 bindings document Andreas Irestål
@ 2016-02-16 12:56 ` Andreas Irestål
2016-02-24 4:15 ` Applied "ASoC: adau17x1: Add basic DT support for adau17x1" to the asoc tree Mark Brown
2016-02-16 12:56 ` [PATCH v2 5/5] ASoC: adau17x1: Support platform data via DT Andreas Irestål
4 siblings, 1 reply; 13+ messages in thread
From: Andreas Irestål @ 2016-02-16 12:56 UTC (permalink / raw)
To: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Rob Herring,
Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
Cc: devicetree, alsa-devel, linux-kernel, Andreas Irestål
Signed-off-by: Andreas Irestål <andire@axis.com>
---
sound/soc/codecs/adau1761-i2c.c | 12 ++++++++++++
sound/soc/codecs/adau1761-spi.c | 12 ++++++++++++
sound/soc/codecs/adau1781-i2c.c | 10 ++++++++++
sound/soc/codecs/adau1781-spi.c | 10 ++++++++++
4 files changed, 44 insertions(+)
diff --git a/sound/soc/codecs/adau1761-i2c.c b/sound/soc/codecs/adau1761-i2c.c
index a1b1267..8de010f 100644
--- a/sound/soc/codecs/adau1761-i2c.c
+++ b/sound/soc/codecs/adau1761-i2c.c
@@ -44,9 +44,21 @@ static const struct i2c_device_id adau1761_i2c_ids[] = {
};
MODULE_DEVICE_TABLE(i2c, adau1761_i2c_ids);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1761_i2c_dt_ids[] = {
+ { .compatible = "adi,adau1361", },
+ { .compatible = "adi,adau1461", },
+ { .compatible = "adi,adau1761", },
+ { .compatible = "adi,adau1961", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1761_i2c_dt_ids);
+#endif
+
static struct i2c_driver adau1761_i2c_driver = {
.driver = {
.name = "adau1761",
+ .of_match_table = of_match_ptr(adau1761_i2c_dt_ids),
},
.probe = adau1761_i2c_probe,
.remove = adau1761_i2c_remove,
diff --git a/sound/soc/codecs/adau1761-spi.c b/sound/soc/codecs/adau1761-spi.c
index 1883349..d917124 100644
--- a/sound/soc/codecs/adau1761-spi.c
+++ b/sound/soc/codecs/adau1761-spi.c
@@ -61,9 +61,21 @@ static const struct spi_device_id adau1761_spi_id[] = {
};
MODULE_DEVICE_TABLE(spi, adau1761_spi_id);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1761_spi_dt_ids[] = {
+ { .compatible = "adi,adau1361", },
+ { .compatible = "adi,adau1461", },
+ { .compatible = "adi,adau1761", },
+ { .compatible = "adi,adau1961", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1761_spi_dt_ids);
+#endif
+
static struct spi_driver adau1761_spi_driver = {
.driver = {
.name = "adau1761",
+ .of_match_table = of_match_ptr(adau1761_spi_dt_ids),
},
.probe = adau1761_spi_probe,
.remove = adau1761_spi_remove,
diff --git a/sound/soc/codecs/adau1781-i2c.c b/sound/soc/codecs/adau1781-i2c.c
index 0e32bba..06cbca8 100644
--- a/sound/soc/codecs/adau1781-i2c.c
+++ b/sound/soc/codecs/adau1781-i2c.c
@@ -42,9 +42,19 @@ static const struct i2c_device_id adau1781_i2c_ids[] = {
};
MODULE_DEVICE_TABLE(i2c, adau1781_i2c_ids);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1781_i2c_dt_ids[] = {
+ { .compatible = "adi,adau1381", },
+ { .compatible = "adi,adau1781", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1781_i2c_dt_ids);
+#endif
+
static struct i2c_driver adau1781_i2c_driver = {
.driver = {
.name = "adau1781",
+ .of_match_table = of_match_ptr(adau1781_i2c_dt_ids),
},
.probe = adau1781_i2c_probe,
.remove = adau1781_i2c_remove,
diff --git a/sound/soc/codecs/adau1781-spi.c b/sound/soc/codecs/adau1781-spi.c
index 33a73ff..3d965a0 100644
--- a/sound/soc/codecs/adau1781-spi.c
+++ b/sound/soc/codecs/adau1781-spi.c
@@ -59,9 +59,19 @@ static const struct spi_device_id adau1781_spi_id[] = {
};
MODULE_DEVICE_TABLE(spi, adau1781_spi_id);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1781_spi_dt_ids[] = {
+ { .compatible = "adi,adau1381", },
+ { .compatible = "adi,adau1781", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1781_spi_dt_ids);
+#endif
+
static struct spi_driver adau1781_spi_driver = {
.driver = {
.name = "adau1781",
+ .of_match_table = of_match_ptr(adau1781_spi_dt_ids),
},
.probe = adau1781_spi_probe,
.remove = adau1781_spi_remove,
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Applied "ASoC: adau17x1: Add basic DT support for adau17x1" to the asoc tree
2016-02-16 12:56 ` [PATCH v2 4/5] ASoC: adau17x1: Add basic DT support for adau17x1 Andreas Irestål
@ 2016-02-24 4:15 ` Mark Brown
0 siblings, 0 replies; 13+ messages in thread
From: Mark Brown @ 2016-02-24 4:15 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 4806 bytes --]
The patch
ASoC: adau17x1: Add basic DT support for adau17x1
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
>From aaf0f3aeeb6f9e5e874fccc8a0e56b00fea537c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Irest=C3=A5l?= <andreas.irestal@axis.com>
Date: Tue, 16 Feb 2016 13:56:44 +0100
Subject: [PATCH] ASoC: adau17x1: Add basic DT support for adau17x1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Andreas Irestål <andire@axis.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/codecs/adau1761-i2c.c | 12 ++++++++++++
sound/soc/codecs/adau1761-spi.c | 12 ++++++++++++
sound/soc/codecs/adau1781-i2c.c | 10 ++++++++++
sound/soc/codecs/adau1781-spi.c | 10 ++++++++++
4 files changed, 44 insertions(+)
diff --git a/sound/soc/codecs/adau1761-i2c.c b/sound/soc/codecs/adau1761-i2c.c
index a1b12671c307..8de010f758cd 100644
--- a/sound/soc/codecs/adau1761-i2c.c
+++ b/sound/soc/codecs/adau1761-i2c.c
@@ -44,9 +44,21 @@ static const struct i2c_device_id adau1761_i2c_ids[] = {
};
MODULE_DEVICE_TABLE(i2c, adau1761_i2c_ids);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1761_i2c_dt_ids[] = {
+ { .compatible = "adi,adau1361", },
+ { .compatible = "adi,adau1461", },
+ { .compatible = "adi,adau1761", },
+ { .compatible = "adi,adau1961", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1761_i2c_dt_ids);
+#endif
+
static struct i2c_driver adau1761_i2c_driver = {
.driver = {
.name = "adau1761",
+ .of_match_table = of_match_ptr(adau1761_i2c_dt_ids),
},
.probe = adau1761_i2c_probe,
.remove = adau1761_i2c_remove,
diff --git a/sound/soc/codecs/adau1761-spi.c b/sound/soc/codecs/adau1761-spi.c
index 188334928c23..d9171245bd9f 100644
--- a/sound/soc/codecs/adau1761-spi.c
+++ b/sound/soc/codecs/adau1761-spi.c
@@ -61,9 +61,21 @@ static const struct spi_device_id adau1761_spi_id[] = {
};
MODULE_DEVICE_TABLE(spi, adau1761_spi_id);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1761_spi_dt_ids[] = {
+ { .compatible = "adi,adau1361", },
+ { .compatible = "adi,adau1461", },
+ { .compatible = "adi,adau1761", },
+ { .compatible = "adi,adau1961", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1761_spi_dt_ids);
+#endif
+
static struct spi_driver adau1761_spi_driver = {
.driver = {
.name = "adau1761",
+ .of_match_table = of_match_ptr(adau1761_spi_dt_ids),
},
.probe = adau1761_spi_probe,
.remove = adau1761_spi_remove,
diff --git a/sound/soc/codecs/adau1781-i2c.c b/sound/soc/codecs/adau1781-i2c.c
index 0e32bba92339..06cbca84cf02 100644
--- a/sound/soc/codecs/adau1781-i2c.c
+++ b/sound/soc/codecs/adau1781-i2c.c
@@ -42,9 +42,19 @@ static const struct i2c_device_id adau1781_i2c_ids[] = {
};
MODULE_DEVICE_TABLE(i2c, adau1781_i2c_ids);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1781_i2c_dt_ids[] = {
+ { .compatible = "adi,adau1381", },
+ { .compatible = "adi,adau1781", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1781_i2c_dt_ids);
+#endif
+
static struct i2c_driver adau1781_i2c_driver = {
.driver = {
.name = "adau1781",
+ .of_match_table = of_match_ptr(adau1781_i2c_dt_ids),
},
.probe = adau1781_i2c_probe,
.remove = adau1781_i2c_remove,
diff --git a/sound/soc/codecs/adau1781-spi.c b/sound/soc/codecs/adau1781-spi.c
index 33a73ff78de4..3d965a01b99c 100644
--- a/sound/soc/codecs/adau1781-spi.c
+++ b/sound/soc/codecs/adau1781-spi.c
@@ -59,9 +59,19 @@ static const struct spi_device_id adau1781_spi_id[] = {
};
MODULE_DEVICE_TABLE(spi, adau1781_spi_id);
+#if defined(CONFIG_OF)
+static const struct of_device_id adau1781_spi_dt_ids[] = {
+ { .compatible = "adi,adau1381", },
+ { .compatible = "adi,adau1781", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, adau1781_spi_dt_ids);
+#endif
+
static struct spi_driver adau1781_spi_driver = {
.driver = {
.name = "adau1781",
+ .of_match_table = of_match_ptr(adau1781_spi_dt_ids),
},
.probe = adau1781_spi_probe,
.remove = adau1781_spi_remove,
--
2.7.0
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] ASoC: adau17x1: Support platform data via DT
2016-02-16 12:56 [PATCH v2 0/5] Minor fixes and DT support Andreas Irestål
` (3 preceding siblings ...)
2016-02-16 12:56 ` [PATCH v2 4/5] ASoC: adau17x1: Add basic DT support for adau17x1 Andreas Irestål
@ 2016-02-16 12:56 ` Andreas Irestål
[not found] ` <1455627405-18155-6-git-send-email-andire-VrBV9hrLPhE@public.gmane.org>
4 siblings, 1 reply; 13+ messages in thread
From: Andreas Irestål @ 2016-02-16 12:56 UTC (permalink / raw)
To: Lars-Peter Clausen, Liam Girdwood, Mark Brown, Rob Herring,
Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
Cc: devicetree, alsa-devel, linux-kernel, Andreas Irestål
Currently, it is only possible to configure HW-specific options to the
adau17x1 codecs by providing a platform data struct. With this patch,
it is possible to provide the same data via DT instead.
Signed-off-by: Andreas Irestål <andire@axis.com>
---
.../devicetree/bindings/sound/adi,adau17x1.txt | 31 +++++
include/dt-bindings/sound/adau17x1.h | 14 +++
sound/soc/codecs/adau1761.c | 127 +++++++++++++++++++++
sound/soc/codecs/adau1781.c | 48 ++++++++
4 files changed, 220 insertions(+)
create mode 100644 include/dt-bindings/sound/adau17x1.h
diff --git a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
index 8dbce0e..6050602 100644
--- a/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
+++ b/Documentation/devicetree/bindings/sound/adi,adau17x1.txt
@@ -13,6 +13,32 @@ Required properties:
- reg: The i2c address. Value depends on the state of ADDR0
and ADDR1, as wired in hardware.
+Optional properties:
+
+ - adi,input-differential bool to set if the input is differential
+ - adi,digital-microphone bool to set if there is a digital microphone
+ connected to digmic/jackdet pin.
+ - adi,micbias-vg Microphone bias voltage
+ MICBIAS_0_90_AVDD - 0.9 * AVDD
+ MICBIAS_0_65_AVDD - 0.65 * AVDD
+
+Optional properties (ADAU1361/ADAU1461/ADAU1761/ADAU1961 only)
+
+ - adi,jack-detection If present, configures codec to use the digmic/jackdet
+ pin for jack detection. must provide one of
+ JACKDETECT_ACTIVE_LO or JACKDETECT_ACTIVE_HI followed
+ by debounce time in ms, which must be 5, 10, 20, or 40.
+
+ - adi,lineout-mode Set output mode of the lineout pins.
+ - adi,headphone-mode Set output mode of the headphone pins.
+
+The output mode must be one of:
+ OUTPUT_MODE_HEADPHONE - Headphone output
+ OUTPUT_MODE_HEADPHONE_CAPLESS - Capless headphone output
+ OUTPUT_MODE_LINE - Line output
+
+
+
Examples:
#include <dt-bindings/sound/adau17x1.h>
@@ -20,5 +46,10 @@ Examples:
adau1361@38 {
compatible = "adi,adau1761";
reg = <0x38>;
+ input-differential;
+ jack-detection = <JACKDETECT_ACTIVE_LO 40>;
+ lineout-mode = <OUTPUT_MODE_LINE>;
+ headphone-mode = <OUTPUT_MODE_HEADPHONE>;
+ micbias-vg = <MICBIAS_0_90_AVDD>;
};
};
diff --git a/include/dt-bindings/sound/adau17x1.h b/include/dt-bindings/sound/adau17x1.h
new file mode 100644
index 0000000..3152019
--- /dev/null
+++ b/include/dt-bindings/sound/adau17x1.h
@@ -0,0 +1,14 @@
+#ifndef __DT_ADAU17X1_H
+#define __DT_ADAU17X1_H
+
+#define MICBIAS_0_90_AVDD 0
+#define MICBIAS_0_65_AVDD 1
+
+#define OUTPUT_MODE_HEADPHONE 0
+#define OUTPUT_MODE_HEADPHONE_CAPLESS 1
+#define OUTPUT_MODE_LINE 2
+
+#define JACKDETECT_ACTIVE_HI 0
+#define JACKDETECT_ACTIVE_LO 1
+
+#endif
diff --git a/sound/soc/codecs/adau1761.c b/sound/soc/codecs/adau1761.c
index 16fed36..caba102 100644
--- a/sound/soc/codecs/adau1761.c
+++ b/sound/soc/codecs/adau1761.c
@@ -18,6 +18,7 @@
#include <sound/soc.h>
#include <sound/tlv.h>
#include <linux/platform_data/adau17x1.h>
+#include <dt-bindings/sound/adau17x1.h>
#include "adau17x1.h"
#include "adau1761.h"
@@ -709,6 +710,122 @@ static int adau1761_codec_probe(struct snd_soc_codec *codec)
return 0;
}
+#ifdef CONFIG_OF
+static inline void adau1761_parse_of_outmode(struct device *dev,
+ uint32_t of_val,
+ enum adau1761_output_mode *mode)
+{
+ switch (of_val) {
+ case OUTPUT_MODE_HEADPHONE:
+ *mode = ADAU1761_OUTPUT_MODE_HEADPHONE;
+ break;
+ case OUTPUT_MODE_HEADPHONE_CAPLESS:
+ *mode = ADAU1761_OUTPUT_MODE_HEADPHONE_CAPLESS;
+ break;
+ case OUTPUT_MODE_LINE:
+ *mode = ADAU1761_OUTPUT_MODE_LINE;
+ break;
+ default:
+ dev_warn(dev, "Invalid output mode %d\n", of_val);
+ *mode = ADAU1761_OUTPUT_MODE_LINE;
+ break;
+ }
+}
+
+static void adau1761_pdata_from_of(struct device *dev,
+ struct adau1761_platform_data *pdata)
+{
+ struct device_node *np = dev->of_node;
+ uint32_t val;
+ uint32_t debounce_pars[2];
+
+ pdata->input_differential =
+ of_property_read_bool(np, "adi,input-differential");
+
+ if (of_get_property(np, "adi,jack-detection", NULL)) {
+ pdata->digmic_jackdetect_pin_mode =
+ ADAU1761_DIGMIC_JACKDET_PIN_MODE_JACKDETECT;
+ if (!of_property_read_u32_array(np, "adi,jack-detection",
+ debounce_pars, 2)) {
+ pdata->jackdetect_active_low =
+ debounce_pars[0] == JACKDETECT_ACTIVE_LO;
+ switch (debounce_pars[1]) {
+ case 5:
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_5MS;
+ break;
+ case 10:
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_10MS;
+ break;
+ case 20:
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_20MS;
+ break;
+ case 40:
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_40MS;
+ break;
+ default:
+ dev_warn(dev, "Invalid debounce_time %d\n",
+ debounce_pars[1]);
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_40MS;
+ break;
+ }
+ } else if (!of_property_read_u32_array(np, "adi,jack-detection",
+ debounce_pars, 1)) {
+ dev_warn(dev, "Debounce time not provided\n");
+ pdata->jackdetect_active_low =
+ debounce_pars[0] == JACKDETECT_ACTIVE_LO;
+ } else {
+ dev_warn(dev, "No jack detection settings found\n");
+ pdata->jackdetect_active_low = 0;
+ pdata->jackdetect_debounce_time =
+ ADAU1761_JACKDETECT_DEBOUNCE_40MS;
+ }
+ } else if (of_property_read_bool(np, "adi,digital-microphone")) {
+ pdata->digmic_jackdetect_pin_mode =
+ ADAU1761_DIGMIC_JACKDET_PIN_MODE_DIGMIC;
+ } else {
+ pdata->digmic_jackdetect_pin_mode =
+ ADAU1761_DIGMIC_JACKDET_PIN_MODE_NONE;
+ }
+
+ if (!of_property_read_u32(np, "adi,headphone-mode", &val))
+ adau1761_parse_of_outmode(dev, val, &pdata->headphone_mode);
+ else
+ pdata->headphone_mode = ADAU1761_OUTPUT_MODE_LINE;
+
+ if (!of_property_read_u32(np, "adi,lineout-mode", &val))
+ adau1761_parse_of_outmode(dev, val, &pdata->lineout_mode);
+ else
+ pdata->lineout_mode = ADAU1761_OUTPUT_MODE_LINE;
+
+ if (!of_property_read_u32(np, "adi,micbias-vg", &val)) {
+ switch (val) {
+ case MICBIAS_0_65_AVDD:
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_65_AVDD;
+ break;
+ case MICBIAS_0_90_AVDD:
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ break;
+ default:
+ dev_warn(dev, "Invalid micbias voltage setting\n");
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ break;
+ }
+ } else {
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ }
+}
+#else
+static void adau1761_pdata_from_of(struct device *dev,
+ struct adau1761_platform_data *pdata)
+{
+}
+#endif
+
static const struct snd_soc_codec_driver adau1761_codec_driver = {
.probe = adau1761_codec_probe,
.resume = adau17x1_resume,
@@ -768,6 +885,8 @@ int adau1761_probe(struct device *dev, struct regmap *regmap,
enum adau17x1_type type, void (*switch_mode)(struct device *dev))
{
struct snd_soc_dai_driver *dai_drv;
+ struct adau1761_platform_data *of_pdata;
+ struct device_node *np = dev->of_node;
const char *firmware_name;
int ret;
@@ -779,6 +898,14 @@ int adau1761_probe(struct device *dev, struct regmap *regmap,
firmware_name = ADAU1761_FIRMWARE;
}
+ if (!dev->platform_data && np) {
+ of_pdata = devm_kzalloc(dev, sizeof(*of_pdata), GFP_KERNEL);
+ if (!of_pdata)
+ return -ENOMEM;
+ adau1761_pdata_from_of(dev, of_pdata);
+ dev->platform_data = of_pdata;
+ }
+
ret = adau17x1_probe(dev, regmap, type, switch_mode, firmware_name);
if (ret)
return ret;
diff --git a/sound/soc/codecs/adau1781.c b/sound/soc/codecs/adau1781.c
index bc1bb56..401220e 100644
--- a/sound/soc/codecs/adau1781.c
+++ b/sound/soc/codecs/adau1781.c
@@ -18,6 +18,7 @@
#include <sound/soc.h>
#include <sound/tlv.h>
#include <linux/platform_data/adau17x1.h>
+#include <dt-bindings/sound/adau17x1.h>
#include "adau17x1.h"
#include "adau1781.h"
@@ -426,6 +427,43 @@ static int adau1781_codec_probe(struct snd_soc_codec *codec)
return 0;
}
+#ifdef CONFIG_OF
+static void adau1781_pdata_from_of(struct device *dev,
+ struct adau1781_platform_data *pdata)
+{
+ struct device_node *np = dev->of_node;
+ uint32_t val;
+
+ val = of_property_read_bool(np, "adi,input-differential");
+ pdata->left_input_differential = val;
+ pdata->right_input_differential = val;
+
+ of_property_read_bool(np, "adi,digital-microphone");
+
+ if (!of_property_read_u32(np, "adi,micbias-vg", &val)) {
+ switch (val) {
+ case MICBIAS_0_65_AVDD:
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_65_AVDD;
+ break;
+ case MICBIAS_0_90_AVDD:
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ break;
+ default:
+ dev_warn(dev, "Invalid micbias voltage setting\n");
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ break;
+ }
+ } else {
+ pdata->micbias_voltage = ADAU17X1_MICBIAS_0_90_AVDD;
+ }
+}
+#else
+static void adau1781_pdata_from_of(struct device *dev,
+ struct adau1781_platform_data *pdata)
+{
+}
+#endif
+
static const struct snd_soc_codec_driver adau1781_codec_driver = {
.probe = adau1781_codec_probe,
.resume = adau17x1_resume,
@@ -479,6 +517,8 @@ int adau1781_probe(struct device *dev, struct regmap *regmap,
enum adau17x1_type type, void (*switch_mode)(struct device *dev))
{
const char *firmware_name;
+ struct adau1781_platform_data *of_pdata;
+ struct device_node *np = dev->of_node;
int ret;
switch (type) {
@@ -492,6 +532,14 @@ int adau1781_probe(struct device *dev, struct regmap *regmap,
return -EINVAL;
}
+ if (!dev->platform_data && np) {
+ of_pdata = devm_kzalloc(dev, sizeof(*of_pdata), GFP_KERNEL);
+ if (!of_pdata)
+ return -ENOMEM;
+ adau1781_pdata_from_of(dev, of_pdata);
+ dev->platform_data = of_pdata;
+ }
+
ret = adau17x1_probe(dev, regmap, type, switch_mode, firmware_name);
if (ret)
return ret;
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread