dt-bindings: PCI: Convert Arm Versatile binding to DT schema
Subsystems (6)
Rob Herring
maintainerPATCH 1/3 dt-bindings: PCI: Convert Arm Versatile binding to DT schema
Convert the Arm Versatile PCI host binding to a DT schema.
--- .../devicetree/bindings/pci/versatile.txt | 59 ------------ .../devicetree/bindings/pci/versatile.yaml | 92 +++++++++++++++++++ MAINTAINERS | 2 +- 3 files changed, 93 insertions(+), 60 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/versatile.txt create mode 100644 Documentation/devicetree/bindings/pci/versatile.yaml
Documentation/devicetree/bindings/pci/versatile.txt deleted +0 -59
@@ -1,59 +0,0 @@ -* ARM Versatile Platform Baseboard PCI interface - -PCI host controller found on the ARM Versatile PB board's FPGA. - -Required properties: -- compatible: should contain "arm,versatile-pci" to identify the Versatile PCI - controller. -- reg: base addresses and lengths of the PCI controller. There must be 3 - entries: - - Versatile-specific registers - - Self Config space - - Config space -- #address-cells: set to <3> -- #size-cells: set to <2> -- device_type: set to "pci" -- bus-range: set to <0 0xff> -- ranges: ranges for the PCI memory and I/O regions -- #interrupt-cells: set to <1> -- interrupt-map-mask and interrupt-map: standard PCI properties to define - the mapping of the PCI interface to interrupt numbers. - -Example: - -pci-controller@10001000 { - compatible = "arm,versatile-pci"; - device_type = "pci"; - reg = <0x10001000 0x1000 - 0x41000000 0x10000 - 0x42000000 0x100000>; - bus-range = <0 0xff>; - #address-cells = <3>; - #size-cells = <2>; - #interrupt-cells = <1>; - - ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */ - 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */ - 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ - - interrupt-map-mask = <0x1800 0 0 7>; - interrupt-map = <0x1800 0 0 1 &sic 28 - 0x1800 0 0 2 &sic 29 - 0x1800 0 0 3 &sic 30 - 0x1800 0 0 4 &sic 27 - - 0x1000 0 0 1 &sic 27 - 0x1000 0 0 2 &sic 28 - 0x1000 0 0 3 &sic 29 - 0x1000 0 0 4 &sic 30 - - 0x0800 0 0 1 &sic 30 - 0x0800 0 0 2 &sic 27 - 0x0800 0 0 3 &sic 28 - 0x0800 0 0 4 &sic 29 - - 0x0000 0 0 1 &sic 29 - 0x0000 0 0 2 &sic 30 - 0x0000 0 0 3 &sic 27 - 0x0000 0 0 4 &sic 28>; -};
Documentation/devicetree/bindings/pci/versatile.yaml new file +92 -0
92 lines not on this page · raw message
MAINTAINERS +1 -1
@@ -12401,7 +12401,7 @@ M: Rob Herring <[email protected]> L: [email protected] L: [email protected] S: Maintained -F: Documentation/devicetree/bindings/pci/versatile.txt +F: Documentation/devicetree/bindings/pci/versatile.yaml F: drivers/pci/controller/pci-versatile.c PCI DRIVER FOR ARMADA 8K
Signature · 1 line
2.20.1
Rob Herring
maintainerPATCH 2/3 dt-bindings: PCI: Convert Cadence host to DT schema
Convert the Cadence PCIe host binding to DT schema.
The 'phy-names' definition is incomplete.
'vendor-id' and 'device-id' aren't listed as those are standard PCI properties. They were incorrectly defined as 16-bit when they should be 32-bits (even though only 16-bits are used).
'cdns,max-outbound-regions' should really be removed. It serves no purpose other than bounds checking 'ranges'. If 'ranges' is wrong for the h/w, what's going to ensure 'cdns,max-outbound-regions' is correct.
'cdns,no-bar-match-nbits' is also suspect. This probably could be determined from 'dma-ranges' using the sizes.
--- .../bindings/pci/cdns,cdns-pcie-host.txt | 66 ----------- .../bindings/pci/cdns,cdns-pcie-host.yaml | 106 ++++++++++++++++++ MAINTAINERS | 2 +- 3 files changed, 107 insertions(+), 67 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.txt create mode 100644 Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.txt deleted +0 -66
@@ -1,66 +0,0 @@ -* Cadence PCIe host controller - -This PCIe controller inherits the base properties defined in -host-generic-pci.txt. - -Required properties: -- compatible: Should contain "cdns,cdns-pcie-host" to identify the IP used. -- reg: Should contain the controller register base address, PCIe configuration - window base address, and AXI interface region base address respectively. -- reg-names: Must be "reg", "cfg" and "mem" respectively. -- #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 -- #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. - -Optional properties: -- cdns,max-outbound-regions: Set to maximum number of outbound regions - (default 32) -- cdns,no-bar-match-nbits: Set into the no BAR match register to configure the - number of least significant bits kept during inbound (PCIe -> AXI) address - translations (default 32) -- vendor-id: The PCI vendor ID (16 bits, default is design dependent) -- device-id: The PCI device ID (16 bits, default is design dependent) -- phys: From PHY bindings: List of Generic PHY phandles. One per lane if more - than one in the list. If only one PHY listed it must manage all lanes. -- phy-names: List of names to identify the PHY. - -Example: - -pcie@fb000000 { - compatible = "cdns,cdns-pcie-host"; - device_type = "pci"; - #address-cells = <3>; - #size-cells = <2>; - bus-range = <0x0 0xff>; - linux,pci-domain = <0>; - cdns,max-outbound-regions = <16>; - cdns,no-bar-match-nbits = <32>; - vendor-id = /bits/ 16 <0x17cd>; - device-id = /bits/ 16 <0x0200>; - - reg = <0x0 0xfb000000 0x0 0x01000000>, - <0x0 0x41000000 0x0 0x00001000>, - <0x0 0x40000000 0x0 0x04000000>; - reg-names = "reg", "cfg", "mem"; - - ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>, - <0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>; - - #interrupt-cells = <0x1>; - - interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 14 0x1 - 0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 15 0x1 - 0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 16 0x1 - 0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 17 0x1>; - - interrupt-map-mask = <0x0 0x0 0x0 0x7>; - - msi-parent = <&its_pci>; - - phys = <&pcie_phy0>; - phy-names = "pcie-phy"; -};
Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml new file +106 -0
106 lines not on this page · raw message
MAINTAINERS +1 -1
@@ -12416,7 +12416,7 @@ PCI DRIVER FOR CADENCE PCIE IP M: Tom Joseph <[email protected]> L: [email protected] S: Maintained -F: Documentation/devicetree/bindings/pci/cdns,*.txt +F: Documentation/devicetree/bindings/pci/cdns,* F: drivers/pci/controller/pcie-cadence* PCI DRIVER FOR FREESCALE LAYERSCAPE
Signature · 1 line
2.20.1
Rob Herring
maintainerPATCH 3/3 dt-bindings: PCI: Convert generic host binding to DT schema
In reply to Rob HerringConvert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
--- .../bindings/pci/arm,juno-r1-pcie.txt | 10 -- .../bindings/pci/designware-pcie-ecam.txt | 42 ----- .../bindings/pci/hisilicon-pcie.txt | 4 +- .../bindings/pci/host-generic-pci.txt | 101 ------------ .../bindings/pci/host-generic-pci.yaml | 150 ++++++++++++++++++ .../bindings/pci/pci-thunder-ecam.txt | 30 ---- .../bindings/pci/pci-thunder-pem.txt | 7 +- .../bindings/pci/plda,xpressrich3-axi.txt | 12 -- MAINTAINERS | 2 +- 9 files changed, 155 insertions(+), 203 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/arm,juno-r1-pcie.txt delete mode 100644 Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.txt create mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.yaml delete mode 100644 Documentation/devicetree/bindings/pci/pci-thunder-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi.txt
Documentation/devicetree/bindings/pci/arm,juno-r1-pcie.txt deleted +0 -10
@@ -1,10 +0,0 @@ -* ARM Juno R1 PCIe interface - -This PCIe host controller is based on PLDA XpressRICH3-AXI IP -and thus inherits all the common properties defined in plda,xpressrich3-axi.txt -as well as the base properties defined in host-generic-pci.txt. - -Required properties: - - compatible: "arm,juno-r1-pcie" - - dma-coherent: The host controller bridges the AXI transactions into PCIe bus - in a manner that makes the DMA operations to appear coherent to the CPUs.
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0 -42
42 lines not on this page · raw message
Documentation/devicetree/bindings/pci/hisilicon-pcie.txt +2 -2
@@ -49,10 +49,10 @@ compliant for all devices other than the root complex. In such cases, the host controller should be described as below. The properties and their meanings are identical to those described in -host-generic-pci.txt except as listed below. +host-generic-pci.yaml except as listed below. Properties of the host controller node that differ from -host-generic-pci.txt: +host-generic-pci.yaml: - compatible : Must be "hisilicon,hip06-pcie-ecam", or "hisilicon,hip07-pcie-ecam"
Documentation/devicetree/bindings/pci/host-generic-pci.txt deleted +0 -101
101 lines not on this page · raw message
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +150 -0
150 lines not on this page · raw message
Documentation/devicetree/bindings/pci/pci-thunder-ecam.txt deleted +0 -30
@@ -1,30 +0,0 @@ -* ThunderX PCI host controller for pass-1.x silicon - -Firmware-initialized PCI host controller to on-chip devices found on -some Cavium ThunderX processors. These devices have ECAM-based config -access, but the BARs are all at fixed addresses. We handle the fixed -addresses by synthesizing Enhanced Allocation (EA) capabilities for -these devices. - -The properties and their meanings are identical to those described in -host-generic-pci.txt except as listed below. - -Properties of the host controller node that differ from -host-generic-pci.txt: - -- compatible : Must be "cavium,pci-host-thunder-ecam" - -Example: - - pcie@84b000000000 { - compatible = "cavium,pci-host-thunder-ecam"; - device_type = "pci"; - msi-parent = <&its>; - msi-map = <0 &its 0x30000 0x10000>; - bus-range = <0 31>; - #size-cells = <2>; - #address-cells = <3>; - #stream-id-cells = <1>; - reg = <0x84b0 0x00000000 0 0x02000000>; /* Configuration space */ - ranges = <0x03000000 0x8180 0x00000000 0x8180 0x00000000 0x80 0x00000000>; /* mem ranges */ - };
Documentation/devicetree/bindings/pci/pci-thunder-pem.txt +2 -5
@@ -3,11 +3,8 @@ Firmware-initialized PCI host controller found on some Cavium ThunderX processors. -The properties and their meanings are identical to those described in -host-generic-pci.txt except as listed below. - -Properties of the host controller node that differ from -host-generic-pci.txt: +In addition to standard PCI host bridge properties, the following properties +are required: - compatible : Must be "cavium,pci-host-thunder-pem"
Documentation/devicetree/bindings/pci/plda,xpressrich3-axi.txt deleted +0 -12
@@ -1,12 +0,0 @@ -* PLDA XpressRICH3-AXI host controller - -The PLDA XpressRICH3-AXI host controller can be configured in a manner that -makes it compliant with the SBSA[1] standard published by ARM Ltd. For those -scenarios, the host-generic-pci.txt bindings apply with the following additions -to the compatible property: - -Required properties: - - compatible: should contain "plda,xpressrich3-axi" to identify the IP used. - - -[1] http://infocenter.arm.com/help/topic/com.arm.doc.den0029a/
MAINTAINERS +1 -1
@@ -12434,7 +12434,7 @@ M: Will Deacon <[email protected]> L: [email protected] L: [email protected] (moderated for non-subscribers) S: Maintained -F: Documentation/devicetree/bindings/pci/host-generic-pci.txt +F: Documentation/devicetree/bindings/pci/host-generic-pci.yaml F: drivers/pci/controller/pci-host-common.c F: drivers/pci/controller/pci-host-generic.c
Signature · 1 line
2.20.1
Re: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Hi Rob,
Quoted 22 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci";
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 10 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10- reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>, - <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;
An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
However, schemas/pci/pci-bus.yaml says:
interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum: 0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:
pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 42
Quoted 4 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-4- interrupt-map = <0x0 0x0 0x0 0x0 &gic 0x0 0x0 0x0 182 0x4>; - msi-map = <0x0 &its 0x0 0x10000>; - dma-coherent; - };
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Rob Herring
maintainerRe: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Quoted 31 lines · Geert Uytterhoeven
Hi Rob,
Quoted 27 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci"; - reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>,
Quoted 8 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 5 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5- <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
Indeed.
Quoted 15 lines
However,
schemas/pci/pci-bus.yamlsays:interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum:0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7
Quoted 4 lines
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Now fixed.
Thanks,
Rob
Re: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Hi Rob,
Quoted 55 lines · Rob Herring
Quoted 28 lines · Geert Uytterhoeven
Quoted 27 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci"; - reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>,Quoted 8 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 5 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5- <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
Indeed.
Quoted 15 lines
However,
schemas/pci/pci-bus.yamlsays:interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum:0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7
Quoted 6 lines
Quoted 4 lines
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Now fixed.
Thank you, confirmed.
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Hi Rob,
Quoted 56 lines · Geert Uytterhoeven
Quoted 55 lines · Rob Herring
Quoted 28 lines · Geert Uytterhoeven
Quoted 27 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci"; - reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>,Quoted 8 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 5 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5- <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
Indeed.
Quoted 15 lines
However,
schemas/pci/pci-bus.yamlsays:interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum:0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Now fixed.
Thank you, confirmed.
And with latest renesas-drivers, I started seeing:
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
interrupt-map:0: [0, 0, 0, 1] is too short
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
interrupt-map:1: [5, 0, 113, 4] is too short
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
interrupt-map:2: [2048, 0, 0, 1] is too short
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
interrupt-map:3: [5, 0, 113, 4] is too short
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
interrupt-map:4: [4096, 0, 0, 2] is too short
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:interrupt-map:5: [5, 0, 113, 4] is too short
Looks like interrupt-map is split incorrectly: shouldn't each entry have 8 cells?
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Rob Herring
maintainerRe: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Quoted 82 lines · Geert Uytterhoeven
Hi Rob,
Quoted 56 lines · Geert Uytterhoeven
Quoted 55 lines · Rob Herring
Quoted 28 lines · Geert Uytterhoeven
Quoted 27 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci"; - reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>,Quoted 8 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 5 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5- <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
Indeed.
Quoted 15 lines
However,
schemas/pci/pci-bus.yamlsays:interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum:0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Now fixed.
Thank you, confirmed.
And with latest renesas-drivers, I started seeing:
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:0: [0, 0, 0, 1] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:1: [5, 0, 113, 4] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:2: [2048, 0, 0, 1] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:3: [5, 0, 113, 4] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:4: [4096, 0, 0, 2] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:
Quoted 4 lines
interrupt-map:5: [5, 0, 113, 4] is too short
Looks like interrupt-map is split incorrectly: shouldn't each entry have 8 cells?
That must be with a current dtc which now splits the array before each phandle. That works for phandle+args, but not *-map properties. :( I was trying to avoid a bunch of dts updates to add brackets. I think for now, I'll just drop the interrupt-map size constraint. It's not all that accurate anyways as it doesn't look at cell sizes.
Rob
Re: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Hi Rob,
Quoted 82 lines · Rob Herring
Quoted 81 lines · Geert Uytterhoeven
Quoted 56 lines · Geert Uytterhoeven
Quoted 55 lines · Rob Herring
Quoted 28 lines · Geert Uytterhoeven
Quoted 27 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>index 515b2f9542e5..000000000000
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-10-Example: - - pcie1: pcie@7f000000 { - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; - device_type = "pci"; - reg = <0x0 0x7f000000 0x0 0xf00000>; - bus-range = <0x0 0xe>; - #address-cells = <3>; - #size-cells = <2>; - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>,Quoted 8 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt line 38
Quoted 5 lines
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt deleted +0
-5- <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; - - #interrupt-cells = <0x1>; - interrupt-map-mask = <0x0 0x0 0x0 0x0>;An all-zeroes interrupt-map-mask seems to be very common on embedded SoCs, where all devices are mapped to a single interrupt.
Indeed.
Quoted 15 lines
However,
schemas/pci/pci-bus.yamlsays:interrupt-map-mask:
items:
- description: PCI high address cell
minimum: 0
maximum:0xf800
- description: PCI mid address cell
const: 0
- description: PCI low address cell
const: 0
- description: PCI IRQ cell
minimum: 1
maximum: 7Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
and thus complains about an all-zeroes mask, e.g.
arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dt.yaml:pcie@fe000000: interrupt-map-mask:0:3: 0 is less than the minimum of 1
Now fixed.
Thank you, confirmed.
And with latest renesas-drivers, I started seeing:
arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:0: [0, 0, 0, 1] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:1: [5, 0, 113, 4] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:2: [2048, 0, 0, 1] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:3: [5, 0, 113, 4] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000: interrupt-map:4: [4096, 0, 0, 2] is too short arch/arm/boot/dts/r8a7791-koelsch.dt.yaml: pci@ee0d0000:interrupt-map:5: [5, 0, 113, 4] is too short
Quoted 5 lines
Quoted 2 lines
Looks like interrupt-map is split incorrectly: shouldn't each entry have 8 cells?
That must be with a current dtc which now splits the array before each phandle. That works for phandle+args, but not *-map properties. :( I
Ah, that explains it: renesas-drivers does include your for-next branch. At first I was a bit puzzled, as the messages weren't introduced by a dt-schema repo update...
Quoted 3 lines
was trying to avoid a bunch of dts updates to add brackets. I think for now, I'll just drop the interrupt-map size constraint. It's not all that accurate anyways as it doesn't look at cell sizes.
Too late, I've already applied grouping to the Renesas ARM DTS files ;-)
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
In reply to Rob HerringQuoted 32 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>--- .../bindings/pci/arm,juno-r1-pcie.txt | 10 -- .../bindings/pci/designware-pcie-ecam.txt | 42 ----- .../bindings/pci/hisilicon-pcie.txt | 4 +- .../bindings/pci/host-generic-pci.txt | 101 ------------ .../bindings/pci/host-generic-pci.yaml | 150 ++++++++++++++++++ .../bindings/pci/pci-thunder-ecam.txt | 30 ---- .../bindings/pci/pci-thunder-pem.txt | 7 +- .../bindings/pci/plda,xpressrich3-axi.txt | 12 -- MAINTAINERS | 2 +- 9 files changed, 155 insertions(+), 203 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/arm,juno-r1-pcie.txt delete mode 100644 Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.txt create mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.yaml delete mode 100644 Documentation/devicetree/bindings/pci/pci-thunder-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi.txt
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 37
Quoted 4 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +2
-0+ Interrupt mapping is exactly as described in `Open Firmware Recommended +
I think there's some text missing here.
Quoted 35 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +35
-0+allOf: + - $ref: /schemas/pci/pci-bus.yaml# + +properties: + compatible: + description: Depends on the layout of configuration space (CAM vs ECAM + respectively). May also have more specific compatibles. + anyOf: + - description: + PCIe host controller in Arm Juno based on PLDA XpressRICH3-AXI IP + items: + - const: arm,juno-r1-pcie + - const: plda,xpressrich3-axi + - const: pci-host-ecam-generic + - description: | + ThunderX PCI host controller for pass-1.x silicon + + Firmware-initialized PCI host controller to on-chip devices found on + some Cavium ThunderX processors. These devices have ECAM-based config + access, but the BARs are all at fixed addresses. We handle the fixed + addresses by synthesizing Enhanced Allocation (EA) capabilities for + these devices. + const: cavium,pci-host-thunder-ecam + - description: | + In some cases, firmware may already have configured the Synopsys + DesignWare PCIe controller in RC mode with static ATU window mappings + that cover all config, MMIO and I/O spaces in a [mostly] ECAM + compatible fashion. In this case, there is no need for the OS to + perform any low level setup of clocks, PHYs or device registers, nor + is there any reason for the driver to reconfigure ATU windows for + config and/or IO space accesses at runtime. + + In cases where the IP was synthesized with a minimum ATU window size + of 64 KB, it cannot be supported by the generic ECAM driver, because + it requires special config space accessors that filter accesses to
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 82
Quoted 10 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +10
-0+ device #1 and beyond on the first bus. + items: + - enum: + - marvell,armada8k-pcie-ecam + - socionext,synquacer-pcie-ecam + - const: snps,dw-pcie-ecam + - contains: + enum: + - pci-host-cam-generic + - pci-host-ecam-generic
I assume the description that talks about "Synopsys DesignWare" goes with "pci-host-cam-generic" and "pci-host-ecam-generic"? I hope there can be generic controllers using non-Synopsys IP, but I don't know quite how the description/items/contains parts are related.
Quoted 9 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +9
-0+ reg: + description: + The Configuration Space base address and size, as accessed from the parent + bus. The base address corresponds to the first bus in the "bus-range" + property. If no "bus-range" is specified, this will be bus 0 (the + default). + maxItems: 1 + + ranges:
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 102
Quoted 10 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +10
-0+ description: + As described in IEEE Std 1275-1994, but must provide at least a + definition of non-prefetchable memory. One or both of prefetchable Memory + and IO Space may also be provided. + minItems: 1 + maxItems: 3 + + dma-coherent: + description: The host controller bridges the AXI transactions into PCIe bus + in a manner that makes the DMA operations to appear coherent to the CPUs.
The "host-generic-pci.yaml" name sounds very generic, so I'm not quite sure how to read "AXI" -- that sounds like a feature of a specific platform? I think "dma-coherent" itself is not platform-specific.
Quoted 13 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +13
-0+required: + - compatible + - reg + - ranges + +if: + properties: + compatible: + contains: + const: arm,juno-r1-pcie +then: + required: + - dma-coherent
Rob Herring
maintainerRe: [PATCH 3/3] dt-bindings: PCI: Convert generic host binding to DT schema
Quoted 32 lines · Bjorn Helgaas
Quoted 29 lines · Rob Herring
Convert the generic PCI host binding to DT schema. The derivative Juno, PLDA XpressRICH3-AXI, and Designware ECAM bindings all just vary in their compatible strings. The simplest way to convert those to schema is just add them into the common generic PCI host schema.
Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Cc Zhou Wang <[email protected]>Cc Will Deacon <[email protected]>Cc David Daney <[email protected]>Signed-off-by Rob Herring <[email protected]>--- .../bindings/pci/arm,juno-r1-pcie.txt | 10 -- .../bindings/pci/designware-pcie-ecam.txt | 42 ----- .../bindings/pci/hisilicon-pcie.txt | 4 +- .../bindings/pci/host-generic-pci.txt | 101 ------------ .../bindings/pci/host-generic-pci.yaml | 150 ++++++++++++++++++ .../bindings/pci/pci-thunder-ecam.txt | 30 ---- .../bindings/pci/pci-thunder-pem.txt | 7 +- .../bindings/pci/plda,xpressrich3-axi.txt | 12 -- MAINTAINERS | 2 +- 9 files changed, 155 insertions(+), 203 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/arm,juno-r1-pcie.txt delete mode 100644 Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.txt create mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.yaml delete mode 100644 Documentation/devicetree/bindings/pci/pci-thunder-ecam.txt delete mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi.txt
Quoted 8 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 37
Quoted 6 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +2
-0+ Interrupt mapping is exactly as described in `Open Firmware Recommended +I think there's some text missing here.
Removed now. The schemas capture in constraints what the missing text did in free-form.
Quoted 40 lines
Quoted 40 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +40
-0+allOf: + - $ref: /schemas/pci/pci-bus.yaml# + +properties: + compatible: + description: Depends on the layout of configuration space (CAM vs ECAM + respectively). May also have more specific compatibles. + anyOf: + - description: + PCIe host controller in Arm Juno based on PLDA XpressRICH3-AXI IP + items: + - const: arm,juno-r1-pcie + - const: plda,xpressrich3-axi + - const: pci-host-ecam-generic + - description: | + ThunderX PCI host controller for pass-1.x silicon + + Firmware-initialized PCI host controller to on-chip devices found on + some Cavium ThunderX processors. These devices have ECAM-based config + access, but the BARs are all at fixed addresses. We handle the fixed + addresses by synthesizing Enhanced Allocation (EA) capabilities for + these devices. + const: cavium,pci-host-thunder-ecam + - description: | + In some cases, firmware may already have configured the Synopsys + DesignWare PCIe controller in RC mode with static ATU window mappings + that cover all config, MMIO and I/O spaces in a [mostly] ECAM + compatible fashion. In this case, there is no need for the OS to + perform any low level setup of clocks, PHYs or device registers, nor + is there any reason for the driver to reconfigure ATU windows for + config and/or IO space accesses at runtime. + + In cases where the IP was synthesized with a minimum ATU window size + of 64 KB, it cannot be supported by the generic ECAM driver, because + it requires special config space accessors that filter accesses to + device #1 and beyond on the first bus. + items: + - enum: + - marvell,armada8k-pcie-ecam + - socionext,synquacer-pcie-ecam
Quoted 8 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 82
Quoted 5 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +5
-0+ - const: snps,dw-pcie-ecam + - contains: + enum: + - pci-host-cam-generic + - pci-host-ecam-genericI assume the description that talks about "Synopsys DesignWare" goes with "pci-host-cam-generic" and "pci-host-ecam-generic"?
No, it's a catch all for all other cases.
I'll add a description to make the separation more clear. Using 'contains' here was leftover from when I initially kept the same separate file structure. With it all combined to 1 schema, there's really no need for that and it should be 'items' list instead. The difference is we'll fail on 'compatible = "foo,bar-pci", "pci-host-ecam-generic";' whereas that is valid for 'contains'.
Quoted 3 lines
I hope there
can be generic controllers using non-Synopsys IP, but I don't know quite how the description/items/contains parts are related.
The '-' are important. They separate each entry under the 'anyOf'.
There are a few besides the ones listed with quirks:
arch/arm/boot/dts/alpine.dtsiarch/arm64/boot/dts/al/alpine-v2.dtsiarch/arm64/boot/dts/amd/amd-seattle-soc.dtsiarch/arm64/boot/dts/arm/fvp-base-revc.dtsarch/arm64/boot/dts/cavium/thunder2-99xx.dtsiarch/arm64/boot/dts/freescale/fsl-ls1028a.dtsiarch/xtensa/boot/dts/virt.dts
Some of these might actually be Synopsys. The entry for Synopsys is only for the not quite compliant configured IP.
Note that 'pci-host-cam-generic' is unused at least by anything upstream.
Quoted 16 lines
Quoted 16 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +15
-0+ reg: + description: + The Configuration Space base address and size, as accessed from the parent + bus. The base address corresponds to the first bus in the "bus-range" + property. If no "bus-range" is specified, this will be bus 0 (the + default). + maxItems: 1 + + ranges: + description: + As described in IEEE Std 1275-1994, but must provide at least a + definition of non-prefetchable memory. One or both of prefetchable Memory + and IO Space may also be provided. + minItems: 1 + maxItems: 3
Quoted 8 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml line 102
Quoted 4 lines
Documentation/devicetree/bindings/pci/host-generic-pci.yaml new file +4
-0+ + dma-coherent: + description: The host controller bridges the AXI transactions into PCIe bus + in a manner that makes the DMA operations to appear coherent to the CPUs.The "
host-generic-pci.yaml" name sounds very generic, so I'm not quite sure how to read "AXI" -- that sounds like a feature of a specific platform? I think "dma-coherent" itself is not platform-specific.
Indeed. On second thought, just 'true' here is enough as we don't need individual bindings to describe common properties over and over.
Rob
Quoted 7 lines · Rob Herring
Convert the Arm Versatile PCI host binding to a DT schema.
Cc Linus Walleij <[email protected]>Cc Bjorn Helgaas <[email protected]>Cc Lorenzo Pieralisi <[email protected]>Cc Andrew Murray <[email protected]>Signed-off-by Rob Herring <[email protected]>
Thanks for doing this.
Yours,
Linus Walleij