1*a812b09aSAlex Elder# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*a812b09aSAlex Elder%YAML 1.2 3*a812b09aSAlex Elder--- 4*a812b09aSAlex Elder$id: http://devicetree.org/schemas/pci/spacemit,k1-pcie-host.yaml# 5*a812b09aSAlex Elder$schema: http://devicetree.org/meta-schemas/core.yaml# 6*a812b09aSAlex Elder 7*a812b09aSAlex Eldertitle: SpacemiT K1 PCI Express Host Controller 8*a812b09aSAlex Elder 9*a812b09aSAlex Eldermaintainers: 10*a812b09aSAlex Elder - Alex Elder <elder@riscstar.com> 11*a812b09aSAlex Elder 12*a812b09aSAlex Elderdescription: > 13*a812b09aSAlex Elder The SpacemiT K1 SoC PCIe host controller is based on the Synopsys DesignWare 14*a812b09aSAlex Elder PCIe IP. The controller uses the DesignWare built-in MSI interrupt 15*a812b09aSAlex Elder controller, and supports 256 MSIs. 16*a812b09aSAlex Elder 17*a812b09aSAlex ElderallOf: 18*a812b09aSAlex Elder - $ref: /schemas/pci/snps,dw-pcie.yaml# 19*a812b09aSAlex Elder 20*a812b09aSAlex Elderproperties: 21*a812b09aSAlex Elder compatible: 22*a812b09aSAlex Elder const: spacemit,k1-pcie 23*a812b09aSAlex Elder 24*a812b09aSAlex Elder reg: 25*a812b09aSAlex Elder items: 26*a812b09aSAlex Elder - description: DesignWare PCIe registers 27*a812b09aSAlex Elder - description: ATU address space 28*a812b09aSAlex Elder - description: PCIe configuration space 29*a812b09aSAlex Elder - description: Link control registers 30*a812b09aSAlex Elder 31*a812b09aSAlex Elder reg-names: 32*a812b09aSAlex Elder items: 33*a812b09aSAlex Elder - const: dbi 34*a812b09aSAlex Elder - const: atu 35*a812b09aSAlex Elder - const: config 36*a812b09aSAlex Elder - const: link 37*a812b09aSAlex Elder 38*a812b09aSAlex Elder clocks: 39*a812b09aSAlex Elder items: 40*a812b09aSAlex Elder - description: DWC PCIe Data Bus Interface (DBI) clock 41*a812b09aSAlex Elder - description: DWC PCIe application AXI-bus master interface clock 42*a812b09aSAlex Elder - description: DWC PCIe application AXI-bus slave interface clock 43*a812b09aSAlex Elder 44*a812b09aSAlex Elder clock-names: 45*a812b09aSAlex Elder items: 46*a812b09aSAlex Elder - const: dbi 47*a812b09aSAlex Elder - const: mstr 48*a812b09aSAlex Elder - const: slv 49*a812b09aSAlex Elder 50*a812b09aSAlex Elder resets: 51*a812b09aSAlex Elder items: 52*a812b09aSAlex Elder - description: DWC PCIe Data Bus Interface (DBI) reset 53*a812b09aSAlex Elder - description: DWC PCIe application AXI-bus master interface reset 54*a812b09aSAlex Elder - description: DWC PCIe application AXI-bus slave interface reset 55*a812b09aSAlex Elder 56*a812b09aSAlex Elder reset-names: 57*a812b09aSAlex Elder items: 58*a812b09aSAlex Elder - const: dbi 59*a812b09aSAlex Elder - const: mstr 60*a812b09aSAlex Elder - const: slv 61*a812b09aSAlex Elder 62*a812b09aSAlex Elder interrupts: 63*a812b09aSAlex Elder items: 64*a812b09aSAlex Elder - description: Interrupt used for MSIs 65*a812b09aSAlex Elder 66*a812b09aSAlex Elder interrupt-names: 67*a812b09aSAlex Elder const: msi 68*a812b09aSAlex Elder 69*a812b09aSAlex Elder spacemit,apmu: 70*a812b09aSAlex Elder $ref: /schemas/types.yaml#/definitions/phandle-array 71*a812b09aSAlex Elder description: 72*a812b09aSAlex Elder A phandle that refers to the APMU system controller, whose regmap is 73*a812b09aSAlex Elder used in managing resets and link state, along with and offset of its 74*a812b09aSAlex Elder reset control register. 75*a812b09aSAlex Elder items: 76*a812b09aSAlex Elder - items: 77*a812b09aSAlex Elder - description: phandle to APMU system controller 78*a812b09aSAlex Elder - description: register offset 79*a812b09aSAlex Elder 80*a812b09aSAlex ElderpatternProperties: 81*a812b09aSAlex Elder '^pcie@': 82*a812b09aSAlex Elder type: object 83*a812b09aSAlex Elder $ref: /schemas/pci/pci-pci-bridge.yaml# 84*a812b09aSAlex Elder 85*a812b09aSAlex Elder properties: 86*a812b09aSAlex Elder phys: 87*a812b09aSAlex Elder maxItems: 1 88*a812b09aSAlex Elder 89*a812b09aSAlex Elder vpcie3v3-supply: 90*a812b09aSAlex Elder description: 91*a812b09aSAlex Elder A phandle for 3.3v regulator to use for PCIe 92*a812b09aSAlex Elder 93*a812b09aSAlex Elder required: 94*a812b09aSAlex Elder - phys 95*a812b09aSAlex Elder - vpcie3v3-supply 96*a812b09aSAlex Elder 97*a812b09aSAlex Elder unevaluatedProperties: false 98*a812b09aSAlex Elder 99*a812b09aSAlex Elderrequired: 100*a812b09aSAlex Elder - clocks 101*a812b09aSAlex Elder - clock-names 102*a812b09aSAlex Elder - resets 103*a812b09aSAlex Elder - reset-names 104*a812b09aSAlex Elder - interrupts 105*a812b09aSAlex Elder - interrupt-names 106*a812b09aSAlex Elder - spacemit,apmu 107*a812b09aSAlex Elder 108*a812b09aSAlex ElderunevaluatedProperties: false 109*a812b09aSAlex Elder 110*a812b09aSAlex Elderexamples: 111*a812b09aSAlex Elder - | 112*a812b09aSAlex Elder #include <dt-bindings/clock/spacemit,k1-syscon.h> 113*a812b09aSAlex Elder pcie@ca400000 { 114*a812b09aSAlex Elder device_type = "pci"; 115*a812b09aSAlex Elder compatible = "spacemit,k1-pcie"; 116*a812b09aSAlex Elder reg = <0xca400000 0x00001000>, 117*a812b09aSAlex Elder <0xca700000 0x0001ff24>, 118*a812b09aSAlex Elder <0x9f000000 0x00002000>, 119*a812b09aSAlex Elder <0xc0c20000 0x00001000>; 120*a812b09aSAlex Elder reg-names = "dbi", 121*a812b09aSAlex Elder "atu", 122*a812b09aSAlex Elder "config", 123*a812b09aSAlex Elder "link"; 124*a812b09aSAlex Elder #address-cells = <3>; 125*a812b09aSAlex Elder #size-cells = <2>; 126*a812b09aSAlex Elder ranges = <0x01000000 0x0 0x00000000 0x9f002000 0x0 0x00100000>, 127*a812b09aSAlex Elder <0x02000000 0x0 0x90000000 0x90000000 0x0 0x0f000000>; 128*a812b09aSAlex Elder interrupts = <142>; 129*a812b09aSAlex Elder interrupt-names = "msi"; 130*a812b09aSAlex Elder clocks = <&syscon_apmu CLK_PCIE1_DBI>, 131*a812b09aSAlex Elder <&syscon_apmu CLK_PCIE1_MASTER>, 132*a812b09aSAlex Elder <&syscon_apmu CLK_PCIE1_SLAVE>; 133*a812b09aSAlex Elder clock-names = "dbi", 134*a812b09aSAlex Elder "mstr", 135*a812b09aSAlex Elder "slv"; 136*a812b09aSAlex Elder resets = <&syscon_apmu RESET_PCIE1_DBI>, 137*a812b09aSAlex Elder <&syscon_apmu RESET_PCIE1_MASTER>, 138*a812b09aSAlex Elder <&syscon_apmu RESET_PCIE1_SLAVE>; 139*a812b09aSAlex Elder reset-names = "dbi", 140*a812b09aSAlex Elder "mstr", 141*a812b09aSAlex Elder "slv"; 142*a812b09aSAlex Elder pinctrl-names = "default"; 143*a812b09aSAlex Elder pinctrl-0 = <&pcie1_3_cfg>; 144*a812b09aSAlex Elder spacemit,apmu = <&syscon_apmu 0x3d4>; 145*a812b09aSAlex Elder 146*a812b09aSAlex Elder pcie@0 { 147*a812b09aSAlex Elder device_type = "pci"; 148*a812b09aSAlex Elder compatible = "pciclass,0604"; 149*a812b09aSAlex Elder reg = <0x0 0x0 0x0 0x0 0x0>; 150*a812b09aSAlex Elder bus-range = <0x01 0xff>; 151*a812b09aSAlex Elder #address-cells = <3>; 152*a812b09aSAlex Elder #size-cells = <2>; 153*a812b09aSAlex Elder ranges; 154*a812b09aSAlex Elder phys = <&pcie1_phy>; 155*a812b09aSAlex Elder vpcie3v3-supply = <&pcie_vcc_3v3>; 156*a812b09aSAlex Elder }; 157*a812b09aSAlex Elder }; 158