| # 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 <fancer.lancer@gmail.com> |
| |
| 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 <dt-bindings/interrupt-controller/mips-gic.h> |
| #include <dt-bindings/gpio/gpio.h> |
| |
| 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 = <GIC_SHARED 80 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 81 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 82 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 83 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 84 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 85 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 86 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 87 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 88 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 89 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 90 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 91 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 92 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SHARED 93 IRQ_TYPE_LEVEL_HIGH>; |
| 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>; |
| }; |
| ... |