* [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support
@ 2026-09-18 7:35 Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 1/6] iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes Antoniu Miclaus
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
The ADE9430 is a polyphase energy metering device from the same family as
the ADE9000. It is register-compatible with the ADE9000 but omits the
on-chip dip/swell detection and has no on-chip digital integrator; it
relies on an external analog integrator for Rogowski coil current sensors.
This series adds ADE9430 support to the existing ade9000 driver, reusing
the dip/swell-less channel table introduced for the ADE9078 and adding a
matching chip_info for the ADE9430 full-scale codes. A precursor patch
gates the DICOEFF register write behind a has_digital_integrator chip_info
flag so it is skipped on parts without an on-chip digital integrator.
Patches 1 and 2 are standalone fixes carried with this series. Patch 1
corrects the ADE9000 full-scale RMS/PCF codes to the same family-A values
the ADE9430 uses. Patch 2 fixes the DIPC event never being handled or
cleared, found by the sashiko review of v1. Both carry Fixes: tags and can
be applied independently of the rest of the series.
Changes in v2:
- new patch: fix the DIPC event never being handled or cleared, found by
the sashiko review of v1 (patch 2).
- new precursor patch: gate the DICOEFF write behind a has_digital_integrator
chip_info flag, split out of the ADE9430 support patch.
- reuse ade9078_channels for the ADE9430 instead of adding a duplicate
channel table.
- reword the documentation intro to "The supported parts are..." so it does
not need updating for each new part.
v1: https://lore.kernel.org/linux-iio/20260907101623.8730-1-antoniu.miclaus@analog.com/
Antoniu Miclaus (6):
iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes
iio: adc: ade9000: fix DIPC event never being handled or cleared
dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible
iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag
iio: adc: ade9000: add support for ADE9430
docs: iio: ade9000: document ADE9430 support
.../bindings/iio/adc/adi,ade9000.yaml | 22 ++++++-----
Documentation/iio/ade9000.rst | 36 +++++++++--------
drivers/iio/adc/Kconfig | 1 +
drivers/iio/adc/ade9000.c | 39 ++++++++++++++++---
4 files changed, 67 insertions(+), 31 deletions(-)
base-commit: edb91bc566576f6664a3efbad6bd4205aa1d5259
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/6] iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 2/6] iio: adc: ade9000: fix DIPC event never being handled or cleared Antoniu Miclaus
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
The ADE9000 chip_info uses full-scale codes that do not match the
datasheet. The RMS full-scale code was set to 52866837, which is the
ADE9078 value; per the ADE9000 datasheet the xRMS/xFRMS full-scale
reading is 52702092. The PCF full-scale code was set to 74770000, a
value that appears in no datasheet; the ADE9000 xI_PCF/xV_PCF full-scale
reading is 74532013.
Because the IIO scale of the RMS and PCF channels is reported as
1 / full_scale_codes, these wrong values make the affected current and
voltage channels read about 0.3% low on real hardware. The active power
(WATT) full-scale code was already correct and is left unchanged. These
are the same family-A values already used by the ADE9430.
Fixes: 81de7b4619fc ("iio: adc: add ade9000 support")
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- no changes.
drivers/iio/adc/ade9000.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c
index fd1362a98052..0f64bfb221da 100644
--- a/drivers/iio/adc/ade9000.c
+++ b/drivers/iio/adc/ade9000.c
@@ -677,9 +677,9 @@ static const struct ade9000_chip_info ade9000_chip_info = {
.name = "ade9000",
.channels = ade9000_channels,
.num_channels = ARRAY_SIZE(ade9000_channels),
- .rms_full_scale_codes = 52866837,
+ .rms_full_scale_codes = 52702092,
.watt_full_scale_codes = 20694066,
- .pcf_full_scale_codes = 74770000,
+ .pcf_full_scale_codes = 74532013,
};
static const struct ade9000_chip_info ade9078_chip_info = {
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/6] iio: adc: ade9000: fix DIPC event never being handled or cleared
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 1/6] iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 3/6] dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible Antoniu Miclaus
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
The STATUS1 interrupt handler scans the enabled interrupt bits using
ADE9000_ST1_CROSSING_DEPTH as both the bitmap size and the exclusive upper
bound of the for_each_set_bit_from() loop. ADE9000_ST1_CROSSING_DEPTH was
25, so the scan only covered bits 6..24 and never examined bit 25,
ADE9000_ST1_DIPC_BIT (phase C voltage dip).
As a result, when userspace enables the DIPC threshold event and it fires,
the handler neither pushes the IIO event nor sets bit 25 in handled_irq.
Since STATUS1 is write-1-to-clear, the DIPC status bit is never cleared and
the interrupt keeps re-asserting, causing an interrupt storm.
Bump ADE9000_ST1_CROSSING_DEPTH to 26 so the scan includes DIPC.
Fixes: 81de7b4619fc ("iio: adc: add ade9000 support")
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- new patch, found by the sashiko review of v1.
drivers/iio/adc/ade9000.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c
index 0f64bfb221da..ce0317766698 100644
--- a/drivers/iio/adc/ade9000.c
+++ b/drivers/iio/adc/ade9000.c
@@ -219,7 +219,7 @@
#define ADE9000_ST1_ERROR2_BIT BIT(30)
#define ADE9000_ST1_ERROR3_BIT BIT(31)
#define ADE9000_ST1_CROSSING_FIRST 6
-#define ADE9000_ST1_CROSSING_DEPTH 25
+#define ADE9000_ST1_CROSSING_DEPTH 26
#define ADE9000_WFB_TRG_DIP_BIT BIT(0)
#define ADE9000_WFB_TRG_SWELL_BIT BIT(1)
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/6] dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 1/6] iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 2/6] iio: adc: ade9000: fix DIPC event never being handled or cleared Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 4/6] iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag Antoniu Miclaus
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
The ADE9430 is a polyphase energy metering device from the same family as
the ADE9000. It is register-compatible with the ADE9000 but does not
provide the on-chip dip/swell detection, and it has no on-chip digital
integrator (it relies on an external analog integrator for Rogowski coil
current sensors).
Add the new compatible. No spi-max-frequency constraint is needed as the
ADE9430 supports the same 20 MHz maximum SPI clock as the ADE9000.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- no changes.
.../bindings/iio/adc/adi,ade9000.yaml | 22 +++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ade9000.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ade9000.yaml
index 1e940e8c7297..ec68e6887142 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ade9000.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ade9000.yaml
@@ -5,23 +5,26 @@
$id: http://devicetree.org/schemas/iio/adc/adi,ade9000.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Analog Devices ADE9000/ADE9078 High Performance, Polyphase Energy Metering
+title: Analog Devices ADE9000/ADE9078/ADE9430 High Performance, Polyphase Energy Metering
maintainers:
- Antoniu Miclaus <antoniu.miclaus@analog.com>
description: |
- The ADE9000 and ADE9078 are highly accurate, fully integrated, multiphase
- energy and power quality monitoring devices. Superior analog performance and a
- digital signal processing (DSP) core enable accurate energy monitoring over a
- wide dynamic range. An integrated high end reference ensures low drift over
- temperature with a combined drift of less than ±25 ppm/°C maximum for the
- entire channel including a programmable gain amplifier (PGA) and an
- analog-to-digital converter (ADC). The ADE9078 does not provide the on-chip
- dip/swell detection available on the ADE9000.
+ The ADE9000, ADE9078 and ADE9430 are highly accurate, fully integrated,
+ multiphase energy and power quality monitoring devices. Superior analog
+ performance and a digital signal processing (DSP) core enable accurate energy
+ monitoring over a wide dynamic range. An integrated high end reference ensures
+ low drift over temperature with a combined drift of less than ±25 ppm/°C
+ maximum for the entire channel including a programmable gain amplifier (PGA)
+ and an analog-to-digital converter (ADC). The ADE9078 and ADE9430 do not
+ provide the on-chip dip/swell detection available on the ADE9000, and the
+ ADE9430 has no on-chip digital integrator (it uses an external analog
+ integrator for Rogowski coils).
https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9000.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9078.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9430.pdf
$ref: /schemas/spi/spi-peripheral-props.yaml#
@@ -30,6 +33,7 @@ properties:
enum:
- adi,ade9000
- adi,ade9078
+ - adi,ade9430
reg:
maxItems: 1
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 4/6] iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
` (2 preceding siblings ...)
2026-09-18 7:35 ` [PATCH v2 3/6] dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 5/6] iio: adc: ade9000: add support for ADE9430 Antoniu Miclaus
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
Some parts in the ADE9000 family have no on-chip digital integrator and
therefore lack the DICOEFF register; they use an external analog integrator
for Rogowski coil current sensors. Prepare for such parts by adding a
has_digital_integrator flag to the chip_info and only writing DICOEFF when
it is set.
Move the DICOEFF and RUN writes out of the shared initialization sequence
into ade9000_setup() so DICOEFF can be issued conditionally while RUN still
starts the DSP afterwards. All currently supported parts set the flag, so
there is no functional change.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- new precursor patch, split out of the ADE9430 support patch.
drivers/iio/adc/ade9000.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c
index ce0317766698..0167d5bcdb74 100644
--- a/drivers/iio/adc/ade9000.c
+++ b/drivers/iio/adc/ade9000.c
@@ -290,6 +290,7 @@ enum ade9000_wfb_cfg {
* @rms_full_scale_codes: digital code produced at full-scale RMS input
* @watt_full_scale_codes: digital code produced at full-scale power input
* @pcf_full_scale_codes: digital code produced at full-scale xI_PCF/xV_PCF input
+ * @has_digital_integrator: part has an on-chip digital integrator (DICOEFF)
*
* The full-scale codes are taken from the respective datasheets and are used to
* derive the IIO scale of the raw measurement channels.
@@ -301,6 +302,7 @@ struct ade9000_chip_info {
unsigned int rms_full_scale_codes;
unsigned int watt_full_scale_codes;
unsigned int pcf_full_scale_codes;
+ bool has_digital_integrator;
};
struct ade9000_state {
@@ -680,6 +682,7 @@ static const struct ade9000_chip_info ade9000_chip_info = {
.rms_full_scale_codes = 52702092,
.watt_full_scale_codes = 20694066,
.pcf_full_scale_codes = 74532013,
+ .has_digital_integrator = true,
};
static const struct ade9000_chip_info ade9078_chip_info = {
@@ -689,6 +692,7 @@ static const struct ade9000_chip_info ade9078_chip_info = {
.rms_full_scale_codes = 52866837,
.watt_full_scale_codes = 20823646,
.pcf_full_scale_codes = 74680000,
+ .has_digital_integrator = true,
};
static const struct reg_sequence ade9000_initialization_sequence[] = {
@@ -704,13 +708,11 @@ static const struct reg_sequence ade9000_initialization_sequence[] = {
{ ADE9000_REG_EVENT_MASK, ADE9000_EVENT_DISABLE },
{ ADE9000_REG_WFB_CFG, ADE9000_WFB_CFG },
{ ADE9000_REG_VLEVEL, ADE9000_VLEVEL },
- { ADE9000_REG_DICOEFF, ADE9000_DICOEFF },
{ ADE9000_REG_EGY_TIME, ADE9000_EGY_TIME },
{ ADE9000_REG_EP_CFG, ADE9000_EP_CFG },
/* Clear all pending status bits by writing 1s */
{ ADE9000_REG_STATUS0, GENMASK(31, 0) },
{ ADE9000_REG_STATUS1, GENMASK(31, 0) },
- { ADE9000_REG_RUN, ADE9000_RUN_ON }
};
static int ade9000_spi_write_reg(void *context, unsigned int reg,
@@ -1672,6 +1674,21 @@ static int ade9000_setup(struct ade9000_state *st)
if (ret)
return dev_err_probe(dev, ret, "Failed to write register sequence");
+ /*
+ * DICOEFF must be configured before the DSP is started. Parts without
+ * an on-chip digital integrator lack this register, so skip it there.
+ */
+ if (st->info->has_digital_integrator) {
+ ret = regmap_write(st->regmap, ADE9000_REG_DICOEFF,
+ ADE9000_DICOEFF);
+ if (ret)
+ return dev_err_probe(dev, ret, "Failed to set DICOEFF\n");
+ }
+
+ ret = regmap_write(st->regmap, ADE9000_REG_RUN, ADE9000_RUN_ON);
+ if (ret)
+ return dev_err_probe(dev, ret, "Failed to start DSP\n");
+
fsleep(2000);
return 0;
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 5/6] iio: adc: ade9000: add support for ADE9430
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
` (3 preceding siblings ...)
2026-09-18 7:35 ` [PATCH v2 4/6] iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 6/6] docs: iio: ade9000: document ADE9430 support Antoniu Miclaus
2026-09-18 15:27 ` [PATCH v2 0/6] iio: adc: ade9000: add " Nuno Sá
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
The ADE9430 is a polyphase energy metering device that is register
compatible with the ADE9000. The differences relevant to the driver are
the absence of the on-chip dip/swell detection and the absence of an
on-chip digital integrator (the ADE9430 uses an external analog integrator
for Rogowski coils, so the DICOEFF register does not exist). Its full-scale
ADC codes are the same family-A values as the ADE9000.
Add a chip_info for the ADE9430, reusing the dip/swell-less channel table
first added for the ADE9078, and explicitly set has_digital_integrator to
false so the DICOEFF write is skipped. Wire up the SPI and OF device tables
and Kconfig.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- reuse ade9078_channels instead of adding a duplicate channel table.
- move the DICOEFF gating to a separate precursor patch.
drivers/iio/adc/Kconfig | 1 +
drivers/iio/adc/ade9000.c | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 7a60ffd0ddd8..3a3ae09fc10f 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -587,6 +587,7 @@ config ADE9000
integrated circuits:
- ADE9000
- ADE9078
+ - ADE9430
The devices feature high-precision analog-to-digital converters
and digital signal processing to compute RMS values, power factor,
diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c
index 0167d5bcdb74..e0113b62a261 100644
--- a/drivers/iio/adc/ade9000.c
+++ b/drivers/iio/adc/ade9000.c
@@ -695,6 +695,16 @@ static const struct ade9000_chip_info ade9078_chip_info = {
.has_digital_integrator = true,
};
+static const struct ade9000_chip_info ade9430_chip_info = {
+ .name = "ade9430",
+ .channels = ade9078_channels,
+ .num_channels = ARRAY_SIZE(ade9078_channels),
+ .rms_full_scale_codes = 52702092,
+ .watt_full_scale_codes = 20694066,
+ .pcf_full_scale_codes = 74532013,
+ .has_digital_integrator = false, /* no on-chip digital integrator */
+};
+
static const struct reg_sequence ade9000_initialization_sequence[] = {
{ ADE9000_REG_PGA_GAIN, ADE9000_PGA_GAIN },
{ ADE9000_REG_CONFIG0, ADE9000_CONFIG0 },
@@ -1859,6 +1869,7 @@ static int ade9000_probe(struct spi_device *spi)
static const struct spi_device_id ade9000_id[] = {
{ .name = "ade9000", .driver_data = (kernel_ulong_t)&ade9000_chip_info },
{ .name = "ade9078", .driver_data = (kernel_ulong_t)&ade9078_chip_info },
+ { .name = "ade9430", .driver_data = (kernel_ulong_t)&ade9430_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ade9000_id);
@@ -1866,6 +1877,7 @@ MODULE_DEVICE_TABLE(spi, ade9000_id);
static const struct of_device_id ade9000_of_match[] = {
{ .compatible = "adi,ade9000", .data = &ade9000_chip_info },
{ .compatible = "adi,ade9078", .data = &ade9078_chip_info },
+ { .compatible = "adi,ade9430", .data = &ade9430_chip_info },
{ }
};
MODULE_DEVICE_TABLE(of, ade9000_of_match);
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 6/6] docs: iio: ade9000: document ADE9430 support
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
` (4 preceding siblings ...)
2026-09-18 7:35 ` [PATCH v2 5/6] iio: adc: ade9000: add support for ADE9430 Antoniu Miclaus
@ 2026-09-18 7:35 ` Antoniu Miclaus
2026-09-18 15:27 ` [PATCH v2 0/6] iio: adc: ade9000: add " Nuno Sá
6 siblings, 0 replies; 8+ messages in thread
From: Antoniu Miclaus @ 2026-09-18 7:35 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
Add the ADE9430 to the list of supported devices and note that, like the
ADE9078, it does not provide the on-chip dip/swell voltage events. Also
note that the ADE9430 has no on-chip digital integrator and instead uses
an external analog integrator for Rogowski coils.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
Changes in v2:
- reword the intro to "The supported parts are..." so it does not need
updating for each new part.
Documentation/iio/ade9000.rst | 36 ++++++++++++++++++-----------------
1 file changed, 19 insertions(+), 17 deletions(-)
diff --git a/Documentation/iio/ade9000.rst b/Documentation/iio/ade9000.rst
index 72737b5ec59c..f518bc1cc3cd 100644
--- a/Documentation/iio/ade9000.rst
+++ b/Documentation/iio/ade9000.rst
@@ -1,29 +1,31 @@
.. SPDX-License-Identifier: GPL-2.0
-======================
-ADE9000/ADE9078 driver
-======================
+==============================
+ADE9000/ADE9078/ADE9430 driver
+==============================
-This driver supports Analog Device's ADE9000 and ADE9078 energy measurement
-ICs on SPI bus.
+This driver supports Analog Device's ADE9000, ADE9078 and ADE9430 energy
+measurement ICs on SPI bus.
1. Supported devices
====================
* `ADE9000 <https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9000.pdf>`_
* `ADE9078 <https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9078.pdf>`_
-
-The ADE9000 and ADE9078 are highly accurate, fully integrated, multiphase energy
-and power quality monitoring devices. Superior analog performance and a digital
-signal processing (DSP) core enable accurate energy monitoring over a wide
-dynamic range. An integrated high end reference ensures low drift over
-temperature with a combined drift of less than ±25 ppm/°C maximum for the entire
-channel including a programmable gain amplifier (PGA) and an analog-to-digital
-converter (ADC).
-
-The ADE9078 does not provide the on-chip dip/swell (sag) detection available on
-the ADE9000, so the RMS voltage swell/dip events described below are only
-available on the ADE9000.
+* `ADE9430 <https://www.analog.com/media/en/technical-documentation/data-sheets/ADE9430.pdf>`_
+
+The supported parts are highly accurate, fully integrated,
+multiphase energy and power quality monitoring devices. Superior analog
+performance and a digital signal processing (DSP) core enable accurate energy
+monitoring over a wide dynamic range. An integrated high end reference ensures
+low drift over temperature with a combined drift of less than ±25 ppm/°C maximum
+for the entire channel including a programmable gain amplifier (PGA) and an
+analog-to-digital converter (ADC).
+
+The ADE9078 and ADE9430 do not provide the on-chip dip/swell (sag) detection
+available on the ADE9000, so the RMS voltage swell/dip events described below are
+only available on the ADE9000. The ADE9430 additionally has no on-chip digital
+integrator and instead uses an external analog integrator for Rogowski coils.
2. Device attributes
====================
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
` (5 preceding siblings ...)
2026-09-18 7:35 ` [PATCH v2 6/6] docs: iio: ade9000: document ADE9430 support Antoniu Miclaus
@ 2026-09-18 15:27 ` Nuno Sá
6 siblings, 0 replies; 8+ messages in thread
From: Nuno Sá @ 2026-09-18 15:27 UTC (permalink / raw)
To: Antoniu Miclaus, Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jonathan Corbet, Shuah Khan,
Randy Dunlap, Marcelo Schmitt, Joshua Crofts, Radu Sabau,
Salih Erim, Jishnu Prakash, Jakub Szczudlo, linux-iio, linux,
devicetree, linux-kernel, linux-doc
On Fri, 2026-09-18 at 10:35 +0300, Antoniu Miclaus wrote:
> The ADE9430 is a polyphase energy metering device from the same family as
> the ADE9000. It is register-compatible with the ADE9000 but omits the
> on-chip dip/swell detection and has no on-chip digital integrator; it
> relies on an external analog integrator for Rogowski coil current sensors.
>
> This series adds ADE9430 support to the existing ade9000 driver, reusing
> the dip/swell-less channel table introduced for the ADE9078 and adding a
> matching chip_info for the ADE9430 full-scale codes. A precursor patch
> gates the DICOEFF register write behind a has_digital_integrator chip_info
> flag so it is skipped on parts without an on-chip digital integrator.
>
> Patches 1 and 2 are standalone fixes carried with this series. Patch 1
> corrects the ADE9000 full-scale RMS/PCF codes to the same family-A values
> the ADE9430 uses. Patch 2 fixes the DIPC event never being handled or
> cleared, found by the sashiko review of v1. Both carry Fixes: tags and can
> be applied independently of the rest of the series.
>
> Changes in v2:
> - new patch: fix the DIPC event never being handled or cleared, found by
> the sashiko review of v1 (patch 2).
> - new precursor patch: gate the DICOEFF write behind a has_digital_integrator
> chip_info flag, split out of the ADE9430 support patch.
> - reuse ade9078_channels for the ADE9430 instead of adding a duplicate
> channel table.
> - reword the documentation intro to "The supported parts are..." so it does
> not need updating for each new part.
>
> v1:
> https://lore.kernel.org/linux-iio/20260907101623.8730-1-antoniu.miclaus@analog.com/
>
> Antoniu Miclaus (6):
> iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes
> iio: adc: ade9000: fix DIPC event never being handled or cleared
> dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible
> iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag
> iio: adc: ade9000: add support for ADE9430
> docs: iio: ade9000: document ADE9430 support
>
> .../bindings/iio/adc/adi,ade9000.yaml | 22 ++++++-----
> Documentation/iio/ade9000.rst | 36 +++++++++--------
> drivers/iio/adc/Kconfig | 1 +
> drivers/iio/adc/ade9000.c | 39 ++++++++++++++++---
> 4 files changed, 67 insertions(+), 31 deletions(-)
>
>
> base-commit: edb91bc566576f6664a3efbad6bd4205aa1d5259
LGTM
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-09-18 15:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 7:35 [PATCH v2 0/6] iio: adc: ade9000: add ADE9430 support Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 1/6] iio: adc: ade9000: fix ADE9000 full-scale RMS and PCF codes Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 2/6] iio: adc: ade9000: fix DIPC event never being handled or cleared Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 3/6] dt-bindings: iio: adc: adi,ade9000: add adi,ade9430 compatible Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 4/6] iio: adc: ade9000: gate the DICOEFF write behind a chip_info flag Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 5/6] iio: adc: ade9000: add support for ADE9430 Antoniu Miclaus
2026-09-18 7:35 ` [PATCH v2 6/6] docs: iio: ade9000: document ADE9430 support Antoniu Miclaus
2026-09-18 15:27 ` [PATCH v2 0/6] iio: adc: ade9000: add " Nuno Sá
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®