# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/pressure/honeywell,abp2030pa.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Honeywell abp2030pa pressure sensor

maintainers:
  - Petre Rodan <petre.rodan@subdimension.ro>

description: |
  Honeywell pressure sensor of model abp2030pa.

  This sensor has an I2C and SPI interface.

  There are many models with different pressure ranges available. The vendor
  calls them "ABP2 series". All of them have an identical programming model and
  differ in the pressure range and measurement unit.

  To support different models one needs to specify its pressure triplet.

  For custom silicon chips not covered by the Honeywell ABP2 series datasheet,
  the pressure values can be specified manually via honeywell,pmin-pascal and
  honeywell,pmax-pascal.

  Specifications about the devices can be found at:
  https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/board-mount-pressure-sensors/basic-abp2-series/documents/sps-siot-abp2-series-datasheet-32350268-en.pdf

properties:
  compatible:
    const: honeywell,abp2030pa

  reg:
    maxItems: 1

  interrupts:
    description:
      Optional interrupt for indicating end of conversion.
      SPI variants of ABP2 chips do not provide this feature.
    maxItems: 1

  honeywell,pressure-triplet:
    description: |
      Case-sensitive five character string that defines pressure range, unit
      and type as part of the device nomenclature. In the unlikely case of a
      custom chip, unset and provide pmin-pascal and pmax-pascal instead.
    enum: [001BA, 1.6BA, 2.5BA, 004BA, 006BA, 008BA, 010BA, 012BA, 001BD,
           1.6BD, 2.5BD, 004BD, 001BG, 1.6BG, 2.5BG, 004BG, 006BG, 008BG,
           010BG, 012BG, 001GG, 1.2GG, 100KA, 160KA, 250KA, 001KD, 1.6KD,
           2.5KD, 004KD, 006KD, 010KD, 016KD, 025KD, 040KD, 060KD, 100KD,
           160KD, 250KD, 400KD, 001KG, 1.6KG, 2.5KG, 004KG, 006KG, 010KG,
           016KG, 025KG, 040KG, 060KG, 100KG, 160KG, 250KG, 400KG, 600KG,
           800KG, 250LD, 600LD, 600LG, 2.5MD, 006MD, 010MD, 016MD, 025MD,
           040MD, 060MD, 100MD, 160MD, 250MD, 400MD, 600MD, 006MG, 010MG,
           016MG, 025MG, 040MG, 060MG, 100MG, 160MG, 250MG, 400MG, 600MG,
           001ND, 002ND, 004ND, 005ND, 010ND, 020ND, 030ND, 002NG, 004NG,
           005NG, 010NG, 020NG, 030NG, 015PA, 030PA, 060PA, 100PA, 150PA,
           175PA, 001PD, 005PD, 015PD, 030PD, 060PD, 001PG, 005PG, 015PG,
           030PG, 060PG, 100PG, 150PG, 175PG]
    $ref: /schemas/types.yaml#/definitions/string

  honeywell,pmin-pascal:
    description:
      Minimum pressure value the sensor can measure in pascal.

  honeywell,pmax-pascal:
    description:
      Maximum pressure value the sensor can measure in pascal.

  spi-max-frequency:
    maximum: 800000

  vdd-supply: true

required:
  - compatible
  - reg
  - vdd-supply

oneOf:
  - required:
      - honeywell,pressure-triplet
  - required:
      - honeywell,pmin-pascal
      - honeywell,pmax-pascal

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml
  - if:
      required:
        - honeywell,pressure-triplet
    then:
      properties:
        honeywell,pmin-pascal: false
        honeywell,pmax-pascal: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        pressure@18 {
            compatible = "honeywell,abp2030pa";
            reg = <0x18>;
            interrupt-parent = <&gpio3>;
            interrupts = <21 IRQ_TYPE_EDGE_RISING>;

            honeywell,pressure-triplet = "001BA";
            vdd-supply = <&vcc_3v3>;
        };
    };
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        pressure@0 {
            compatible = "honeywell,abp2030pa";
            reg = <0>;
            spi-max-frequency = <800000>;

            honeywell,pressure-triplet = "001PD";
            vdd-supply = <&vcc_3v3>;
        };
    };
...
