xref: /freebsd-src/sys/contrib/device-tree/Bindings/pci/qcom,pcie-ep.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
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