xref: /freebsd/sys/contrib/device-tree/Bindings/pci/starfive,jh7110-pcie.yaml (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1*0e8011faSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*0e8011faSEmmanuel Vadot%YAML 1.2
3*0e8011faSEmmanuel Vadot---
4*0e8011faSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/starfive,jh7110-pcie.yaml#
5*0e8011faSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*0e8011faSEmmanuel Vadot
7*0e8011faSEmmanuel Vadottitle: StarFive JH7110 PCIe host controller
8*0e8011faSEmmanuel Vadot
9*0e8011faSEmmanuel Vadotmaintainers:
10*0e8011faSEmmanuel Vadot  - Kevin Xie <kevin.xie@starfivetech.com>
11*0e8011faSEmmanuel Vadot
12*0e8011faSEmmanuel VadotallOf:
13*0e8011faSEmmanuel Vadot  - $ref: plda,xpressrich3-axi-common.yaml#
14*0e8011faSEmmanuel Vadot
15*0e8011faSEmmanuel Vadotproperties:
16*0e8011faSEmmanuel Vadot  compatible:
17*0e8011faSEmmanuel Vadot    const: starfive,jh7110-pcie
18*0e8011faSEmmanuel Vadot
19*0e8011faSEmmanuel Vadot  clocks:
20*0e8011faSEmmanuel Vadot    items:
21*0e8011faSEmmanuel Vadot      - description: NOC bus clock
22*0e8011faSEmmanuel Vadot      - description: Transport layer clock
23*0e8011faSEmmanuel Vadot      - description: AXI MST0 clock
24*0e8011faSEmmanuel Vadot      - description: APB clock
25*0e8011faSEmmanuel Vadot
26*0e8011faSEmmanuel Vadot  clock-names:
27*0e8011faSEmmanuel Vadot    items:
28*0e8011faSEmmanuel Vadot      - const: noc
29*0e8011faSEmmanuel Vadot      - const: tl
30*0e8011faSEmmanuel Vadot      - const: axi_mst0
31*0e8011faSEmmanuel Vadot      - const: apb
32*0e8011faSEmmanuel Vadot
33*0e8011faSEmmanuel Vadot  resets:
34*0e8011faSEmmanuel Vadot    items:
35*0e8011faSEmmanuel Vadot      - description: AXI MST0 reset
36*0e8011faSEmmanuel Vadot      - description: AXI SLAVE0 reset
37*0e8011faSEmmanuel Vadot      - description: AXI SLAVE reset
38*0e8011faSEmmanuel Vadot      - description: PCIE BRIDGE reset
39*0e8011faSEmmanuel Vadot      - description: PCIE CORE reset
40*0e8011faSEmmanuel Vadot      - description: PCIE APB reset
41*0e8011faSEmmanuel Vadot
42*0e8011faSEmmanuel Vadot  reset-names:
43*0e8011faSEmmanuel Vadot    items:
44*0e8011faSEmmanuel Vadot      - const: mst0
45*0e8011faSEmmanuel Vadot      - const: slv0
46*0e8011faSEmmanuel Vadot      - const: slv
47*0e8011faSEmmanuel Vadot      - const: brg
48*0e8011faSEmmanuel Vadot      - const: core
49*0e8011faSEmmanuel Vadot      - const: apb
50*0e8011faSEmmanuel Vadot
51*0e8011faSEmmanuel Vadot  starfive,stg-syscon:
52*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
53*0e8011faSEmmanuel Vadot    description:
54*0e8011faSEmmanuel Vadot      The phandle to System Register Controller syscon node.
55*0e8011faSEmmanuel Vadot
56*0e8011faSEmmanuel Vadot  perst-gpios:
57*0e8011faSEmmanuel Vadot    description: GPIO controlled connection to PERST# signal
58*0e8011faSEmmanuel Vadot    maxItems: 1
59*0e8011faSEmmanuel Vadot
60*0e8011faSEmmanuel Vadot  phys:
61*0e8011faSEmmanuel Vadot    description:
62*0e8011faSEmmanuel Vadot      Specified PHY is attached to PCIe controller.
63*0e8011faSEmmanuel Vadot    maxItems: 1
64*0e8011faSEmmanuel Vadot
65*0e8011faSEmmanuel Vadotrequired:
66*0e8011faSEmmanuel Vadot  - clocks
67*0e8011faSEmmanuel Vadot  - resets
68*0e8011faSEmmanuel Vadot  - starfive,stg-syscon
69*0e8011faSEmmanuel Vadot
70*0e8011faSEmmanuel VadotunevaluatedProperties: false
71*0e8011faSEmmanuel Vadot
72*0e8011faSEmmanuel Vadotexamples:
73*0e8011faSEmmanuel Vadot  - |
74*0e8011faSEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
75*0e8011faSEmmanuel Vadot    soc {
76*0e8011faSEmmanuel Vadot        #address-cells = <2>;
77*0e8011faSEmmanuel Vadot        #size-cells = <2>;
78*0e8011faSEmmanuel Vadot
79*0e8011faSEmmanuel Vadot        pcie@940000000 {
80*0e8011faSEmmanuel Vadot            compatible = "starfive,jh7110-pcie";
81*0e8011faSEmmanuel Vadot            reg = <0x9 0x40000000 0x0 0x10000000>,
82*0e8011faSEmmanuel Vadot                  <0x0 0x2b000000 0x0 0x1000000>;
83*0e8011faSEmmanuel Vadot            reg-names = "cfg", "apb";
84*0e8011faSEmmanuel Vadot            #address-cells = <3>;
85*0e8011faSEmmanuel Vadot            #size-cells = <2>;
86*0e8011faSEmmanuel Vadot            #interrupt-cells = <1>;
87*0e8011faSEmmanuel Vadot            device_type = "pci";
88*0e8011faSEmmanuel Vadot            ranges = <0x82000000  0x0 0x30000000  0x0 0x30000000 0x0 0x08000000>,
89*0e8011faSEmmanuel Vadot                     <0xc3000000  0x9 0x00000000  0x9 0x00000000 0x0 0x40000000>;
90*0e8011faSEmmanuel Vadot            starfive,stg-syscon = <&stg_syscon>;
91*0e8011faSEmmanuel Vadot            bus-range = <0x0 0xff>;
92*0e8011faSEmmanuel Vadot            interrupt-parent = <&plic>;
93*0e8011faSEmmanuel Vadot            interrupts = <56>;
94*0e8011faSEmmanuel Vadot            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
95*0e8011faSEmmanuel Vadot            interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc0 0x1>,
96*0e8011faSEmmanuel Vadot                            <0x0 0x0 0x0 0x2 &pcie_intc0 0x2>,
97*0e8011faSEmmanuel Vadot                            <0x0 0x0 0x0 0x3 &pcie_intc0 0x3>,
98*0e8011faSEmmanuel Vadot                            <0x0 0x0 0x0 0x4 &pcie_intc0 0x4>;
99*0e8011faSEmmanuel Vadot            msi-controller;
100*0e8011faSEmmanuel Vadot            clocks = <&syscrg 86>,
101*0e8011faSEmmanuel Vadot                     <&stgcrg 10>,
102*0e8011faSEmmanuel Vadot                     <&stgcrg 8>,
103*0e8011faSEmmanuel Vadot                     <&stgcrg 9>;
104*0e8011faSEmmanuel Vadot            clock-names = "noc", "tl", "axi_mst0", "apb";
105*0e8011faSEmmanuel Vadot            resets = <&stgcrg 11>,
106*0e8011faSEmmanuel Vadot                     <&stgcrg 12>,
107*0e8011faSEmmanuel Vadot                     <&stgcrg 13>,
108*0e8011faSEmmanuel Vadot                     <&stgcrg 14>,
109*0e8011faSEmmanuel Vadot                     <&stgcrg 15>,
110*0e8011faSEmmanuel Vadot                     <&stgcrg 16>;
111*0e8011faSEmmanuel Vadot            perst-gpios = <&gpios 26 GPIO_ACTIVE_LOW>;
112*0e8011faSEmmanuel Vadot            phys = <&pciephy0>;
113*0e8011faSEmmanuel Vadot
114*0e8011faSEmmanuel Vadot            pcie_intc0: interrupt-controller {
115*0e8011faSEmmanuel Vadot                #address-cells = <0>;
116*0e8011faSEmmanuel Vadot                #interrupt-cells = <1>;
117*0e8011faSEmmanuel Vadot                interrupt-controller;
118*0e8011faSEmmanuel Vadot            };
119*0e8011faSEmmanuel Vadot        };
120*0e8011faSEmmanuel Vadot    };
121