Add maxim max34408/34409 ADC driver and yaml
Subsystems (2)
v4 cover Add maxim max34408/34409 ADC driver and yaml
Add Maxim max34408/34409 ADC driver and yaml for it. Until now it supports only current monitioring function without overcurrent threshold/delay, shutdown delay configuration, alert interrupt.
Changes from v1:
- minor changes from Rob's comments for yaml
- add ena, shtdn and make 4 inputs for R sense from Jonathan's comments for yaml
- add _REG suffix and make prefix for bitmasks and statuses
- add SCALE/OFFSET instead of AVG/PROCESSED from Jonathan and Lars-Peter comments
- add chip data from Jonathan and Lars-Peter comments
- minor changes from Lars-Peter and Jonathan comments for driver
Changes from v2:
- add channels into hardware description into yaml
- add rsense property per channel
- rename pins for shtdn and ena pins
- make one array for input_rsense values
Changes from v3:
- change *_34408_OCT3 and 4 to *_34409_OCT3 and 4
- change of_property_read_u32 to fwnode family calls
- add i2c dev table
- change of_match_device to i2c_of_match_device
- change match->data to i2c_get_match_data
Ivan Mikhaylov (2):
dt-bindings: adc: provide max34408/9 device tree binding document
iio: adc: Add driver support for MAX34408/9
.../bindings/iio/adc/maxim,max34408.yaml | 137 +++++++++ drivers/iio/adc/Kconfig | 11 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/max34408.c | 278 ++++++++++++++++++ 4 files changed, 427 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml create mode 100644 drivers/iio/adc/max34408.c
Signature · 1 line
2.42.0
PATCH v4 1/2 dt-bindings: adc: provide max34408/9 device tree binding document
The hardware binding for i2c current monitoring device with overcurrent control.
--- .../bindings/iio/adc/maxim,max34408.yaml | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +137 -0
@@ -0,0 +1,137 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/maxim,max34408.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Two- and four-channel current monitors with overcurrent control + +maintainers: + - Ivan Mikhaylov <[email protected]> + +description: | + The MAX34408/MAX34409 are two- and four-channel current monitors that are + configured and monitored with a standard I2C/SMBus serial interface. Each + unidirectional current sensor offers precision high-side operation with a + low full-scale sense voltage. The devices automatically sequence through + two or four channels and collect the current-sense samples and average them + to reduce the effect of impulse noise. The raw ADC samples are compared to + user-programmable digital thresholds to indicate overcurrent conditions. + Overcurrent conditions trigger a hardware output to provide an immediate + indication to shut down any necessary external circuitry. + + Specifications about the devices can be found at: + https://www.analog.com/media/en/technical-documentation/data-sheets/MAX34408-MAX34409.pdf + +properties: + compatible: + enum: + - maxim,max34408 + - maxim,max34409 + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + shutdown-gpios: + description: + Shutdown Output. Open-drain output. This output transitions to high impedance + when any of the digital comparator thresholds are exceeded as long as the ENA + pin is high. + maxItems: 1 + + shtdn-enable-gpios: + description: + SHTDN Enable Input. CMOS digital input. Connect to GND to clear the latch and + unconditionally deassert (force low) the SHTDN output and reset the shutdown + delay. Connect to VDD to enable normal latch operation of the SHTDN output. + maxItems: 1 + + vdd-supply: true + +required: + - compatible + - reg + +patternProperties: + "^channel@[0-3]$": + $ref: adc.yaml + type: object + description: + Represents the internal channels of the ADC. + + properties: + reg: + items: + minimum: 0 + maximum: 3 + + maxim,rsense-val-micro-ohms: + description: + Adjust the Rsense value to monitor higher or lower current levels for + input. + enum: [250, 500, 1000, 5000, 10000, 50000, 100000, 200000, 500000] + default: 1000 + + required: + - reg + - maxim,rsense-val-micro-ohms + + unevaluatedProperties: false + +allOf: + - if: + properties: + compatible: + contains: + const: maxim,max34408 + then: + patternProperties: + "^channel@[2-3]$": false + "^channel@[0-1]$": + properties: + reg: + minimum: 0 + maximum: 1 + else: + patternProperties: + "^channel@[0-3]$": + properties: + reg: + minimum: 0 + maximum: 3 + +additionalProperties: false + +examples: + - | + i2c { + + #address-cells = <1>; + #size-cells = <0>; + + adc@1e { + compatible = "maxim,max34409"; + reg = <0x1e>; + + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + reg = <0x0>; + maxim,rsense-val-micro-ohms = <5000>; + }; + + channel@1 { + reg = <0x1>; + maxim,rsense-val-micro-ohms = <10000>; + }; + }; + };
Signature · 1 line
2.42.0
Re: [PATCH v4 1/2] dt-bindings: adc: provide max34408/9 device tree binding document
Quoted 56 lines · Ivan Mikhaylov
The hardware binding for i2c current monitoring device with overcurrent control.
Signed-off-by Ivan Mikhaylov <[email protected]>--- .../bindings/iio/adc/maxim,max34408.yaml | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/maxim,max34408.yamlDocumentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +41
-0@@ -0,0 +1,137 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/maxim,max34408.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Two- and four-channel current monitors with overcurrent control + +maintainers: + - Ivan Mikhaylov <[email protected]> + +description: | + The MAX34408/MAX34409 are two- and four-channel current monitors that are + configured and monitored with a standard I2C/SMBus serial interface. Each + unidirectional current sensor offers precision high-side operation with a + low full-scale sense voltage. The devices automatically sequence through + two or four channels and collect the current-sense samples and average them + to reduce the effect of impulse noise. The raw ADC samples are compared to + user-programmable digital thresholds to indicate overcurrent conditions. + Overcurrent conditions trigger a hardware output to provide an immediate + indication to shut down any necessary external circuitry. + + Specifications about the devices can be found at: + https://www.analog.com/media/en/technical-documentation/data-sheets/MAX34408-MAX34409.pdf + +properties: + compatible: + enum: + - maxim,max34408 + - maxim,max34409 + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + reg: + maxItems: 1 + + interrupts:
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml line 51
Quoted 10 lines
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +10
-0+ maxItems: 1 + + shutdown-gpios: + description: + Shutdown Output. Open-drain output. This output transitions to high impedance + when any of the digital comparator thresholds are exceeded as long as the ENA + pin is high. + maxItems: 1 + + shtdn-enable-gpios:
Are these both GPIOs different than standard powerdown-gpios? I suspect one is different, but the other should be the same. If both are different, use different names. shutdown gpios is the same as powerdown gpios....
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml line 62
Quoted 11 lines
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +11
-0+ description: + SHTDN Enable Input. CMOS digital input. Connect to GND to clear the latch and + unconditionally deassert (force low) the SHTDN output and reset the shutdown + delay. Connect to VDD to enable normal latch operation of the SHTDN output. + maxItems: 1 + + vdd-supply: true + +required: + - compatible + - reg
required goes after patternProperties.
Quoted 45 lines
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +45
-0+ +patternProperties: + "^channel@[0-3]$": + $ref: adc.yaml + type: object + description: + Represents the internal channels of the ADC. + + properties: + reg: + items: + minimum: 0 + maximum: 3 + + maxim,rsense-val-micro-ohms: + description: + Adjust the Rsense value to monitor higher or lower current levels for + input. + enum: [250, 500, 1000, 5000, 10000, 50000, 100000, 200000, 500000] + default: 1000 + + required: + - reg + - maxim,rsense-val-micro-ohms + + unevaluatedProperties: false + +allOf: + - if: + properties: + compatible: + contains: + const: maxim,max34408 + then: + patternProperties: + "^channel@[2-3]$": false + "^channel@[0-1]$": + properties: + reg: + minimum: 0 + maximum: 1 + else: + patternProperties: + "^channel@[0-3]$": + properties:
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml line 117
Quoted 10 lines
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +10
-0+ reg: + minimum: 0 + maximum: 3 + +additionalProperties: false + +examples: + - | + i2c { +
Stray blank line.
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml line 126
Quoted 9 lines
Documentation/devicetree/bindings/iio/adc/maxim,max34408.yaml new file +9
-0+ #address-cells = <1>; + #size-cells = <0>; + + adc@1e { + compatible = "maxim,max34409"; + reg = <0x1e>; + + #address-cells = <1>; + #size-cells = <0>;
Missing blank line
Extend example with GPIOs to make it as complete as reasonable/possible.
Best regards,
Krzysztof
PATCH v4 2/2 iio: adc: Add driver support for MAX34408/9
In reply to Ivan MikhaylovThe MAX34408/MAX34409 are two- and four-channel current monitors that are configured and monitored with a standard I2C/SMBus serial interface. Each unidirectional current sensor offers precision high-side operation with a low full-scale sense voltage. The devices automatically sequence through two or four channels and collect the current-sense samples and average them to reduce the effect of impulse noise. The raw ADC samples are compared to user-programmable digital thresholds to indicate overcurrent conditions. Overcurrent conditions trigger a hardware output to provide an immediate indication to shut down any necessary external circuitry.
Add as ADC driver which only supports current monitoring for now.
--- drivers/iio/adc/Kconfig | 11 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/max34408.c | 278 +++++++++++++++++++++++++++++++++++++ 3 files changed, 290 insertions(+) create mode 100644 drivers/iio/adc/max34408.c
drivers/iio/adc/Kconfig +11 -0
@@ -735,6 +735,17 @@ config MAX1363 To compile this driver as a module, choose M here: the module will be called max1363. +config MAX34408 + tristate "Maxim max34408/max344089 ADC driver" + depends on I2C + help + Say yes here to build support for Maxim max34408/max34409 current sense + monitor with 8-bits ADC interface with overcurrent delay/threshold and + shutdown delay. + + To compile this driver as a module, choose M here: the module will be + called max34408. + config MAX77541_ADC tristate "Analog Devices MAX77541 ADC driver" depends on MFD_MAX77541
drivers/iio/adc/Makefile +1 -0
@@ -67,6 +67,7 @@ obj-$(CONFIG_MAX11205) += max11205.o obj-$(CONFIG_MAX11410) += max11410.o obj-$(CONFIG_MAX1241) += max1241.o obj-$(CONFIG_MAX1363) += max1363.o +obj-$(CONFIG_MAX34408) += max34408.o obj-$(CONFIG_MAX77541_ADC) += max77541-adc.o obj-$(CONFIG_MAX9611) += max9611.o obj-$(CONFIG_MCP320X) += mcp320x.o
drivers/iio/adc/max34408.c new file +278 -0
278 lines not on this page · raw message
Signature · 1 line
2.42.0