[PATCH v9 1/2] dt-bindings: PCI: xilinx-versal-cpm: Add PERST# and reset support

From: Sai Krishna Musham

Date: Fri Aug 07 2026 - 10:22:43 EST


Add the optional 'resets' property to manage the PCIe IP reset, and the
'reset-gpios' property on the Root Port child node for GPIO-based control
of the PCIe RP PERST# signal (assert/deassert). Both are optional to keep
backward compatibility with existing device trees.

Update the examples to show the reset controller and PERST# GPIO wiring.

Signed-off-by: Sai Krishna Musham <sai.krishna.musham@xxxxxxx>
---
Changes in v9:
- None

Changes in v8:
- Add resets property.
- Move reset-gpios property to child node and update the example.

v1: https://lore.kernel.org/all/20250224063046.1438006-2-sai.krishna.musham@xxxxxxx/
v2: https://lore.kernel.org/all/20250226124358.88227-2-sai.krishna.musham@xxxxxxx/
v3: https://lore.kernel.org/all/20250227042454.907182-2-sai.krishna.musham@xxxxxxx/
v4: https://lore.kernel.org/all/20250318092648.2298280-2-sai.krishna.musham@xxxxxxx/
v5: https://lore.kernel.org/all/20250321114211.2185782-2-sai.krishna.musham@xxxxxxx/
v6: https://lore.kernel.org/all/20250326022811.3090688-2-sai.krishna.musham@xxxxxxx/
v7: https://lore.kernel.org/all/20250414032304.862779-2-sai.krishna.musham@xxxxxxx/
v8: https://lore.kernel.org/all/20260807123507.3418671-2-sai.krishna.musham@xxxxxxx/
---
.../bindings/pci/xilinx-versal-cpm.yaml | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)

diff --git a/Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml b/Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml
index 9823456addea..a28a88dc8e88 100644
--- a/Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml
+++ b/Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml
@@ -41,6 +41,10 @@ properties:
description:
Maps a Requester ID to an MSI controller and associated MSI sideband data.

+ resets:
+ description: Reset for the PCIe controller.
+ maxItems: 1
+
ranges:
maxItems: 2

@@ -61,6 +65,17 @@ properties:

interrupt-controller: true

+patternProperties:
+ '^pcie@[0-2],0$':
+ type: object
+ $ref: /schemas/pci/pci-pci-bridge.yaml#
+
+ properties:
+ reg:
+ maxItems: 1
+
+ unevaluatedProperties: false
+
required:
- reg
- reg-names
@@ -76,6 +91,9 @@ unevaluatedProperties: false

examples:
- |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/reset/xlnx-versal-resets.h>
+
versal {
#address-cells = <2>;
#size-cells = <2>;
@@ -99,6 +117,16 @@ examples:
reg = <0x0 0xfca10000 0x0 0x1000>,
<0x6 0x00000000 0x0 0x10000000>;
reg-names = "cpm_slcr", "cfg";
+ resets = <&versal_reset VERSAL_RST_PCIE_CORE0>;
+
+ pcie@0,0 {
+ device_type = "pci";
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ reset-gpios = <&gpio1 38 GPIO_ACTIVE_LOW>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+ };
pcie_intc_0: interrupt-controller {
#address-cells = <0>;
#interrupt-cells = <1>;
@@ -127,6 +155,16 @@ examples:
<0x06 0x00000000 0x00 0x1000000>,
<0x00 0xfce20000 0x00 0x1000000>;
reg-names = "cpm_slcr", "cfg", "cpm_csr";
+ resets = <&versal_reset VERSAL_RST_PCIE_CORE0>;
+
+ pcie@0,0 {
+ device_type = "pci";
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ reset-gpios = <&gpio1 38 GPIO_ACTIVE_LOW>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+ };

pcie_intc_1: interrupt-controller {
#address-cells = <0>;
--
2.44.4