Documentation / devicetree / bindings / pci / xilinx-versal-cpm.yaml


Based on kernel version 6.10. Page generated on 2024-07-16 09:00 EST.

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 135 136 137
# 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-host-bridge.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
    additionalProperties: false

    properties:
      "#address-cells":
        const: 0
 
      "#interrupt-cells":
        const: 1

      interrupt-controller: true

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;
                       };
               };
 
    };