* [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support
@ 2025-04-01 22:50 David Lechner
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
While developing this driver, we glossed over AD7389-4 since we didn't
have hardware to test it. However, it should be trivial enough to add
support without testing. It is basically the same as AD7380-4 but
instead of no internal reference, it has no external reference. And we
already have support for chips with internal reference only (ADAQ).
We have the typical DT bindings/driver/documentation patches for it plus
a few patches to shuffle around the existing code for supporting chips
with internal-reference-only to make it generic enough to support this
chip as well.
---
David Lechner (5):
dt-bindings: iio: adc: ad7380: add AD7389-4
iio: adc: ad7380: rename internal_ref_only
iio: adc: ad7380: move internal reference voltage to chip_info
iio: adc: ad7380: add ad7389-4
Documentation: iio: ad7380: add AD7389-4
.../devicetree/bindings/iio/adc/adi,ad7380.yaml | 11 +++++
Documentation/iio/ad7380.rst | 7 +++
drivers/iio/adc/ad7380.c | 50 +++++++++++++++++++---
3 files changed, 61 insertions(+), 7 deletions(-)
---
base-commit: f8ffc92ae9052e6615896052f0c5b808bfc17520
change-id: 20250401-iio-ad7380-add-ad7389-4-1f6d3d7dc749
Best regards,
--
David Lechner <dlechner@baylibre.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
@ 2025-04-01 22:50 ` David Lechner
2025-04-02 8:25 ` Krzysztof Kozlowski
2025-04-07 6:42 ` Krzysztof Kozlowski
2025-04-01 22:50 ` [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only David Lechner
` (4 subsequent siblings)
5 siblings, 2 replies; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
Add compatible and quirks for AD7389-4. This is essentially the same as
AD7380-4 but instead of having no internal reference, it has no external
reference voltage supply.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
index ff4f5c21c5482b77ee2774b01ad6d426e68cf207..8dae89ecb64d723dcf2b4af1e0505fc5db49595b 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
@@ -25,6 +25,7 @@ description: |
* https://www.analog.com/en/products/ad7386-4.html
* https://www.analog.com/en/products/ad7387-4.html
* https://www.analog.com/en/products/ad7388-4.html
+ * https://www.analog.com/en/products/ad7389-4.html
* https://www.analog.com/en/products/adaq4370-4.html
* https://www.analog.com/en/products/adaq4380-4.html
* https://www.analog.com/en/products/adaq4381-4.html
@@ -49,6 +50,7 @@ properties:
- adi,ad7386-4
- adi,ad7387-4
- adi,ad7388-4
+ - adi,ad7389-4
- adi,adaq4370-4
- adi,adaq4380-4
- adi,adaq4381-4
@@ -213,6 +215,15 @@ allOf:
properties:
refin-supply: false
+ # adi,ad7389-4 is internal reference only
+ - if:
+ properties:
+ compatible:
+ const: adi,ad7389-4
+ then:
+ properties:
+ refio-supply: false
+
# adaq devices need more supplies and using channel to declare gain property
# only applies to adaq devices
- if:
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
@ 2025-04-01 22:50 ` David Lechner
2025-04-03 18:53 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info David Lechner
` (3 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
Rename adaq_internal_ref_only to internal_ref_only_adaq. There are non-
ADAQ chips in the family that are also internal reference only, so the
adaq_ prefix is misleading.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
drivers/iio/adc/ad7380.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
index 4fcb49fdf56639784098f0147a9faef8dcb6b0f6..18ed07275be8e031e54f3595f70afe47514084cd 100644
--- a/drivers/iio/adc/ad7380.c
+++ b/drivers/iio/adc/ad7380.c
@@ -119,7 +119,7 @@ struct ad7380_chip_info {
const char * const *supplies;
unsigned int num_supplies;
bool external_ref_only;
- bool adaq_internal_ref_only;
+ bool internal_ref_only;
const char * const *vcm_supplies;
unsigned int num_vcm_supplies;
const unsigned long *available_scan_masks;
@@ -806,7 +806,7 @@ static const struct ad7380_chip_info adaq4370_4_chip_info = {
.num_simult_channels = 4,
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
- .adaq_internal_ref_only = true,
+ .internal_ref_only = true,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -821,7 +821,7 @@ static const struct ad7380_chip_info adaq4380_4_chip_info = {
.num_simult_channels = 4,
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
- .adaq_internal_ref_only = true,
+ .internal_ref_only = true,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -836,7 +836,7 @@ static const struct ad7380_chip_info adaq4381_4_chip_info = {
.num_simult_channels = 4,
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
- .adaq_internal_ref_only = true,
+ .internal_ref_only = true,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -1847,7 +1847,7 @@ static int ad7380_probe(struct spi_device *spi)
"Failed to enable power supplies\n");
fsleep(T_POWERUP_US);
- if (st->chip_info->adaq_internal_ref_only) {
+ if (st->chip_info->internal_ref_only) {
/*
* ADAQ chips use fixed internal reference but still
* require a specific reference supply to power it.
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
2025-04-01 22:50 ` [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only David Lechner
@ 2025-04-01 22:50 ` David Lechner
2025-04-03 18:56 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 4/5] iio: adc: ad7380: add ad7389-4 David Lechner
` (2 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
Move the internal reference voltage value to the chip_info structure.
Before this change, only ADAQ chips could be internal_ref_only and only
non-ADAQ chips could be external_ref_only. Now, this restriction is
removed.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
drivers/iio/adc/ad7380.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
index 18ed07275be8e031e54f3595f70afe47514084cd..e5cd11fd7b1083af2082985f2c0226b1a97d600f 100644
--- a/drivers/iio/adc/ad7380.c
+++ b/drivers/iio/adc/ad7380.c
@@ -120,6 +120,7 @@ struct ad7380_chip_info {
unsigned int num_supplies;
bool external_ref_only;
bool internal_ref_only;
+ unsigned int internal_ref_mv;
const char * const *vcm_supplies;
unsigned int num_vcm_supplies;
const unsigned long *available_scan_masks;
@@ -609,6 +610,7 @@ static const struct ad7380_chip_info ad7380_chip_info = {
.num_simult_channels = 2,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.available_scan_masks = ad7380_2_channel_scan_masks,
.timing_specs = &ad7380_timing,
.max_conversion_rate_hz = 4 * MEGA,
@@ -622,6 +624,7 @@ static const struct ad7380_chip_info ad7381_chip_info = {
.num_simult_channels = 2,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.available_scan_masks = ad7380_2_channel_scan_masks,
.timing_specs = &ad7380_timing,
.max_conversion_rate_hz = 4 * MEGA,
@@ -637,6 +640,7 @@ static const struct ad7380_chip_info ad7383_chip_info = {
.num_supplies = ARRAY_SIZE(ad7380_supplies),
.vcm_supplies = ad7380_2_channel_vcm_supplies,
.num_vcm_supplies = ARRAY_SIZE(ad7380_2_channel_vcm_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.available_scan_masks = ad7380_2_channel_scan_masks,
.timing_specs = &ad7380_timing,
.max_conversion_rate_hz = 4 * MEGA,
@@ -652,6 +656,7 @@ static const struct ad7380_chip_info ad7384_chip_info = {
.num_supplies = ARRAY_SIZE(ad7380_supplies),
.vcm_supplies = ad7380_2_channel_vcm_supplies,
.num_vcm_supplies = ARRAY_SIZE(ad7380_2_channel_vcm_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.available_scan_masks = ad7380_2_channel_scan_masks,
.timing_specs = &ad7380_timing,
.max_conversion_rate_hz = 4 * MEGA,
@@ -665,6 +670,7 @@ static const struct ad7380_chip_info ad7386_chip_info = {
.num_simult_channels = 2,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x2_channel_scan_masks,
.timing_specs = &ad7380_timing,
@@ -679,6 +685,7 @@ static const struct ad7380_chip_info ad7387_chip_info = {
.num_simult_channels = 2,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x2_channel_scan_masks,
.timing_specs = &ad7380_timing,
@@ -693,6 +700,7 @@ static const struct ad7380_chip_info ad7388_chip_info = {
.num_simult_channels = 2,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x2_channel_scan_masks,
.timing_specs = &ad7380_timing,
@@ -721,6 +729,7 @@ static const struct ad7380_chip_info ad7381_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
.max_conversion_rate_hz = 4 * MEGA,
@@ -734,6 +743,7 @@ static const struct ad7380_chip_info ad7383_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.vcm_supplies = ad7380_4_channel_vcm_supplies,
.num_vcm_supplies = ARRAY_SIZE(ad7380_4_channel_vcm_supplies),
.available_scan_masks = ad7380_4_channel_scan_masks,
@@ -749,6 +759,7 @@ static const struct ad7380_chip_info ad7384_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.vcm_supplies = ad7380_4_channel_vcm_supplies,
.num_vcm_supplies = ARRAY_SIZE(ad7380_4_channel_vcm_supplies),
.available_scan_masks = ad7380_4_channel_scan_masks,
@@ -764,6 +775,7 @@ static const struct ad7380_chip_info ad7386_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -778,6 +790,7 @@ static const struct ad7380_chip_info ad7387_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -792,6 +805,7 @@ static const struct ad7380_chip_info ad7388_4_chip_info = {
.num_simult_channels = 4,
.supplies = ad7380_supplies,
.num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
.has_mux = true,
.available_scan_masks = ad7380_2x4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -807,6 +821,7 @@ static const struct ad7380_chip_info adaq4370_4_chip_info = {
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
.internal_ref_only = true,
+ .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -822,6 +837,7 @@ static const struct ad7380_chip_info adaq4380_4_chip_info = {
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
.internal_ref_only = true,
+ .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -837,6 +853,7 @@ static const struct ad7380_chip_info adaq4381_4_chip_info = {
.supplies = adaq4380_supplies,
.num_supplies = ARRAY_SIZE(adaq4380_supplies),
.internal_ref_only = true,
+ .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
.has_hardware_gain = true,
.available_scan_masks = ad7380_4_channel_scan_masks,
.timing_specs = &ad7380_4_timing,
@@ -1855,7 +1872,7 @@ static int ad7380_probe(struct spi_device *spi)
* in bulk_get_enable().
*/
- st->vref_mv = ADAQ4380_INTERNAL_REF_MV;
+ st->vref_mv = st->chip_info->internal_ref_mv;
/* these chips don't have a register bit for this */
external_ref_en = false;
@@ -1880,7 +1897,8 @@ static int ad7380_probe(struct spi_device *spi)
"Failed to get refio regulator\n");
external_ref_en = ret != -ENODEV;
- st->vref_mv = external_ref_en ? ret / 1000 : AD7380_INTERNAL_REF_MV;
+ st->vref_mv = external_ref_en ? ret / 1000
+ : st->chip_info->internal_ref_mv;
}
if (st->chip_info->num_vcm_supplies > ARRAY_SIZE(st->vcm_mv))
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/5] iio: adc: ad7380: add ad7389-4
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
` (2 preceding siblings ...)
2025-04-01 22:50 ` [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info David Lechner
@ 2025-04-01 22:50 ` David Lechner
2025-04-03 18:57 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 5/5] Documentation: iio: ad7380: add AD7389-4 David Lechner
2025-04-07 18:46 ` [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support Jonathan Cameron
5 siblings, 1 reply; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
Add chip info for AD7389-4 to the ad7380 driver.
This is essentially the same as ad7380-4 except that it is internal-
reference-only instead of external-reference-only.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
drivers/iio/adc/ad7380.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
index e5cd11fd7b1083af2082985f2c0226b1a97d600f..190ab411739feea32e189cb3ede925056ba4a87e 100644
--- a/drivers/iio/adc/ad7380.c
+++ b/drivers/iio/adc/ad7380.c
@@ -13,6 +13,7 @@
* ad7381-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/ad7381-4.pdf
* ad7383/4-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/ad7383-4-ad7384-4.pdf
* ad7386/7/8-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/ad7386-4-7387-4-7388-4.pdf
+ * ad7389-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/ad7389-4.pdf
* adaq4370-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4370-4.pdf
* adaq4380-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4380-4.pdf
* adaq4381-4 : https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4381-4.pdf
@@ -812,6 +813,21 @@ static const struct ad7380_chip_info ad7388_4_chip_info = {
.max_conversion_rate_hz = 4 * MEGA,
};
+static const struct ad7380_chip_info ad7389_4_chip_info = {
+ .name = "ad7389-4",
+ .channels = ad7380_4_channels,
+ .offload_channels = ad7380_4_offload_channels,
+ .num_channels = ARRAY_SIZE(ad7380_4_channels),
+ .num_simult_channels = 4,
+ .supplies = ad7380_supplies,
+ .num_supplies = ARRAY_SIZE(ad7380_supplies),
+ .internal_ref_only = true,
+ .internal_ref_mv = AD7380_INTERNAL_REF_MV,
+ .available_scan_masks = ad7380_4_channel_scan_masks,
+ .timing_specs = &ad7380_4_timing,
+ .max_conversion_rate_hz = 4 * MEGA,
+};
+
static const struct ad7380_chip_info adaq4370_4_chip_info = {
.name = "adaq4370-4",
.channels = adaq4380_4_channels,
@@ -2051,6 +2067,7 @@ static const struct of_device_id ad7380_of_match_table[] = {
{ .compatible = "adi,ad7386-4", .data = &ad7386_4_chip_info },
{ .compatible = "adi,ad7387-4", .data = &ad7387_4_chip_info },
{ .compatible = "adi,ad7388-4", .data = &ad7388_4_chip_info },
+ { .compatible = "adi,ad7389-4", .data = &ad7389_4_chip_info },
{ .compatible = "adi,adaq4370-4", .data = &adaq4370_4_chip_info },
{ .compatible = "adi,adaq4380-4", .data = &adaq4380_4_chip_info },
{ .compatible = "adi,adaq4381-4", .data = &adaq4381_4_chip_info },
@@ -2072,6 +2089,7 @@ static const struct spi_device_id ad7380_id_table[] = {
{ "ad7386-4", (kernel_ulong_t)&ad7386_4_chip_info },
{ "ad7387-4", (kernel_ulong_t)&ad7387_4_chip_info },
{ "ad7388-4", (kernel_ulong_t)&ad7388_4_chip_info },
+ { "ad7389-4", (kernel_ulong_t)&ad7389_4_chip_info },
{ "adaq4370-4", (kernel_ulong_t)&adaq4370_4_chip_info },
{ "adaq4380-4", (kernel_ulong_t)&adaq4380_4_chip_info },
{ "adaq4381-4", (kernel_ulong_t)&adaq4381_4_chip_info },
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/5] Documentation: iio: ad7380: add AD7389-4
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
` (3 preceding siblings ...)
2025-04-01 22:50 ` [PATCH 4/5] iio: adc: ad7380: add ad7389-4 David Lechner
@ 2025-04-01 22:50 ` David Lechner
2025-04-07 18:46 ` [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support Jonathan Cameron
5 siblings, 0 replies; 14+ messages in thread
From: David Lechner @ 2025-04-01 22:50 UTC (permalink / raw)
To: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc, David Lechner
Document support for AD7389-4 and it's quirks.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
Documentation/iio/ad7380.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/Documentation/iio/ad7380.rst b/Documentation/iio/ad7380.rst
index 24a92a1c4371db6b59ef47edf06cee860641ebbf..d51f9ee3e939c9d33515ce79701fc7c89f5094f2 100644
--- a/Documentation/iio/ad7380.rst
+++ b/Documentation/iio/ad7380.rst
@@ -27,6 +27,7 @@ The following chips are supported by this driver:
* `AD7386-4 <https://www.analog.com/en/products/ad7386-4.html>`_
* `AD7387-4 <https://www.analog.com/en/products/ad7387-4.html>`_
* `AD7388-4 <https://www.analog.com/en/products/ad7388-4.html>`_
+* `AD7389-4 <https://www.analog.com/en/products/ad7389-4.html>`_
* `ADAQ4370-4 <https://www.analog.com/en/products/adaq4370-4.html>`_
* `ADAQ4380-4 <https://www.analog.com/en/products/adaq4380-4.html>`_
* `ADAQ4381-4 <https://www.analog.com/en/products/adaq4381-4.html>`_
@@ -50,6 +51,12 @@ ad7380-4
ad7380-4 supports only an external reference voltage (2.5V to 3.3V). It must be
declared in the device tree as ``refin-supply``.
+ad7389-4
+~~~~~~~~
+
+ad7389-4 supports only an internal reference voltage. ``refin-supply`` and
+``refio-supply`` properties are both omitted in this case.
+
ADAQ devices
~~~~~~~~~~~~
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
@ 2025-04-02 8:25 ` Krzysztof Kozlowski
2025-04-02 14:39 ` David Lechner
2025-04-07 6:42 ` Krzysztof Kozlowski
1 sibling, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-02 8:25 UTC (permalink / raw)
To: David Lechner
Cc: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio, Michael Hennerich, Nuno Sá, Jonathan Corbet,
devicetree, linux-kernel, linux-doc
On Tue, Apr 01, 2025 at 05:50:08PM -0500, David Lechner wrote:
> Add compatible and quirks for AD7389-4. This is essentially the same as
> AD7380-4 but instead of having no internal reference, it has no external
> reference voltage supply.
So neither refio nor refin, but your schema says:
> + then:
> + properties:
> + refio-supply: false
So what about refin, which is also external reference?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4
2025-04-02 8:25 ` Krzysztof Kozlowski
@ 2025-04-02 14:39 ` David Lechner
2025-04-07 6:41 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: David Lechner @ 2025-04-02 14:39 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio, Michael Hennerich, Nuno Sá, Jonathan Corbet,
devicetree, linux-kernel, linux-doc
On 4/2/25 3:25 AM, Krzysztof Kozlowski wrote:
> On Tue, Apr 01, 2025 at 05:50:08PM -0500, David Lechner wrote:
>> Add compatible and quirks for AD7389-4. This is essentially the same as
>> AD7380-4 but instead of having no internal reference, it has no external
>> reference voltage supply.
>
> So neither refio nor refin, but your schema says:
>
>> + then:
>> + properties:
>> + refio-supply: false
>
> So what about refin, which is also external reference?
This is already handled by the existing if statement:
- if:
properties:
compatible:
enum:
- adi,ad7380-4
- adi,adaq4370-4
- adi,adaq4380-4
- adi,adaq4381-4
then:
properties:
refio-supply: false
required:
- refin-supply
else:
properties:
refin-supply: false
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only
2025-04-01 22:50 ` [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only David Lechner
@ 2025-04-03 18:53 ` Nuno Sá
0 siblings, 0 replies; 14+ messages in thread
From: Nuno Sá @ 2025-04-03 18:53 UTC (permalink / raw)
To: David Lechner, Jonathan Cameron, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc
On Tue, 2025-04-01 at 17:50 -0500, David Lechner wrote:
> Rename adaq_internal_ref_only to internal_ref_only_adaq. There are non-
> ADAQ chips in the family that are also internal reference only, so the
> adaq_ prefix is misleading.
>
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
> drivers/iio/adc/ad7380.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
> index
> 4fcb49fdf56639784098f0147a9faef8dcb6b0f6..18ed07275be8e031e54f3595f70afe47514084cd
> 100644
> --- a/drivers/iio/adc/ad7380.c
> +++ b/drivers/iio/adc/ad7380.c
> @@ -119,7 +119,7 @@ struct ad7380_chip_info {
> const char * const *supplies;
> unsigned int num_supplies;
> bool external_ref_only;
> - bool adaq_internal_ref_only;
> + bool internal_ref_only;
> const char * const *vcm_supplies;
> unsigned int num_vcm_supplies;
> const unsigned long *available_scan_masks;
> @@ -806,7 +806,7 @@ static const struct ad7380_chip_info adaq4370_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> - .adaq_internal_ref_only = true,
> + .internal_ref_only = true,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -821,7 +821,7 @@ static const struct ad7380_chip_info adaq4380_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> - .adaq_internal_ref_only = true,
> + .internal_ref_only = true,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -836,7 +836,7 @@ static const struct ad7380_chip_info adaq4381_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> - .adaq_internal_ref_only = true,
> + .internal_ref_only = true,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -1847,7 +1847,7 @@ static int ad7380_probe(struct spi_device *spi)
> "Failed to enable power supplies\n");
> fsleep(T_POWERUP_US);
>
> - if (st->chip_info->adaq_internal_ref_only) {
> + if (st->chip_info->internal_ref_only) {
> /*
> * ADAQ chips use fixed internal reference but still
> * require a specific reference supply to power it.
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info
2025-04-01 22:50 ` [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info David Lechner
@ 2025-04-03 18:56 ` Nuno Sá
0 siblings, 0 replies; 14+ messages in thread
From: Nuno Sá @ 2025-04-03 18:56 UTC (permalink / raw)
To: David Lechner, Jonathan Cameron, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc
On Tue, 2025-04-01 at 17:50 -0500, David Lechner wrote:
> Move the internal reference voltage value to the chip_info structure.
>
> Before this change, only ADAQ chips could be internal_ref_only and only
> non-ADAQ chips could be external_ref_only. Now, this restriction is
> removed.
>
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
> drivers/iio/adc/ad7380.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
> index
> 18ed07275be8e031e54f3595f70afe47514084cd..e5cd11fd7b1083af2082985f2c0226b1a97d600f
> 100644
> --- a/drivers/iio/adc/ad7380.c
> +++ b/drivers/iio/adc/ad7380.c
> @@ -120,6 +120,7 @@ struct ad7380_chip_info {
> unsigned int num_supplies;
> bool external_ref_only;
> bool internal_ref_only;
> + unsigned int internal_ref_mv;
> const char * const *vcm_supplies;
> unsigned int num_vcm_supplies;
> const unsigned long *available_scan_masks;
> @@ -609,6 +610,7 @@ static const struct ad7380_chip_info ad7380_chip_info = {
> .num_simult_channels = 2,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .available_scan_masks = ad7380_2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> .max_conversion_rate_hz = 4 * MEGA,
> @@ -622,6 +624,7 @@ static const struct ad7380_chip_info ad7381_chip_info = {
> .num_simult_channels = 2,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .available_scan_masks = ad7380_2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> .max_conversion_rate_hz = 4 * MEGA,
> @@ -637,6 +640,7 @@ static const struct ad7380_chip_info ad7383_chip_info = {
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> .vcm_supplies = ad7380_2_channel_vcm_supplies,
> .num_vcm_supplies = ARRAY_SIZE(ad7380_2_channel_vcm_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .available_scan_masks = ad7380_2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> .max_conversion_rate_hz = 4 * MEGA,
> @@ -652,6 +656,7 @@ static const struct ad7380_chip_info ad7384_chip_info = {
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> .vcm_supplies = ad7380_2_channel_vcm_supplies,
> .num_vcm_supplies = ARRAY_SIZE(ad7380_2_channel_vcm_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .available_scan_masks = ad7380_2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> .max_conversion_rate_hz = 4 * MEGA,
> @@ -665,6 +670,7 @@ static const struct ad7380_chip_info ad7386_chip_info = {
> .num_simult_channels = 2,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> @@ -679,6 +685,7 @@ static const struct ad7380_chip_info ad7387_chip_info = {
> .num_simult_channels = 2,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> @@ -693,6 +700,7 @@ static const struct ad7380_chip_info ad7388_chip_info = {
> .num_simult_channels = 2,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x2_channel_scan_masks,
> .timing_specs = &ad7380_timing,
> @@ -721,6 +729,7 @@ static const struct ad7380_chip_info ad7381_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> .max_conversion_rate_hz = 4 * MEGA,
> @@ -734,6 +743,7 @@ static const struct ad7380_chip_info ad7383_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .vcm_supplies = ad7380_4_channel_vcm_supplies,
> .num_vcm_supplies = ARRAY_SIZE(ad7380_4_channel_vcm_supplies),
> .available_scan_masks = ad7380_4_channel_scan_masks,
> @@ -749,6 +759,7 @@ static const struct ad7380_chip_info ad7384_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .vcm_supplies = ad7380_4_channel_vcm_supplies,
> .num_vcm_supplies = ARRAY_SIZE(ad7380_4_channel_vcm_supplies),
> .available_scan_masks = ad7380_4_channel_scan_masks,
> @@ -764,6 +775,7 @@ static const struct ad7380_chip_info ad7386_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -778,6 +790,7 @@ static const struct ad7380_chip_info ad7387_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -792,6 +805,7 @@ static const struct ad7380_chip_info ad7388_4_chip_info = {
> .num_simult_channels = 4,
> .supplies = ad7380_supplies,
> .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> .has_mux = true,
> .available_scan_masks = ad7380_2x4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -807,6 +821,7 @@ static const struct ad7380_chip_info adaq4370_4_chip_info = {
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> .internal_ref_only = true,
> + .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -822,6 +837,7 @@ static const struct ad7380_chip_info adaq4380_4_chip_info = {
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> .internal_ref_only = true,
> + .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -837,6 +853,7 @@ static const struct ad7380_chip_info adaq4381_4_chip_info = {
> .supplies = adaq4380_supplies,
> .num_supplies = ARRAY_SIZE(adaq4380_supplies),
> .internal_ref_only = true,
> + .internal_ref_mv = ADAQ4380_INTERNAL_REF_MV,
> .has_hardware_gain = true,
> .available_scan_masks = ad7380_4_channel_scan_masks,
> .timing_specs = &ad7380_4_timing,
> @@ -1855,7 +1872,7 @@ static int ad7380_probe(struct spi_device *spi)
> * in bulk_get_enable().
> */
>
> - st->vref_mv = ADAQ4380_INTERNAL_REF_MV;
> + st->vref_mv = st->chip_info->internal_ref_mv;
>
> /* these chips don't have a register bit for this */
> external_ref_en = false;
> @@ -1880,7 +1897,8 @@ static int ad7380_probe(struct spi_device *spi)
> "Failed to get refio regulator\n");
>
> external_ref_en = ret != -ENODEV;
> - st->vref_mv = external_ref_en ? ret / 1000 :
> AD7380_INTERNAL_REF_MV;
> + st->vref_mv = external_ref_en ? ret / 1000
> + : st->chip_info->internal_ref_mv;
> }
>
> if (st->chip_info->num_vcm_supplies > ARRAY_SIZE(st->vcm_mv))
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/5] iio: adc: ad7380: add ad7389-4
2025-04-01 22:50 ` [PATCH 4/5] iio: adc: ad7380: add ad7389-4 David Lechner
@ 2025-04-03 18:57 ` Nuno Sá
0 siblings, 0 replies; 14+ messages in thread
From: Nuno Sá @ 2025-04-03 18:57 UTC (permalink / raw)
To: David Lechner, Jonathan Cameron, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-iio
Cc: Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc
On Tue, 2025-04-01 at 17:50 -0500, David Lechner wrote:
> Add chip info for AD7389-4 to the ad7380 driver.
>
> This is essentially the same as ad7380-4 except that it is internal-
> reference-only instead of external-reference-only.
>
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
> drivers/iio/adc/ad7380.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/iio/adc/ad7380.c b/drivers/iio/adc/ad7380.c
> index
> e5cd11fd7b1083af2082985f2c0226b1a97d600f..190ab411739feea32e189cb3ede925056ba4a87e
> 100644
> --- a/drivers/iio/adc/ad7380.c
> +++ b/drivers/iio/adc/ad7380.c
> @@ -13,6 +13,7 @@
> * ad7381-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/ad7381-4.pdf
> * ad7383/4-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/ad7383-4-ad7384-4.pdf
> * ad7386/7/8-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/ad7386-4-7387-4-7388-4.pdf
> + * ad7389-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/ad7389-4.pdf
> * adaq4370-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4370-4.pdf
> * adaq4380-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4380-4.pdf
> * adaq4381-4 :
> https://www.analog.com/media/en/technical-documentation/data-sheets/adaq4381-4.pdf
> @@ -812,6 +813,21 @@ static const struct ad7380_chip_info ad7388_4_chip_info = {
> .max_conversion_rate_hz = 4 * MEGA,
> };
>
> +static const struct ad7380_chip_info ad7389_4_chip_info = {
> + .name = "ad7389-4",
> + .channels = ad7380_4_channels,
> + .offload_channels = ad7380_4_offload_channels,
> + .num_channels = ARRAY_SIZE(ad7380_4_channels),
> + .num_simult_channels = 4,
> + .supplies = ad7380_supplies,
> + .num_supplies = ARRAY_SIZE(ad7380_supplies),
> + .internal_ref_only = true,
> + .internal_ref_mv = AD7380_INTERNAL_REF_MV,
> + .available_scan_masks = ad7380_4_channel_scan_masks,
> + .timing_specs = &ad7380_4_timing,
> + .max_conversion_rate_hz = 4 * MEGA,
> +};
> +
> static const struct ad7380_chip_info adaq4370_4_chip_info = {
> .name = "adaq4370-4",
> .channels = adaq4380_4_channels,
> @@ -2051,6 +2067,7 @@ static const struct of_device_id ad7380_of_match_table[] = {
> { .compatible = "adi,ad7386-4", .data = &ad7386_4_chip_info },
> { .compatible = "adi,ad7387-4", .data = &ad7387_4_chip_info },
> { .compatible = "adi,ad7388-4", .data = &ad7388_4_chip_info },
> + { .compatible = "adi,ad7389-4", .data = &ad7389_4_chip_info },
> { .compatible = "adi,adaq4370-4", .data = &adaq4370_4_chip_info },
> { .compatible = "adi,adaq4380-4", .data = &adaq4380_4_chip_info },
> { .compatible = "adi,adaq4381-4", .data = &adaq4381_4_chip_info },
> @@ -2072,6 +2089,7 @@ static const struct spi_device_id ad7380_id_table[] = {
> { "ad7386-4", (kernel_ulong_t)&ad7386_4_chip_info },
> { "ad7387-4", (kernel_ulong_t)&ad7387_4_chip_info },
> { "ad7388-4", (kernel_ulong_t)&ad7388_4_chip_info },
> + { "ad7389-4", (kernel_ulong_t)&ad7389_4_chip_info },
> { "adaq4370-4", (kernel_ulong_t)&adaq4370_4_chip_info },
> { "adaq4380-4", (kernel_ulong_t)&adaq4380_4_chip_info },
> { "adaq4381-4", (kernel_ulong_t)&adaq4381_4_chip_info },
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4
2025-04-02 14:39 ` David Lechner
@ 2025-04-07 6:41 ` Krzysztof Kozlowski
0 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-07 6:41 UTC (permalink / raw)
To: David Lechner
Cc: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio, Michael Hennerich, Nuno Sá, Jonathan Corbet,
devicetree, linux-kernel, linux-doc
On Wed, Apr 02, 2025 at 09:39:43AM GMT, David Lechner wrote:
> On 4/2/25 3:25 AM, Krzysztof Kozlowski wrote:
> > On Tue, Apr 01, 2025 at 05:50:08PM -0500, David Lechner wrote:
> >> Add compatible and quirks for AD7389-4. This is essentially the same as
> >> AD7380-4 but instead of having no internal reference, it has no external
> >> reference voltage supply.
> >
> > So neither refio nor refin, but your schema says:
> >
> >> + then:
> >> + properties:
> >> + refio-supply: false
> >
> > So what about refin, which is also external reference?
>
> This is already handled by the existing if statement:
>
> - if:
> properties:
> compatible:
> enum:
> - adi,ad7380-4
> - adi,adaq4370-4
> - adi,adaq4380-4
> - adi,adaq4381-4
> then:
> properties:
> refio-supply: false
> required:
> - refin-supply
> else:
> properties:
> refin-supply: false
The way the if-then are organized there is not how I would expect, so
thus confusion. Each if: condition has else:, so to understand what
applies to given model one has to read everything!
And you add here second method - if without else.
This is supposed to be simple:
if:
- model_foo
then:
...
if:
- model_bar
then:
...
if:
- model_baz
then:
...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
2025-04-02 8:25 ` Krzysztof Kozlowski
@ 2025-04-07 6:42 ` Krzysztof Kozlowski
1 sibling, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-07 6:42 UTC (permalink / raw)
To: David Lechner
Cc: Jonathan Cameron, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-iio, Michael Hennerich, Nuno Sá, Jonathan Corbet,
devicetree, linux-kernel, linux-doc
On Tue, Apr 01, 2025 at 05:50:08PM GMT, David Lechner wrote:
> Add compatible and quirks for AD7389-4. This is essentially the same as
> AD7380-4 but instead of having no internal reference, it has no external
> reference voltage supply.
>
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
> Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml | 11 +++++++++++
> 1 file changed, 11 insertions(+)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
` (4 preceding siblings ...)
2025-04-01 22:50 ` [PATCH 5/5] Documentation: iio: ad7380: add AD7389-4 David Lechner
@ 2025-04-07 18:46 ` Jonathan Cameron
5 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2025-04-07 18:46 UTC (permalink / raw)
To: David Lechner
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio,
Michael Hennerich, Nuno Sá, Jonathan Corbet, devicetree,
linux-kernel, linux-doc
On Tue, 01 Apr 2025 17:50:07 -0500
David Lechner <dlechner@baylibre.com> wrote:
> While developing this driver, we glossed over AD7389-4 since we didn't
> have hardware to test it. However, it should be trivial enough to add
> support without testing. It is basically the same as AD7380-4 but
> instead of no internal reference, it has no external reference. And we
> already have support for chips with internal reference only (ADAQ).
>
> We have the typical DT bindings/driver/documentation patches for it plus
> a few patches to shuffle around the existing code for supporting chips
> with internal-reference-only to make it generic enough to support this
> chip as well.
Series applied to the togreg branch of iio.git (which I just rebased on rc1)
Will initially push out as testing though to let 0-day have a first poke
at it.
Thanks,
Jonathan
>
> ---
> David Lechner (5):
> dt-bindings: iio: adc: ad7380: add AD7389-4
> iio: adc: ad7380: rename internal_ref_only
> iio: adc: ad7380: move internal reference voltage to chip_info
> iio: adc: ad7380: add ad7389-4
> Documentation: iio: ad7380: add AD7389-4
>
> .../devicetree/bindings/iio/adc/adi,ad7380.yaml | 11 +++++
> Documentation/iio/ad7380.rst | 7 +++
> drivers/iio/adc/ad7380.c | 50 +++++++++++++++++++---
> 3 files changed, 61 insertions(+), 7 deletions(-)
> ---
> base-commit: f8ffc92ae9052e6615896052f0c5b808bfc17520
> change-id: 20250401-iio-ad7380-add-ad7389-4-1f6d3d7dc749
>
> Best regards,
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-04-07 18:46 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-01 22:50 [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support David Lechner
2025-04-01 22:50 ` [PATCH 1/5] dt-bindings: iio: adc: ad7380: add AD7389-4 David Lechner
2025-04-02 8:25 ` Krzysztof Kozlowski
2025-04-02 14:39 ` David Lechner
2025-04-07 6:41 ` Krzysztof Kozlowski
2025-04-07 6:42 ` Krzysztof Kozlowski
2025-04-01 22:50 ` [PATCH 2/5] iio: adc: ad7380: rename internal_ref_only David Lechner
2025-04-03 18:53 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 3/5] iio: adc: ad7380: move internal reference voltage to chip_info David Lechner
2025-04-03 18:56 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 4/5] iio: adc: ad7380: add ad7389-4 David Lechner
2025-04-03 18:57 ` Nuno Sá
2025-04-01 22:50 ` [PATCH 5/5] Documentation: iio: ad7380: add AD7389-4 David Lechner
2025-04-07 18:46 ` [PATCH 0/5] iio: adc: ad7380: add ad7389-4 support 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).