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

title: Apple PCIe host controller

maintainers:
  - Mark Kettenis <kettenis@openbsd.org>

description: |
  The Apple PCIe host controller is a PCIe host controller with
  multiple root ports present in Apple ARM SoC platforms, including
  various iPhone and iPad devices and the "Apple Silicon" Macs.
  The controller incorporates Synopsys DesigWare PCIe logic to
  implements its root ports.  But the ATU found on most DesignWare
  PCIe host bridges is absent.

  All root ports share a single ECAM space, but separate GPIOs are
  used to take the PCI devices on those ports out of reset.  Therefore
  the standard "reset-gpios" and "max-link-speed" properties appear on
  the child nodes that represent the PCI bridges that correspond to
  the individual root ports.

  MSIs are handled by the PCIe controller and translated into regular
  interrupts.  A range of 32 MSIs is provided.  These 32 MSIs can be
  distributed over the root ports as the OS sees fit by programming
  the PCIe controller's port registers.

properties:
  compatible:
    items:
      - enum:
          - apple,t8103-pcie
          - apple,t6000-pcie
      - const: apple,pcie

  reg:
    minItems: 3
    maxItems: 6

  reg-names:
    minItems: 3
    items:
      - const: config
      - const: rc
      - const: port0
      - const: port1
      - const: port2
      - const: port3

  ranges:
    minItems: 2
    maxItems: 2

  interrupts:
    description:
      Interrupt specifiers, one for each root port.
    minItems: 1
    maxItems: 4

  msi-parent: true

  msi-ranges:
    maxItems: 1

  iommu-map: true
  iommu-map-mask: true

  power-domains:
    maxItems: 1

required:
  - compatible
  - reg
  - reg-names
  - bus-range
  - interrupts
  - msi-controller
  - msi-parent
  - msi-ranges

unevaluatedProperties: false

allOf:
  - $ref: /schemas/pci/pci-bus.yaml#
  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: apple,t8103-pcie
    then:
      properties:
        reg:
          maxItems: 5
        interrupts:
          maxItems: 3

examples:
  - |
    #include <dt-bindings/interrupt-controller/apple-aic.h>

    soc {
      #address-cells = <2>;
      #size-cells = <2>;

      pcie0: pcie@690000000 {
        compatible = "apple,t8103-pcie", "apple,pcie";
        device_type = "pci";

        reg = <0x6 0x90000000 0x0 0x1000000>,
              <0x6 0x80000000 0x0 0x100000>,
              <0x6 0x81000000 0x0 0x4000>,
              <0x6 0x82000000 0x0 0x4000>,
              <0x6 0x83000000 0x0 0x4000>;
        reg-names = "config", "rc", "port0", "port1", "port2";

        interrupt-parent = <&aic>;
        interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
                     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
                     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;

        msi-controller;
        msi-parent = <&pcie0>;
        msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;

        iommu-map = <0x100 &dart0 1 1>,
                    <0x200 &dart1 1 1>,
                    <0x300 &dart2 1 1>;
        iommu-map-mask = <0xff00>;

        bus-range = <0 3>;
        #address-cells = <3>;
        #size-cells = <2>;
        ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
                 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;

        power-domains = <&ps_apcie_gp>;
        pinctrl-0 = <&pcie_pins>;
        pinctrl-names = "default";

        pci@0,0 {
          device_type = "pci";
          reg = <0x0 0x0 0x0 0x0 0x0>;
          reset-gpios = <&pinctrl_ap 152 0>;

          #address-cells = <3>;
          #size-cells = <2>;
          ranges;
        };

        pci@1,0 {
          device_type = "pci";
          reg = <0x800 0x0 0x0 0x0 0x0>;
          reset-gpios = <&pinctrl_ap 153 0>;

          #address-cells = <3>;
          #size-cells = <2>;
          ranges;
        };

        pci@2,0 {
          device_type = "pci";
          reg = <0x1000 0x0 0x0 0x0 0x0>;
          reset-gpios = <&pinctrl_ap 33 0>;

          #address-cells = <3>;
          #size-cells = <2>;
          ranges;
        };
      };
    };
