[PATCH 1/3] dt-bindings: iio: adc: add AD4695 and similar ADCs

From: David Lechner
Date: Wed Jun 12 2024 - 15:22:28 EST


Add device tree bindings for AD4695 and similar ADCs.

Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx>
---
.../devicetree/bindings/iio/adc/adi,ad4695.yaml | 297 +++++++++++++++++++++
MAINTAINERS | 9 +
2 files changed, 306 insertions(+)

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml
new file mode 100644
index 000000000000..8ff5bbbbef9f
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml
@@ -0,0 +1,297 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4695.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices Easy Drive Multiplexed SAR Analog to Digital Converters
+
+maintainers:
+ - Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>
+ - Nuno Sá <nuno.sa@xxxxxxxxxx>
+
+description: |
+ A family of similar multi-channel analog to digital converters with SPI bus.
+
+ * https://www.analog.com/en/products/ad4695.html
+ * https://www.analog.com/en/products/ad4696.html
+ * https://www.analog.com/en/products/ad4697.html
+ * https://www.analog.com/en/products/ad4698.html
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+ compatible:
+ oneOf:
+ - enum:
+ - adi,ad4695
+ - adi,ad4697
+ # same chips in WLCSP package with more pins
+ - items:
+ - const: adi,ad4695-wlcsp
+ - const: adi,ad4695
+ - items:
+ - const: adi,ad4697-wlcsp
+ - const: adi,ad4697
+ # same chips with higher max sample rate
+ - items:
+ - const: adi,ad4696
+ - const: adi,ad4695
+ - items:
+ - const: adi,ad4698
+ - const: adi,ad4697
+ # same chips with higher max sample rate in WLCSP package
+ - items:
+ - const: adi,ad4696-wlcsp
+ - const: adi,ad4696
+ - const: adi,ad4695-wlcsp
+ - const: adi,ad4695
+ - items:
+ - const: adi,ad4698-wlcsp
+ - const: adi,ad4698
+ - const: adi,ad4697-wlcsp
+ - const: adi,ad4697
+
+ reg:
+ maxItems: 1
+
+ spi-max-frequency:
+ maximum: 80000000
+
+ spi-cpol: true
+ spi-cpha: true
+
+ spi-rx-bus-width:
+ minimum: 1
+ maximum: 4
+
+ avdd-supply:
+ description: A 2.7 V to 5.5 V supply that powers the analog circuitry.
+
+ ldo-in-supply:
+ description: A 2.4 V to 5.5 V supply connected to the internal LDO input.
+
+ vdd-supply:
+ description: A 1.8V supply that powers the core circuitry.
+
+ vio-supply:
+ description: A 1.2V to 1.8V supply for the digital inputs and outputs.
+
+ ref-supply:
+ description: A 2.4 V to 5.1 V supply for the external reference voltage.
+
+ refin-supply:
+ description: A 2.4 V to 5.1 V supply for the internal reference buffer input.
+
+ com-supply:
+ description: Common voltage supply for pseudo-differential analog inputs.
+
+ adi,no-ref-current-limit:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ When this flag is present, the REF Overvoltage Reduced Current protection
+ is disabled.
+
+ adi,no-ref-high-z:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ Enable this flag if the ref-supply requires Reference Input High-Z Mode
+ to be disabled for proper operation.
+
+ cnv-gpios:
+ description: The Convert Input (CNV). If omitted, CNV is tied to SPI CS.
+ maxItems: 1
+
+ reset-gpios:
+ description: The Reset Input (RESET). Should be configured GPIO_ACTIVE_LOW.
+ maxItems: 1
+
+ interrupts:
+ minItems: 1
+ items:
+ - description:
+ Signal coming from the BSY_ALT_GP0 or GP3 pin that indicates a busy
+ condition.
+ - description:
+ Signal coming from the BSY_ALT_GP0 or GP2 pin that indicates an alert
+ condition.
+
+ interrupt-names:
+ minItems: 1
+ items:
+ - const: busy
+ - const: alert
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+ description: |
+ The first cell is the GPn number: 0 to 3.
+ The second cell takes standard GPIO flags.
+
+ "#address-cells":
+ const: 1
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ "^channel@[0-9a-f]$":
+ type: object
+ $ref: adc.yaml
+ unevaluatedProperties: false
+ description:
+ Describes each individual channel. In addition the properties defined
+ below, bipolar from adc.yaml is also supported.
+
+ properties:
+ reg:
+ maximum: 15
+ description: Input pin number (INx).
+
+ adi,pin-pairing:
+ description: |
+ The input pin pairing for the negative input. This can be:
+ - REFGND, normally 0V (single-ended)
+ - COM, normally V_REF/2, see com-supply (pseudo-differential)
+ - For even numbered pins, the next odd numbered pin (differential)
+ $ref: /schemas/types.yaml#/definitions/string
+ enum: [refgnd, com, next]
+ default: refgnd
+
+ adi,no-high-z:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description: |
+ Enable this flag if the input pin requires the Analog Input High-Z
+ Mode to be disabled for proper operation.
+
+ required:
+ - reg
+
+ allOf:
+ # only even number pins can be paired with the next pin
+ - if:
+ properties:
+ reg:
+ not:
+ multipleOf: 2
+ then:
+ properties:
+ adi,pin-pairing:
+ enum: [refgnd, com]
+ # bipolar mode is not supported with REFGND pairing
+ - if:
+ not:
+ required:
+ - adi,pin-pairing
+ then:
+ properties:
+ bipolar: false
+ else:
+ if:
+ properties:
+ adi,pin-pairing:
+ const: refgnd
+ then:
+ properties:
+ bipolar: false
+
+required:
+ - compatible
+ - reg
+ - avdd-supply
+ - vio-supply
+
+allOf:
+ - oneOf:
+ - required:
+ - ref-supply
+ - required:
+ - refin-supply
+
+ - oneOf:
+ - required:
+ - ldo-in-supply
+ - required:
+ - vdd-supply
+
+ # LFSCP package has fewer pins, so a few things are not valid in that case
+ - if:
+ properties:
+ compatible:
+ not:
+ contains:
+ pattern: -wlcsp$
+ then:
+ properties:
+ refin-supply: false
+ spi-rx-bus-width:
+ maximum: 2
+
+ # the internal reference buffer always requires high-z mode
+ - if:
+ required:
+ - refin-supply
+ then:
+ properties:
+ adi,no-ref-high-z: false
+
+ # limit channels for 8-channel chips
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: adi,ad4697
+ then:
+ patternProperties:
+ "^channel@[0-7]$":
+ properties:
+ reg:
+ maximum: 7
+ "^channel@[8-9a-f]$": false
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ adc@0 {
+ compatible = "adi,ad4695";
+ reg = <0>;
+ spi-cpol;
+ spi-cpha;
+ spi-max-frequency = <80000000>;
+ avdd-supply = <&supply_2_5V>;
+ vdd-supply = <&supply_1_8V>;
+ vio-supply = <&supply_1_2V>;
+ ref-supply = <&supply_5V>;
+ reset-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* Differential channel between IN0 and IN1. */
+ channel@0 {
+ reg = <0>;
+ adi,pin-pairing = "next";
+ bipolar;
+ };
+
+ /* Single-ended channel between IN2 and REFGND. */
+ channel@2 {
+ reg = <2>;
+ };
+
+ /* Pseudo-differential channel between IN3 and COM. */
+ channel@f {
+ reg = <3>;
+ adi,pin-pairing = "com";
+ bipolar;
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index c870bc6b8d63..8d15e4089d7c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1209,6 +1209,15 @@ F: Documentation/ABI/testing/sysfs-bus-iio-adc-ad4130
F: Documentation/devicetree/bindings/iio/adc/adi,ad4130.yaml
F: drivers/iio/adc/ad4130.c

+ANALOG DEVICES INC AD4695 DRIVER
+M: Michael Hennerich <michael.hennerich@xxxxxxxxxx>
+M: Nuno Sá <nuno.sa@xxxxxxxxxx>
+R: David Lechner <dlechner@xxxxxxxxxxxx>
+L: linux-iio@xxxxxxxxxxxxxxx
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml
+
ANALOG DEVICES INC AD7091R DRIVER
M: Marcelo Schmitt <marcelo.schmitt@xxxxxxxxxx>
L: linux-iio@xxxxxxxxxxxxxxx

--
2.45.2