diff mbox series

[v3,6/6] dt-bindings: pci: Convert iProc PCIe to YAML

Message ID 20211208040432.3658355-7-f.fainelli@gmail.com
State Superseded, archived
Headers show
Series Convert iProc PCIe binding to YAML | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 2 warnings, 176 lines checked
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Florian Fainelli Dec. 8, 2021, 4:04 a.m. UTC
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>
---
 .../bindings/pci/brcm,iproc-pcie.txt          | 133 -------------
 .../bindings/pci/brcm,iproc-pcie.yaml         | 176 ++++++++++++++++++
 2 files changed, 176 insertions(+), 133 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
 create mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml

Comments

Rob Herring Dec. 8, 2021, 1:44 p.m. UTC | #1
On Tue, 07 Dec 2021 20:04:32 -0800, Florian Fainelli wrote:
> 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>
> ---
>  .../bindings/pci/brcm,iproc-pcie.txt          | 133 -------------
>  .../bindings/pci/brcm,iproc-pcie.yaml         | 176 ++++++++++++++++++
>  2 files changed, 176 insertions(+), 133 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
>  create mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
> 

Running 'make dtbs_check' with the schema in this patch gives the
following warnings. Consider if they are expected or the schema is
incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check.
This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/patch/1565076


pcie@18012000: msi-controller: 'oneOf' conditional failed, one must be fixed:
	arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dt.yaml
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml
	arch/arm/boot/dts/bcm958522er.dt.yaml
	arch/arm/boot/dts/bcm958525er.dt.yaml
	arch/arm/boot/dts/bcm958525xmc.dt.yaml
	arch/arm/boot/dts/bcm958622hr.dt.yaml
	arch/arm/boot/dts/bcm958623hr.dt.yaml
	arch/arm/boot/dts/bcm958625hr.dt.yaml
	arch/arm/boot/dts/bcm958625k.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
	arch/arm/boot/dts/bcm988312hr.dt.yaml

pcie@18012000: ranges: 'oneOf' conditional failed, one must be fixed:
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml

pcie@18012000: Unevaluated properties are not allowed ('linux,pci-domain', 'bus-range', '#address-cells', '#size-cells', 'device_type' were unexpected)
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml

pcie@18013000: msi-controller: 'oneOf' conditional failed, one must be fixed:
	arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dt.yaml
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml
	arch/arm/boot/dts/bcm958522er.dt.yaml
	arch/arm/boot/dts/bcm958525er.dt.yaml
	arch/arm/boot/dts/bcm958525xmc.dt.yaml
	arch/arm/boot/dts/bcm958622hr.dt.yaml
	arch/arm/boot/dts/bcm958623hr.dt.yaml
	arch/arm/boot/dts/bcm958625hr.dt.yaml
	arch/arm/boot/dts/bcm958625k.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
	arch/arm/boot/dts/bcm988312hr.dt.yaml

pcie@18013000: ranges: 'oneOf' conditional failed, one must be fixed:
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml

pcie@18013000: Unevaluated properties are not allowed ('linux,pci-domain', 'bus-range', '#address-cells', '#size-cells', 'device_type' were unexpected)
	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
	arch/arm/boot/dts/bcm911360k.dt.yaml
	arch/arm/boot/dts/bcm958300k.dt.yaml
	arch/arm/boot/dts/bcm958305k.dt.yaml

pcie@18014000: msi-controller: 'oneOf' conditional failed, one must be fixed:
	arch/arm/boot/dts/bcm958522er.dt.yaml
	arch/arm/boot/dts/bcm958525er.dt.yaml
	arch/arm/boot/dts/bcm958525xmc.dt.yaml
	arch/arm/boot/dts/bcm958622hr.dt.yaml
	arch/arm/boot/dts/bcm958623hr.dt.yaml
	arch/arm/boot/dts/bcm958625hr.dt.yaml
	arch/arm/boot/dts/bcm958625k.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
	arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
	arch/arm/boot/dts/bcm988312hr.dt.yaml
