162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pci/baikal,bt1-pcie.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Baikal-T1 PCIe Root Port Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Serge Semin <fancer.lancer@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  Embedded into Baikal-T1 SoC Root Complex controller with a single port
1462306a36Sopenharmony_ci  activated. It's based on the DWC RC PCIe v4.60a IP-core, which is configured
1562306a36Sopenharmony_ci  to have just a single Root Port function and is capable of establishing the
1662306a36Sopenharmony_ci  link up to Gen.3 speed on x4 lanes. It doesn't have embedded clock and reset
1762306a36Sopenharmony_ci  control module, so the proper interface initialization is supposed to be
1862306a36Sopenharmony_ci  performed by software. There four in- and four outbound iATU regions
1962306a36Sopenharmony_ci  which can be used to emit all required TLP types on the PCIe bus.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciallOf:
2262306a36Sopenharmony_ci  - $ref: /schemas/pci/snps,dw-pcie.yaml#
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    const: baikal,bt1-pcie
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  reg:
2962306a36Sopenharmony_ci    description:
3062306a36Sopenharmony_ci      DBI, DBI2 and at least 4KB outbound iATU-capable region for the
3162306a36Sopenharmony_ci      peripheral devices CFG-space access.
3262306a36Sopenharmony_ci    maxItems: 3
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  reg-names:
3562306a36Sopenharmony_ci    items:
3662306a36Sopenharmony_ci      - const: dbi
3762306a36Sopenharmony_ci      - const: dbi2
3862306a36Sopenharmony_ci      - const: config
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  interrupts:
4162306a36Sopenharmony_ci    description:
4262306a36Sopenharmony_ci      MSI, AER, PME, Hot-plug, Link Bandwidth Management, Link Equalization
4362306a36Sopenharmony_ci      request and eight Read/Write eDMA IRQ lines are available.
4462306a36Sopenharmony_ci    maxItems: 14
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  interrupt-names:
4762306a36Sopenharmony_ci    items:
4862306a36Sopenharmony_ci      - const: dma0
4962306a36Sopenharmony_ci      - const: dma1
5062306a36Sopenharmony_ci      - const: dma2
5162306a36Sopenharmony_ci      - const: dma3
5262306a36Sopenharmony_ci      - const: dma4
5362306a36Sopenharmony_ci      - const: dma5
5462306a36Sopenharmony_ci      - const: dma6
5562306a36Sopenharmony_ci      - const: dma7
5662306a36Sopenharmony_ci      - const: msi
5762306a36Sopenharmony_ci      - const: aer
5862306a36Sopenharmony_ci      - const: pme
5962306a36Sopenharmony_ci      - const: hp
6062306a36Sopenharmony_ci      - const: bw_mg
6162306a36Sopenharmony_ci      - const: l_eq
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  clocks:
6462306a36Sopenharmony_ci    description:
6562306a36Sopenharmony_ci      DBI (attached to the APB bus), AXI-bus master and slave interfaces
6662306a36Sopenharmony_ci      are fed up by the dedicated application clocks. A common reference
6762306a36Sopenharmony_ci      clock signal is supposed to be attached to the corresponding Ref-pad
6862306a36Sopenharmony_ci      of the SoC. It will be redistributed amongst the controller core
6962306a36Sopenharmony_ci      sub-modules (pipe, core, aux, etc).
7062306a36Sopenharmony_ci    maxItems: 4
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  clock-names:
7362306a36Sopenharmony_ci    items:
7462306a36Sopenharmony_ci      - const: dbi
7562306a36Sopenharmony_ci      - const: mstr
7662306a36Sopenharmony_ci      - const: slv
7762306a36Sopenharmony_ci      - const: ref
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  resets:
8062306a36Sopenharmony_ci    description:
8162306a36Sopenharmony_ci      A comprehensive controller reset logic is supposed to be implemented
8262306a36Sopenharmony_ci      by software, so almost all the possible application and core reset
8362306a36Sopenharmony_ci      signals are exposed via the system CCU module.
8462306a36Sopenharmony_ci    maxItems: 9
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  reset-names:
8762306a36Sopenharmony_ci    items:
8862306a36Sopenharmony_ci      - const: mstr
8962306a36Sopenharmony_ci      - const: slv
9062306a36Sopenharmony_ci      - const: pwr
9162306a36Sopenharmony_ci      - const: hot
9262306a36Sopenharmony_ci      - const: phy
9362306a36Sopenharmony_ci      - const: core
9462306a36Sopenharmony_ci      - const: pipe
9562306a36Sopenharmony_ci      - const: sticky
9662306a36Sopenharmony_ci      - const: non-sticky
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  baikal,bt1-syscon:
9962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
10062306a36Sopenharmony_ci    description:
10162306a36Sopenharmony_ci      Phandle to the Baikal-T1 System Controller DT node. It's required to
10262306a36Sopenharmony_ci      access some additional PM, Reset-related and LTSSM signals.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci  num-lanes:
10562306a36Sopenharmony_ci    maximum: 4
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci  max-link-speed:
10862306a36Sopenharmony_ci    maximum: 3
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_cirequired:
11162306a36Sopenharmony_ci  - compatible
11262306a36Sopenharmony_ci  - reg
11362306a36Sopenharmony_ci  - reg-names
11462306a36Sopenharmony_ci  - interrupts
11562306a36Sopenharmony_ci  - interrupt-names
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ciunevaluatedProperties: false
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciexamples:
12062306a36Sopenharmony_ci  - |
12162306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/mips-gic.h>
12262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci    pcie@1f052000 {
12562306a36Sopenharmony_ci      compatible = "baikal,bt1-pcie";
12662306a36Sopenharmony_ci      device_type = "pci";
12762306a36Sopenharmony_ci      reg = <0x1f052000 0x1000>, <0x1f053000 0x1000>, <0x1bdbf000 0x1000>;
12862306a36Sopenharmony_ci      reg-names = "dbi", "dbi2", "config";
12962306a36Sopenharmony_ci      #address-cells = <3>;
13062306a36Sopenharmony_ci      #size-cells = <2>;
13162306a36Sopenharmony_ci      ranges = <0x81000000 0 0x00000000 0x1bdb0000 0 0x00008000>,
13262306a36Sopenharmony_ci               <0x82000000 0 0x20000000 0x08000000 0 0x13db0000>;
13362306a36Sopenharmony_ci      bus-range = <0x0 0xff>;
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci      interrupts = <GIC_SHARED 80 IRQ_TYPE_LEVEL_HIGH>,
13662306a36Sopenharmony_ci                   <GIC_SHARED 81 IRQ_TYPE_LEVEL_HIGH>,
13762306a36Sopenharmony_ci                   <GIC_SHARED 82 IRQ_TYPE_LEVEL_HIGH>,
13862306a36Sopenharmony_ci                   <GIC_SHARED 83 IRQ_TYPE_LEVEL_HIGH>,
13962306a36Sopenharmony_ci                   <GIC_SHARED 84 IRQ_TYPE_LEVEL_HIGH>,
14062306a36Sopenharmony_ci                   <GIC_SHARED 85 IRQ_TYPE_LEVEL_HIGH>,
14162306a36Sopenharmony_ci                   <GIC_SHARED 86 IRQ_TYPE_LEVEL_HIGH>,
14262306a36Sopenharmony_ci                   <GIC_SHARED 87 IRQ_TYPE_LEVEL_HIGH>,
14362306a36Sopenharmony_ci                   <GIC_SHARED 88 IRQ_TYPE_LEVEL_HIGH>,
14462306a36Sopenharmony_ci                   <GIC_SHARED 89 IRQ_TYPE_LEVEL_HIGH>,
14562306a36Sopenharmony_ci                   <GIC_SHARED 90 IRQ_TYPE_LEVEL_HIGH>,
14662306a36Sopenharmony_ci                   <GIC_SHARED 91 IRQ_TYPE_LEVEL_HIGH>,
14762306a36Sopenharmony_ci                   <GIC_SHARED 92 IRQ_TYPE_LEVEL_HIGH>,
14862306a36Sopenharmony_ci                   <GIC_SHARED 93 IRQ_TYPE_LEVEL_HIGH>;
14962306a36Sopenharmony_ci      interrupt-names = "dma0", "dma1", "dma2", "dma3",
15062306a36Sopenharmony_ci                        "dma4", "dma5", "dma6", "dma7",
15162306a36Sopenharmony_ci                        "msi", "aer", "pme", "hp", "bw_mg",
15262306a36Sopenharmony_ci                        "l_eq";
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci      clocks = <&ccu_sys 1>, <&ccu_axi 6>, <&ccu_axi 7>, <&clk_pcie>;
15562306a36Sopenharmony_ci      clock-names = "dbi", "mstr", "slv", "ref";
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci      resets = <&ccu_axi 6>, <&ccu_axi 7>, <&ccu_sys 7>, <&ccu_sys 10>,
15862306a36Sopenharmony_ci               <&ccu_sys 4>, <&ccu_sys 6>, <&ccu_sys 5>, <&ccu_sys 8>,
15962306a36Sopenharmony_ci               <&ccu_sys 9>;
16062306a36Sopenharmony_ci      reset-names = "mstr", "slv", "pwr", "hot", "phy", "core", "pipe",
16162306a36Sopenharmony_ci                    "sticky", "non-sticky";
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci      reset-gpios = <&port0 0 GPIO_ACTIVE_LOW>;
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci      num-lanes = <4>;
16662306a36Sopenharmony_ci      max-link-speed = <3>;
16762306a36Sopenharmony_ci    };
16862306a36Sopenharmony_ci...
169