# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/adi,adp5585.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices ADP5585 Keypad Decoder and I/O Expansion

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description:
  The ADP5585 is a 10/11 input/output port expander with a built in keypad
  matrix decoder, programmable logic, reset generator, and PWM generator.

properties:
  compatible:
    items:
      - enum:
          - adi,adp5585-00  # Default
          - adi,adp5585-01  # 11 GPIOs
          - adi,adp5585-02  # No pull-up resistors by default on special pins
          - adi,adp5585-03  # Alternate I2C address
          - adi,adp5585-04  # Pull-down resistors on all pins by default
      - const: adi,adp5585

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  vdd-supply: true

  gpio-controller: true

  '#gpio-cells':
    const: 2

  gpio-reserved-ranges: true

  "#pwm-cells":
    const: 3

patternProperties:
  "-hog(-[0-9]+)?$":
    type: object

    required:
      - gpio-hog

required:
  - compatible
  - reg
  - gpio-controller
  - "#gpio-cells"
  - "#pwm-cells"

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: adi,adp5585-01
    then:
      properties:
        gpio-reserved-ranges: false
    else:
      properties:
        gpio-reserved-ranges:
          maxItems: 1
          items:
            items:
              - const: 5
              - const: 1

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        io-expander@34 {
            compatible = "adi,adp5585-00", "adi,adp5585";
            reg = <0x34>;

            vdd-supply = <&reg_3v3>;

            gpio-controller;
            #gpio-cells = <2>;
            gpio-reserved-ranges = <5 1>;

            #pwm-cells = <3>;
        };
    };

...
