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

title: NVIDIA Tegra194 (and later) PCIe controller (Synopsys DesignWare Core based)

maintainers:
  - Thierry Reding <thierry.reding@gmail.com>
  - Jon Hunter <jonathanh@nvidia.com>
  - Vidya Sagar <vidyas@nvidia.com>

description: |
  This PCIe controller is based on the Synopsys DesignWare PCIe IP and thus
  inherits all the common properties defined in snps,dw-pcie.yaml. Some of
  the controller instances are dual mode where in they can work either in
  Root Port mode or Endpoint mode but one at a time.

  See nvidia,tegra194-pcie-ep.yaml for details on the Endpoint mode device
  tree bindings.

properties:
  compatible:
    enum:
      - nvidia,tegra194-pcie
      - nvidia,tegra234-pcie

  reg:
    items:
      - description: controller's application logic registers
      - description: configuration registers
      - description: iATU and DMA registers. This is where the iATU (internal
          Address Translation Unit) registers of the PCIe core are made
          available for software access.
      - description: aperture where the Root Port's own configuration
          registers are available.

  reg-names:
    items:
      - const: appl
      - const: config
      - const: atu_dma
      - const: dbi

  interrupts:
    items:
      - description: controller interrupt
      - description: MSI interrupt

  interrupt-names:
    items:
      - const: intr
      - const: msi

  clocks:
    items:
      - description: module clock

  clock-names:
    items:
      - const: core

  resets:
    items:
      - description: APB bus interface reset
      - description: module reset

  reset-names:
    items:
      - const: apb
      - const: core

  phys:
    minItems: 1
    maxItems: 8

  phy-names:
    minItems: 1
    items:
      - const: p2u-0
      - const: p2u-1
      - const: p2u-2
      - const: p2u-3
      - const: p2u-4
      - const: p2u-5
      - const: p2u-6
      - const: p2u-7

  power-domains:
    maxItems: 1
    description: |
      A phandle to the node that controls power to the respective PCIe
      controller and a specifier name for the PCIe controller.

      Tegra194 specifiers defined in "include/dt-bindings/power/tegra194-powergate.h"
      Tegra234 specifiers defined in "include/dt-bindings/power/tegra234-powergate.h"

  interconnects:
    items:
      - description: memory read client
      - description: memory write client

  interconnect-names:
    items:
      - const: dma-mem # read
      - const: write

  dma-coherent: true

  nvidia,bpmp:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: |
      Must contain a pair of phandles to BPMP controller node followed by
      controller ID. Following are the controller IDs for each controller:

      Tegra194

        0: C0
        1: C1
        2: C2
        3: C3
        4: C4
        5: C5

      Tegra234

        0 : C0
        1 : C1
        2 : C2
        3 : C3
        4 : C4
        5 : C5
        6 : C6
        7 : C7
        8 : C8
        9 : C9
        10: C10

    items:
      - items:
          - description: phandle to BPMP controller node
          - description: PCIe controller ID
            maximum: 10

  nvidia,update-fc-fixup:
    description: |
      This is a boolean property and needs to be present to improve performance
      when a platform is designed in such a way that it satisfies at least one
      of the following conditions thereby enabling Root Port to exchange
      optimum number of FC (Flow Control) credits with downstream devices:

      NOTE: This is applicable only for Tegra194.

        1. If C0/C4/C5 run at x1/x2 link widths (irrespective of speed and MPS)
        2. If C0/C1/C2/C3/C4/C5 operate at their respective max link widths and
          a) speed is Gen-2 and MPS is 256B
          b) speed is >= Gen-3 with any MPS

    $ref: /schemas/types.yaml#/definitions/flag

  nvidia,aspm-cmrt-us:
    description: Common Mode Restore Time for proper operation of ASPM to be
      specified in microseconds

  nvidia,aspm-pwr-on-t-us:
    description: Power On time for proper operation of ASPM to be specified in
      microseconds

  nvidia,aspm-l0s-entrance-latency-us:
    description: ASPM L0s entrance latency to be specified in microseconds

  vddio-pex-ctl-supply:
    description: A phandle to the regulator supply for PCIe side band signals.

  vpcie3v3-supply:
    description: A phandle to the regulator node that supplies 3.3V to the slot
      if the platform has one such slot, e.g., x16 slot owned by C5 controller
      in p2972-0000 platform.

  vpcie12v-supply:
    description: A phandle to the regulator node that supplies 12V to the slot
      if the platform has one such slot, e.g., x16 slot owned by C5 controller
      in p2972-0000 platform.

  nvidia,enable-srns:
    description: |
      This boolean property needs to be present if the controller is
      configured to operate in SRNS (Separate Reference Clocks with No
      Spread-Spectrum Clocking).  NOTE: This is applicable only for
      Tegra234.

    $ref: /schemas/types.yaml#/definitions/flag

  nvidia,enable-ext-refclk:
    description: |
      This boolean property needs to be present if the controller is
      configured to use the reference clocking coming in from an external
      clock source instead of using the internal clock source.

    $ref: /schemas/types.yaml#/definitions/flag

allOf:
  - $ref: /schemas/pci/snps,dw-pcie.yaml#

unevaluatedProperties: false

required:
  - interrupts
  - interrupt-names
  - interrupt-map
  - interrupt-map-mask
  - clocks
  - clock-names
  - resets
  - reset-names
  - power-domains
  - vddio-pex-ctl-supply
  - num-lanes
  - phys
  - phy-names
  - nvidia,bpmp

