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

title: Broadcom USB pin map Controller

maintainers:
  - Al Cooper <alcooperx@gmail.com>

properties:
  compatible:
    items:
      - const: brcm,usb-pinmap

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1
    description: Interrupt for signals mirrored to out-gpios.

  in-gpios:
    minItems: 1
    maxItems: 2
    description: Array of one or two GPIO pins used for input signals.

  brcm,in-functions:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: Array of input signal names, one per gpio in in-gpios.

  brcm,in-masks:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description: Array of enable and mask pairs, one per gpio in-gpios.

  out-gpios:
    maxItems: 1
    description: Array of one GPIO pin used for output signals.

  brcm,out-functions:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: Array of output signal names, one per gpio in out-gpios.

  brcm,out-masks:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description: Array of enable, value, changed and clear masks, one
      per gpio in out-gpios.

required:
  - compatible
  - reg

additionalProperties: false

dependencies:
  in-gpios: [ interrupts ]

examples:
  - |
    usb_pinmap: usb-pinmap@22000d0 {
        compatible = "brcm,usb-pinmap";
        reg = <0x22000d0 0x4>;
        in-gpios = <&gpio 18 0>, <&gpio 19 0>;
        brcm,in-functions = "VBUS", "PWRFLT";
        brcm,in-masks = <0x8000 0x40000 0x10000 0x80000>;
        out-gpios = <&gpio 20 0>;
        brcm,out-functions = "PWRON";
        brcm,out-masks = <0x20000 0x800000 0x400000 0x200000>;
        interrupts = <0x0 0xb2 0x4>;
    };

...
