xref: /freebsd/sys/contrib/device-tree/Bindings/pci/sifive,fu740-pcie.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
12eb4d8dcSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
22eb4d8dcSEmmanuel Vadot%YAML 1.2
32eb4d8dcSEmmanuel Vadot---
42eb4d8dcSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/sifive,fu740-pcie.yaml#
52eb4d8dcSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
62eb4d8dcSEmmanuel Vadot
72eb4d8dcSEmmanuel Vadottitle: SiFive FU740 PCIe host controller
82eb4d8dcSEmmanuel Vadot
92eb4d8dcSEmmanuel Vadotdescription: |+
102eb4d8dcSEmmanuel Vadot  SiFive FU740 PCIe host controller is based on the Synopsys DesignWare
112eb4d8dcSEmmanuel Vadot  PCI core. It shares common features with the PCIe DesignWare core and
122eb4d8dcSEmmanuel Vadot  inherits common properties defined in
13354d7675SEmmanuel Vadot  Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml.
142eb4d8dcSEmmanuel Vadot
152eb4d8dcSEmmanuel Vadotmaintainers:
162eb4d8dcSEmmanuel Vadot  - Paul Walmsley <paul.walmsley@sifive.com>
172eb4d8dcSEmmanuel Vadot  - Greentime Hu <greentime.hu@sifive.com>
182eb4d8dcSEmmanuel Vadot
192eb4d8dcSEmmanuel VadotallOf:
20354d7675SEmmanuel Vadot  - $ref: /schemas/pci/snps,dw-pcie.yaml#
212eb4d8dcSEmmanuel Vadot
222eb4d8dcSEmmanuel Vadotproperties:
232eb4d8dcSEmmanuel Vadot  compatible:
242eb4d8dcSEmmanuel Vadot    const: sifive,fu740-pcie
252eb4d8dcSEmmanuel Vadot
262eb4d8dcSEmmanuel Vadot  reg:
272eb4d8dcSEmmanuel Vadot    maxItems: 3
282eb4d8dcSEmmanuel Vadot
292eb4d8dcSEmmanuel Vadot  reg-names:
302eb4d8dcSEmmanuel Vadot    items:
312eb4d8dcSEmmanuel Vadot      - const: dbi
322eb4d8dcSEmmanuel Vadot      - const: config
332eb4d8dcSEmmanuel Vadot      - const: mgmt
342eb4d8dcSEmmanuel Vadot
35e67e8565SEmmanuel Vadot  dma-coherent: true
36e67e8565SEmmanuel Vadot
372eb4d8dcSEmmanuel Vadot  num-lanes:
382eb4d8dcSEmmanuel Vadot    const: 8
392eb4d8dcSEmmanuel Vadot
402eb4d8dcSEmmanuel Vadot  msi-parent: true
412eb4d8dcSEmmanuel Vadot
422eb4d8dcSEmmanuel Vadot  interrupt-names:
432eb4d8dcSEmmanuel Vadot    items:
442eb4d8dcSEmmanuel Vadot      - const: msi
452eb4d8dcSEmmanuel Vadot      - const: inta
462eb4d8dcSEmmanuel Vadot      - const: intb
472eb4d8dcSEmmanuel Vadot      - const: intc
482eb4d8dcSEmmanuel Vadot      - const: intd
492eb4d8dcSEmmanuel Vadot
502eb4d8dcSEmmanuel Vadot  resets:
512eb4d8dcSEmmanuel Vadot    description: A phandle to the PCIe power up reset line.
522eb4d8dcSEmmanuel Vadot    maxItems: 1
532eb4d8dcSEmmanuel Vadot
54*7ef62cebSEmmanuel Vadot  clocks:
55*7ef62cebSEmmanuel Vadot    maxItems: 1
56*7ef62cebSEmmanuel Vadot
57*7ef62cebSEmmanuel Vadot  clock-names:
58*7ef62cebSEmmanuel Vadot    const: pcie_aux
59*7ef62cebSEmmanuel Vadot
602eb4d8dcSEmmanuel Vadot  pwren-gpios:
612eb4d8dcSEmmanuel Vadot    description: Should specify the GPIO for controlling the PCI bus device power on.
622eb4d8dcSEmmanuel Vadot    maxItems: 1
632eb4d8dcSEmmanuel Vadot
642eb4d8dcSEmmanuel Vadot  reset-gpios:
652eb4d8dcSEmmanuel Vadot    maxItems: 1
662eb4d8dcSEmmanuel Vadot
672eb4d8dcSEmmanuel Vadotrequired:
682eb4d8dcSEmmanuel Vadot  - dma-coherent
692eb4d8dcSEmmanuel Vadot  - num-lanes
702eb4d8dcSEmmanuel Vadot  - interrupts
712eb4d8dcSEmmanuel Vadot  - interrupt-names
722eb4d8dcSEmmanuel Vadot  - interrupt-map-mask
732eb4d8dcSEmmanuel Vadot  - interrupt-map
742eb4d8dcSEmmanuel Vadot  - clocks
75*7ef62cebSEmmanuel Vadot  - clock-names
762eb4d8dcSEmmanuel Vadot  - resets
772eb4d8dcSEmmanuel Vadot  - pwren-gpios
782eb4d8dcSEmmanuel Vadot  - reset-gpios
792eb4d8dcSEmmanuel Vadot
802eb4d8dcSEmmanuel VadotunevaluatedProperties: false
812eb4d8dcSEmmanuel Vadot
822eb4d8dcSEmmanuel Vadotexamples:
832eb4d8dcSEmmanuel Vadot  - |
842eb4d8dcSEmmanuel Vadot    bus {
852eb4d8dcSEmmanuel Vadot        #address-cells = <2>;
862eb4d8dcSEmmanuel Vadot        #size-cells = <2>;
872eb4d8dcSEmmanuel Vadot        #include <dt-bindings/clock/sifive-fu740-prci.h>
882eb4d8dcSEmmanuel Vadot
892eb4d8dcSEmmanuel Vadot        pcie@e00000000 {
902eb4d8dcSEmmanuel Vadot            compatible = "sifive,fu740-pcie";
912eb4d8dcSEmmanuel Vadot            #address-cells = <3>;
922eb4d8dcSEmmanuel Vadot            #size-cells = <2>;
932eb4d8dcSEmmanuel Vadot            #interrupt-cells = <1>;
942eb4d8dcSEmmanuel Vadot            reg = <0xe 0x00000000 0x0 0x80000000>,
952eb4d8dcSEmmanuel Vadot                  <0xd 0xf0000000 0x0 0x10000000>,
962eb4d8dcSEmmanuel Vadot                  <0x0 0x100d0000 0x0 0x1000>;
972eb4d8dcSEmmanuel Vadot            reg-names = "dbi", "config", "mgmt";
982eb4d8dcSEmmanuel Vadot            device_type = "pci";
992eb4d8dcSEmmanuel Vadot            dma-coherent;
1002eb4d8dcSEmmanuel Vadot            bus-range = <0x0 0xff>;
1012eb4d8dcSEmmanuel Vadot            ranges = <0x81000000  0x0 0x60080000  0x0 0x60080000 0x0 0x10000>,      /* I/O */
1022eb4d8dcSEmmanuel Vadot                     <0x82000000  0x0 0x60090000  0x0 0x60090000 0x0 0xff70000>,    /* mem */
1032eb4d8dcSEmmanuel Vadot                     <0x82000000  0x0 0x70000000  0x0 0x70000000 0x0 0x1000000>,    /* mem */
1042eb4d8dcSEmmanuel Vadot                     <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>;  /* mem prefetchable */
1052eb4d8dcSEmmanuel Vadot            num-lanes = <0x8>;
1062eb4d8dcSEmmanuel Vadot            interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
1072eb4d8dcSEmmanuel Vadot            interrupt-names = "msi", "inta", "intb", "intc", "intd";
1082eb4d8dcSEmmanuel Vadot            interrupt-parent = <&plic0>;
1092eb4d8dcSEmmanuel Vadot            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1102eb4d8dcSEmmanuel Vadot            interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
1112eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x2 &plic0 58>,
1122eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x3 &plic0 59>,
1132eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x4 &plic0 60>;
114*7ef62cebSEmmanuel Vadot            clock-names = "pcie_aux";
115c9ccf3a3SEmmanuel Vadot            clocks = <&prci FU740_PRCI_CLK_PCIE_AUX>;
1162eb4d8dcSEmmanuel Vadot            resets = <&prci 4>;
1172eb4d8dcSEmmanuel Vadot            pwren-gpios = <&gpio 5 0>;
1182eb4d8dcSEmmanuel Vadot            reset-gpios = <&gpio 8 0>;
1192eb4d8dcSEmmanuel Vadot        };
1202eb4d8dcSEmmanuel Vadot    };
121