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/mediatek,mt7621-pcie.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: MediaTek MT7621 PCIe controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sergio Paracuellos <sergio.paracuellos@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |+
1362306a36Sopenharmony_ci  MediaTek MT7621 PCIe subsys supports a single Root Complex (RC)
1462306a36Sopenharmony_ci  with 3 Root Ports. Each Root Port supports a Gen1 1-lane Link
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciallOf:
1762306a36Sopenharmony_ci  - $ref: /schemas/pci/pci-bus.yaml#
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    const: mediatek,mt7621-pci
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  reg:
2462306a36Sopenharmony_ci    items:
2562306a36Sopenharmony_ci      - description: host-pci bridge registers
2662306a36Sopenharmony_ci      - description: pcie port 0 RC control registers
2762306a36Sopenharmony_ci      - description: pcie port 1 RC control registers
2862306a36Sopenharmony_ci      - description: pcie port 2 RC control registers
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  ranges:
3162306a36Sopenharmony_ci    maxItems: 2
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cipatternProperties:
3462306a36Sopenharmony_ci  '^pcie@[0-2],0$':
3562306a36Sopenharmony_ci    type: object
3662306a36Sopenharmony_ci    $ref: /schemas/pci/pci-bus.yaml#
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci    properties:
3962306a36Sopenharmony_ci      resets:
4062306a36Sopenharmony_ci        maxItems: 1
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci      clocks:
4362306a36Sopenharmony_ci        maxItems: 1
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci      phys:
4662306a36Sopenharmony_ci        maxItems: 1
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci      phy-names:
4962306a36Sopenharmony_ci        pattern: '^pcie-phy[0-2]$'
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci    required:
5262306a36Sopenharmony_ci      - "#interrupt-cells"
5362306a36Sopenharmony_ci      - interrupt-map-mask
5462306a36Sopenharmony_ci      - interrupt-map
5562306a36Sopenharmony_ci      - resets
5662306a36Sopenharmony_ci      - clocks
5762306a36Sopenharmony_ci      - phys
5862306a36Sopenharmony_ci      - phy-names
5962306a36Sopenharmony_ci      - ranges
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci    unevaluatedProperties: false
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cirequired:
6462306a36Sopenharmony_ci  - compatible
6562306a36Sopenharmony_ci  - reg
6662306a36Sopenharmony_ci  - ranges
6762306a36Sopenharmony_ci  - "#interrupt-cells"
6862306a36Sopenharmony_ci  - interrupt-map-mask
6962306a36Sopenharmony_ci  - interrupt-map
7062306a36Sopenharmony_ci  - reset-gpios
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciunevaluatedProperties: false
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciexamples:
7562306a36Sopenharmony_ci  - |
7662306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
7762306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/mips-gic.h>
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci    pcie: pcie@1e140000 {
8062306a36Sopenharmony_ci        compatible = "mediatek,mt7621-pci";
8162306a36Sopenharmony_ci        reg = <0x1e140000 0x100>,
8262306a36Sopenharmony_ci              <0x1e142000 0x100>,
8362306a36Sopenharmony_ci              <0x1e143000 0x100>,
8462306a36Sopenharmony_ci              <0x1e144000 0x100>;
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci        #address-cells = <3>;
8762306a36Sopenharmony_ci        #size-cells = <2>;
8862306a36Sopenharmony_ci        pinctrl-names = "default";
8962306a36Sopenharmony_ci        pinctrl-0 = <&pcie_pins>;
9062306a36Sopenharmony_ci        device_type = "pci";
9162306a36Sopenharmony_ci        ranges = <0x02000000 0 0x60000000 0x60000000 0 0x10000000>,  /* pci memory */
9262306a36Sopenharmony_ci                 <0x01000000 0 0x1e160000 0x1e160000 0 0x00010000>;  /* io space */
9362306a36Sopenharmony_ci        #interrupt-cells = <1>;
9462306a36Sopenharmony_ci        interrupt-map-mask = <0xF800 0 0 0>;
9562306a36Sopenharmony_ci        interrupt-map = <0x0000 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>,
9662306a36Sopenharmony_ci                        <0x0800 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
9762306a36Sopenharmony_ci                        <0x1000 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
9862306a36Sopenharmony_ci        reset-gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci        pcie@0,0 {
10162306a36Sopenharmony_ci            reg = <0x0000 0 0 0 0>;
10262306a36Sopenharmony_ci            #address-cells = <3>;
10362306a36Sopenharmony_ci            #size-cells = <2>;
10462306a36Sopenharmony_ci            device_type = "pci";
10562306a36Sopenharmony_ci            #interrupt-cells = <1>;
10662306a36Sopenharmony_ci            interrupt-map-mask = <0 0 0 0>;
10762306a36Sopenharmony_ci            interrupt-map = <0 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>;
10862306a36Sopenharmony_ci            resets = <&rstctrl 24>;
10962306a36Sopenharmony_ci            clocks = <&clkctrl 24>;
11062306a36Sopenharmony_ci            phys = <&pcie0_phy 1>;
11162306a36Sopenharmony_ci            phy-names = "pcie-phy0";
11262306a36Sopenharmony_ci            ranges;
11362306a36Sopenharmony_ci        };
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci        pcie@1,0 {
11662306a36Sopenharmony_ci            reg = <0x0800 0 0 0 0>;
11762306a36Sopenharmony_ci            #address-cells = <3>;
11862306a36Sopenharmony_ci            #size-cells = <2>;
11962306a36Sopenharmony_ci            device_type = "pci";
12062306a36Sopenharmony_ci            #interrupt-cells = <1>;
12162306a36Sopenharmony_ci            interrupt-map-mask = <0 0 0 0>;
12262306a36Sopenharmony_ci            interrupt-map = <0 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>;
12362306a36Sopenharmony_ci            resets = <&rstctrl 25>;
12462306a36Sopenharmony_ci            clocks = <&clkctrl 25>;
12562306a36Sopenharmony_ci            phys = <&pcie0_phy 1>;
12662306a36Sopenharmony_ci            phy-names = "pcie-phy1";
12762306a36Sopenharmony_ci            ranges;
12862306a36Sopenharmony_ci        };
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci        pcie@2,0 {
13162306a36Sopenharmony_ci            reg = <0x1000 0 0 0 0>;
13262306a36Sopenharmony_ci            #address-cells = <3>;
13362306a36Sopenharmony_ci            #size-cells = <2>;
13462306a36Sopenharmony_ci            device_type = "pci";
13562306a36Sopenharmony_ci            #interrupt-cells = <1>;
13662306a36Sopenharmony_ci            interrupt-map-mask = <0 0 0 0>;
13762306a36Sopenharmony_ci            interrupt-map = <0 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
13862306a36Sopenharmony_ci            resets = <&rstctrl 26>;
13962306a36Sopenharmony_ci            clocks = <&clkctrl 26>;
14062306a36Sopenharmony_ci            phys = <&pcie2_phy 0>;
14162306a36Sopenharmony_ci            phy-names = "pcie-phy2";
14262306a36Sopenharmony_ci            ranges;
14362306a36Sopenharmony_ci        };
14462306a36Sopenharmony_ci    };
14562306a36Sopenharmony_ci...
146