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

title: DesignWare based PCIe controller on Rockchip SoCs

maintainers:
  - Shawn Lin <shawn.lin@rock-chips.com>
  - Simon Xue <xxm@rock-chips.com>
  - Heiko Stuebner <heiko@sntech.de>

description: |+
  RK3568 SoC PCIe host controller is based on the Synopsys DesignWare
  PCIe IP and thus inherits all the common properties defined in
  snps,dw-pcie.yaml.

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

properties:
  compatible:
    oneOf:
      - const: rockchip,rk3568-pcie
      - items:
          - enum:
              - rockchip,rk3588-pcie
          - const: rockchip,rk3568-pcie

  reg:
    items:
      - description: Data Bus Interface (DBI) registers
      - description: Rockchip designed configuration registers
      - description: Config registers

  reg-names:
    items:
      - const: dbi
      - const: apb
      - const: config

  clocks:
    minItems: 5
    items:
      - description: AHB clock for PCIe master
      - description: AHB clock for PCIe slave
      - description: AHB clock for PCIe dbi
      - description: APB clock for PCIe
      - description: Auxiliary clock for PCIe
      - description: PIPE clock
      - description: Reference clock for PCIe

  clock-names:
    minItems: 5
    items:
      - const: aclk_mst
      - const: aclk_slv
      - const: aclk_dbi
      - const: pclk
      - const: aux
      - const: pipe
      - const: ref

  interrupts:
    items:
      - description:
          Combined system interrupt, which is used to signal the following
          interrupts - phy_link_up, dll_link_up, link_req_rst_not, hp_pme,
          hp, hp_msi, link_auto_bw, link_auto_bw_msi, bw_mgt, bw_mgt_msi,
          edma_wr, edma_rd, dpa_sub_upd, rbar_update, link_eq_req, ep_elbi_app
      - description:
          Combined PM interrupt, which is used to signal the following
          interrupts - linkst_in_l1sub, linkst_in_l1, linkst_in_l2,
          linkst_in_l0s, linkst_out_l1sub, linkst_out_l1, linkst_out_l2,
          linkst_out_l0s, pm_dstate_update
      - description:
          Combined message interrupt, which is used to signal the following
          interrupts - ven_msg, unlock_msg, ltr_msg, cfg_pme, cfg_pme_msi,
          pm_pme, pm_to_ack, pm_turnoff, obff_idle, obff_obff, obff_cpu_active
      - description:
          Combined legacy interrupt, which is used to signal the following
          interrupts - inta, intb, intc, intd
      - description:
          Combined error interrupt, which is used to signal the following
          interrupts - aer_rc_err, aer_rc_err_msi, rx_cpl_timeout,
          tx_cpl_timeout, cor_err_sent, nf_err_sent, f_err_sent, cor_err_rx,
          nf_err_rx, f_err_rx, radm_qoverflow

  interrupt-names:
    items:
      - const: sys
      - const: pmc
      - const: msg
      - const: legacy
      - const: err

  legacy-interrupt-controller:
    description: Interrupt controller node for handling legacy PCI interrupts.
    type: object
    additionalProperties: false
    properties:
      "#address-cells":
        const: 0

      "#interrupt-cells":
        const: 1

      interrupt-controller: true

      interrupts:
        items:
          - description: combined legacy interrupt
    required:
      - "#address-cells"
      - "#interrupt-cells"
      - interrupt-controller
      - interrupts

  msi-map: true

  num-lanes: true

  phys:
    maxItems: 1

  phy-names:
    const: pcie-phy

  power-domains:
    maxItems: 1

  ranges:
    minItems: 2
    maxItems: 3

  resets:
    minItems: 1
    maxItems: 2

  reset-names:
    oneOf:
      - const: pipe
      - items:
          - const: pwr
          - const: pipe

  vpcie3v3-supply: true

required:
  - compatible
  - reg
  - reg-names
  - clocks
  - clock-names
  - msi-map
  - num-lanes
  - phys
  - phy-names
  - power-domains
  - resets
  - reset-names

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

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

        pcie3x2: pcie@fe280000 {
            compatible = "rockchip,rk3568-pcie";
            reg = <0x3 0xc0800000 0x0 0x390000>,
                  <0x0 0xfe280000 0x0 0x10000>,
                  <0x3 0x80000000 0x0 0x100000>;
            reg-names = "dbi", "apb", "config";
            bus-range = <0x20 0x2f>;
            clocks = <&cru 143>, <&cru 144>,
                     <&cru 145>, <&cru 146>,
                     <&cru 147>;
            clock-names = "aclk_mst", "aclk_slv",
                          "aclk_dbi", "pclk",
                          "aux";
            device_type = "pci";
            interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-names = "sys", "pmc", "msg", "legacy", "err";
            linux,pci-domain = <2>;
            max-link-speed = <2>;
            msi-map = <0x2000 &its 0x2000 0x1000>;
            num-lanes = <2>;
            phys = <&pcie30phy>;
            phy-names = "pcie-phy";
            power-domains = <&power 15>;
            ranges = <0x81000000 0x0 0x80800000 0x3 0x80800000 0x0 0x100000>,
                     <0x83000000 0x0 0x80900000 0x3 0x80900000 0x0 0x3f700000>;
            resets = <&cru 193>;
            reset-names = "pipe";
            #address-cells = <3>;
            #size-cells = <2>;

            legacy-interrupt-controller {
                interrupt-controller;
                #address-cells = <0>;
                #interrupt-cells = <1>;
                interrupt-parent = <&gic>;
                interrupts = <GIC_SPI 72 IRQ_TYPE_EDGE_RISING>;
            };
        };
    };
...