examples:
  - |
    #include <dt-bindings/clock/tegra194-clock.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/tegra194-powergate.h>
    #include <dt-bindings/reset/tegra194-reset.h>

    bus@0 {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges = <0x0 0x0 0x0 0x8 0x0>;

        pcie@14180000 {
            compatible = "nvidia,tegra194-pcie";
            power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>;
            reg = <0x0 0x14180000 0x0 0x00020000>, /* appl registers (128K)      */
                  <0x0 0x38000000 0x0 0x00040000>, /* configuration space (256K) */
                  <0x0 0x38040000 0x0 0x00040000>, /* iATU_DMA reg space (256K)  */
                  <0x0 0x38080000 0x0 0x00040000>; /* DBI reg space (256K)       */
            reg-names = "appl", "config", "atu_dma", "dbi";

            #address-cells = <3>;
            #size-cells = <2>;
            device_type = "pci";
            num-lanes = <8>;
            linux,pci-domain = <0>;

            pinctrl-names = "default";
            pinctrl-0 = <&pex_rst_c5_out_state>, <&clkreq_c5_bi_dir_state>;

            clocks = <&bpmp TEGRA194_CLK_PEX0_CORE_0>;
            clock-names = "core";

            resets = <&bpmp TEGRA194_RESET_PEX0_CORE_0_APB>,
                     <&bpmp TEGRA194_RESET_PEX0_CORE_0>;
            reset-names = "apb", "core";

            interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
                         <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
            interrupt-names = "intr", "msi";

            #interrupt-cells = <1>;
            interrupt-map-mask = <0 0 0 0>;
            interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;

            nvidia,bpmp = <&bpmp 0>;

            supports-clkreq;
            nvidia,aspm-cmrt-us = <60>;
            nvidia,aspm-pwr-on-t-us = <20>;
            nvidia,aspm-l0s-entrance-latency-us = <3>;

            bus-range = <0x0 0xff>;
            ranges = <0x81000000 0x0  0x38100000 0x0  0x38100000 0x0 0x00100000>, /* downstream I/O */
                     <0x82000000 0x0  0x38200000 0x0  0x38200000 0x0 0x01e00000>, /* non-prefetch memory */
                     <0xc2000000 0x18 0x00000000 0x18 0x00000000 0x4 0x00000000>; /* prefetchable memory */

            vddio-pex-ctl-supply = <&vdd_1v8ao>;
            vpcie3v3-supply = <&vdd_3v3_pcie>;
            vpcie12v-supply = <&vdd_12v_pcie>;

            phys = <&p2u_hsio_2>, <&p2u_hsio_3>, <&p2u_hsio_4>,
                   <&p2u_hsio_5>;
            phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
        };
    };

  - |
    #include <dt-bindings/clock/tegra234-clock.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/tegra234-powergate.h>
    #include <dt-bindings/reset/tegra234-reset.h>

    bus@0 {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges = <0x0 0x0 0x0 0x8 0x0>;

        pcie@14160000 {
            compatible = "nvidia,tegra234-pcie";
            power-domains = <&bpmp TEGRA234_POWER_DOMAIN_PCIEX4BB>;
            reg = <0x00 0x14160000 0x0 0x00020000>, /* appl registers (128K)      */
                  <0x00 0x36000000 0x0 0x00040000>, /* configuration space (256K) */
                  <0x00 0x36040000 0x0 0x00040000>, /* iATU_DMA reg space (256K)  */
                  <0x00 0x36080000 0x0 0x00040000>; /* DBI reg space (256K)       */
            reg-names = "appl", "config", "atu_dma", "dbi";

            #address-cells = <3>;
            #size-cells = <2>;
            device_type = "pci";
            num-lanes = <4>;
            num-viewport = <8>;
            linux,pci-domain = <4>;

            clocks = <&bpmp TEGRA234_CLK_PEX0_C4_CORE>;
            clock-names = "core";

            resets = <&bpmp TEGRA234_RESET_PEX0_CORE_4_APB>,
                     <&bpmp TEGRA234_RESET_PEX0_CORE_4>;
            reset-names = "apb", "core";

            interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
                         <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
            interrupt-names = "intr", "msi";

            #interrupt-cells = <1>;
            interrupt-map-mask = <0 0 0 0>;
            interrupt-map = <0 0 0 0 &gic GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;

            nvidia,bpmp = <&bpmp 4>;

            nvidia,aspm-cmrt-us = <60>;
            nvidia,aspm-pwr-on-t-us = <20>;
            nvidia,aspm-l0s-entrance-latency-us = <3>;

            bus-range = <0x0 0xff>;
            ranges = <0x43000000 0x21 0x40000000 0x21 0x40000000 0x2 0xe8000000>, /* prefetchable */
                     <0x02000000 0x0  0x40000000 0x24 0x28000000 0x0 0x08000000>, /* non-prefetchable */
                     <0x01000000 0x0  0x36100000 0x00 0x36100000 0x0 0x00100000>; /* downstream I/O */

            vddio-pex-ctl-supply = <&p3701_vdd_AO_1v8>;

            phys = <&p2u_hsio_4>, <&p2u_hsio_5>, <&p2u_hsio_6>,
                   <&p2u_hsio_7>;
            phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
        };
    };
