* [PATCH v2 0/2] iio: adc: ad9467: add support for ad9211
@ 2025-12-04 8:01 Tomas Melin
2025-12-04 8:01 ` [PATCH v2 1/2] dt-bindings: " Tomas Melin
2025-12-04 8:01 ` [PATCH v2 2/2] iio: " Tomas Melin
0 siblings, 2 replies; 7+ messages in thread
From: Tomas Melin @ 2025-12-04 8:01 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Michael Hennerich, linux-iio, devicetree, linux-kernel,
Tomas Melin
This series adds support for the ad9211, a variant of the already
supported devices.
Example usage:
$ cat name
ad9211
$ cat in_voltage_scale_available
0.957031 0.976562 0.996093 1.015625 1.035156 1.054687 1.074218
1.093750 1.113281 1.132812 1.152343 1.162109 1.171875 1.181640
1.191406 1.201171 1.220703 1.240234 1.259765 1.279296 1.298828
1.318359 1.337890 1.357421 1.376953 1.396484 1.416015 1.425781
1.435546 1.445312 1.455078 1.464843
Link: https://www.analog.com/media/en/technical-documentation/data-sheets/AD9211.pdf
Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
---
Changes in v2:
- Use HZ_PER_MHZ
- Update commit message texts.
- Link to v1: https://lore.kernel.org/r/20251203-add-ad9211-v1-0-170e97e6df11@vaisala.com
---
Tomas Melin (2):
dt-bindings: adc: ad9467: add support for ad9211
iio: adc: ad9467: add support for ad9211
.../devicetree/bindings/iio/adc/adi,ad9467.yaml | 2 +
drivers/iio/adc/ad9467.c | 43 ++++++++++++++++++++++
2 files changed, 45 insertions(+)
---
base-commit: ac3fd01e4c1efce8f2c054cdeb2ddd2fc0fb150d
change-id: 20251203-add-ad9211-897dc9354185
Best regards,
--
Tomas Melin <tomas.melin@vaisala.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] dt-bindings: adc: ad9467: add support for ad9211
2025-12-04 8:01 [PATCH v2 0/2] iio: adc: ad9467: add support for ad9211 Tomas Melin
@ 2025-12-04 8:01 ` Tomas Melin
2025-12-06 11:03 ` Krzysztof Kozlowski
2025-12-04 8:01 ` [PATCH v2 2/2] iio: " Tomas Melin
1 sibling, 1 reply; 7+ messages in thread
From: Tomas Melin @ 2025-12-04 8:01 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Michael Hennerich, linux-iio, devicetree, linux-kernel,
Tomas Melin
Document ad9211 variant as supported by driver. This has e.g.
different scaling values than currently supported devices.
Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
---
Documentation/devicetree/bindings/iio/adc/adi,ad9467.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad9467.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad9467.yaml
index 2606c0c5dfc61fd65cd0fb2015b3f659c2fc9e07..5acfb0eef4d5cf487adaa93ce5bda759bb4853c9 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad9467.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad9467.yaml
@@ -18,6 +18,7 @@ description: |
All the parts support the register map described by Application Note AN-877
https://www.analog.com/media/en/technical-documentation/application-notes/AN-877.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/AD9211.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9265.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9434.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9467.pdf
@@ -25,6 +26,7 @@ description: |
properties:
compatible:
enum:
+ - adi,ad9211
- adi,ad9265
- adi,ad9434
- adi,ad9467
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] iio: adc: ad9467: add support for ad9211
2025-12-04 8:01 [PATCH v2 0/2] iio: adc: ad9467: add support for ad9211 Tomas Melin
2025-12-04 8:01 ` [PATCH v2 1/2] dt-bindings: " Tomas Melin
@ 2025-12-04 8:01 ` Tomas Melin
2025-12-04 12:14 ` Andy Shevchenko
1 sibling, 1 reply; 7+ messages in thread
From: Tomas Melin @ 2025-12-04 8:01 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Michael Hennerich, linux-iio, devicetree, linux-kernel,
Tomas Melin
The AD9211 is a 10-bit monolithic sampling analog-to-digital
converter optimized for high performance, low power, and ease
of use. The product operates at up to a 300 MSPS conversion
rate and is optimized for outstanding dynamic performance
in wideband carrier and broadband systems.
The scale table implemented here is not an exact match with the
datasheet as the table presented there is missing some information.
The reference presents these values as being linear,
but that does not add up. There is information missing in the table.
Implemented scale table matches values at the middle and at the ends,
smoothing the curve towards middle and end.
Impact on end result from deviation in scale factor affects only software
using it for scaling. All the possible hw-settings are also available with
this implementation.
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/AD9211.pdf
Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
---
drivers/iio/adc/ad9467.c | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
index f7a9f46ea0dc405e25f312197df4b2131871b4bc..b2a9ddf06c0d207e82361e2de322e74f85e4c504 100644
--- a/drivers/iio/adc/ad9467.c
+++ b/drivers/iio/adc/ad9467.c
@@ -20,6 +20,7 @@
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/of.h>
+#include <linux/units.h>
#include <linux/iio/backend.h>
@@ -81,6 +82,14 @@
/* AN877_ADC_REG_OUTPUT_DELAY */
#define AN877_ADC_DCO_DELAY_ENABLE 0x80
+/*
+ * Analog Devices AD9211 10-Bit, 200/250/300 MSPS ADC
+ */
+
+#define CHIPID_AD9211 0x06
+#define AD9211_DEF_OUTPUT_MODE 0x00
+#define AD9211_REG_VREF_MASK GENMASK(4, 0)
+
/*
* Analog Devices AD9265 16-Bit, 125/105/80 MSPS ADC
*/
@@ -234,6 +243,17 @@ static int ad9467_reg_access(struct iio_dev *indio_dev, unsigned int reg,
return 0;
}
+static const unsigned int ad9211_scale_table[][2] = {
+ {980, 0x10}, {1000, 0x11}, {1020, 0x12}, {1040, 0x13},
+ {1060, 0x14}, {1080, 0x15}, {1100, 0x16}, {1120, 0x17},
+ {1140, 0x18}, {1160, 0x19}, {1180, 0x1A}, {1190, 0x1B},
+ {1200, 0x1C}, {1210, 0x1D}, {1220, 0x1E}, {1230, 0x1F},
+ {1250, 0x0}, {1270, 0x1}, {1290, 0x2}, {1310, 0x3},
+ {1330, 0x4}, {1350, 0x5}, {1370, 0x6}, {1390, 0x7},
+ {1410, 0x8}, {1430, 0x9}, {1450, 0xA}, {1460, 0xB},
+ {1470, 0xC}, {1480, 0xD}, {1490, 0xE}, {1500, 0xF},
+};
+
static const unsigned int ad9265_scale_table[][2] = {
{1250, 0x00}, {1500, 0x40}, {1750, 0x80}, {2000, 0xC0},
};
@@ -297,6 +317,10 @@ static void __ad9467_get_scale(struct ad9467_state *st, int index,
}, \
}
+static const struct iio_chan_spec ad9211_channels[] = {
+ AD9467_CHAN(0, BIT(IIO_CHAN_INFO_SCALE), 0, 10, 's'),
+};
+
static const struct iio_chan_spec ad9434_channels[] = {
AD9467_CHAN(0, BIT(IIO_CHAN_INFO_SCALE), 0, 12, 's'),
};
@@ -369,6 +393,23 @@ static const struct ad9467_chip_info ad9434_chip_tbl = {
.num_lanes = 6,
};
+static const struct ad9467_chip_info ad9211_chip_tbl = {
+ .name = "ad9211",
+ .id = CHIPID_AD9211,
+ .max_rate = 300 * HZ_PER_MHZ,
+ .scale_table = ad9211_scale_table,
+ .num_scales = ARRAY_SIZE(ad9211_scale_table),
+ .channels = ad9211_channels,
+ .num_channels = ARRAY_SIZE(ad9211_channels),
+ .test_points = AD9647_MAX_TEST_POINTS,
+ .test_mask = GENMASK(AN877_ADC_TESTMODE_ONE_ZERO_TOGGLE,
+ AN877_ADC_TESTMODE_OFF),
+ .test_mask_len = AN877_ADC_TESTMODE_ONE_ZERO_TOGGLE + 1,
+ .default_output_mode = AD9211_DEF_OUTPUT_MODE,
+ .vref_mask = AD9211_REG_VREF_MASK,
+ .has_dco = true,
+};
+
static const struct ad9467_chip_info ad9265_chip_tbl = {
.name = "ad9265",
.id = CHIPID_AD9265,
@@ -1264,6 +1305,7 @@ static int ad9467_probe(struct spi_device *spi)
}
static const struct of_device_id ad9467_of_match[] = {
+ { .compatible = "adi,ad9211", .data = &ad9211_chip_tbl, },
{ .compatible = "adi,ad9265", .data = &ad9265_chip_tbl, },
{ .compatible = "adi,ad9434", .data = &ad9434_chip_tbl, },
{ .compatible = "adi,ad9467", .data = &ad9467_chip_tbl, },
@@ -1275,6 +1317,7 @@ static const struct of_device_id ad9467_of_match[] = {
MODULE_DEVICE_TABLE(of, ad9467_of_match);
static const struct spi_device_id ad9467_ids[] = {
+ { "ad9211", (kernel_ulong_t)&ad9211_chip_tbl },
{ "ad9265", (kernel_ulong_t)&ad9265_chip_tbl },
{ "ad9434", (kernel_ulong_t)&ad9434_chip_tbl },
{ "ad9467", (kernel_ulong_t)&ad9467_chip_tbl },
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] iio: adc: ad9467: add support for ad9211
2025-12-04 8:01 ` [PATCH v2 2/2] iio: " Tomas Melin
@ 2025-12-04 12:14 ` Andy Shevchenko
2025-12-04 12:16 ` Andy Shevchenko
0 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2025-12-04 12:14 UTC (permalink / raw)
To: Tomas Melin
Cc: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio, devicetree, linux-kernel
On Thu, Dec 04, 2025 at 08:01:04AM +0000, Tomas Melin wrote:
> The AD9211 is a 10-bit monolithic sampling analog-to-digital
> converter optimized for high performance, low power, and ease
> of use. The product operates at up to a 300 MSPS conversion
> rate and is optimized for outstanding dynamic performance
> in wideband carrier and broadband systems.
>
> The scale table implemented here is not an exact match with the
> datasheet as the table presented there is missing some information.
> The reference presents these values as being linear,
> but that does not add up. There is information missing in the table.
> Implemented scale table matches values at the middle and at the ends,
> smoothing the curve towards middle and end.
> Impact on end result from deviation in scale factor affects only software
> using it for scaling. All the possible hw-settings are also available with
> this implementation.
Some amendment in the headers would be nice to have,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
...
+ array_size.h
> #include <linux/delay.h>
> #include <linux/gpio/consumer.h>
> #include <linux/of.h>
> +#include <linux/units.h>
>
You can drop one blank line here.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] iio: adc: ad9467: add support for ad9211
2025-12-04 12:14 ` Andy Shevchenko
@ 2025-12-04 12:16 ` Andy Shevchenko
2025-12-06 20:58 ` Jonathan Cameron
0 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2025-12-04 12:16 UTC (permalink / raw)
To: Tomas Melin
Cc: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio, devicetree, linux-kernel
On Thu, Dec 04, 2025 at 02:14:49PM +0200, Andy Shevchenko wrote:
> On Thu, Dec 04, 2025 at 08:01:04AM +0000, Tomas Melin wrote:
> > The AD9211 is a 10-bit monolithic sampling analog-to-digital
> > converter optimized for high performance, low power, and ease
Also just noticed that this paragraph is visible shorter than the last one,
can you make them approximately the same line length?
> > of use. The product operates at up to a 300 MSPS conversion
Is it megasamples? Then MSps?
> > rate and is optimized for outstanding dynamic performance
> > in wideband carrier and broadband systems.
> > The scale table implemented here is not an exact match with the
> > datasheet as the table presented there is missing some information.
> > The reference presents these values as being linear,
> > but that does not add up. There is information missing in the table.
> > Implemented scale table matches values at the middle and at the ends,
> > smoothing the curve towards middle and end.
> > Impact on end result from deviation in scale factor affects only software
> > using it for scaling. All the possible hw-settings are also available with
> > this implementation.
>
>
> Some amendment in the headers would be nice to have,
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
...
> + array_size.h
>
> > #include <linux/delay.h>
> > #include <linux/gpio/consumer.h>
> > #include <linux/of.h>
> > +#include <linux/units.h>
> >
>
> You can drop one blank line here.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: adc: ad9467: add support for ad9211
2025-12-04 8:01 ` [PATCH v2 1/2] dt-bindings: " Tomas Melin
@ 2025-12-06 11:03 ` Krzysztof Kozlowski
0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-06 11:03 UTC (permalink / raw)
To: Tomas Melin
Cc: Lars-Peter Clausen, Michael Hennerich, Nuno Sa, Jonathan Cameron,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio, devicetree, linux-kernel
On Thu, Dec 04, 2025 at 08:01:03AM +0000, Tomas Melin wrote:
> Document ad9211 variant as supported by driver. This has e.g.
Drop "as supported by driver", not relevant here. Just say that device
is not compatible with existing because of different scaling ....
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
<form letter>
This is an automated instruction, just in case, because many review
tags are being ignored. If you know the process, just skip it entirely
(please do not feel offended by me posting it here - no bad intentions
intended, no patronizing, I just want to avoid wasted efforts). If you
do not know the process, here is a short explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new
versions of patchset, under or above your Signed-off-by tag, unless
patch changed significantly (e.g. new properties added to the DT
bindings). Tag is "received", when provided in a message replied to you
on the mailing list. Tools like b4 can help here ('b4 trailers -u ...').
However, there's no need to repost patches *only* to add the tags. The
upstream maintainer will do that for tags received on the version they
apply.
https://elixir.bootlin.com/linux/v6.15/source/Documentation/process/submitting-patches.rst#L591
</form letter>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] iio: adc: ad9467: add support for ad9211
2025-12-04 12:16 ` Andy Shevchenko
@ 2025-12-06 20:58 ` Jonathan Cameron
0 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2025-12-06 20:58 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Tomas Melin, Lars-Peter Clausen, Michael Hennerich, Nuno Sa,
David Lechner, Andy Shevchenko, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio, devicetree, linux-kernel
On Thu, 4 Dec 2025 14:16:41 +0200
Andy Shevchenko <andriy.shevchenko@intel.com> wrote:
> On Thu, Dec 04, 2025 at 02:14:49PM +0200, Andy Shevchenko wrote:
> > On Thu, Dec 04, 2025 at 08:01:04AM +0000, Tomas Melin wrote:
> > > The AD9211 is a 10-bit monolithic sampling analog-to-digital
> > > converter optimized for high performance, low power, and ease
>
> Also just noticed that this paragraph is visible shorter than the last one,
> can you make them approximately the same line length?
>
> > > of use. The product operates at up to a 300 MSPS conversion
>
> Is it megasamples? Then MSps?
>
> > > rate and is optimized for outstanding dynamic performance
> > > in wideband carrier and broadband systems.
>
> > > The scale table implemented here is not an exact match with the
> > > datasheet as the table presented there is missing some information.
> > > The reference presents these values as being linear,
> > > but that does not add up. There is information missing in the table.
> > > Implemented scale table matches values at the middle and at the ends,
> > > smoothing the curve towards middle and end.
> > > Impact on end result from deviation in scale factor affects only software
> > > using it for scaling. All the possible hw-settings are also available with
> > > this implementation.
> >
> >
> > Some amendment in the headers would be nice to have,
> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
>
> ...
>
> > + array_size.h
> >
> > > #include <linux/delay.h>
> > > #include <linux/gpio/consumer.h>
> > > #include <linux/of.h>
> > > +#include <linux/units.h>
> > >
> >
> > You can drop one blank line here.
>
I have nothing to add from a quick read. I thought about fixing up Andy's
comments and applying but meh, it's early in the cycle and beer o'clock,
so please do a v3 tidying those up.
Thanks,
Jonathan
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-12-06 20:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-04 8:01 [PATCH v2 0/2] iio: adc: ad9467: add support for ad9211 Tomas Melin
2025-12-04 8:01 ` [PATCH v2 1/2] dt-bindings: " Tomas Melin
2025-12-06 11:03 ` Krzysztof Kozlowski
2025-12-04 8:01 ` [PATCH v2 2/2] iio: " Tomas Melin
2025-12-04 12:14 ` Andy Shevchenko
2025-12-04 12:16 ` Andy Shevchenko
2025-12-06 20:58 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).