# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2025 Analog Devices Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad4062.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD4062 ADC family device driver

maintainers:
  - Jorge Marques <jorge.marques@analog.com>

description: |
  Analog Devices AD4062 Single Channel Precision SAR ADC family

  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4060.pdf
  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4062.pdf

properties:
  compatible:
    enum:
      - adi,ad4060
      - adi,ad4062

  reg:
    maxItems: 1

  interrupts:
    description:
      Two pins are available that can be configured as either a general purpose
      digital output, device enable signal (used to synchronise other parts of
      the signal chain with ADC sampling), device ready (GP1 only) or various
      interrupt signals. If intended for use as a GPIO or device enable, will not
      present here.
    minItems: 1
    items:
      - description:
          GP0 pin, cannot be configured as DEV_RDY.
      - description:
          GP1 pin, can be configured to any setting.

  interrupt-names:
    minItems: 1
    items:
      - const: gp0
      - const: gp1

  gpio-controller:
    description:
      Marks the device node as a GPIO controller. GPs not listed as interrupts
      are exposed as a GPO.

  '#gpio-cells':
    const: 2
    description:
      The first cell is the GPIO number and the second cell specifies
      GPIO flags, as defined in <dt-bindings/gpio/gpio.h>.

  vdd-supply:
    description: Analog power supply.

  vio-supply:
    description: Digital interface logic power supply.

  ref-supply:
    description:
      Reference voltage to set the ADC full-scale range. If not present,
      vdd-supply is used as the reference voltage.

required:
  - compatible
  - reg
  - vdd-supply
  - vio-supply

allOf:
  - $ref: /schemas/i3c/i3c.yaml#

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    i3c {
        #address-cells = <3>;
        #size-cells = <0>;

        adc@0,2ee007c0000 {
            reg = <0x0 0x2ee 0x7c0000>;
            vdd-supply = <&vdd>;
            vio-supply = <&vio>;
            ref-supply = <&ref>;

            interrupt-parent = <&gpio>;
            interrupts = <0 0 IRQ_TYPE_EDGE_RISING>,
                         <0 1 IRQ_TYPE_EDGE_FALLING>;
            interrupt-names = "gp0", "gp1";
        };
    };

  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    i3c {
        #address-cells = <3>;
        #size-cells = <0>;

        adc@0,2ee007c0000 {
            reg = <0x0 0x2ee 0x7c0000>;
            vdd-supply = <&vdd>;
            vio-supply = <&vio>;
            ref-supply = <&ref>;

            gpio-controller;
            #gpio-cells = <2>;
        };
    };
