# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/pci/baikal,bt1-pcie.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Baikal-T1 PCIe Root Port Controller maintainers: - Serge Semin description: Embedded into Baikal-T1 SoC Root Complex controller with a single port activated. It's based on the DWC RC PCIe v4.60a IP-core, which is configured to have just a single Root Port function and is capable of establishing the link up to Gen.3 speed on x4 lanes. It doesn't have embedded clock and reset control module, so the proper interface initialization is supposed to be performed by software. There four in- and four outbound iATU regions which can be used to emit all required TLP types on the PCIe bus. allOf: - $ref: /schemas/pci/snps,dw-pcie.yaml# properties: compatible: const: baikal,bt1-pcie reg: description: DBI, DBI2 and at least 4KB outbound iATU-capable region for the peripheral devices CFG-space access. maxItems: 3 reg-names: items: - const: dbi - const: dbi2 - const: config interrupts: description: MSI, AER, PME, Hot-plug, Link Bandwidth Management, Link Equalization request and eight Read/Write eDMA IRQ lines are available. maxItems: 14 interrupt-names: items: - const: dma0 - const: dma1 - const: dma2 - const: dma3 - const: dma4 - const: dma5 - const: dma6 - const: dma7 - const: msi - const: aer - const: pme - const: hp - const: bw_mg - const: l_eq clocks: description: DBI (attached to the APB bus), AXI-bus master and slave interfaces are fed up by the dedicated application clocks. A common reference clock signal is supposed to be attached to the corresponding Ref-pad of the SoC. It will be redistributed amongst the controller core sub-modules (pipe, core, aux, etc). maxItems: 4 clock-names: items: - const: dbi - const: mstr - const: slv - const: ref resets: description: A comprehensive controller reset logic is supposed to be implemented by software, so almost all the possible application and core reset signals are exposed via the system CCU module. maxItems: 9 reset-names: items: - const: mstr - const: slv - const: pwr - const: hot - const: phy - const: core - const: pipe - const: sticky - const: non-sticky baikal,bt1-syscon: $ref: /schemas/types.yaml#/definitions/phandle description: Phandle to the Baikal-T1 System Controller DT node. It's required to access some additional PM, Reset-related and LTSSM signals. num-lanes: maximum: 4 max-link-speed: maximum: 3 required: - compatible - reg - reg-names - interrupts - interrupt-names unevaluatedProperties: false examples: - | #include #include pcie@1f052000 { compatible = "baikal,bt1-pcie"; device_type = "pci"; reg = <0x1f052000 0x1000>, <0x1f053000 0x1000>, <0x1bdbf000 0x1000>; reg-names = "dbi", "dbi2", "config"; #address-cells = <3>; #size-cells = <2>; ranges = <0x81000000 0 0x00000000 0x1bdb0000 0 0x00008000>, <0x82000000 0 0x20000000 0x08000000 0 0x13db0000>; bus-range = <0x0 0xff>; interrupts = , , , , , , , , , , , , , ; interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "msi", "aer", "pme", "hp", "bw_mg", "l_eq"; clocks = <&ccu_sys 1>, <&ccu_axi 6>, <&ccu_axi 7>, <&clk_pcie>; clock-names = "dbi", "mstr", "slv", "ref"; resets = <&ccu_axi 6>, <&ccu_axi 7>, <&ccu_sys 7>, <&ccu_sys 10>, <&ccu_sys 4>, <&ccu_sys 6>, <&ccu_sys 5>, <&ccu_sys 8>, <&ccu_sys 9>; reset-names = "mstr", "slv", "pwr", "hot", "phy", "core", "pipe", "sticky", "non-sticky"; reset-gpios = <&port0 0 GPIO_ACTIVE_LOW>; num-lanes = <4>; max-link-speed = <3>; }; ...