# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/cec/cec-gpio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: HDMI CEC GPIO

maintainers:
  - Hans Verkuil <hverkuil@kernel.org>

description: |
  The HDMI CEC GPIO module supports CEC implementations where the CEC line is
  hooked up to a pull-up GPIO line and - optionally - the HPD line is hooked up
  to another GPIO line.

  Please note:: the maximum voltage for the CEC line is 3.63V, for the HPD and
  5V lines it is 5.3V. So you may need some sort of level conversion
  circuitry when connecting them to a GPIO line.

properties:
  compatible:
    const: cec-gpio

  cec-gpios:
    maxItems: 1
    description:
      GPIO that the CEC line is connected to. The line should be tagged as open
      drain.

  hpd-gpios:
    maxItems: 1
    description:
      GPIO that the HPD line is connected to.  Used for debugging HPD changes
      when the CEC line is not associated with an HDMI receiver/transmitter.

  v5-gpios:
    maxItems: 1
    description:
      GPIO that the 5V line is connected to.  Used for debugging changes on the
      5V line.

required:
  - compatible
  - cec-gpios

allOf:
  - $ref: cec-common.yaml#
  - if:
      required:
        - hdmi-phandle
    then:
      properties:
        hpd-gpios: false

  - if:
      required:
        - hpd-gpios
    then:
      properties:
        hdmi-phandle: false

unevaluatedProperties: false

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

    cec {
        compatible = "cec-gpio";
        cec-gpios = <&gpio 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
        hpd-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
        v5-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
    };
