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

title: Qualcomm PCI Express Root Complex Common Properties

maintainers:
  - Bjorn Andersson <andersson@kernel.org>
  - Manivannan Sadhasivam <mani@kernel.org>

properties:
  reg:
    minItems: 4
    maxItems: 6

  reg-names:
    minItems: 4
    maxItems: 6

  interrupts:
    minItems: 1
    maxItems: 9

  interrupt-names:
    minItems: 1
    maxItems: 9

  iommu-map:
    minItems: 1
    maxItems: 16

  clocks:
    minItems: 3
    maxItems: 13

  clock-names:
    minItems: 3
    maxItems: 13

  dma-coherent: true

  interconnects:
    maxItems: 2

  interconnect-names:
    items:
      - const: pcie-mem
      - const: cpu-pcie

  phys:
    maxItems: 1
    deprecated: true
    description:
      This property is deprecated, instead of referencing this property from
      the host bridge node, use the property from the PCIe root port node.

  phy-names:
    items:
      - const: pciephy
    deprecated: true
    description:
      Phandle to the register map node. This property is deprecated, and not
      required to add in the root port also, as the root port has only one phy.

  power-domains:
    maxItems: 1

  required-opps:
    maxItems: 1

  resets:
    minItems: 1
    maxItems: 12

  reset-names:
    minItems: 1
    maxItems: 12

  perst-gpios:
    description: GPIO controlled connection to PERST# signal. This property is
      deprecated, instead of referencing this property from the host bridge node,
      use the reset-gpios property from the root port node.
    maxItems: 1
    deprecated: true

  wake-gpios:
    description: GPIO controlled connection to WAKE# signal. This property is
      deprecated, instead of referencing this property from the host bridge node,
      use the property from the PCIe root port node.
    maxItems: 1
    deprecated: true

  vddpe-3v3-supply:
    description: PCIe endpoint power supply

  operating-points-v2: true
  opp-table:
    type: object

patternProperties:
  "^pcie@":
    type: object
    $ref: /schemas/pci/pci-pci-bridge.yaml#

    properties:
      reg:
        maxItems: 1

      phys:
        maxItems: 1

    unevaluatedProperties: false

required:
  - reg
  - reg-names
  - interrupt-map-mask
  - interrupt-map
  - clocks
  - clock-names

anyOf:
  - required:
      - interrupts
      - interrupt-names
      - "#interrupt-cells"
  - required:
      - msi-map

allOf:
  - $ref: /schemas/pci/pci-host-bridge.yaml#

additionalProperties: true