18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 28cc087a1SEmmanuel Vadot%YAML 1.2 38cc087a1SEmmanuel Vadot--- 48cc087a1SEmmanuel Vadot$id: http://devicetree.org/schemas/pci/qcom,pcie-ep.yaml# 58cc087a1SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 68cc087a1SEmmanuel Vadot 78bab661aSEmmanuel Vadottitle: Qualcomm PCIe Endpoint Controller 88cc087a1SEmmanuel Vadot 98cc087a1SEmmanuel Vadotmaintainers: 108cc087a1SEmmanuel Vadot - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 118cc087a1SEmmanuel Vadot 128cc087a1SEmmanuel Vadotproperties: 138cc087a1SEmmanuel Vadot compatible: 14aa1a8ff2SEmmanuel Vadot oneOf: 15aa1a8ff2SEmmanuel Vadot - enum: 160e8011faSEmmanuel Vadot - qcom,sa8775p-pcie-ep 177ef62cebSEmmanuel Vadot - qcom,sdx55-pcie-ep 187ef62cebSEmmanuel Vadot - qcom,sm8450-pcie-ep 19aa1a8ff2SEmmanuel Vadot - items: 20aa1a8ff2SEmmanuel Vadot - const: qcom,sdx65-pcie-ep 21aa1a8ff2SEmmanuel Vadot - const: qcom,sdx55-pcie-ep 228cc087a1SEmmanuel Vadot 238cc087a1SEmmanuel Vadot reg: 240e8011faSEmmanuel Vadot minItems: 6 258cc087a1SEmmanuel Vadot items: 268cc087a1SEmmanuel Vadot - description: Qualcomm-specific PARF configuration registers 278cc087a1SEmmanuel Vadot - description: DesignWare PCIe registers 288cc087a1SEmmanuel Vadot - description: External local bus interface registers 298cc087a1SEmmanuel Vadot - description: Address Translation Unit (ATU) registers 308cc087a1SEmmanuel Vadot - description: Memory region used to map remote RC address space 318cc087a1SEmmanuel Vadot - description: BAR memory region 320e8011faSEmmanuel Vadot - description: DMA register space 338cc087a1SEmmanuel Vadot 348cc087a1SEmmanuel Vadot reg-names: 350e8011faSEmmanuel Vadot minItems: 6 368cc087a1SEmmanuel Vadot items: 378cc087a1SEmmanuel Vadot - const: parf 388cc087a1SEmmanuel Vadot - const: dbi 398cc087a1SEmmanuel Vadot - const: elbi 408cc087a1SEmmanuel Vadot - const: atu 418cc087a1SEmmanuel Vadot - const: addr_space 428cc087a1SEmmanuel Vadot - const: mmio 430e8011faSEmmanuel Vadot - const: dma 448cc087a1SEmmanuel Vadot 458cc087a1SEmmanuel Vadot clocks: 460e8011faSEmmanuel Vadot minItems: 5 477ef62cebSEmmanuel Vadot maxItems: 8 488cc087a1SEmmanuel Vadot 498cc087a1SEmmanuel Vadot clock-names: 500e8011faSEmmanuel Vadot minItems: 5 517ef62cebSEmmanuel Vadot maxItems: 8 528cc087a1SEmmanuel Vadot 538cc087a1SEmmanuel Vadot qcom,perst-regs: 548cc087a1SEmmanuel Vadot description: Reference to a syscon representing TCSR followed by the two 558cc087a1SEmmanuel Vadot offsets within syscon for Perst enable and Perst separation 568cc087a1SEmmanuel Vadot enable registers 57fac71e4eSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 588cc087a1SEmmanuel Vadot items: 59cb7aa33aSEmmanuel Vadot - items: 60cb7aa33aSEmmanuel Vadot - description: Syscon to TCSR system registers 61cb7aa33aSEmmanuel Vadot - description: Perst enable offset 62cb7aa33aSEmmanuel Vadot - description: Perst separation enable offset 638cc087a1SEmmanuel Vadot 648cc087a1SEmmanuel Vadot interrupts: 650e8011faSEmmanuel Vadot minItems: 2 668cc087a1SEmmanuel Vadot items: 678cc087a1SEmmanuel Vadot - description: PCIe Global interrupt 688cc087a1SEmmanuel Vadot - description: PCIe Doorbell interrupt 690e8011faSEmmanuel Vadot - description: DMA interrupt 708cc087a1SEmmanuel Vadot 718cc087a1SEmmanuel Vadot interrupt-names: 720e8011faSEmmanuel Vadot minItems: 2 738cc087a1SEmmanuel Vadot items: 748cc087a1SEmmanuel Vadot - const: global 758cc087a1SEmmanuel Vadot - const: doorbell 760e8011faSEmmanuel Vadot - const: dma 778cc087a1SEmmanuel Vadot 788cc087a1SEmmanuel Vadot reset-gpios: 798cc087a1SEmmanuel Vadot description: GPIO used as PERST# input signal 808cc087a1SEmmanuel Vadot maxItems: 1 818cc087a1SEmmanuel Vadot 828cc087a1SEmmanuel Vadot wake-gpios: 838cc087a1SEmmanuel Vadot description: GPIO used as WAKE# output signal 848cc087a1SEmmanuel Vadot maxItems: 1 858cc087a1SEmmanuel Vadot 86aa1a8ff2SEmmanuel Vadot interconnects: 87aa1a8ff2SEmmanuel Vadot maxItems: 2 88aa1a8ff2SEmmanuel Vadot 89aa1a8ff2SEmmanuel Vadot interconnect-names: 90aa1a8ff2SEmmanuel Vadot items: 91aa1a8ff2SEmmanuel Vadot - const: pcie-mem 92aa1a8ff2SEmmanuel Vadot - const: cpu-pcie 93aa1a8ff2SEmmanuel Vadot 948cc087a1SEmmanuel Vadot resets: 958cc087a1SEmmanuel Vadot maxItems: 1 968cc087a1SEmmanuel Vadot 978cc087a1SEmmanuel Vadot reset-names: 988cc087a1SEmmanuel Vadot const: core 998cc087a1SEmmanuel Vadot 1008cc087a1SEmmanuel Vadot power-domains: 1018cc087a1SEmmanuel Vadot maxItems: 1 1028cc087a1SEmmanuel Vadot 1038cc087a1SEmmanuel Vadot phys: 1048cc087a1SEmmanuel Vadot maxItems: 1 1058cc087a1SEmmanuel Vadot 1068cc087a1SEmmanuel Vadot phy-names: 1078cc087a1SEmmanuel Vadot const: pciephy 1088cc087a1SEmmanuel Vadot 1098cc087a1SEmmanuel Vadot num-lanes: 1108cc087a1SEmmanuel Vadot default: 2 1118cc087a1SEmmanuel Vadot 1128cc087a1SEmmanuel Vadotrequired: 1138cc087a1SEmmanuel Vadot - compatible 1148cc087a1SEmmanuel Vadot - reg 1158cc087a1SEmmanuel Vadot - reg-names 1168cc087a1SEmmanuel Vadot - clocks 1178cc087a1SEmmanuel Vadot - clock-names 1188cc087a1SEmmanuel Vadot - interrupts 1198cc087a1SEmmanuel Vadot - interrupt-names 1208cc087a1SEmmanuel Vadot - reset-gpios 121aa1a8ff2SEmmanuel Vadot - interconnects 122aa1a8ff2SEmmanuel Vadot - interconnect-names 1238cc087a1SEmmanuel Vadot - resets 1248cc087a1SEmmanuel Vadot - reset-names 1258cc087a1SEmmanuel Vadot - power-domains 1268cc087a1SEmmanuel Vadot 1277ef62cebSEmmanuel VadotallOf: 1287ef62cebSEmmanuel Vadot - $ref: pci-ep.yaml# 1297ef62cebSEmmanuel Vadot - if: 1307ef62cebSEmmanuel Vadot properties: 1317ef62cebSEmmanuel Vadot compatible: 1327ef62cebSEmmanuel Vadot contains: 1337ef62cebSEmmanuel Vadot enum: 1347ef62cebSEmmanuel Vadot - qcom,sdx55-pcie-ep 1357ef62cebSEmmanuel Vadot then: 1367ef62cebSEmmanuel Vadot properties: 1370e8011faSEmmanuel Vadot reg: 1380e8011faSEmmanuel Vadot maxItems: 6 1390e8011faSEmmanuel Vadot reg-names: 1400e8011faSEmmanuel Vadot maxItems: 6 1417ef62cebSEmmanuel Vadot clocks: 1427ef62cebSEmmanuel Vadot items: 1437ef62cebSEmmanuel Vadot - description: PCIe Auxiliary clock 1447ef62cebSEmmanuel Vadot - description: PCIe CFG AHB clock 1457ef62cebSEmmanuel Vadot - description: PCIe Master AXI clock 1467ef62cebSEmmanuel Vadot - description: PCIe Slave AXI clock 1477ef62cebSEmmanuel Vadot - description: PCIe Slave Q2A AXI clock 1487ef62cebSEmmanuel Vadot - description: PCIe Sleep clock 1497ef62cebSEmmanuel Vadot - description: PCIe Reference clock 1507ef62cebSEmmanuel Vadot clock-names: 1517ef62cebSEmmanuel Vadot items: 1527ef62cebSEmmanuel Vadot - const: aux 1537ef62cebSEmmanuel Vadot - const: cfg 1547ef62cebSEmmanuel Vadot - const: bus_master 1557ef62cebSEmmanuel Vadot - const: bus_slave 1567ef62cebSEmmanuel Vadot - const: slave_q2a 1577ef62cebSEmmanuel Vadot - const: sleep 1587ef62cebSEmmanuel Vadot - const: ref 1590e8011faSEmmanuel Vadot interrupts: 1600e8011faSEmmanuel Vadot maxItems: 2 1610e8011faSEmmanuel Vadot interrupt-names: 1620e8011faSEmmanuel Vadot maxItems: 2 1637ef62cebSEmmanuel Vadot 1647ef62cebSEmmanuel Vadot - if: 1657ef62cebSEmmanuel Vadot properties: 1667ef62cebSEmmanuel Vadot compatible: 1677ef62cebSEmmanuel Vadot contains: 1687ef62cebSEmmanuel Vadot enum: 1697ef62cebSEmmanuel Vadot - qcom,sm8450-pcie-ep 1707ef62cebSEmmanuel Vadot then: 1717ef62cebSEmmanuel Vadot properties: 1720e8011faSEmmanuel Vadot reg: 1730e8011faSEmmanuel Vadot maxItems: 6 1740e8011faSEmmanuel Vadot reg-names: 1750e8011faSEmmanuel Vadot maxItems: 6 1767ef62cebSEmmanuel Vadot clocks: 1777ef62cebSEmmanuel Vadot items: 1787ef62cebSEmmanuel Vadot - description: PCIe Auxiliary clock 1797ef62cebSEmmanuel Vadot - description: PCIe CFG AHB clock 1807ef62cebSEmmanuel Vadot - description: PCIe Master AXI clock 1817ef62cebSEmmanuel Vadot - description: PCIe Slave AXI clock 1827ef62cebSEmmanuel Vadot - description: PCIe Slave Q2A AXI clock 1837ef62cebSEmmanuel Vadot - description: PCIe Reference clock 1847ef62cebSEmmanuel Vadot - description: PCIe DDRSS SF TBU clock 1857ef62cebSEmmanuel Vadot - description: PCIe AGGRE NOC AXI clock 1867ef62cebSEmmanuel Vadot clock-names: 1877ef62cebSEmmanuel Vadot items: 1887ef62cebSEmmanuel Vadot - const: aux 1897ef62cebSEmmanuel Vadot - const: cfg 1907ef62cebSEmmanuel Vadot - const: bus_master 1917ef62cebSEmmanuel Vadot - const: bus_slave 1927ef62cebSEmmanuel Vadot - const: slave_q2a 1937ef62cebSEmmanuel Vadot - const: ref 1947ef62cebSEmmanuel Vadot - const: ddrss_sf_tbu 1957ef62cebSEmmanuel Vadot - const: aggre_noc_axi 1960e8011faSEmmanuel Vadot interrupts: 1970e8011faSEmmanuel Vadot maxItems: 2 1980e8011faSEmmanuel Vadot interrupt-names: 1990e8011faSEmmanuel Vadot maxItems: 2 2000e8011faSEmmanuel Vadot 2010e8011faSEmmanuel Vadot - if: 2020e8011faSEmmanuel Vadot properties: 2030e8011faSEmmanuel Vadot compatible: 2040e8011faSEmmanuel Vadot contains: 2050e8011faSEmmanuel Vadot enum: 2060e8011faSEmmanuel Vadot - qcom,sa8775p-pcie-ep 2070e8011faSEmmanuel Vadot then: 2080e8011faSEmmanuel Vadot properties: 2090e8011faSEmmanuel Vadot reg: 2100e8011faSEmmanuel Vadot minItems: 7 2110e8011faSEmmanuel Vadot maxItems: 7 2120e8011faSEmmanuel Vadot reg-names: 2130e8011faSEmmanuel Vadot minItems: 7 2140e8011faSEmmanuel Vadot maxItems: 7 2150e8011faSEmmanuel Vadot clocks: 2160e8011faSEmmanuel Vadot items: 2170e8011faSEmmanuel Vadot - description: PCIe Auxiliary clock 2180e8011faSEmmanuel Vadot - description: PCIe CFG AHB clock 2190e8011faSEmmanuel Vadot - description: PCIe Master AXI clock 2200e8011faSEmmanuel Vadot - description: PCIe Slave AXI clock 2210e8011faSEmmanuel Vadot - description: PCIe Slave Q2A AXI clock 2220e8011faSEmmanuel Vadot clock-names: 2230e8011faSEmmanuel Vadot items: 2240e8011faSEmmanuel Vadot - const: aux 2250e8011faSEmmanuel Vadot - const: cfg 2260e8011faSEmmanuel Vadot - const: bus_master 2270e8011faSEmmanuel Vadot - const: bus_slave 2280e8011faSEmmanuel Vadot - const: slave_q2a 2290e8011faSEmmanuel Vadot interrupts: 2300e8011faSEmmanuel Vadot minItems: 3 2310e8011faSEmmanuel Vadot maxItems: 3 2320e8011faSEmmanuel Vadot interrupt-names: 2330e8011faSEmmanuel Vadot minItems: 3 2340e8011faSEmmanuel Vadot maxItems: 3 2357ef62cebSEmmanuel Vadot 2368cc087a1SEmmanuel VadotunevaluatedProperties: false 2378cc087a1SEmmanuel Vadot 2388cc087a1SEmmanuel Vadotexamples: 2398cc087a1SEmmanuel Vadot - | 2408cc087a1SEmmanuel Vadot #include <dt-bindings/clock/qcom,gcc-sdx55.h> 2418cc087a1SEmmanuel Vadot #include <dt-bindings/gpio/gpio.h> 242aa1a8ff2SEmmanuel Vadot #include <dt-bindings/interconnect/qcom,sdx55.h> 2438cc087a1SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 244aa1a8ff2SEmmanuel Vadot 245fac71e4eSEmmanuel Vadot pcie_ep: pcie-ep@1c00000 { 2468cc087a1SEmmanuel Vadot compatible = "qcom,sdx55-pcie-ep"; 2478cc087a1SEmmanuel Vadot reg = <0x01c00000 0x3000>, 2488cc087a1SEmmanuel Vadot <0x40000000 0xf1d>, 2498cc087a1SEmmanuel Vadot <0x40000f20 0xc8>, 2508cc087a1SEmmanuel Vadot <0x40001000 0x1000>, 2518cc087a1SEmmanuel Vadot <0x40002000 0x1000>, 2528cc087a1SEmmanuel Vadot <0x01c03000 0x3000>; 2538cc087a1SEmmanuel Vadot reg-names = "parf", "dbi", "elbi", "atu", "addr_space", 2548cc087a1SEmmanuel Vadot "mmio"; 2558cc087a1SEmmanuel Vadot 2568cc087a1SEmmanuel Vadot clocks = <&gcc GCC_PCIE_AUX_CLK>, 2578cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_CFG_AHB_CLK>, 2588cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_MSTR_AXI_CLK>, 2598cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_SLV_AXI_CLK>, 2608cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_SLV_Q2A_AXI_CLK>, 2618cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_SLEEP_CLK>, 2628cc087a1SEmmanuel Vadot <&gcc GCC_PCIE_0_CLKREF_CLK>; 2638cc087a1SEmmanuel Vadot clock-names = "aux", "cfg", "bus_master", "bus_slave", 2648cc087a1SEmmanuel Vadot "slave_q2a", "sleep", "ref"; 2658cc087a1SEmmanuel Vadot 2668cc087a1SEmmanuel Vadot qcom,perst-regs = <&tcsr 0xb258 0xb270>; 2678cc087a1SEmmanuel Vadot 2688cc087a1SEmmanuel Vadot interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, 2698cc087a1SEmmanuel Vadot <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; 2708cc087a1SEmmanuel Vadot interrupt-names = "global", "doorbell"; 271aa1a8ff2SEmmanuel Vadot interconnects = <&system_noc MASTER_PCIE &mc_virt SLAVE_EBI_CH0>, 272aa1a8ff2SEmmanuel Vadot <&mem_noc MASTER_AMPSS_M0 &system_noc SLAVE_PCIE_0>; 273aa1a8ff2SEmmanuel Vadot interconnect-names = "pcie-mem", "cpu-pcie"; 2748cc087a1SEmmanuel Vadot reset-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; 2758cc087a1SEmmanuel Vadot wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; 2768cc087a1SEmmanuel Vadot resets = <&gcc GCC_PCIE_BCR>; 2778cc087a1SEmmanuel Vadot reset-names = "core"; 2788cc087a1SEmmanuel Vadot power-domains = <&gcc PCIE_GDSC>; 2798cc087a1SEmmanuel Vadot phys = <&pcie0_lane>; 2808cc087a1SEmmanuel Vadot phy-names = "pciephy"; 2818cc087a1SEmmanuel Vadot max-link-speed = <3>; 2828cc087a1SEmmanuel Vadot num-lanes = <2>; 283*b2d2a78aSEmmanuel Vadot linux,pci-domain = <0>; 2848cc087a1SEmmanuel Vadot }; 285