mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 23:23:03 +00:00
dt-bindings: pci: Convert iProc PCIe to YAML
Conver the iProc PCIe controller Device Tree binding to YAML now that all DTS in arch/arm and arch/arm64 have been fixed to be compliant. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Link: https://lore.kernel.org/r/20211214035820.2984289-7-f.fainelli@gmail.com Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
8dbb528b88
commit
905b986d09
@ -1,133 +0,0 @@
|
||||
* Broadcom iProc PCIe controller with the platform bus interface
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
"brcm,iproc-pcie" for the first generation of PAXB based controller,
|
||||
used in SoCs including NSP, Cygnus, NS2, and Pegasus
|
||||
"brcm,iproc-pcie-paxb-v2" for the second generation of PAXB-based
|
||||
controllers, used in Stingray
|
||||
"brcm,iproc-pcie-paxc" for the first generation of PAXC based
|
||||
controller, used in NS2
|
||||
"brcm,iproc-pcie-paxc-v2" for the second generation of PAXC based
|
||||
controller, used in Stingray
|
||||
PAXB-based root complex is used for external endpoint devices. PAXC-based
|
||||
root complex is connected to emulated endpoint devices internal to the ASIC
|
||||
- reg: base address and length of the PCIe controller I/O register space
|
||||
- #interrupt-cells: set to <1>
|
||||
- interrupt-map-mask and interrupt-map, standard PCI properties to define the
|
||||
mapping of the PCIe interface to interrupt numbers
|
||||
- linux,pci-domain: PCI domain ID. Should be unique for each host controller
|
||||
- bus-range: PCI bus numbers covered
|
||||
- #address-cells: set to <3>
|
||||
- #size-cells: set to <2>
|
||||
- device_type: set to "pci"
|
||||
- ranges: ranges for the PCI memory and I/O regions
|
||||
|
||||
Optional properties:
|
||||
- phys: phandle of the PCIe PHY device
|
||||
- phy-names: must be "pcie-phy"
|
||||
- dma-coherent: present if DMA operations are coherent
|
||||
- dma-ranges: Some PAXB-based root complexes do not have inbound mapping done
|
||||
by the ASIC after power on reset. In this case, SW is required to configure
|
||||
the mapping, based on inbound memory regions specified by this property.
|
||||
|
||||
- brcm,pcie-ob: Some iProc SoCs do not have the outbound address mapping done
|
||||
by the ASIC after power on reset. In this case, SW needs to configure it
|
||||
|
||||
If the brcm,pcie-ob property is present, the following properties become
|
||||
effective:
|
||||
|
||||
Required:
|
||||
- brcm,pcie-ob-axi-offset: The offset from the AXI address to the internal
|
||||
address used by the iProc PCIe core (not the PCIe address)
|
||||
|
||||
MSI support (optional):
|
||||
|
||||
For older platforms without MSI integrated in the GIC, iProc PCIe core provides
|
||||
an event queue based MSI support. The iProc MSI uses host memories to store
|
||||
MSI posted writes in the event queues
|
||||
|
||||
On newer iProc platforms, gicv2m or gicv3-its based MSI support should be used
|
||||
|
||||
- msi-map: Maps a Requester ID to an MSI controller and associated MSI
|
||||
sideband data
|
||||
|
||||
- msi-parent: Link to the device node of the MSI controller, used when no MSI
|
||||
sideband data is passed between the iProc PCIe controller and the MSI
|
||||
controller
|
||||
|
||||
Refer to the following binding documents for more detailed description on
|
||||
the use of 'msi-map' and 'msi-parent':
|
||||
Documentation/devicetree/bindings/pci/pci-msi.txt
|
||||
Documentation/devicetree/bindings/interrupt-controller/msi.txt
|
||||
|
||||
When the iProc event queue based MSI is used, one needs to define the
|
||||
following properties in the MSI device node:
|
||||
- compatible: Must be "brcm,iproc-msi"
|
||||
- msi-controller: claims itself as an MSI controller
|
||||
- interrupts: List of interrupt IDs from its parent interrupt device
|
||||
|
||||
Optional properties:
|
||||
- brcm,pcie-msi-inten: Needs to be present for some older iProc platforms that
|
||||
require the interrupt enable registers to be set explicitly to enable MSI
|
||||
|
||||
Example:
|
||||
pcie0: pcie@18012000 {
|
||||
compatible = "brcm,iproc-pcie";
|
||||
reg = <0x18012000 0x1000>;
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_NONE>;
|
||||
|
||||
linux,pci-domain = <0>;
|
||||
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x28000000 0 0x00010000
|
||||
0x82000000 0 0x20000000 0x20000000 0 0x04000000>;
|
||||
|
||||
phys = <&phy 0 5>;
|
||||
phy-names = "pcie-phy";
|
||||
|
||||
brcm,pcie-ob;
|
||||
brcm,pcie-ob-axi-offset = <0x00000000>;
|
||||
|
||||
msi-parent = <&msi0>;
|
||||
|
||||
/* iProc event queue based MSI */
|
||||
msi0: msi@18012000 {
|
||||
compatible = "brcm,iproc-msi";
|
||||
msi-controller;
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SPI 96 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 97 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 98 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 99 IRQ_TYPE_NONE>,
|
||||
};
|
||||
};
|
||||
|
||||
pcie1: pcie@18013000 {
|
||||
compatible = "brcm,iproc-pcie";
|
||||
reg = <0x18013000 0x1000>;
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||
|
||||
linux,pci-domain = <1>;
|
||||
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x48000000 0 0x00010000
|
||||
0x82000000 0 0x40000000 0x40000000 0 0x04000000>;
|
||||
|
||||
phys = <&phy 1 6>;
|
||||
phy-names = "pcie-phy";
|
||||
};
|
184
Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
Normal file
184
Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
Normal file
@ -0,0 +1,184 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/brcm,iproc-pcie.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom iProc PCIe controller with the platform bus interface
|
||||
|
||||
maintainers:
|
||||
- Ray Jui <ray.jui@broadcom.com>
|
||||
- Scott Branden <scott.branden@broadcom.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pci/pci-bus.yaml#
|
||||
- $ref: /schemas/interrupt-controller/msi-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
# for the first generation of PAXB based controller, used in SoCs
|
||||
# including NSP, Cygnus, NS2, and Pegasus
|
||||
- brcm,iproc-pcie
|
||||
# for the second generation of PAXB-based controllers, used in
|
||||
# Stingray
|
||||
- brcm,iproc-pcie-paxb-v2
|
||||
# For the first generation of PAXC based controller, used in NS2
|
||||
- brcm,iproc-pcie-paxc
|
||||
# For the second generation of PAXC based controller, used in Stingray
|
||||
- brcm,iproc-pcie-paxc-v2
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description: >
|
||||
Base address and length of the PCIe controller I/O register space
|
||||
|
||||
interrupt-map: true
|
||||
|
||||
interrupt-map-mask: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 1
|
||||
|
||||
ranges:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
description: >
|
||||
Ranges for the PCI memory and I/O regions
|
||||
|
||||
phys:
|
||||
maxItems: 1
|
||||
|
||||
phy-names:
|
||||
items:
|
||||
- const: pcie-phy
|
||||
|
||||
bus-range: true
|
||||
|
||||
dma-coherent: true
|
||||
|
||||
"#address-cells": true
|
||||
|
||||
"#size-cells": true
|
||||
|
||||
device_type: true
|
||||
|
||||
brcm,pcie-ob:
|
||||
type: boolean
|
||||
description: >
|
||||
Some iProc SoCs do not have the outbound address mapping done by the
|
||||
ASIC after power on reset. In this case, SW needs to configure it
|
||||
|
||||
brcm,pcie-ob-axi-offset:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: >
|
||||
The offset from the AXI address to the internal address used by the
|
||||
iProc PCIe core (not the PCIe address)
|
||||
|
||||
msi:
|
||||
type: object
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: brcm,iproc-msi
|
||||
|
||||
msi-parent: true
|
||||
|
||||
msi-controller: true
|
||||
|
||||
brcm,pcie-msi-inten:
|
||||
type: boolean
|
||||
description: >
|
||||
Needs to be present for some older iProc platforms that require the
|
||||
interrupt enable registers to be set explicitly to enable MSI
|
||||
|
||||
dependencies:
|
||||
brcm,pcie-ob-axi-offset: ["brcm,pcie-ob"]
|
||||
brcm,pcie-msi-inten: [msi-controller]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- ranges
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- brcm,iproc-pcie
|
||||
then:
|
||||
required:
|
||||
- interrupt-map
|
||||
- interrupt-map-mask
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
bus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
pcie0: pcie@18012000 {
|
||||
compatible = "brcm,iproc-pcie";
|
||||
reg = <0x18012000 0x1000>;
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_NONE>;
|
||||
|
||||
linux,pci-domain = <0>;
|
||||
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x28000000 0 0x00010000>,
|
||||
<0x82000000 0 0x20000000 0x20000000 0 0x04000000>;
|
||||
|
||||
phys = <&phy 0 5>;
|
||||
phy-names = "pcie-phy";
|
||||
|
||||
brcm,pcie-ob;
|
||||
brcm,pcie-ob-axi-offset = <0x00000000>;
|
||||
|
||||
msi-parent = <&msi0>;
|
||||
|
||||
/* iProc event queue based MSI */
|
||||
msi0: msi {
|
||||
compatible = "brcm,iproc-msi";
|
||||
msi-controller;
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SPI 96 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 97 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 98 IRQ_TYPE_NONE>,
|
||||
<GIC_SPI 99 IRQ_TYPE_NONE>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie1: pcie@18013000 {
|
||||
compatible = "brcm,iproc-pcie";
|
||||
reg = <0x18013000 0x1000>;
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||
|
||||
linux,pci-domain = <1>;
|
||||
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x48000000 0 0x00010000>,
|
||||
<0x82000000 0 0x40000000 0x40000000 0 0x04000000>;
|
||||
|
||||
phys = <&phy 1 6>;
|
||||
phy-names = "pcie-phy";
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue
Block a user