1*b80b848bSNeil Armstrong# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*b80b848bSNeil Armstrong%YAML 1.2
3*b80b848bSNeil Armstrong---
4*b80b848bSNeil Armstrong$id: http://devicetree.org/schemas/pci/amlogic,axg-pcie.yaml#
5*b80b848bSNeil Armstrong$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b80b848bSNeil Armstrong
7*b80b848bSNeil Armstrongtitle: Amlogic Meson AXG DWC PCIe SoC controller
8*b80b848bSNeil Armstrong
9*b80b848bSNeil Armstrongmaintainers:
10*b80b848bSNeil Armstrong  - Neil Armstrong <neil.armstrong@linaro.org>
11*b80b848bSNeil Armstrong
12*b80b848bSNeil Armstrongdescription:
13*b80b848bSNeil Armstrong  Amlogic Meson PCIe host controller is based on the Synopsys DesignWare PCI core.
14*b80b848bSNeil Armstrong
15*b80b848bSNeil ArmstrongallOf:
16*b80b848bSNeil Armstrong  - $ref: /schemas/pci/pci-bus.yaml#
17*b80b848bSNeil Armstrong  - $ref: /schemas/pci/snps,dw-pcie-common.yaml#
18*b80b848bSNeil Armstrong
19*b80b848bSNeil Armstrong# We need a select here so we don't match all nodes with 'snps,dw-pcie'
20*b80b848bSNeil Armstrongselect:
21*b80b848bSNeil Armstrong  properties:
22*b80b848bSNeil Armstrong    compatible:
23*b80b848bSNeil Armstrong      enum:
24*b80b848bSNeil Armstrong        - amlogic,axg-pcie
25*b80b848bSNeil Armstrong        - amlogic,g12a-pcie
26*b80b848bSNeil Armstrong  required:
27*b80b848bSNeil Armstrong    - compatible
28*b80b848bSNeil Armstrong
29*b80b848bSNeil Armstrongproperties:
30*b80b848bSNeil Armstrong  compatible:
31*b80b848bSNeil Armstrong    items:
32*b80b848bSNeil Armstrong      - enum:
33*b80b848bSNeil Armstrong          - amlogic,axg-pcie
34*b80b848bSNeil Armstrong          - amlogic,g12a-pcie
35*b80b848bSNeil Armstrong      - const: snps,dw-pcie
36*b80b848bSNeil Armstrong
37*b80b848bSNeil Armstrong  reg:
38*b80b848bSNeil Armstrong    items:
39*b80b848bSNeil Armstrong      - description: External local bus interface registers
40*b80b848bSNeil Armstrong      - description: Meson designed configuration registers
41*b80b848bSNeil Armstrong      - description: PCIe configuration space
42*b80b848bSNeil Armstrong
43*b80b848bSNeil Armstrong  reg-names:
44*b80b848bSNeil Armstrong    items:
45*b80b848bSNeil Armstrong      - const: elbi
46*b80b848bSNeil Armstrong      - const: cfg
47*b80b848bSNeil Armstrong      - const: config
48*b80b848bSNeil Armstrong
49*b80b848bSNeil Armstrong  interrupts:
50*b80b848bSNeil Armstrong    maxItems: 1
51*b80b848bSNeil Armstrong
52*b80b848bSNeil Armstrong  clocks:
53*b80b848bSNeil Armstrong    items:
54*b80b848bSNeil Armstrong      - description: PCIe GEN 100M PLL clock
55*b80b848bSNeil Armstrong      - description: PCIe RC clock gate
56*b80b848bSNeil Armstrong      - description: PCIe PHY clock
57*b80b848bSNeil Armstrong
58*b80b848bSNeil Armstrong  clock-names:
59*b80b848bSNeil Armstrong    items:
60*b80b848bSNeil Armstrong      - const: pclk
61*b80b848bSNeil Armstrong      - const: port
62*b80b848bSNeil Armstrong      - const: general
63*b80b848bSNeil Armstrong
64*b80b848bSNeil Armstrong  phys:
65*b80b848bSNeil Armstrong    maxItems: 1
66*b80b848bSNeil Armstrong
67*b80b848bSNeil Armstrong  phy-names:
68*b80b848bSNeil Armstrong    const: pcie
69*b80b848bSNeil Armstrong
70*b80b848bSNeil Armstrong  resets:
71*b80b848bSNeil Armstrong    items:
72*b80b848bSNeil Armstrong      - description: Port Reset
73*b80b848bSNeil Armstrong      - description: Shared APB reset
74*b80b848bSNeil Armstrong
75*b80b848bSNeil Armstrong  reset-names:
76*b80b848bSNeil Armstrong    items:
77*b80b848bSNeil Armstrong      - const: port
78*b80b848bSNeil Armstrong      - const: apb
79*b80b848bSNeil Armstrong
80*b80b848bSNeil Armstrong  num-lanes:
81*b80b848bSNeil Armstrong    const: 1
82*b80b848bSNeil Armstrong
83*b80b848bSNeil Armstrong  power-domains:
84*b80b848bSNeil Armstrong    maxItems: 1
85*b80b848bSNeil Armstrong
86*b80b848bSNeil Armstrongrequired:
87*b80b848bSNeil Armstrong  - compatible
88*b80b848bSNeil Armstrong  - reg
89*b80b848bSNeil Armstrong  - reg-names
90*b80b848bSNeil Armstrong  - interrupts
91*b80b848bSNeil Armstrong  - clock
92*b80b848bSNeil Armstrong  - clock-names
93*b80b848bSNeil Armstrong  - "#address-cells"
94*b80b848bSNeil Armstrong  - "#size-cells"
95*b80b848bSNeil Armstrong  - "#interrupt-cells"
96*b80b848bSNeil Armstrong  - interrupt-map
97*b80b848bSNeil Armstrong  - interrupt-map-mask
98*b80b848bSNeil Armstrong  - ranges
99*b80b848bSNeil Armstrong  - bus-range
100*b80b848bSNeil Armstrong  - device_type
101*b80b848bSNeil Armstrong  - num-lanes
102*b80b848bSNeil Armstrong  - phys
103*b80b848bSNeil Armstrong  - phy-names
104*b80b848bSNeil Armstrong  - resets
105*b80b848bSNeil Armstrong  - reset-names
106*b80b848bSNeil Armstrong
107*b80b848bSNeil ArmstrongunevaluatedProperties: false
108*b80b848bSNeil Armstrong
109*b80b848bSNeil Armstrongexamples:
110*b80b848bSNeil Armstrong  - |
111*b80b848bSNeil Armstrong    #include <dt-bindings/interrupt-controller/irq.h>
112*b80b848bSNeil Armstrong    #include <dt-bindings/interrupt-controller/arm-gic.h>
113*b80b848bSNeil Armstrong    pcie: pcie@f9800000 {
114*b80b848bSNeil Armstrong        compatible = "amlogic,axg-pcie", "snps,dw-pcie";
115*b80b848bSNeil Armstrong        reg = <0xf9800000 0x400000>, <0xff646000 0x2000>, <0xf9f00000 0x100000>;
116*b80b848bSNeil Armstrong        reg-names = "elbi", "cfg", "config";
117*b80b848bSNeil Armstrong        interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
118*b80b848bSNeil Armstrong        clocks = <&pclk>, <&clk_port>, <&clk_phy>;
119*b80b848bSNeil Armstrong        clock-names = "pclk", "port", "general";
120*b80b848bSNeil Armstrong        resets = <&reset_pcie_port>, <&reset_pcie_apb>;
121*b80b848bSNeil Armstrong        reset-names = "port", "apb";
122*b80b848bSNeil Armstrong        phys = <&pcie_phy>;
123*b80b848bSNeil Armstrong        phy-names = "pcie";
124*b80b848bSNeil Armstrong        #interrupt-cells = <1>;
125*b80b848bSNeil Armstrong        interrupt-map-mask = <0 0 0 0>;
126*b80b848bSNeil Armstrong        interrupt-map = <0 0 0 0 &gic GIC_SPI 179 IRQ_TYPE_EDGE_RISING>;
127*b80b848bSNeil Armstrong        bus-range = <0x0 0xff>;
128*b80b848bSNeil Armstrong        #address-cells = <3>;
129*b80b848bSNeil Armstrong        #size-cells = <2>;
130*b80b848bSNeil Armstrong        device_type = "pci";
131*b80b848bSNeil Armstrong        num-lanes = <1>;
132*b80b848bSNeil Armstrong        ranges = <0x82000000 0 0 0xf9c00000 0 0x00300000>;
133*b80b848bSNeil Armstrong    };
134*b80b848bSNeil Armstrong...
135