- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/pci/apple,pcie.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Apple PCIe host controller
- maintainers:
- - Mark Kettenis <kettenis@openbsd.org>
- description: |
- The Apple PCIe host controller is a PCIe host controller with
- multiple root ports present in Apple ARM SoC platforms, including
- various iPhone and iPad devices and the "Apple Silicon" Macs.
- The controller incorporates Synopsys DesigWare PCIe logic to
- implements its root ports. But the ATU found on most DesignWare
- PCIe host bridges is absent.
- All root ports share a single ECAM space, but separate GPIOs are
- used to take the PCI devices on those ports out of reset. Therefore
- the standard "reset-gpios" and "max-link-speed" properties appear on
- the child nodes that represent the PCI bridges that correspond to
- the individual root ports.
- MSIs are handled by the PCIe controller and translated into regular
- interrupts. A range of 32 MSIs is provided. These 32 MSIs can be
- distributed over the root ports as the OS sees fit by programming
- the PCIe controller's port registers.
- properties:
- compatible:
- items:
- - enum:
- - apple,t8103-pcie
- - apple,t6000-pcie
- - const: apple,pcie
- reg:
- minItems: 3
- maxItems: 6
- reg-names:
- minItems: 3
- items:
- - const: config
- - const: rc
- - const: port0
- - const: port1
- - const: port2
- - const: port3
- ranges:
- minItems: 2
- maxItems: 2
- interrupts:
- description:
- Interrupt specifiers, one for each root port.
- minItems: 1
- maxItems: 4
- msi-parent: true
- msi-ranges:
- maxItems: 1
- iommu-map: true
- iommu-map-mask: true
- power-domains:
- maxItems: 1
- required:
- - compatible
- - reg
- - reg-names
- - bus-range
- - interrupts
- - msi-controller
- - msi-parent
- - msi-ranges
- unevaluatedProperties: false
- allOf:
- - $ref: /schemas/pci/pci-bus.yaml#
- - $ref: /schemas/interrupt-controller/msi-controller.yaml#
- - if:
- properties:
- compatible:
- contains:
- const: apple,t8103-pcie
- then:
- properties:
- reg:
- maxItems: 5
- interrupts:
- maxItems: 3
- examples:
- - |
- #include <dt-bindings/interrupt-controller/apple-aic.h>
- soc {
- #address-cells = <2>;
- #size-cells = <2>;
- pcie0: pcie@690000000 {
- compatible = "apple,t8103-pcie", "apple,pcie";
- device_type = "pci";
- reg = <0x6 0x90000000 0x0 0x1000000>,
- <0x6 0x80000000 0x0 0x100000>,
- <0x6 0x81000000 0x0 0x4000>,
- <0x6 0x82000000 0x0 0x4000>,
- <0x6 0x83000000 0x0 0x4000>;
- reg-names = "config", "rc", "port0", "port1", "port2";
- interrupt-parent = <&aic>;
- interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
- <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
- <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
- msi-controller;
- msi-parent = <&pcie0>;
- msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
- iommu-map = <0x100 &dart0 1 1>,
- <0x200 &dart1 1 1>,
- <0x300 &dart2 1 1>;
- iommu-map-mask = <0xff00>;
- bus-range = <0 3>;
- #address-cells = <3>;
- #size-cells = <2>;
- ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
- <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
- power-domains = <&ps_apcie_gp>;
- pinctrl-0 = <&pcie_pins>;
- pinctrl-names = "default";
- pci@0,0 {
- device_type = "pci";
- reg = <0x0 0x0 0x0 0x0 0x0>;
- reset-gpios = <&pinctrl_ap 152 0>;
- #address-cells = <3>;
- #size-cells = <2>;
- ranges;
- };
- pci@1,0 {
- device_type = "pci";
- reg = <0x800 0x0 0x0 0x0 0x0>;
- reset-gpios = <&pinctrl_ap 153 0>;
- #address-cells = <3>;
- #size-cells = <2>;
- ranges;
- };
- pci@2,0 {
- device_type = "pci";
- reg = <0x1000 0x0 0x0 0x0 0x0>;
- reset-gpios = <&pinctrl_ap 33 0>;
- #address-cells = <3>;
- #size-cells = <2>;
- ranges;
- };
- };
- };
Raw Paste