Florian Fainelli Dec. 8, 2021, 5:32 p.m. UTC | #2
On 12/8/21 5:44 AM, Rob Herring wrote:
> On Tue, 07 Dec 2021 20:04:32 -0800, Florian Fainelli wrote:
>> 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>
>> ---
>>  .../bindings/pci/brcm,iproc-pcie.txt          | 133 -------------
>>  .../bindings/pci/brcm,iproc-pcie.yaml         | 176 ++++++++++++++++++
>>  2 files changed, 176 insertions(+), 133 deletions(-)
>>  delete mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
>>  create mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
>>
> 
> Running 'make dtbs_check' with the schema in this patch gives the
> following warnings. Consider if they are expected or the schema is
> incorrect. These may not be new warnings.
> 
> Note that it is not yet a requirement to have 0 warnings for dtbs_check.
> This will change in the future.
> 
> Full log is available here: https://patchwork.ozlabs.org/patch/1565076
> 
> 
> pcie@18012000: msi-controller: 'oneOf' conditional failed, one must be fixed:
> 	arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dt.yaml
> 	arch/arm/boot/dts/bcm911360_entphn.dt.yaml
> 	arch/arm/boot/dts/bcm911360k.dt.yaml
> 	arch/arm/boot/dts/bcm958300k.dt.yaml
> 	arch/arm/boot/dts/bcm958305k.dt.yaml
> 	arch/arm/boot/dts/bcm958522er.dt.yaml
> 	arch/arm/boot/dts/bcm958525er.dt.yaml
> 	arch/arm/boot/dts/bcm958525xmc.dt.yaml
> 	arch/arm/boot/dts/bcm958622hr.dt.yaml
> 	arch/arm/boot/dts/bcm958623hr.dt.yaml
> 	arch/arm/boot/dts/bcm958625hr.dt.yaml
> 	arch/arm/boot/dts/bcm958625k.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
> 	arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
> 	arch/arm/boot/dts/bcm988312hr.dt.yaml

Those would mean that the binding patch was applied without the DTS
patches earlier in the series?
Rob Herring Dec. 8, 2021, 10:21 p.m. UTC | #3
On Wed, Dec 8, 2021 at 11:32 AM Florian Fainelli <f.fainelli@gmail.com> wrote:
>
> On 12/8/21 5:44 AM, Rob Herring wrote:
> > On Tue, 07 Dec 2021 20:04:32 -0800, Florian Fainelli wrote:
> >> 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>
> >> ---
> >>  .../bindings/pci/brcm,iproc-pcie.txt          | 133 -------------
> >>  .../bindings/pci/brcm,iproc-pcie.yaml         | 176 ++++++++++++++++++
> >>  2 files changed, 176 insertions(+), 133 deletions(-)
> >>  delete mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
> >>  create mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
> >>
> >
> > Running 'make dtbs_check' with the schema in this patch gives the
> > following warnings. Consider if they are expected or the schema is
> > incorrect. These may not be new warnings.
> >
> > Note that it is not yet a requirement to have 0 warnings for dtbs_check.
> > This will change in the future.
> >
> > Full log is available here: https://patchwork.ozlabs.org/patch/1565076
> >
> >
> > pcie@18012000: msi-controller: 'oneOf' conditional failed, one must be fixed:
> >       arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dt.yaml
> >       arch/arm/boot/dts/bcm911360_entphn.dt.yaml
> >       arch/arm/boot/dts/bcm911360k.dt.yaml
> >       arch/arm/boot/dts/bcm958300k.dt.yaml
> >       arch/arm/boot/dts/bcm958305k.dt.yaml
> >       arch/arm/boot/dts/bcm958522er.dt.yaml
> >       arch/arm/boot/dts/bcm958525er.dt.yaml
> >       arch/arm/boot/dts/bcm958525xmc.dt.yaml
> >       arch/arm/boot/dts/bcm958622hr.dt.yaml
> >       arch/arm/boot/dts/bcm958623hr.dt.yaml
> >       arch/arm/boot/dts/bcm958625hr.dt.yaml
> >       arch/arm/boot/dts/bcm958625k.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
> >       arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
> >       arch/arm/boot/dts/bcm988312hr.dt.yaml
>
> Those would mean that the binding patch was applied without the DTS
> patches earlier in the series?

