xref: /linux/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml (revision 36ec807b627b4c0a0a382f0ae48eac7187d14b2b)
1905b986dSFlorian Fainelli# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2905b986dSFlorian Fainelli%YAML 1.2
3905b986dSFlorian Fainelli---
4905b986dSFlorian Fainelli$id: http://devicetree.org/schemas/pci/brcm,iproc-pcie.yaml#
5905b986dSFlorian Fainelli$schema: http://devicetree.org/meta-schemas/core.yaml#
6905b986dSFlorian Fainelli
7905b986dSFlorian Fainellititle: Broadcom iProc PCIe controller with the platform bus interface
8905b986dSFlorian Fainelli
9905b986dSFlorian Fainellimaintainers:
10905b986dSFlorian Fainelli  - Ray Jui <ray.jui@broadcom.com>
11905b986dSFlorian Fainelli  - Scott Branden <scott.branden@broadcom.com>
12905b986dSFlorian Fainelli
13905b986dSFlorian FainelliallOf:
14*5db62b7dSKrzysztof Kozlowski  - $ref: /schemas/pci/pci-host-bridge.yaml#
15905b986dSFlorian Fainelli
16905b986dSFlorian Fainelliproperties:
17905b986dSFlorian Fainelli  compatible:
18905b986dSFlorian Fainelli    items:
19905b986dSFlorian Fainelli      - enum:
20905b986dSFlorian Fainelli          # for the first generation of PAXB based controller, used in SoCs
21905b986dSFlorian Fainelli          # including NSP, Cygnus, NS2, and Pegasus
22905b986dSFlorian Fainelli          - brcm,iproc-pcie
23905b986dSFlorian Fainelli          # for the second generation of PAXB-based controllers, used in
24905b986dSFlorian Fainelli          # Stingray
25905b986dSFlorian Fainelli          - brcm,iproc-pcie-paxb-v2
26905b986dSFlorian Fainelli          # For the first generation of PAXC based controller, used in NS2
27905b986dSFlorian Fainelli          - brcm,iproc-pcie-paxc
28905b986dSFlorian Fainelli          # For the second generation of PAXC based controller, used in Stingray
29905b986dSFlorian Fainelli          - brcm,iproc-pcie-paxc-v2
30905b986dSFlorian Fainelli
31905b986dSFlorian Fainelli  reg:
32905b986dSFlorian Fainelli    maxItems: 1
33905b986dSFlorian Fainelli    description: >
34905b986dSFlorian Fainelli       Base address and length of the PCIe controller I/O register space
35905b986dSFlorian Fainelli
36905b986dSFlorian Fainelli  ranges:
37905b986dSFlorian Fainelli    minItems: 1
38905b986dSFlorian Fainelli    maxItems: 2
39905b986dSFlorian Fainelli    description: >
40905b986dSFlorian Fainelli      Ranges for the PCI memory and I/O regions
41905b986dSFlorian Fainelli
42905b986dSFlorian Fainelli  phys:
43905b986dSFlorian Fainelli    maxItems: 1
44905b986dSFlorian Fainelli
45905b986dSFlorian Fainelli  phy-names:
46905b986dSFlorian Fainelli    items:
47905b986dSFlorian Fainelli      - const: pcie-phy
48905b986dSFlorian Fainelli
49905b986dSFlorian Fainelli  dma-coherent: true
50905b986dSFlorian Fainelli
51905b986dSFlorian Fainelli  brcm,pcie-ob:
52905b986dSFlorian Fainelli    type: boolean
53905b986dSFlorian Fainelli    description: >
54905b986dSFlorian Fainelli      Some iProc SoCs do not have the outbound address mapping done by the
55905b986dSFlorian Fainelli      ASIC after power on reset. In this case, SW needs to configure it
56905b986dSFlorian Fainelli
57905b986dSFlorian Fainelli  brcm,pcie-ob-axi-offset:
58905b986dSFlorian Fainelli    $ref: /schemas/types.yaml#/definitions/uint32
59905b986dSFlorian Fainelli    description: >
60905b986dSFlorian Fainelli       The offset from the AXI address to the internal address used by the
61905b986dSFlorian Fainelli       iProc PCIe core (not the PCIe address)
62905b986dSFlorian Fainelli
63905b986dSFlorian Fainelli  msi:
64905b986dSFlorian Fainelli    type: object
65d6e201f8SRob Herring    $ref: /schemas/interrupt-controller/msi-controller.yaml#
66d6e201f8SRob Herring    unevaluatedProperties: false
67d6e201f8SRob Herring
68905b986dSFlorian Fainelli    properties:
69905b986dSFlorian Fainelli      compatible:
70905b986dSFlorian Fainelli        items:
71905b986dSFlorian Fainelli          - const: brcm,iproc-msi
72905b986dSFlorian Fainelli
73d6e201f8SRob Herring      interrupts:
74d6e201f8SRob Herring        maxItems: 4
75905b986dSFlorian Fainelli
76905b986dSFlorian Fainelli      brcm,pcie-msi-inten:
77905b986dSFlorian Fainelli        type: boolean
78d6e201f8SRob Herring        description:
79905b986dSFlorian Fainelli          Needs to be present for some older iProc platforms that require the
80905b986dSFlorian Fainelli          interrupt enable registers to be set explicitly to enable MSI
81905b986dSFlorian Fainelli
82d6e201f8SRob Herring  msi-parent: true
83d6e201f8SRob Herring
84905b986dSFlorian Fainellidependencies:
85905b986dSFlorian Fainelli  brcm,pcie-ob-axi-offset: ["brcm,pcie-ob"]
86905b986dSFlorian Fainelli  brcm,pcie-msi-inten: [msi-controller]
87905b986dSFlorian Fainelli
88905b986dSFlorian Fainellirequired:
89905b986dSFlorian Fainelli  - compatible
90905b986dSFlorian Fainelli  - reg
91905b986dSFlorian Fainelli  - ranges
92905b986dSFlorian Fainelli
93905b986dSFlorian Fainelliif:
94905b986dSFlorian Fainelli  properties:
95905b986dSFlorian Fainelli    compatible:
96905b986dSFlorian Fainelli      contains:
97905b986dSFlorian Fainelli        enum:
98905b986dSFlorian Fainelli          - brcm,iproc-pcie
99905b986dSFlorian Fainellithen:
100905b986dSFlorian Fainelli  required:
101905b986dSFlorian Fainelli    - interrupt-map
102905b986dSFlorian Fainelli    - interrupt-map-mask
103905b986dSFlorian Fainelli
104905b986dSFlorian FainelliunevaluatedProperties: false
105905b986dSFlorian Fainelli
106905b986dSFlorian Fainelliexamples:
107905b986dSFlorian Fainelli  - |
108905b986dSFlorian Fainelli    #include <dt-bindings/interrupt-controller/arm-gic.h>
109905b986dSFlorian Fainelli
110d6e201f8SRob Herring    gic: interrupt-controller {
111d6e201f8SRob Herring        interrupt-controller;
112d6e201f8SRob Herring        #interrupt-cells = <3>;
113d6e201f8SRob Herring    };
114d6e201f8SRob Herring
1154ef718d6SRob Herring    pcie@18012000 {
116905b986dSFlorian Fainelli        compatible = "brcm,iproc-pcie";
117905b986dSFlorian Fainelli        reg = <0x18012000 0x1000>;
118905b986dSFlorian Fainelli
119905b986dSFlorian Fainelli        #interrupt-cells = <1>;
120905b986dSFlorian Fainelli        interrupt-map-mask = <0 0 0 0>;
121905b986dSFlorian Fainelli        interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_NONE>;
122905b986dSFlorian Fainelli
123905b986dSFlorian Fainelli        linux,pci-domain = <0>;
124905b986dSFlorian Fainelli
125905b986dSFlorian Fainelli        bus-range = <0x00 0xff>;
126905b986dSFlorian Fainelli
127905b986dSFlorian Fainelli        #address-cells = <3>;
128905b986dSFlorian Fainelli        #size-cells = <2>;
129905b986dSFlorian Fainelli        device_type = "pci";
130905b986dSFlorian Fainelli        ranges = <0x81000000 0          0 0x28000000 0 0x00010000>,
131905b986dSFlorian Fainelli                 <0x82000000 0 0x20000000 0x20000000 0 0x04000000>;
132905b986dSFlorian Fainelli
133905b986dSFlorian Fainelli        phys = <&phy 0 5>;
134905b986dSFlorian Fainelli        phy-names = "pcie-phy";
135905b986dSFlorian Fainelli
136905b986dSFlorian Fainelli        brcm,pcie-ob;
137905b986dSFlorian Fainelli        brcm,pcie-ob-axi-offset = <0x00000000>;
138905b986dSFlorian Fainelli
139905b986dSFlorian Fainelli        msi-parent = <&msi0>;
140905b986dSFlorian Fainelli
141905b986dSFlorian Fainelli        /* iProc event queue based MSI */
142905b986dSFlorian Fainelli        msi0: msi {
143905b986dSFlorian Fainelli            compatible = "brcm,iproc-msi";
144905b986dSFlorian Fainelli            msi-controller;
145905b986dSFlorian Fainelli            interrupt-parent = <&gic>;
146905b986dSFlorian Fainelli            interrupts = <GIC_SPI 96 IRQ_TYPE_NONE>,
147905b986dSFlorian Fainelli                    <GIC_SPI 97 IRQ_TYPE_NONE>,
148905b986dSFlorian Fainelli                    <GIC_SPI 98 IRQ_TYPE_NONE>,
149905b986dSFlorian Fainelli                    <GIC_SPI 99 IRQ_TYPE_NONE>;
150905b986dSFlorian Fainelli        };
151905b986dSFlorian Fainelli    };
1524ef718d6SRob Herring  - |
1534ef718d6SRob Herring    pcie@18013000 {
154905b986dSFlorian Fainelli        compatible = "brcm,iproc-pcie";
155905b986dSFlorian Fainelli        reg = <0x18013000 0x1000>;
156905b986dSFlorian Fainelli
157905b986dSFlorian Fainelli        #interrupt-cells = <1>;
158905b986dSFlorian Fainelli        interrupt-map-mask = <0 0 0 0>;
159905b986dSFlorian Fainelli        interrupt-map = <0 0 0 0 &gic GIC_SPI 106 IRQ_TYPE_NONE>;
160905b986dSFlorian Fainelli
161905b986dSFlorian Fainelli        linux,pci-domain = <1>;
162905b986dSFlorian Fainelli
163905b986dSFlorian Fainelli        bus-range = <0x00 0xff>;
164905b986dSFlorian Fainelli
165905b986dSFlorian Fainelli        #address-cells = <3>;
166905b986dSFlorian Fainelli        #size-cells = <2>;
167905b986dSFlorian Fainelli        device_type = "pci";
168905b986dSFlorian Fainelli        ranges = <0x81000000 0          0 0x48000000 0 0x00010000>,
169905b986dSFlorian Fainelli                 <0x82000000 0 0x40000000 0x40000000 0 0x04000000>;
170905b986dSFlorian Fainelli
171905b986dSFlorian Fainelli        phys = <&phy 1 6>;
172905b986dSFlorian Fainelli        phy-names = "pcie-phy";
173905b986dSFlorian Fainelli    };
174