xref: /freebsd/sys/contrib/device-tree/Bindings/pci/sifive,fu740-pcie.yaml (revision e67e85659c0de33e617e5fbf1028c6e8b49eee53)
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
35*e67e8565SEmmanuel Vadot  dma-coherent: true
36*e67e8565SEmmanuel 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
542eb4d8dcSEmmanuel Vadot  pwren-gpios:
552eb4d8dcSEmmanuel Vadot    description: Should specify the GPIO for controlling the PCI bus device power on.
562eb4d8dcSEmmanuel Vadot    maxItems: 1
572eb4d8dcSEmmanuel Vadot
582eb4d8dcSEmmanuel Vadot  reset-gpios:
592eb4d8dcSEmmanuel Vadot    maxItems: 1
602eb4d8dcSEmmanuel Vadot
612eb4d8dcSEmmanuel Vadotrequired:
622eb4d8dcSEmmanuel Vadot  - dma-coherent
632eb4d8dcSEmmanuel Vadot  - num-lanes
642eb4d8dcSEmmanuel Vadot  - interrupts
652eb4d8dcSEmmanuel Vadot  - interrupt-names
662eb4d8dcSEmmanuel Vadot  - interrupt-map-mask
672eb4d8dcSEmmanuel Vadot  - interrupt-map
682eb4d8dcSEmmanuel Vadot  - clocks
692eb4d8dcSEmmanuel Vadot  - resets
702eb4d8dcSEmmanuel Vadot  - pwren-gpios
712eb4d8dcSEmmanuel Vadot  - reset-gpios
722eb4d8dcSEmmanuel Vadot
732eb4d8dcSEmmanuel VadotunevaluatedProperties: false
742eb4d8dcSEmmanuel Vadot
752eb4d8dcSEmmanuel Vadotexamples:
762eb4d8dcSEmmanuel Vadot  - |
772eb4d8dcSEmmanuel Vadot    bus {
782eb4d8dcSEmmanuel Vadot        #address-cells = <2>;
792eb4d8dcSEmmanuel Vadot        #size-cells = <2>;
802eb4d8dcSEmmanuel Vadot        #include <dt-bindings/clock/sifive-fu740-prci.h>
812eb4d8dcSEmmanuel Vadot
822eb4d8dcSEmmanuel Vadot        pcie@e00000000 {
832eb4d8dcSEmmanuel Vadot            compatible = "sifive,fu740-pcie";
842eb4d8dcSEmmanuel Vadot            #address-cells = <3>;
852eb4d8dcSEmmanuel Vadot            #size-cells = <2>;
862eb4d8dcSEmmanuel Vadot            #interrupt-cells = <1>;
872eb4d8dcSEmmanuel Vadot            reg = <0xe 0x00000000 0x0 0x80000000>,
882eb4d8dcSEmmanuel Vadot                  <0xd 0xf0000000 0x0 0x10000000>,
892eb4d8dcSEmmanuel Vadot                  <0x0 0x100d0000 0x0 0x1000>;
902eb4d8dcSEmmanuel Vadot            reg-names = "dbi", "config", "mgmt";
912eb4d8dcSEmmanuel Vadot            device_type = "pci";
922eb4d8dcSEmmanuel Vadot            dma-coherent;
932eb4d8dcSEmmanuel Vadot            bus-range = <0x0 0xff>;
942eb4d8dcSEmmanuel Vadot            ranges = <0x81000000  0x0 0x60080000  0x0 0x60080000 0x0 0x10000>,      /* I/O */
952eb4d8dcSEmmanuel Vadot                     <0x82000000  0x0 0x60090000  0x0 0x60090000 0x0 0xff70000>,    /* mem */
962eb4d8dcSEmmanuel Vadot                     <0x82000000  0x0 0x70000000  0x0 0x70000000 0x0 0x1000000>,    /* mem */
972eb4d8dcSEmmanuel Vadot                     <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>;  /* mem prefetchable */
982eb4d8dcSEmmanuel Vadot            num-lanes = <0x8>;
992eb4d8dcSEmmanuel Vadot            interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
1002eb4d8dcSEmmanuel Vadot            interrupt-names = "msi", "inta", "intb", "intc", "intd";
1012eb4d8dcSEmmanuel Vadot            interrupt-parent = <&plic0>;
1022eb4d8dcSEmmanuel Vadot            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1032eb4d8dcSEmmanuel Vadot            interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
1042eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x2 &plic0 58>,
1052eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x3 &plic0 59>,
1062eb4d8dcSEmmanuel Vadot                            <0x0 0x0 0x0 0x4 &plic0 60>;
1072eb4d8dcSEmmanuel Vadot            clocks = <&prci PRCI_CLK_PCIE_AUX>;
1082eb4d8dcSEmmanuel Vadot            resets = <&prci 4>;
1092eb4d8dcSEmmanuel Vadot            pwren-gpios = <&gpio 5 0>;
1102eb4d8dcSEmmanuel Vadot            reset-gpios = <&gpio 8 0>;
1112eb4d8dcSEmmanuel Vadot        };
1122eb4d8dcSEmmanuel Vadot    };
113