* [PATCH 0/4] iio: dac: ad5686: extend device support
@ 2026-07-19 9:51 Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 1/4] dt-bindings: iio: dac: ad5696: " Rodrigo Alencar via B4 Relay
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Rodrigo Alencar via B4 Relay @ 2026-07-19 9:51 UTC (permalink / raw)
To: Michael Auchter, linux, linux-iio, devicetree, linux-kernel
Cc: Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Rodrigo Alencar, Conor Dooley
This is the third series of three on updating the AD5686 driver.
Initially, a big patch series was sent:
https://lore.kernel.org/r/20260422-ad5313r-iio-support-v1-0-ed7dca001d1b@analog.com
Then, the first patch series added fixes and cleanups:
https://lore.kernel.org/all/20260524-ad5686-fixes-v7-0-b6bf395d08bd@analog.com/
The second series introduced new features:
https://lore.kernel.org/all/20260716-ad5686-new-features-v8-0-ebb0051af5e5@analog.com/
This series adds support for:
- SPI: AD5313R, AD5317R, AD5674, AD5679, AD5687, AD5687R, AD5689, AD5689R;
- I2C: AD5316R, AD5675, AD5697R
Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
---
Rodrigo Alencar (4):
dt-bindings: iio: dac: ad5696: extend device support
dt-bindings: iio: dac: ad5686: extend device support
iio: dac: ad5686: extend device support with new parts
iio: dac: ad5686: update device list and file header comments
.../devicetree/bindings/iio/dac/adi,ad5686.yaml | 14 ++++-
.../devicetree/bindings/iio/dac/adi,ad5696.yaml | 6 +++
drivers/iio/dac/Kconfig | 31 +++++++++---
drivers/iio/dac/ad5686-spi.c | 23 +++++++--
drivers/iio/dac/ad5686.c | 59 +++++++++++++++++++++-
drivers/iio/dac/ad5686.h | 7 +++
drivers/iio/dac/ad5696-i2c.c | 14 +++--
7 files changed, 135 insertions(+), 19 deletions(-)
---
base-commit: 1258e8ca13866b1a60895abf0ab8a4dd77bf4bfd
change-id: 20260719-ad5686-extend-dev-support-e0ddd119f19c
Best regards,
--
Rodrigo Alencar <rodrigo.alencar@analog.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/4] dt-bindings: iio: dac: ad5696: extend device support
2026-07-19 9:51 [PATCH 0/4] iio: dac: ad5686: extend device support Rodrigo Alencar via B4 Relay
@ 2026-07-19 9:51 ` Rodrigo Alencar via B4 Relay
2026-07-19 21:18 ` Jonathan Cameron
2026-07-19 9:51 ` [PATCH 2/4] dt-bindings: iio: dac: ad5686: " Rodrigo Alencar via B4 Relay
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alencar via B4 Relay @ 2026-07-19 9:51 UTC (permalink / raw)
To: Michael Auchter, linux, linux-iio, devicetree, linux-kernel
Cc: Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Rodrigo Alencar, Conor Dooley
From: Rodrigo Alencar <rodrigo.alencar@analog.com>
Support for AD5316R, AD5673R, AD5675, AD5677R and AD5697R missing from the
device-tree bindings documentation. These devices have different bit
resolutions or different number of channels so no fallback compatibles
are used.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
---
Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml b/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
index e10f8596f9d3..835fa21c474e 100644
--- a/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
+++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
@@ -16,10 +16,14 @@ properties:
compatible:
enum:
- adi,ad5311r
+ - adi,ad5316r
- adi,ad5337r
- adi,ad5338r
- adi,ad5671r
+ - adi,ad5673r
+ - adi,ad5675
- adi,ad5675r
+ - adi,ad5677r
- adi,ad5691r
- adi,ad5692r
- adi,ad5693
@@ -29,6 +33,7 @@ properties:
- adi,ad5695r
- adi,ad5696
- adi,ad5696r
+ - adi,ad5697r
reg:
maxItems: 1
@@ -84,6 +89,7 @@ allOf:
compatible:
contains:
enum:
+ - adi,ad5675
- adi,ad5693
- adi,ad5694
- adi,ad5696
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] dt-bindings: iio: dac: ad5686: extend device support
2026-07-19 9:51 [PATCH 0/4] iio: dac: ad5686: extend device support Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 1/4] dt-bindings: iio: dac: ad5696: " Rodrigo Alencar via B4 Relay
@ 2026-07-19 9:51 ` Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 3/4] iio: dac: ad5686: extend device support with new parts Rodrigo Alencar via B4 Relay
2026-07-19 9:52 ` [PATCH 4/4] iio: dac: ad5686: update device list and file header comments Rodrigo Alencar via B4 Relay
3 siblings, 0 replies; 9+ messages in thread
From: Rodrigo Alencar via B4 Relay @ 2026-07-19 9:51 UTC (permalink / raw)
To: Michael Auchter, linux, linux-iio, devicetree, linux-kernel
Cc: Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Rodrigo Alencar, Conor Dooley
From: Rodrigo Alencar <rodrigo.alencar@analog.com>
Add compatible entries for AD5313R, AD5317R, AD5674, AD5679, AD5687,
AD5687R, AD5689, AD5689R. These devices have unique combination of channel
count, bit resolution and supported command set, so that fallback
compatibles are not used. Also, a small copy-and-paste error is fixed to
the title field.
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
---
Documentation/devicetree/bindings/iio/dac/adi,ad5686.yaml | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5686.yaml b/Documentation/devicetree/bindings/iio/dac/adi,ad5686.yaml
index 02e8c78e36d3..d1bb09054440 100644
--- a/Documentation/devicetree/bindings/iio/dac/adi,ad5686.yaml
+++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5686.yaml
@@ -4,7 +4,7 @@
$id: http://devicetree.org/schemas/iio/dac/adi,ad5686.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Analog Devices AD5360 and similar SPI DACs
+title: Analog Devices AD5686 and similar SPI DACs
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
@@ -14,10 +14,14 @@ properties:
compatible:
enum:
- adi,ad5310r
+ - adi,ad5313r
+ - adi,ad5317r
- adi,ad5672r
+ - adi,ad5674
- adi,ad5674r
- adi,ad5676
- adi,ad5676r
+ - adi,ad5679
- adi,ad5679r
- adi,ad5681r
- adi,ad5682r
@@ -28,6 +32,10 @@ properties:
- adi,ad5685r
- adi,ad5686
- adi,ad5686r
+ - adi,ad5687
+ - adi,ad5687r
+ - adi,ad5689
+ - adi,ad5689r
reg:
maxItems: 1
@@ -84,10 +92,14 @@ allOf:
compatible:
contains:
enum:
+ - adi,ad5674
- adi,ad5676
+ - adi,ad5679
- adi,ad5683
- adi,ad5684
- adi,ad5686
+ - adi,ad5687
+ - adi,ad5689
then:
required:
- vref-supply
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] iio: dac: ad5686: extend device support with new parts
2026-07-19 9:51 [PATCH 0/4] iio: dac: ad5686: extend device support Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 1/4] dt-bindings: iio: dac: ad5696: " Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 2/4] dt-bindings: iio: dac: ad5686: " Rodrigo Alencar via B4 Relay
@ 2026-07-19 9:51 ` Rodrigo Alencar via B4 Relay
2026-07-19 21:43 ` Jonathan Cameron
2026-07-19 9:52 ` [PATCH 4/4] iio: dac: ad5686: update device list and file header comments Rodrigo Alencar via B4 Relay
3 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alencar via B4 Relay @ 2026-07-19 9:51 UTC (permalink / raw)
To: Michael Auchter, linux, linux-iio, devicetree, linux-kernel
Cc: Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Rodrigo Alencar
From: Rodrigo Alencar <rodrigo.alencar@analog.com>
Add support for AD5313R, AD5317R, AD5674, AD5679, AD5687, AD5687R, AD5689,
AD5689R to the AD5686 SPI driver. Also adding support for AD5316R, AD5675,
AD5697R to the AD5696 I2C driver. AD5673R and AD5677R were missing from
the of_match table. This includes the creation of seven chip info struct
instances and reuse of existing ones.
Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
---
drivers/iio/dac/ad5686-spi.c | 16 +++++++++++++
drivers/iio/dac/ad5686.c | 55 ++++++++++++++++++++++++++++++++++++++++++++
drivers/iio/dac/ad5686.h | 7 ++++++
drivers/iio/dac/ad5696-i2c.c | 8 +++++++
4 files changed, 86 insertions(+)
diff --git a/drivers/iio/dac/ad5686-spi.c b/drivers/iio/dac/ad5686-spi.c
index 227ddb269669..003541edb742 100644
--- a/drivers/iio/dac/ad5686-spi.c
+++ b/drivers/iio/dac/ad5686-spi.c
@@ -178,10 +178,14 @@ static int ad5686_spi_probe(struct spi_device *spi)
static const struct spi_device_id ad5686_spi_id[] = {
{ .name = "ad5310r", .driver_data = (kernel_ulong_t)&ad5310r_chip_info },
+ { .name = "ad5313r", .driver_data = (kernel_ulong_t)&ad5338r_chip_info },
+ { .name = "ad5317r", .driver_data = (kernel_ulong_t)&ad5317r_chip_info },
{ .name = "ad5672r", .driver_data = (kernel_ulong_t)&ad5672r_chip_info },
+ { .name = "ad5674", .driver_data = (kernel_ulong_t)&ad5674_chip_info },
{ .name = "ad5674r", .driver_data = (kernel_ulong_t)&ad5674r_chip_info },
{ .name = "ad5676", .driver_data = (kernel_ulong_t)&ad5676_chip_info },
{ .name = "ad5676r", .driver_data = (kernel_ulong_t)&ad5676r_chip_info },
+ { .name = "ad5679", .driver_data = (kernel_ulong_t)&ad5679_chip_info },
{ .name = "ad5679r", .driver_data = (kernel_ulong_t)&ad5679r_chip_info },
{ .name = "ad5681r", .driver_data = (kernel_ulong_t)&ad5681r_chip_info },
{ .name = "ad5682r", .driver_data = (kernel_ulong_t)&ad5682r_chip_info },
@@ -193,16 +197,24 @@ static const struct spi_device_id ad5686_spi_id[] = {
{ .name = "ad5685r", .driver_data = (kernel_ulong_t)&ad5685r_chip_info },
{ .name = "ad5686", .driver_data = (kernel_ulong_t)&ad5686_chip_info },
{ .name = "ad5686r", .driver_data = (kernel_ulong_t)&ad5686r_chip_info },
+ { .name = "ad5687", .driver_data = (kernel_ulong_t)&ad5687_chip_info },
+ { .name = "ad5687r", .driver_data = (kernel_ulong_t)&ad5687r_chip_info },
+ { .name = "ad5689", .driver_data = (kernel_ulong_t)&ad5689_chip_info },
+ { .name = "ad5689r", .driver_data = (kernel_ulong_t)&ad5689r_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad5686_spi_id);
static const struct of_device_id ad5686_of_match[] = {
{ .compatible = "adi,ad5310r", .data = &ad5310r_chip_info },
+ { .compatible = "adi,ad5313r", .data = &ad5338r_chip_info },
+ { .compatible = "adi,ad5317r", .data = &ad5317r_chip_info },
{ .compatible = "adi,ad5672r", .data = &ad5672r_chip_info },
+ { .compatible = "adi,ad5674", .data = &ad5674_chip_info },
{ .compatible = "adi,ad5674r", .data = &ad5674r_chip_info },
{ .compatible = "adi,ad5676", .data = &ad5676_chip_info },
{ .compatible = "adi,ad5676r", .data = &ad5676r_chip_info },
+ { .compatible = "adi,ad5679", .data = &ad5679_chip_info },
{ .compatible = "adi,ad5679r", .data = &ad5679r_chip_info },
{ .compatible = "adi,ad5681r", .data = &ad5681r_chip_info },
{ .compatible = "adi,ad5682r", .data = &ad5682r_chip_info },
@@ -213,6 +225,10 @@ static const struct of_device_id ad5686_of_match[] = {
{ .compatible = "adi,ad5685r", .data = &ad5685r_chip_info },
{ .compatible = "adi,ad5686", .data = &ad5686_chip_info },
{ .compatible = "adi,ad5686r", .data = &ad5686r_chip_info },
+ { .compatible = "adi,ad5687", .data = &ad5687_chip_info },
+ { .compatible = "adi,ad5687r", .data = &ad5687r_chip_info },
+ { .compatible = "adi,ad5689", .data = &ad5689_chip_info },
+ { .compatible = "adi,ad5689r", .data = &ad5689r_chip_info },
{ }
};
MODULE_DEVICE_TABLE(of, ad5686_of_match);
diff --git a/drivers/iio/dac/ad5686.c b/drivers/iio/dac/ad5686.c
index 873dfb5b9107..090707d76d6e 100644
--- a/drivers/iio/dac/ad5686.c
+++ b/drivers/iio/dac/ad5686.c
@@ -409,8 +409,11 @@ DECLARE_AD5683_CHANNELS(ad5683r_channels, 16, 0);
/* dual-channel */
DECLARE_AD5338_CHANNELS(ad5337r_channels, 8, 8);
DECLARE_AD5338_CHANNELS(ad5338r_channels, 10, 6);
+DECLARE_AD5338_CHANNELS(ad5687r_channels, 12, 4);
+DECLARE_AD5338_CHANNELS(ad5689r_channels, 16, 0);
/* quad-channel */
+DECLARE_AD5686_CHANNELS(ad5317r_channels, 10, 6);
DECLARE_AD5686_CHANNELS(ad5684r_channels, 12, 4);
DECLARE_AD5686_CHANNELS(ad5685r_channels, 14, 2);
DECLARE_AD5686_CHANNELS(ad5686r_channels, 16, 0);
@@ -486,6 +489,44 @@ const struct ad5686_chip_info ad5338r_chip_info = {
};
EXPORT_SYMBOL_NS_GPL(ad5338r_chip_info, "IIO_AD5686");
+const struct ad5686_chip_info ad5687_chip_info = {
+ .channels = ad5687r_channels,
+ .num_channels = 2,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5687_chip_info, "IIO_AD5686");
+
+const struct ad5686_chip_info ad5687r_chip_info = {
+ .channels = ad5687r_channels,
+ .int_vref_mv = 2500,
+ .num_channels = 2,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5687r_chip_info, "IIO_AD5686");
+
+const struct ad5686_chip_info ad5689_chip_info = {
+ .channels = ad5689r_channels,
+ .num_channels = 2,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5689_chip_info, "IIO_AD5686");
+
+const struct ad5686_chip_info ad5689r_chip_info = {
+ .channels = ad5689r_channels,
+ .int_vref_mv = 2500,
+ .num_channels = 2,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5689r_chip_info, "IIO_AD5686");
+
+const struct ad5686_chip_info ad5317r_chip_info = {
+ .channels = ad5317r_channels,
+ .int_vref_mv = 2500,
+ .num_channels = 4,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5317r_chip_info, "IIO_AD5686");
+
const struct ad5686_chip_info ad5684_chip_info = {
.channels = ad5684r_channels,
.num_channels = 4,
@@ -547,6 +588,13 @@ const struct ad5686_chip_info ad5676r_chip_info = {
};
EXPORT_SYMBOL_NS_GPL(ad5676r_chip_info, "IIO_AD5686");
+const struct ad5686_chip_info ad5674_chip_info = {
+ .channels = ad5674r_channels,
+ .num_channels = 16,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5674_chip_info, "IIO_AD5686");
+
const struct ad5686_chip_info ad5674r_chip_info = {
.channels = ad5674r_channels,
.int_vref_mv = 2500,
@@ -555,6 +603,13 @@ const struct ad5686_chip_info ad5674r_chip_info = {
};
EXPORT_SYMBOL_NS_GPL(ad5674r_chip_info, "IIO_AD5686");
+const struct ad5686_chip_info ad5679_chip_info = {
+ .channels = ad5679r_channels,
+ .num_channels = 16,
+ .regmap_type = AD5686_REGMAP,
+};
+EXPORT_SYMBOL_NS_GPL(ad5679_chip_info, "IIO_AD5686");
+
const struct ad5686_chip_info ad5679r_chip_info = {
.channels = ad5679r_channels,
.int_vref_mv = 2500,
diff --git a/drivers/iio/dac/ad5686.h b/drivers/iio/dac/ad5686.h
index c1222ef83a4f..482bc70515f7 100644
--- a/drivers/iio/dac/ad5686.h
+++ b/drivers/iio/dac/ad5686.h
@@ -106,8 +106,13 @@ extern const struct ad5686_chip_info ad5683r_chip_info;
/* dual-channel instances */
extern const struct ad5686_chip_info ad5337r_chip_info;
extern const struct ad5686_chip_info ad5338r_chip_info;
+extern const struct ad5686_chip_info ad5687_chip_info;
+extern const struct ad5686_chip_info ad5687r_chip_info;
+extern const struct ad5686_chip_info ad5689_chip_info;
+extern const struct ad5686_chip_info ad5689r_chip_info;
/* quad-channel instances */
+extern const struct ad5686_chip_info ad5317r_chip_info;
extern const struct ad5686_chip_info ad5684_chip_info;
extern const struct ad5686_chip_info ad5684r_chip_info;
extern const struct ad5686_chip_info ad5685r_chip_info;
@@ -120,7 +125,9 @@ extern const struct ad5686_chip_info ad5676_chip_info;
extern const struct ad5686_chip_info ad5676r_chip_info;
/* 16-channel instances */
+extern const struct ad5686_chip_info ad5674_chip_info;
extern const struct ad5686_chip_info ad5674r_chip_info;
+extern const struct ad5686_chip_info ad5679_chip_info;
extern const struct ad5686_chip_info ad5679r_chip_info;
/**
diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696-i2c.c
index 31439567f00f..7254bb976388 100644
--- a/drivers/iio/dac/ad5696-i2c.c
+++ b/drivers/iio/dac/ad5696-i2c.c
@@ -80,10 +80,12 @@ static int ad5686_i2c_probe(struct i2c_client *i2c)
static const struct i2c_device_id ad5686_i2c_id[] = {
{ .name = "ad5311r", .driver_data = (kernel_ulong_t)&ad5311r_chip_info },
+ { .name = "ad5316r", .driver_data = (kernel_ulong_t)&ad5317r_chip_info },
{ .name = "ad5337r", .driver_data = (kernel_ulong_t)&ad5337r_chip_info },
{ .name = "ad5338r", .driver_data = (kernel_ulong_t)&ad5338r_chip_info },
{ .name = "ad5671r", .driver_data = (kernel_ulong_t)&ad5672r_chip_info },
{ .name = "ad5673r", .driver_data = (kernel_ulong_t)&ad5674r_chip_info },
+ { .name = "ad5675", .driver_data = (kernel_ulong_t)&ad5676_chip_info },
{ .name = "ad5675r", .driver_data = (kernel_ulong_t)&ad5676r_chip_info },
{ .name = "ad5677r", .driver_data = (kernel_ulong_t)&ad5679r_chip_info },
{ .name = "ad5691r", .driver_data = (kernel_ulong_t)&ad5681r_chip_info },
@@ -95,16 +97,21 @@ static const struct i2c_device_id ad5686_i2c_id[] = {
{ .name = "ad5695r", .driver_data = (kernel_ulong_t)&ad5685r_chip_info },
{ .name = "ad5696", .driver_data = (kernel_ulong_t)&ad5686_chip_info },
{ .name = "ad5696r", .driver_data = (kernel_ulong_t)&ad5686r_chip_info },
+ { .name = "ad5697r", .driver_data = (kernel_ulong_t)&ad5687r_chip_info },
{ }
};
MODULE_DEVICE_TABLE(i2c, ad5686_i2c_id);
static const struct of_device_id ad5686_of_match[] = {
{ .compatible = "adi,ad5311r", .data = &ad5311r_chip_info },
+ { .compatible = "adi,ad5316r", .data = &ad5317r_chip_info },
{ .compatible = "adi,ad5337r", .data = &ad5337r_chip_info },
{ .compatible = "adi,ad5338r", .data = &ad5338r_chip_info },
{ .compatible = "adi,ad5671r", .data = &ad5672r_chip_info },
+ { .compatible = "adi,ad5673r", .data = &ad5674r_chip_info },
+ { .compatible = "adi,ad5675", .data = &ad5676_chip_info },
{ .compatible = "adi,ad5675r", .data = &ad5676r_chip_info },
+ { .compatible = "adi,ad5677r", .data = &ad5679r_chip_info },
{ .compatible = "adi,ad5691r", .data = &ad5681r_chip_info },
{ .compatible = "adi,ad5692r", .data = &ad5682r_chip_info },
{ .compatible = "adi,ad5693", .data = &ad5683_chip_info },
@@ -114,6 +121,7 @@ static const struct of_device_id ad5686_of_match[] = {
{ .compatible = "adi,ad5695r", .data = &ad5685r_chip_info },
{ .compatible = "adi,ad5696", .data = &ad5686_chip_info },
{ .compatible = "adi,ad5696r", .data = &ad5686r_chip_info },
+ { .compatible = "adi,ad5697r", .data = &ad5687r_chip_info },
{ }
};
MODULE_DEVICE_TABLE(of, ad5686_of_match);
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] iio: dac: ad5686: update device list and file header comments
2026-07-19 9:51 [PATCH 0/4] iio: dac: ad5686: extend device support Rodrigo Alencar via B4 Relay
` (2 preceding siblings ...)
2026-07-19 9:51 ` [PATCH 3/4] iio: dac: ad5686: extend device support with new parts Rodrigo Alencar via B4 Relay
@ 2026-07-19 9:52 ` Rodrigo Alencar via B4 Relay
2026-07-19 10:00 ` sashiko-bot
2026-07-19 21:30 ` Jonathan Cameron
3 siblings, 2 replies; 9+ messages in thread
From: Rodrigo Alencar via B4 Relay @ 2026-07-19 9:52 UTC (permalink / raw)
To: Michael Auchter, linux, linux-iio, devicetree, linux-kernel
Cc: Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Rodrigo Alencar
From: Rodrigo Alencar <rodrigo.alencar@analog.com>
Update device list entries in Kconfig and remove device description from
file headers. One can rely on the ID table(s) to check for supported
devices. Adjust comment header accordingly and update Copyright notice in
comment file headers with the current year.
Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
---
drivers/iio/dac/Kconfig | 31 ++++++++++++++++++++++++-------
drivers/iio/dac/ad5686-spi.c | 7 ++-----
drivers/iio/dac/ad5686.c | 4 ++--
drivers/iio/dac/ad5696-i2c.c | 6 ++----
4 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
index d6d560c09e25..ba2065241af3 100644
--- a/drivers/iio/dac/Kconfig
+++ b/drivers/iio/dac/Kconfig
@@ -251,9 +251,18 @@ config AD5686_SPI
depends on SPI
select AD5686
help
- Say yes here to build support for Analog Devices AD5672R, AD5674R,
- AD5676, AD5676R, AD5679R, AD5684, AD5684R, AD5684R, AD5685R, AD5686,
- AD5686R Voltage Output Digital to Analog Converter.
+ Say yes here to build support for Analog Devices Voltage Output
+ Digital to Analog Converters:
+ - Single-channel:
+ AD5310R, AD5681R, AD5682R, AD5683R, AD5683R
+ - Dual-channel:
+ AD5313R, AD5687, AD5687R, AD5689, AD5689R
+ - Quad-channel:
+ AD5317R, AD5684, AD5684R, AD5685R, AD5686, AD5686R
+ - 8-channel:
+ AD5672R, AD5676, AD5676R
+ - 16-channel:
+ AD5674, AD5674R, AD5679, AD5679R
To compile this driver as a module, choose M here: the
module will be called ad5686.
@@ -263,10 +272,18 @@ config AD5696_I2C
depends on I2C
select AD5686
help
- Say yes here to build support for Analog Devices AD5311R, AD5337,
- AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
- AD5693R, AD5694, AD5694R, AD5695R, AD5696, and AD5696R Digital to
- Analog converters.
+ Say yes here to build support for Analog Devices Voltage Output
+ Digital to Analog Converters:
+ - Single-channel:
+ AD5311R, AD5691R, AD5692R, AD5693, AD5693R
+ - Dual-channel:
+ AD5338R, AD5697R
+ - Quad-channel:
+ AD5316R, AD5694, AD5694R, AD5695R, AD5696, AD5696R
+ - 8-channel:
+ AD5671R, AD5675, AD5675R
+ - 16-channel:
+ AD5673R, AD5677R
To compile this driver as a module, choose M here: the module will be
called ad5696.
diff --git a/drivers/iio/dac/ad5686-spi.c b/drivers/iio/dac/ad5686-spi.c
index 003541edb742..b4531b49cb22 100644
--- a/drivers/iio/dac/ad5686-spi.c
+++ b/drivers/iio/dac/ad5686-spi.c
@@ -1,11 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
/*
- * AD5672R, AD5674R, AD5676, AD5676R, AD5679R,
- * AD5681R, AD5682R, AD5683, AD5683R, AD5684,
- * AD5684R, AD5685R, AD5686, AD5686R
- * Digital to analog converters driver
+ * SPI driver for AD5686 and similar Digital to Analog Converters
*
- * Copyright 2018 Analog Devices Inc.
+ * Copyright 2018-2026 Analog Devices Inc.
*/
#include <linux/array_size.h>
diff --git a/drivers/iio/dac/ad5686.c b/drivers/iio/dac/ad5686.c
index 090707d76d6e..fc0bccfb0a03 100644
--- a/drivers/iio/dac/ad5686.c
+++ b/drivers/iio/dac/ad5686.c
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
/*
- * AD5686R, AD5685R, AD5684R Digital to analog converters driver
+ * Core driver for AD5686 and similar Digital to Analog Converters
*
- * Copyright 2011 Analog Devices Inc.
+ * Copyright 2011-2026 Analog Devices Inc.
*/
#include <linux/array_size.h>
diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696-i2c.c
index 7254bb976388..19605274e787 100644
--- a/drivers/iio/dac/ad5696-i2c.c
+++ b/drivers/iio/dac/ad5696-i2c.c
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
/*
- * AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
- * AD5693R, AD5694, AD5694R, AD5695R, AD5696, AD5696R
- * Digital to analog converters driver
+ * I2C driver for AD5696 and similar Digital to Analog Converters
*
- * Copyright 2018 Analog Devices Inc.
+ * Copyright 2018-2026 Analog Devices Inc.
*/
#include <linux/bitfield.h>
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 4/4] iio: dac: ad5686: update device list and file header comments
2026-07-19 9:52 ` [PATCH 4/4] iio: dac: ad5686: update device list and file header comments Rodrigo Alencar via B4 Relay
@ 2026-07-19 10:00 ` sashiko-bot
2026-07-19 21:30 ` Jonathan Cameron
1 sibling, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-07-19 10:00 UTC (permalink / raw)
To: Rodrigo Alencar; +Cc: robh, devicetree, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [Low] Kconfig help text introduces typos and omits supported devices.
Pre-existing issues:
- [High] The I2C read operation uses overlapping memory in the same cacheline for concurrent DMA_TO_DEVICE and DMA_FROM_DEVICE mappings.
--
--- Patch [4]: [PATCH 4/4] iio: dac: ad5686: update device list and file header comments ---
commit 815b7c6dbcb143b832135213c1aa2cb0c1357c58
Author: Rodrigo Alencar <rodrigo.alencar@analog.com>
iio: dac: ad5686: update device list and file header comments
Update device list entries in Kconfig and remove device description from
file headers. One can rely on the ID table(s) to check for supported
devices. Adjust comment header accordingly and update Copyright notice in
comment file headers with the current year.
> diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
> index d6d560c09e250..ba2065241af31 100644
> --- a/drivers/iio/dac/Kconfig
> +++ b/drivers/iio/dac/Kconfig
> @@ -251,9 +251,18 @@ config AD5686_SPI
> depends on SPI
> select AD5686
> help
> - Say yes here to build support for Analog Devices AD5672R, AD5674R,
> - AD5676, AD5676R, AD5679R, AD5684, AD5684R, AD5684R, AD5685R, AD5686,
> - AD5686R Voltage Output Digital to Analog Converter.
> + Say yes here to build support for Analog Devices Voltage Output
> + Digital to Analog Converters:
> + - Single-channel:
> + AD5310R, AD5681R, AD5682R, AD5683R, AD5683R
[Severity: Low]
Is AD5683R intentionally duplicated here? It looks like AD5683 might have
been intended instead, since it is supported by the driver but missing from
this list.
[ ... ]
> @@ -263,10 +272,18 @@ config AD5696_I2C
> depends on I2C
> select AD5686
> help
> - Say yes here to build support for Analog Devices AD5311R, AD5337,
> - AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
> - AD5693R, AD5694, AD5694R, AD5695R, AD5696, and AD5696R Digital to
> - Analog converters.
> + Say yes here to build support for Analog Devices Voltage Output
> + Digital to Analog Converters:
> + - Single-channel:
> + AD5311R, AD5691R, AD5692R, AD5693, AD5693R
> + - Dual-channel:
> + AD5338R, AD5697R
[Severity: Low]
Does this list omit AD5337R? It appears to be present in the driver's ID
table but is missing from this updated text.
[ ... ]
> diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696-i2c.c
> index 7254bb976388c..19605274e7877 100644
> --- a/drivers/iio/dac/ad5696-i2c.c
> +++ b/drivers/iio/dac/ad5696-i2c.c
> @@ -1,10 +1,8 @@
> // SPDX-License-Identifier: GPL-2.0
> /*
> - * AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
> - * AD5693R, AD5694, AD5694R, AD5695R, AD5696, AD5696R
> - * Digital to analog converters driver
> + * I2C driver for AD5696 and similar Digital to Analog Converters
> *
> - * Copyright 2018 Analog Devices Inc.
> + * Copyright 2018-2026 Analog Devices Inc.
> */
[Severity: High]
This is a pre-existing issue, but can the I2C read operation cause data
corruption on non-coherent architectures?
Looking at ad5686_i2c_read() in this file, the I2C message array provides
overlapping buffers within the exact same union:
struct i2c_msg msg[2] = {
{
.addr = i2c->addr,
.flags = i2c->flags,
.len = 3,
.buf = &st->data[0].d8[1],
},
{
.addr = i2c->addr,
.flags = i2c->flags | I2C_M_RD,
.len = 2,
.buf = (char *)&st->data[0].d16,
},
};
When i2c_transfer() is backed by a DMA-enabled I2C controller, both messages
are concurrently mapped for DMA (one for DMA_TO_DEVICE, one for
DMA_FROM_DEVICE). Mapping overlapping memory in the same cacheline with
conflicting DMA directions violates coherency rules, which might lead to the
RX buffer invalidation discarding the TX buffer's data.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260719-ad5686-extend-dev-support-v1-0-841ec75cf5d8@analog.com?part=4
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] dt-bindings: iio: dac: ad5696: extend device support
2026-07-19 9:51 ` [PATCH 1/4] dt-bindings: iio: dac: ad5696: " Rodrigo Alencar via B4 Relay
@ 2026-07-19 21:18 ` Jonathan Cameron
0 siblings, 0 replies; 9+ messages in thread
From: Jonathan Cameron @ 2026-07-19 21:18 UTC (permalink / raw)
To: Rodrigo Alencar via B4 Relay
Cc: rodrigo.alencar, Michael Auchter, linux, linux-iio, devicetree,
linux-kernel, Michael Hennerich, David Lechner, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley
On Sun, 19 Jul 2026 10:51:57 +0100
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:
> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
>
> Support for AD5316R, AD5673R, AD5675, AD5677R and AD5697R missing from the
I'd drop the 'missing' given I think until this series they weren't used.
If nothing else comes up I'll just make that change whilst applying.
> device-tree bindings documentation. These devices have different bit
> resolutions or different number of channels so no fallback compatibles
> are used.
>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
> ---
> Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml b/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
> index e10f8596f9d3..835fa21c474e 100644
> --- a/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
> +++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5696.yaml
> @@ -16,10 +16,14 @@ properties:
> compatible:
> enum:
> - adi,ad5311r
> + - adi,ad5316r
> - adi,ad5337r
> - adi,ad5338r
> - adi,ad5671r
> + - adi,ad5673r
> + - adi,ad5675
> - adi,ad5675r
> + - adi,ad5677r
> - adi,ad5691r
> - adi,ad5692r
> - adi,ad5693
> @@ -29,6 +33,7 @@ properties:
> - adi,ad5695r
> - adi,ad5696
> - adi,ad5696r
> + - adi,ad5697r
>
> reg:
> maxItems: 1
> @@ -84,6 +89,7 @@ allOf:
> compatible:
> contains:
> enum:
> + - adi,ad5675
> - adi,ad5693
> - adi,ad5694
> - adi,ad5696
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 4/4] iio: dac: ad5686: update device list and file header comments
2026-07-19 9:52 ` [PATCH 4/4] iio: dac: ad5686: update device list and file header comments Rodrigo Alencar via B4 Relay
2026-07-19 10:00 ` sashiko-bot
@ 2026-07-19 21:30 ` Jonathan Cameron
1 sibling, 0 replies; 9+ messages in thread
From: Jonathan Cameron @ 2026-07-19 21:30 UTC (permalink / raw)
To: Rodrigo Alencar via B4 Relay
Cc: rodrigo.alencar, Michael Auchter, linux, linux-iio, devicetree,
linux-kernel, Michael Hennerich, David Lechner, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
On Sun, 19 Jul 2026 10:52:00 +0100
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:
> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
>
> Update device list entries in Kconfig and remove device description from
> file headers. One can rely on the ID table(s) to check for supported
> devices. Adjust comment header accordingly and update Copyright notice in
> comment file headers with the current year.
>
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
> ---
Main comments here are about the patch break up. I think it needs
just enough modification for a v2 to be needed.
> drivers/iio/dac/Kconfig | 31 ++++++++++++++++++++++++-------
> drivers/iio/dac/ad5686-spi.c | 7 ++-----
> drivers/iio/dac/ad5686.c | 4 ++--
> drivers/iio/dac/ad5696-i2c.c | 6 ++----
> 4 files changed, 30 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
> index d6d560c09e25..ba2065241af3 100644
> --- a/drivers/iio/dac/Kconfig
> +++ b/drivers/iio/dac/Kconfig
> @@ -251,9 +251,18 @@ config AD5686_SPI
> depends on SPI
> select AD5686
> help
> - Say yes here to build support for Analog Devices AD5672R, AD5674R,
> - AD5676, AD5676R, AD5679R, AD5684, AD5684R, AD5684R, AD5685R, AD5686,
> - AD5686R Voltage Output Digital to Analog Converter.
Given this is adding entrees that were in the previous patch, I'd have
preferred to see the more complex dance of a precursor patch before that
which did the reformat (and dropped the stuff form the c files)
That would then be followed the new stuff being added as part of the previous
patch.
Whilst the ends result is the same I think it is worth doing a v2 just
to clean that break down of patches up.
> + Say yes here to build support for Analog Devices Voltage Output
> + Digital to Analog Converters:
> + - Single-channel:
> + AD5310R, AD5681R, AD5682R, AD5683R, AD5683R
Eagle eyed Sashiko spotted last entry is a duplicate.
> + - Dual-channel:
> + AD5313R, AD5687, AD5687R, AD5689, AD5689R
> + - Quad-channel:
> + AD5317R, AD5684, AD5684R, AD5685R, AD5686, AD5686R
> + - 8-channel:
> + AD5672R, AD5676, AD5676R
> + - 16-channel:
> + AD5674, AD5674R, AD5679, AD5679R
>
> To compile this driver as a module, choose M here: the
> module will be called ad5686.
> @@ -263,10 +272,18 @@ config AD5696_I2C
> depends on I2C
> select AD5686
> help
> - Say yes here to build support for Analog Devices AD5311R, AD5337,
> - AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
> - AD5693R, AD5694, AD5694R, AD5695R, AD5696, and AD5696R Digital to
> - Analog converters.
> + Say yes here to build support for Analog Devices Voltage Output
> + Digital to Analog Converters:
> + - Single-channel:
> + AD5311R, AD5691R, AD5692R, AD5693, AD5693R
> + - Dual-channel:
> + AD5338R, AD5697R
> + - Quad-channel:
> + AD5316R, AD5694, AD5694R, AD5695R, AD5696, AD5696R
> + - 8-channel:
> + AD5671R, AD5675, AD5675R
> + - 16-channel:
> + AD5673R, AD5677R
>
> To compile this driver as a module, choose M here: the module will be
> called ad5696.
> diff --git a/drivers/iio/dac/ad5686-spi.c b/drivers/iio/dac/ad5686-spi.c
> index 003541edb742..b4531b49cb22 100644
> --- a/drivers/iio/dac/ad5686-spi.c
> +++ b/drivers/iio/dac/ad5686-spi.c
> @@ -1,11 +1,8 @@
> // SPDX-License-Identifier: GPL-2.0
> /*
> - * AD5672R, AD5674R, AD5676, AD5676R, AD5679R,
> - * AD5681R, AD5682R, AD5683, AD5683R, AD5684,
> - * AD5684R, AD5685R, AD5686, AD5686R
> - * Digital to analog converters driver
> + * SPI driver for AD5686 and similar Digital to Analog Converters
> *
> - * Copyright 2018 Analog Devices Inc.
> + * Copyright 2018-2026 Analog Devices Inc.
That definitely belongs in the patch that made a real change, not one
that is just messing with comments.
> */
>
> #include <linux/array_size.h>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] iio: dac: ad5686: extend device support with new parts
2026-07-19 9:51 ` [PATCH 3/4] iio: dac: ad5686: extend device support with new parts Rodrigo Alencar via B4 Relay
@ 2026-07-19 21:43 ` Jonathan Cameron
0 siblings, 0 replies; 9+ messages in thread
From: Jonathan Cameron @ 2026-07-19 21:43 UTC (permalink / raw)
To: Rodrigo Alencar via B4 Relay
Cc: rodrigo.alencar, Michael Auchter, linux, linux-iio, devicetree,
linux-kernel, Michael Hennerich, David Lechner, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
On Sun, 19 Jul 2026 10:51:59 +0100
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:
> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
>
> Add support for AD5313R, AD5317R, AD5674, AD5679, AD5687, AD5687R, AD5689,
> AD5689R to the AD5686 SPI driver. Also adding support for AD5316R, AD5675,
> AD5697R to the AD5696 I2C driver. AD5673R and AD5677R were missing from
> the of_match table.
Given I'm asking for a v2 anyway, please break out the missing of_match
table entries as a precursor.
> This includes the creation of seven chip info struct
> instances and reuse of existing ones.
>
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
Thanks,
Jonathan
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-07-19 21:43 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-19 9:51 [PATCH 0/4] iio: dac: ad5686: extend device support Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 1/4] dt-bindings: iio: dac: ad5696: " Rodrigo Alencar via B4 Relay
2026-07-19 21:18 ` Jonathan Cameron
2026-07-19 9:51 ` [PATCH 2/4] dt-bindings: iio: dac: ad5686: " Rodrigo Alencar via B4 Relay
2026-07-19 9:51 ` [PATCH 3/4] iio: dac: ad5686: extend device support with new parts Rodrigo Alencar via B4 Relay
2026-07-19 21:43 ` Jonathan Cameron
2026-07-19 9:52 ` [PATCH 4/4] iio: dac: ad5686: update device list and file header comments Rodrigo Alencar via B4 Relay
2026-07-19 10:00 ` sashiko-bot
2026-07-19 21:30 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox