# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/pci/rockchip,rk3399-pcie.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Rockchip AXI PCIe Root Port Bridge Host maintainers: - Shawn Lin <shawn.lin@rock-chips.com> allOf: - $ref: /schemas/pci/pci-bus.yaml# - $ref: rockchip,rk3399-pcie-common.yaml# properties: compatible: const: rockchip,rk3399-pcie reg: true reg-names: items: - const: axi-base - const: apb-base interrupts: maxItems: 3 interrupt-names: items: - const: sys - const: legacy - const: client aspm-no-l0s: description: This property is needed if using 24MHz OSC for RC's PHY. ep-gpios: description: pre-reset GPIO vpcie12v-supply: description: The 12v regulator to use for PCIe. vpcie3v3-supply: description: The 3.3v regulator to use for PCIe. vpcie1v8-supply: description: The 1.8v regulator to use for PCIe. vpcie0v9-supply: description: The 0.9v regulator to use for PCIe. interrupt-controller: type: object additionalProperties: false properties: '#address-cells': const: 0 '#interrupt-cells': const: 1 interrupt-controller: true required: - ranges - "#interrupt-cells" - interrupts - interrupt-controller - interrupt-map - interrupt-map-mask - msi-map unevaluatedProperties: false examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/clock/rk3399-cru.h> bus { #address-cells = <2>; #size-cells = <2>; pcie@f8000000 { compatible = "rockchip,rk3399-pcie"; device_type = "pci"; #address-cells = <3>; #size-cells = <2>; clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>, <&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>; clock-names = "aclk", "aclk-perf", "hclk", "pm"; interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>, <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>, <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>; interrupt-names = "sys", "legacy", "client"; ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x600000 0x81000000 0x0 0xfa600000 0x0 0xfa600000 0x0 0x100000>; num-lanes = <4>; msi-map = <0x0 &its 0x0 0x1000>; reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>; reg-names = "axi-base", "apb-base"; resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>, <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> , <&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>; reset-names = "core", "mgmt", "mgmt-sticky", "pipe", "pm", "pclk", "aclk"; /* deprecated legacy PHY model */ phys = <&pcie_phy>; phy-names = "pcie-phy"; pinctrl-names = "default"; pinctrl-0 = <&pcie_clkreq>; #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 7>; interrupt-map = <0 0 0 1 &pcie0_intc 0>, <0 0 0 2 &pcie0_intc 1>, <0 0 0 3 &pcie0_intc 2>, <0 0 0 4 &pcie0_intc 3>; pcie0_intc: interrupt-controller { interrupt-controller; #address-cells = <0>; #interrupt-cells = <1>; }; }; }; ...