Right. I generally don't look at dts patches, but I did look at these
and don't see how this one is fixed (nor caused):

pcie@18012000: Unevaluated properties are not allowed
('linux,pci-domain', 'bus-range', '#address-cells', '#size-cells',
'device_type' were unexpected)
        arch/arm/boot/dts/bcm911360_entphn.dt.yaml
        arch/arm/boot/dts/bcm911360k.dt.yaml
        arch/arm/boot/dts/bcm958300k.dt.yaml
        arch/arm/boot/dts/bcm958305k.dt.yaml
Rob Herring Dec. 8, 2021, 10:22 p.m. UTC | #4
On Wed, Dec 8, 2021 at 4:21 PM Rob Herring <robh@kernel.org> wrote:
>
> On Wed, Dec 8, 2021 at 11:32 AM Florian Fainelli <f.fainelli@gmail.com> wrote:
> >
> > On 12/8/21 5:44 AM, Rob Herring wrote:
> > > On Tue, 07 Dec 2021 20:04:32 -0800, Florian Fainelli wrote:
> > >> 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>
> > >> ---
> > >>  .../bindings/pci/brcm,iproc-pcie.txt          | 133 -------------
> > >>  .../bindings/pci/brcm,iproc-pcie.yaml         | 176 ++++++++++++++++++
> > >>  2 files changed, 176 insertions(+), 133 deletions(-)
> > >>  delete mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
> > >>  create mode 100644 Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
> > >>
> > >
> > > Running 'make dtbs_check' with the schema in this patch gives the
> > > following warnings. Consider if they are expected or the schema is
> > > incorrect. These may not be new warnings.
> > >
> > > Note that it is not yet a requirement to have 0 warnings for dtbs_check.
> > > This will change in the future.
> > >
> > > Full log is available here: https://patchwork.ozlabs.org/patch/1565076
> > >
> > >
> > > pcie@18012000: msi-controller: 'oneOf' conditional failed, one must be fixed:
> > >       arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dt.yaml
> > >       arch/arm/boot/dts/bcm911360_entphn.dt.yaml
> > >       arch/arm/boot/dts/bcm911360k.dt.yaml
> > >       arch/arm/boot/dts/bcm958300k.dt.yaml
> > >       arch/arm/boot/dts/bcm958305k.dt.yaml
> > >       arch/arm/boot/dts/bcm958522er.dt.yaml
> > >       arch/arm/boot/dts/bcm958525er.dt.yaml
> > >       arch/arm/boot/dts/bcm958525xmc.dt.yaml
> > >       arch/arm/boot/dts/bcm958622hr.dt.yaml
> > >       arch/arm/boot/dts/bcm958623hr.dt.yaml
> > >       arch/arm/boot/dts/bcm958625hr.dt.yaml
> > >       arch/arm/boot/dts/bcm958625k.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx64.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx64w.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx65.dt.yaml
> > >       arch/arm/boot/dts/bcm958625-meraki-mx65w.dt.yaml
> > >       arch/arm/boot/dts/bcm988312hr.dt.yaml
> >
> > Those would mean that the binding patch was applied without the DTS
> > patches earlier in the series?
>
> Right. I generally don't look at dts patches, but I did look at these
> and don't see how this one is fixed (nor caused):

Note that unevaluatedProperties is only enabled in the dtschema main branch.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt b/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
deleted file mode 100644
index df065aa53a83..000000000000
--- a/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.txt
+++ /dev/null
@@ -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";
-	};
diff --git a/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
new file mode 100644
index 000000000000..a9d21d89a970
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/brcm,iproc-pcie.yaml
@@ -0,0 +1,176 @@ 
+# 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
+
+  dma-coherent: 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";
+           };
+    };