162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pci/rockchip,rk3399-pcie.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Rockchip AXI PCIe Root Port Bridge Host
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Shawn Lin <shawn.lin@rock-chips.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: /schemas/pci/pci-bus.yaml#
1462306a36Sopenharmony_ci  - $ref: rockchip,rk3399-pcie-common.yaml#
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciproperties:
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    const: rockchip,rk3399-pcie
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  reg: true
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  reg-names:
2362306a36Sopenharmony_ci    items:
2462306a36Sopenharmony_ci      - const: axi-base
2562306a36Sopenharmony_ci      - const: apb-base
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  interrupts:
2862306a36Sopenharmony_ci    maxItems: 3
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  interrupt-names:
3162306a36Sopenharmony_ci    items:
3262306a36Sopenharmony_ci      - const: sys
3362306a36Sopenharmony_ci      - const: legacy
3462306a36Sopenharmony_ci      - const: client
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  aspm-no-l0s:
3762306a36Sopenharmony_ci    description: This property is needed if using 24MHz OSC for RC's PHY.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  ep-gpios:
4062306a36Sopenharmony_ci    description: pre-reset GPIO
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  vpcie12v-supply:
4362306a36Sopenharmony_ci    description: The 12v regulator to use for PCIe.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  vpcie3v3-supply:
4662306a36Sopenharmony_ci    description: The 3.3v regulator to use for PCIe.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  vpcie1v8-supply:
4962306a36Sopenharmony_ci    description: The 1.8v regulator to use for PCIe.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  vpcie0v9-supply:
5262306a36Sopenharmony_ci    description: The 0.9v regulator to use for PCIe.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  interrupt-controller:
5562306a36Sopenharmony_ci    type: object
5662306a36Sopenharmony_ci    additionalProperties: false
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci    properties:
5962306a36Sopenharmony_ci      '#address-cells':
6062306a36Sopenharmony_ci        const: 0
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci      '#interrupt-cells':
6362306a36Sopenharmony_ci        const: 1
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci      interrupt-controller: true
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cirequired:
6862306a36Sopenharmony_ci  - ranges
6962306a36Sopenharmony_ci  - "#interrupt-cells"
7062306a36Sopenharmony_ci  - interrupts
7162306a36Sopenharmony_ci  - interrupt-controller
7262306a36Sopenharmony_ci  - interrupt-map
7362306a36Sopenharmony_ci  - interrupt-map-mask
7462306a36Sopenharmony_ci  - msi-map
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciunevaluatedProperties: false
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciexamples:
7962306a36Sopenharmony_ci  - |
8062306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
8162306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
8262306a36Sopenharmony_ci    #include <dt-bindings/clock/rk3399-cru.h>
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci    bus {
8562306a36Sopenharmony_ci        #address-cells = <2>;
8662306a36Sopenharmony_ci        #size-cells = <2>;
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci        pcie@f8000000 {
8962306a36Sopenharmony_ci            compatible = "rockchip,rk3399-pcie";
9062306a36Sopenharmony_ci            device_type = "pci";
9162306a36Sopenharmony_ci            #address-cells = <3>;
9262306a36Sopenharmony_ci            #size-cells = <2>;
9362306a36Sopenharmony_ci            clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>,
9462306a36Sopenharmony_ci              <&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>;
9562306a36Sopenharmony_ci            clock-names = "aclk", "aclk-perf",
9662306a36Sopenharmony_ci                    "hclk", "pm";
9762306a36Sopenharmony_ci            interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>,
9862306a36Sopenharmony_ci                  <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>,
9962306a36Sopenharmony_ci                  <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>;
10062306a36Sopenharmony_ci            interrupt-names = "sys", "legacy", "client";
10162306a36Sopenharmony_ci            ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
10262306a36Sopenharmony_ci            ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x600000
10362306a36Sopenharmony_ci                0x81000000 0x0 0xfa600000 0x0 0xfa600000 0x0 0x100000>;
10462306a36Sopenharmony_ci            num-lanes = <4>;
10562306a36Sopenharmony_ci            msi-map = <0x0 &its 0x0 0x1000>;
10662306a36Sopenharmony_ci            reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>;
10762306a36Sopenharmony_ci            reg-names = "axi-base", "apb-base";
10862306a36Sopenharmony_ci            resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
10962306a36Sopenharmony_ci              <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> ,
11062306a36Sopenharmony_ci              <&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>;
11162306a36Sopenharmony_ci            reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
11262306a36Sopenharmony_ci                    "pm", "pclk", "aclk";
11362306a36Sopenharmony_ci            /* deprecated legacy PHY model */
11462306a36Sopenharmony_ci            phys = <&pcie_phy>;
11562306a36Sopenharmony_ci            phy-names = "pcie-phy";
11662306a36Sopenharmony_ci            pinctrl-names = "default";
11762306a36Sopenharmony_ci            pinctrl-0 = <&pcie_clkreq>;
11862306a36Sopenharmony_ci            #interrupt-cells = <1>;
11962306a36Sopenharmony_ci            interrupt-map-mask = <0 0 0 7>;
12062306a36Sopenharmony_ci            interrupt-map = <0 0 0 1 &pcie0_intc 0>,
12162306a36Sopenharmony_ci                <0 0 0 2 &pcie0_intc 1>,
12262306a36Sopenharmony_ci                <0 0 0 3 &pcie0_intc 2>,
12362306a36Sopenharmony_ci                <0 0 0 4 &pcie0_intc 3>;
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci            pcie0_intc: interrupt-controller {
12662306a36Sopenharmony_ci                interrupt-controller;
12762306a36Sopenharmony_ci                #address-cells = <0>;
12862306a36Sopenharmony_ci                #interrupt-cells = <1>;
12962306a36Sopenharmony_ci            };
13062306a36Sopenharmony_ci        };
13162306a36Sopenharmony_ci    };
13262306a36Sopenharmony_ci...
133