1*a20df1a7SJacky Chou# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*a20df1a7SJacky Chou%YAML 1.2 3*a20df1a7SJacky Chou--- 4*a20df1a7SJacky Chou$id: http://devicetree.org/schemas/pci/aspeed,ast2600-pcie.yaml# 5*a20df1a7SJacky Chou$schema: http://devicetree.org/meta-schemas/core.yaml# 6*a20df1a7SJacky Chou 7*a20df1a7SJacky Choutitle: ASPEED PCIe Root Complex Controller 8*a20df1a7SJacky Chou 9*a20df1a7SJacky Choumaintainers: 10*a20df1a7SJacky Chou - Jacky Chou <jacky_chou@aspeedtech.com> 11*a20df1a7SJacky Chou 12*a20df1a7SJacky Choudescription: 13*a20df1a7SJacky Chou The ASPEED PCIe Root Complex controller provides PCI Express Root Complex 14*a20df1a7SJacky Chou functionality for ASPEED SoCs, such as the AST2600 and AST2700. 15*a20df1a7SJacky Chou This controller enables connectivity to PCIe endpoint devices, supporting 16*a20df1a7SJacky Chou memory and I/O windows, MSI and INTx interrupts, and integration with 17*a20df1a7SJacky Chou the SoC's clock, reset, and pinctrl subsystems. On AST2600, the PCIe Root 18*a20df1a7SJacky Chou Port device number is always 8. 19*a20df1a7SJacky Chou 20*a20df1a7SJacky Chouproperties: 21*a20df1a7SJacky Chou compatible: 22*a20df1a7SJacky Chou enum: 23*a20df1a7SJacky Chou - aspeed,ast2600-pcie 24*a20df1a7SJacky Chou - aspeed,ast2700-pcie 25*a20df1a7SJacky Chou 26*a20df1a7SJacky Chou reg: 27*a20df1a7SJacky Chou maxItems: 1 28*a20df1a7SJacky Chou 29*a20df1a7SJacky Chou ranges: 30*a20df1a7SJacky Chou minItems: 2 31*a20df1a7SJacky Chou maxItems: 2 32*a20df1a7SJacky Chou 33*a20df1a7SJacky Chou interrupts: 34*a20df1a7SJacky Chou maxItems: 1 35*a20df1a7SJacky Chou description: INTx and MSI interrupt 36*a20df1a7SJacky Chou 37*a20df1a7SJacky Chou resets: 38*a20df1a7SJacky Chou items: 39*a20df1a7SJacky Chou - description: PCIe controller reset 40*a20df1a7SJacky Chou 41*a20df1a7SJacky Chou reset-names: 42*a20df1a7SJacky Chou items: 43*a20df1a7SJacky Chou - const: h2x 44*a20df1a7SJacky Chou 45*a20df1a7SJacky Chou aspeed,ahbc: 46*a20df1a7SJacky Chou $ref: /schemas/types.yaml#/definitions/phandle 47*a20df1a7SJacky Chou description: 48*a20df1a7SJacky Chou Phandle to the ASPEED AHB Controller (AHBC) syscon node. 49*a20df1a7SJacky Chou This reference is used by the PCIe controller to access 50*a20df1a7SJacky Chou system-level configuration registers related to the AHB bus. 51*a20df1a7SJacky Chou To enable AHB access for the PCIe controller. 52*a20df1a7SJacky Chou 53*a20df1a7SJacky Chou aspeed,pciecfg: 54*a20df1a7SJacky Chou $ref: /schemas/types.yaml#/definitions/phandle 55*a20df1a7SJacky Chou description: 56*a20df1a7SJacky Chou Phandle to the ASPEED PCIe configuration syscon node. 57*a20df1a7SJacky Chou This reference allows the PCIe controller to access 58*a20df1a7SJacky Chou SoC-specific PCIe configuration registers. There are the others 59*a20df1a7SJacky Chou functions such PCIe RC and PCIe EP will use this common register 60*a20df1a7SJacky Chou to configure the SoC interfaces. 61*a20df1a7SJacky Chou 62*a20df1a7SJacky Chou interrupt-controller: true 63*a20df1a7SJacky Chou 64*a20df1a7SJacky ChoupatternProperties: 65*a20df1a7SJacky Chou "^pcie@[0-9a-f]+,0$": 66*a20df1a7SJacky Chou type: object 67*a20df1a7SJacky Chou $ref: /schemas/pci/pci-pci-bridge.yaml# 68*a20df1a7SJacky Chou 69*a20df1a7SJacky Chou properties: 70*a20df1a7SJacky Chou reg: 71*a20df1a7SJacky Chou maxItems: 1 72*a20df1a7SJacky Chou 73*a20df1a7SJacky Chou resets: 74*a20df1a7SJacky Chou items: 75*a20df1a7SJacky Chou - description: PERST# signal 76*a20df1a7SJacky Chou 77*a20df1a7SJacky Chou reset-names: 78*a20df1a7SJacky Chou items: 79*a20df1a7SJacky Chou - const: perst 80*a20df1a7SJacky Chou 81*a20df1a7SJacky Chou clocks: 82*a20df1a7SJacky Chou maxItems: 1 83*a20df1a7SJacky Chou 84*a20df1a7SJacky Chou phys: 85*a20df1a7SJacky Chou maxItems: 1 86*a20df1a7SJacky Chou 87*a20df1a7SJacky Chou required: 88*a20df1a7SJacky Chou - resets 89*a20df1a7SJacky Chou - reset-names 90*a20df1a7SJacky Chou - clocks 91*a20df1a7SJacky Chou - phys 92*a20df1a7SJacky Chou - ranges 93*a20df1a7SJacky Chou 94*a20df1a7SJacky Chou unevaluatedProperties: false 95*a20df1a7SJacky Chou 96*a20df1a7SJacky ChouallOf: 97*a20df1a7SJacky Chou - $ref: /schemas/pci/pci-host-bridge.yaml# 98*a20df1a7SJacky Chou - $ref: /schemas/interrupt-controller/msi-controller.yaml# 99*a20df1a7SJacky Chou - if: 100*a20df1a7SJacky Chou properties: 101*a20df1a7SJacky Chou compatible: 102*a20df1a7SJacky Chou contains: 103*a20df1a7SJacky Chou const: aspeed,ast2600-pcie 104*a20df1a7SJacky Chou then: 105*a20df1a7SJacky Chou required: 106*a20df1a7SJacky Chou - aspeed,ahbc 107*a20df1a7SJacky Chou else: 108*a20df1a7SJacky Chou properties: 109*a20df1a7SJacky Chou aspeed,ahbc: false 110*a20df1a7SJacky Chou - if: 111*a20df1a7SJacky Chou properties: 112*a20df1a7SJacky Chou compatible: 113*a20df1a7SJacky Chou contains: 114*a20df1a7SJacky Chou const: aspeed,ast2700-pcie 115*a20df1a7SJacky Chou then: 116*a20df1a7SJacky Chou required: 117*a20df1a7SJacky Chou - aspeed,pciecfg 118*a20df1a7SJacky Chou else: 119*a20df1a7SJacky Chou properties: 120*a20df1a7SJacky Chou aspeed,pciecfg: false 121*a20df1a7SJacky Chou 122*a20df1a7SJacky Chourequired: 123*a20df1a7SJacky Chou - reg 124*a20df1a7SJacky Chou - interrupts 125*a20df1a7SJacky Chou - bus-range 126*a20df1a7SJacky Chou - ranges 127*a20df1a7SJacky Chou - resets 128*a20df1a7SJacky Chou - reset-names 129*a20df1a7SJacky Chou - msi-controller 130*a20df1a7SJacky Chou - interrupt-controller 131*a20df1a7SJacky Chou - interrupt-map-mask 132*a20df1a7SJacky Chou - interrupt-map 133*a20df1a7SJacky Chou 134*a20df1a7SJacky ChouunevaluatedProperties: false 135*a20df1a7SJacky Chou 136*a20df1a7SJacky Chouexamples: 137*a20df1a7SJacky Chou - | 138*a20df1a7SJacky Chou #include <dt-bindings/interrupt-controller/arm-gic.h> 139*a20df1a7SJacky Chou #include <dt-bindings/clock/ast2600-clock.h> 140*a20df1a7SJacky Chou 141*a20df1a7SJacky Chou pcie0: pcie@1e770000 { 142*a20df1a7SJacky Chou compatible = "aspeed,ast2600-pcie"; 143*a20df1a7SJacky Chou device_type = "pci"; 144*a20df1a7SJacky Chou reg = <0x1e770000 0x100>; 145*a20df1a7SJacky Chou #address-cells = <3>; 146*a20df1a7SJacky Chou #size-cells = <2>; 147*a20df1a7SJacky Chou interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; 148*a20df1a7SJacky Chou bus-range = <0x00 0xff>; 149*a20df1a7SJacky Chou 150*a20df1a7SJacky Chou ranges = <0x01000000 0x0 0x00018000 0x00018000 0x0 0x00008000 151*a20df1a7SJacky Chou 0x02000000 0x0 0x60000000 0x60000000 0x0 0x20000000>; 152*a20df1a7SJacky Chou 153*a20df1a7SJacky Chou resets = <&syscon ASPEED_RESET_H2X>; 154*a20df1a7SJacky Chou reset-names = "h2x"; 155*a20df1a7SJacky Chou 156*a20df1a7SJacky Chou #interrupt-cells = <1>; 157*a20df1a7SJacky Chou msi-controller; 158*a20df1a7SJacky Chou 159*a20df1a7SJacky Chou aspeed,ahbc = <&ahbc>; 160*a20df1a7SJacky Chou 161*a20df1a7SJacky Chou interrupt-controller; 162*a20df1a7SJacky Chou interrupt-map-mask = <0 0 0 7>; 163*a20df1a7SJacky Chou interrupt-map = <0 0 0 1 &pcie0 0>, 164*a20df1a7SJacky Chou <0 0 0 2 &pcie0 1>, 165*a20df1a7SJacky Chou <0 0 0 3 &pcie0 2>, 166*a20df1a7SJacky Chou <0 0 0 4 &pcie0 3>; 167*a20df1a7SJacky Chou 168*a20df1a7SJacky Chou pcie@8,0 { 169*a20df1a7SJacky Chou compatible = "pciclass,0604"; 170*a20df1a7SJacky Chou reg = <0x00004000 0 0 0 0>; 171*a20df1a7SJacky Chou #address-cells = <3>; 172*a20df1a7SJacky Chou #size-cells = <2>; 173*a20df1a7SJacky Chou device_type = "pci"; 174*a20df1a7SJacky Chou resets = <&syscon ASPEED_RESET_PCIE_RC_O>; 175*a20df1a7SJacky Chou reset-names = "perst"; 176*a20df1a7SJacky Chou clocks = <&syscon ASPEED_CLK_GATE_BCLK>; 177*a20df1a7SJacky Chou pinctrl-names = "default"; 178*a20df1a7SJacky Chou pinctrl-0 = <&pinctrl_pcierc1_default>; 179*a20df1a7SJacky Chou phys = <&pcie_phy1>; 180*a20df1a7SJacky Chou ranges; 181*a20df1a7SJacky Chou }; 182*a20df1a7SJacky Chou }; 183