^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) * Synopsys DesignWare PCIe interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) - compatible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) "snps,dw-pcie" for RC mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) "snps,dw-pcie-ep" for EP mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - reg: For designware cores version < 4.80 contains the configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) address space. For designware core version >= 4.80, contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) the configuration and ATU address space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - reg-names: Must be "config" for the PCIe configuration space and "atu" for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) the ATU address space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) (The old way of getting the configuration address space from "ranges"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) is deprecated and should be avoided.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) RC mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) - #address-cells: set to <3>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) - #size-cells: set to <2>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) - device_type: set to "pci"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - ranges: ranges for the PCI memory and I/O regions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) - #interrupt-cells: set to <1>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - interrupt-map-mask and interrupt-map: standard PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) properties to define the mapping of the PCIe interface to interrupt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) numbers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) EP mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - num-ib-windows: number of inbound address translation windows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - num-ob-windows: number of outbound address translation windows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - num-lanes: number of lanes to use (this property should be specified unless
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) the link is brought already up in BIOS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - reset-gpio: GPIO pin number of power good signal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) - clocks: Must contain an entry for each entry in clock-names.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) See ../clocks/clock-bindings.txt for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) - clock-names: Must include the following entries:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) - "pcie"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) - "pcie_bus"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - snps,enable-cdm-check: This is a boolean property and if present enables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) automatic checking of CDM (Configuration Dependent Module) registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) for data corruption. CDM registers include standard PCIe configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) space registers, Port Logic registers, DMA and iATU (internal Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Translation Unit) registers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) RC mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - num-viewport: number of view ports configured in hardware. If a platform
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) does not specify it, the driver assumes 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) - bus-range: PCI bus numbers covered (it is recommended for new devicetrees
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) to specify this property, to keep backwards compatibility a range of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 0x00-0xff is assumed if not present)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) EP mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) - max-functions: maximum number of functions that can be configured
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) Example configuration:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) pcie: pcie@dfc00000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) compatible = "snps,dw-pcie";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) reg = <0xdfc00000 0x0001000>, /* IP registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) <0xd0000000 0x0002000>; /* Configuration space */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) reg-names = "dbi", "config";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #address-cells = <3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #size-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) device_type = "pci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ranges = <0x81000000 0 0x00000000 0xde000000 0 0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 0x82000000 0 0xd0400000 0xd0400000 0 0x0d000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) interrupts = <25>, <24>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #interrupt-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) num-lanes = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) pcie: pcie@dfc00000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) compatible = "snps,dw-pcie-ep";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) reg = <0xdfc00000 0x0001000>, /* IP registers 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) <0xdfc01000 0x0001000>, /* IP registers 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) <0xd0000000 0x2000000>; /* Configuration space */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) reg-names = "dbi", "dbi2", "addr_space";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) num-ib-windows = <6>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) num-ob-windows = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) num-lanes = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) };