summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/pci/xilinx-versal-cpm.yaml
blob: 4734be456bde6c6c4b2c567e0ac6ccc7d518e6cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pci/xilinx-versal-cpm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: CPM Host Controller device tree for Xilinx Versal SoCs

maintainers:
  - Bharat Kumar Gogada <bharat.kumar.gogada@amd.com>

allOf:
  - $ref: /schemas/pci/pci-bus.yaml#

properties:
  compatible:
    enum:
      - xlnx,versal-cpm-host-1.00
      - xlnx,versal-cpm5-host

  reg:
    items:
      - description: CPM system level control and status registers.
      - description: Configuration space region and bridge registers.
      - description: CPM5 control and status registers.
    minItems: 2

  reg-names:
    items:
      - const: cpm_slcr
      - const: cfg
      - const: cpm_csr
    minItems: 2

  interrupts:
    maxItems: 1

  msi-map:
    description:
      Maps a Requester ID to an MSI controller and associated MSI sideband data.

  ranges:
    maxItems: 2

  "#interrupt-cells":
    const: 1

  interrupt-controller:
    description: Interrupt controller node for handling legacy PCI interrupts.
    type: object
    properties:
      "#address-cells":
        const: 0
      "#interrupt-cells":
        const: 1
      "interrupt-controller": true
    additionalProperties: false

required:
  - reg
  - reg-names
  - "#interrupt-cells"
  - interrupts
  - interrupt-map
  - interrupt-map-mask
  - bus-range
  - msi-map
  - interrupt-controller

unevaluatedProperties: false

examples:
  - |

    versal {
               #address-cells = <2>;
               #size-cells = <2>;
               cpm_pcie: pcie@fca10000 {
                       compatible = "xlnx,versal-cpm-host-1.00";
                       device_type = "pci";
                       #address-cells = <3>;
                       #interrupt-cells = <1>;
                       #size-cells = <2>;
                       interrupts = <0 72 4>;
                       interrupt-parent = <&gic>;
                       interrupt-map-mask = <0 0 0 7>;
                       interrupt-map = <0 0 0 1 &pcie_intc_0 0>,
                                       <0 0 0 2 &pcie_intc_0 1>,
                                       <0 0 0 3 &pcie_intc_0 2>,
                                       <0 0 0 4 &pcie_intc_0 3>;
                       bus-range = <0x00 0xff>;
                       ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>,
                                <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
                       msi-map = <0x0 &its_gic 0x0 0x10000>;
                       reg = <0x0 0xfca10000 0x0 0x1000>,
                             <0x6 0x00000000 0x0 0x10000000>;
                       reg-names = "cpm_slcr", "cfg";
                       pcie_intc_0: interrupt-controller {
                               #address-cells = <0>;
                               #interrupt-cells = <1>;
                               interrupt-controller;
                       };
               };

               cpm5_pcie: pcie@fcdd0000 {
                       compatible = "xlnx,versal-cpm5-host";
                       device_type = "pci";
                       #address-cells = <3>;
                       #interrupt-cells = <1>;
                       #size-cells = <2>;
                       interrupts = <0 72 4>;
                       interrupt-parent = <&gic>;
                       interrupt-map-mask = <0 0 0 7>;
                       interrupt-map = <0 0 0 1 &pcie_intc_1 0>,
                                       <0 0 0 2 &pcie_intc_1 1>,
                                       <0 0 0 3 &pcie_intc_1 2>,
                                       <0 0 0 4 &pcie_intc_1 3>;
                       bus-range = <0x00 0xff>;
                       ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>,
                                <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
                       msi-map = <0x0 &its_gic 0x0 0x10000>;
                       reg = <0x00 0xfcdd0000 0x00 0x1000>,
                             <0x06 0x00000000 0x00 0x1000000>,
                             <0x00 0xfce20000 0x00 0x1000000>;
                       reg-names = "cpm_slcr", "cfg", "cpm_csr";

                       pcie_intc_1: interrupt-controller {
                               #address-cells = <0>;
                               #interrupt-cells = <1>;
                               interrupt-controller;
                       };
               };

    };