public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree
@ 2026-01-07 14:11 Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam, Frank Li, Bartosz Golaszewski

Hi,

This series is an initial attempt to support the PCIe M.2 connectors in the
kernel and devicetree binding. The PCIe M.2 connectors as defined in the PCI
Express M.2 Specification are widely used in Notebooks/Tablet form factors (even
in PCs). On the ACPI platforms, power to these connectors are mostly handled by
the firmware/BIOS and the kernel never bothered to directly power manage them as
like other PCIe connectors. But on the devicetree platforms, the kernel needs to
power manage these connectors with the help of the devicetree description. But
so far, there is no proper representation of the M.2 connectors in devicetree
binding. This forced the developers to fake the M.2 connectors as PMU nodes [1]
and fixed regulators in devicetree.

So to properly support the M.2 connectors in devicetree platforms, this series
introduces the devicetree binding for Mechanical Key M connector as an example
and also the corresponding pwrseq driver and PCI changes in kernel to driver the
connector.

The Mechanical Key M connector is used to connect SSDs to the host machine over
PCIe/SATA interfaces. Due to the hardware constraints, this series only adds
support for driving the PCIe interface of the connector in the kernel.

Also, the optional interfaces supported by the Key M connectors are not
supported in the driver and left for the future enhancements.

Testing
=======

This series, together with the devicetree changes [2] [3] were tested on the
Qualcomm X1e based Lenovo Thinkpad T14s Laptop which has the NVMe SSD connected
over PCIe.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/qcom/x1e80100-qcp.dts?h=v6.18-rc4&id=d09ab685a8f51ba412d37305ea62628a01cbea57
[2] https://github.com/Mani-Sadhasivam/linux/commit/40120d02219f34d2040ffa6328f0d406b1e4c04d
[3] https://github.com/Mani-Sadhasivam/linux/commit/ff6c3075836cc794a3700b0ec6a4a9eb21d14c6f

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
Changes in v5:
- used of_node_get() and devm_action to free regulators
- Link to v4: https://lore.kernel.org/r/20251228-pci-m2-v4-0-5684868b0d5f@oss.qualcomm.com

Changes in v4:
- Added graph property to SATA in this series and PCI to dtschema:
  https://github.com/devicetree-org/dt-schema/pull/180
- Used 'i2c-parent' instead of SMBus port
- Reworded the -gpios property description
- Rebased on top of v6.19-rc1
- Link to v3: https://lore.kernel.org/r/20251125-pci-m2-v3-0-c528042aea47@oss.qualcomm.com

Changes in v3:
- Changed the VIO supply name as per dtschema
- Added explicit endpoint properties to port 0 node for host I/F
- Used scope based cleanup for OF node in pwrseq driver
- Collected review tags
- Link to v2: https://lore.kernel.org/r/20251108-pci-m2-v2-0-e8bc4d7bf42d@oss.qualcomm.com

Changes in v2:
- Incorporated comments from Bartosz and Frank for pwrseq and dt-binding
  patches, especially adding the pwrseq match() code.
- Link to v1: https://lore.kernel.org/r/20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com

---
Manivannan Sadhasivam (5):
      dt-bindings: ata: sata: Document the graph port
      dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector
      PCI/pwrctrl: Add support for handling PCIe M.2 connectors
      PCI/pwrctrl: Create pwrctrl device if the graph port is found
      power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors

 .../devicetree/bindings/ata/sata-common.yaml       |   3 +
 .../bindings/connector/pcie-m2-m-connector.yaml    | 133 ++++++++++++++++
 MAINTAINERS                                        |   7 +
 drivers/pci/probe.c                                |   3 +-
 drivers/pci/pwrctrl/Kconfig                        |   1 +
 drivers/pci/pwrctrl/slot.c                         |  35 ++++-
 drivers/power/sequencing/Kconfig                   |   8 +
 drivers/power/sequencing/Makefile                  |   1 +
 drivers/power/sequencing/pwrseq-pcie-m2.c          | 169 +++++++++++++++++++++
 9 files changed, 354 insertions(+), 6 deletions(-)
---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20251103-pci-m2-7633631b6faa

Best regards,
-- 
Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:11 ` Manivannan Sadhasivam via B4 Relay
  2026-01-13 16:37   ` Rob Herring (Arm)
  2026-01-14 10:31   ` Damien Le Moal
  2026-01-07 14:11 ` [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector Manivannan Sadhasivam via B4 Relay
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam

From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

An external connector like M.2 could expose the SATA interface to the
plugin cards. So add the graph port to establish link between the SATA Port
and the connector node.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 Documentation/devicetree/bindings/ata/sata-common.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/ata/sata-common.yaml b/Documentation/devicetree/bindings/ata/sata-common.yaml
index 58c9342b9925..97cd69ebf331 100644
--- a/Documentation/devicetree/bindings/ata/sata-common.yaml
+++ b/Documentation/devicetree/bindings/ata/sata-common.yaml
@@ -54,4 +54,7 @@ $defs:
           each port can have a Port Multiplier attached thus allowing to
           access more than one drive by means of a single SATA port.
 
+      port:
+        $ref: /schemas/graph.yaml#/properties/port
+
 ...

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:11 ` Manivannan Sadhasivam via B4 Relay
  2026-01-13 16:37   ` Rob Herring
  2026-01-07 14:11 ` [PATCH v5 3/5] PCI/pwrctrl: Add support for handling PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam, Frank Li

From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

Add the devicetree binding for PCIe M.2 Mechanical Key M connector defined
in the PCI Express M.2 Specification, r4.0, sec 5.3. This connector
provides interfaces like PCIe and SATA to attach the Solid State Drives
(SSDs) to the host machine along with additional interfaces like USB, and
SMBus for debugging and supplementary features.

The connector provides a primary power supply of 3.3v, along with an
optional 1.8v VIO supply for the Adapter I/O buffer circuitry operating at
1.8v sideband signaling.

The connector also supplies optional signals in the form of GPIOs for fine
grained power management.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 .../bindings/connector/pcie-m2-m-connector.yaml    | 133 +++++++++++++++++++++
 1 file changed, 133 insertions(+)

diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
new file mode 100644
index 000000000000..e912ee6f6a59
--- /dev/null
+++ b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
@@ -0,0 +1,133 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/connector/pcie-m2-m-connector.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PCIe M.2 Mechanical Key M Connector
+
+maintainers:
+  - Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
+
+description:
+  A PCIe M.2 M connector node represents a physical PCIe M.2 Mechanical Key M
+  connector. The Mechanical Key M connectors are used to connect SSDs to the
+  host system over PCIe/SATA interfaces. These connectors also offer optional
+  interfaces like USB, SMBus.
+
+properties:
+  compatible:
+    const: pcie-m2-m-connector
+
+  vpcie3v3-supply:
+    description: A phandle to the regulator for 3.3v supply.
+
+  vpcie1v8-supply:
+    description: A phandle to the regulator for VIO 1.8v supply.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    description: OF graph bindings modeling the interfaces exposed on the
+      connector. Since a single connector can have multiple interfaces, every
+      interface has an assigned OF graph port number as described below.
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Host interfaces of the connector
+
+        properties:
+          endpoint@0:
+            $ref: /schemas/graph.yaml#/properties/endpoint
+            description: PCIe interface
+
+          endpoint@1:
+            $ref: /schemas/graph.yaml#/properties/endpoint
+            description: SATA interface
+
+        anyOf:
+          - required:
+              - endpoint@0
+          - required:
+              - endpoint@1
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: USB 2.0 interface
+
+      i2c-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: SMBus interface
+
+    required:
+      - port@0
+
+  clocks:
+    description: 32.768 KHz Suspend Clock (SUSCLK) input from the host system to
+      the M.2 card. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.1 for
+      more details.
+    maxItems: 1
+
+  pedet-gpios:
+    description: GPIO input to PEDET signal. This signal is used by the host
+      systems to determine the communication protocol that the M.2 card uses;
+      SATA signaling (low) or PCIe signaling (high). Refer, PCI Express M.2
+      Specification r4.0, sec 3.3.4.2 for more details.
+    maxItems: 1
+
+  viocfg-gpios:
+    description: GPIO output to IO voltage configuration (VIO_CFG) signal. This
+      signal is used by the M.2 card to indicate to the host system that the
+      card supports an independent IO voltage domain for the sideband signals.
+      Refer, PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more details.
+    maxItems: 1
+
+  pwrdis-gpios:
+    description: GPIO input to Power Disable (PWRDIS) signal. This signal is
+      used by the host system to disable power on the M.2 card. Refer, PCI
+      Express M.2 Specification r4.0, sec 3.3.5.2 for more details.
+    maxItems: 1
+
+  pln-gpios:
+    description: GPIO output to Power Loss Notification (PLN#) signal. This
+      signal is use to notify the M.2 card by the host system that the power
+      loss event is expected to occur. Refer, PCI Express M.2 Specification
+      r4.0, sec 3.2.17.1 for more details.
+    maxItems: 1
+
+  plas3-gpios:
+    description: GPIO output to Power Loss Acknowledge (PLA_S3#) signal. This
+      signal is used by the M.2 card to notify the host system, the status of
+      the M.2 card's preparation for power loss.
+    maxItems: 1
+
+required:
+  - compatible
+  - vpcie3v3-supply
+
+additionalProperties: false
+
+examples:
+  # PCI M.2 Key M connector for SSDs with PCIe interface
+  - |
+    connector {
+        compatible = "pcie-m2-m-connector";
+        vpcie3v3-supply = <&vreg_nvme>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                reg = <0>;
+
+                endpoint@0 {
+                    reg = <0>;
+                    remote-endpoint = <&pcie6_port0_ep>;
+                };
+            };
+        };
+    };

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 3/5] PCI/pwrctrl: Add support for handling PCIe M.2 connectors
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:11 ` Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 4/5] PCI/pwrctrl: Create pwrctrl device if the graph port is found Manivannan Sadhasivam via B4 Relay
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam, Bartosz Golaszewski

From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

Add support for handling the PCIe M.2 connectors as Power Sequencing
devices. These connectors are exposed as the Power Sequencing devices
as they often support multiple interfaces like PCIe/SATA, USB/UART to the
host machine and each interfaces could be driven by different client
drivers at the same time.

This driver handles the PCIe interface of these connectors. It first checks
for the presence of the graph port in the Root Port node with the help of
of_graph_is_present() API, if present, it acquires/poweres ON the
corresponding pwrseq device.

Once the pwrseq device is powered ON, the driver will skip parsing the Root
Port/Slot resources and registers with the pwrctrl framework.

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 drivers/pci/pwrctrl/Kconfig |  1 +
 drivers/pci/pwrctrl/slot.c  | 35 ++++++++++++++++++++++++++++++-----
 2 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/pwrctrl/Kconfig b/drivers/pci/pwrctrl/Kconfig
index e0f999f299bb..cd3aa15bad00 100644
--- a/drivers/pci/pwrctrl/Kconfig
+++ b/drivers/pci/pwrctrl/Kconfig
@@ -13,6 +13,7 @@ config PCI_PWRCTRL_PWRSEQ
 
 config PCI_PWRCTRL_SLOT
 	tristate "PCI Power Control driver for PCI slots"
+	select POWER_SEQUENCING
 	select PCI_PWRCTRL
 	help
 	  Say Y here to enable the PCI Power Control driver to control the power
diff --git a/drivers/pci/pwrctrl/slot.c b/drivers/pci/pwrctrl/slot.c
index 3320494b62d8..d46c2365208a 100644
--- a/drivers/pci/pwrctrl/slot.c
+++ b/drivers/pci/pwrctrl/slot.c
@@ -8,8 +8,10 @@
 #include <linux/device.h>
 #include <linux/mod_devicetable.h>
 #include <linux/module.h>
+#include <linux/of_graph.h>
 #include <linux/pci-pwrctrl.h>
 #include <linux/platform_device.h>
+#include <linux/pwrseq/consumer.h>
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 
@@ -17,12 +19,18 @@ struct pci_pwrctrl_slot_data {
 	struct pci_pwrctrl ctx;
 	struct regulator_bulk_data *supplies;
 	int num_supplies;
+	struct pwrseq_desc *pwrseq;
 };
 
 static void devm_pci_pwrctrl_slot_power_off(void *data)
 {
 	struct pci_pwrctrl_slot_data *slot = data;
 
+	if (slot->pwrseq) {
+		pwrseq_power_off(slot->pwrseq);
+		return;
+	}
+
 	regulator_bulk_disable(slot->num_supplies, slot->supplies);
 	regulator_bulk_free(slot->num_supplies, slot->supplies);
 }
@@ -38,6 +46,20 @@ static int pci_pwrctrl_slot_probe(struct platform_device *pdev)
 	if (!slot)
 		return -ENOMEM;
 
+	if (of_graph_is_present(dev_of_node(dev))) {
+		slot->pwrseq = devm_pwrseq_get(dev, "pcie");
+		if (IS_ERR(slot->pwrseq))
+			return dev_err_probe(dev, PTR_ERR(slot->pwrseq),
+				     "Failed to get the power sequencer\n");
+
+		ret = pwrseq_power_on(slot->pwrseq);
+		if (ret)
+			return dev_err_probe(dev, ret,
+				     "Failed to power-on the device\n");
+
+		goto skip_resources;
+	}
+
 	ret = of_regulator_bulk_get_all(dev, dev_of_node(dev),
 					&slot->supplies);
 	if (ret < 0) {
@@ -53,17 +75,20 @@ static int pci_pwrctrl_slot_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	ret = devm_add_action_or_reset(dev, devm_pci_pwrctrl_slot_power_off,
-				       slot);
-	if (ret)
-		return ret;
-
 	clk = devm_clk_get_optional_enabled(dev, NULL);
 	if (IS_ERR(clk)) {
+		regulator_bulk_disable(slot->num_supplies, slot->supplies);
+		regulator_bulk_free(slot->num_supplies, slot->supplies);
 		return dev_err_probe(dev, PTR_ERR(clk),
 				     "Failed to enable slot clock\n");
 	}
 
+skip_resources:
+	ret = devm_add_action_or_reset(dev, devm_pci_pwrctrl_slot_power_off,
+				       slot);
+	if (ret)
+		return ret;
+
 	pci_pwrctrl_init(&slot->ctx, dev);
 
 	ret = devm_pci_pwrctrl_device_set_ready(dev, &slot->ctx);

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 4/5] PCI/pwrctrl: Create pwrctrl device if the graph port is found
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
                   ` (2 preceding siblings ...)
  2026-01-07 14:11 ` [PATCH v5 3/5] PCI/pwrctrl: Add support for handling PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:11 ` Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:11 ` [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
  2026-01-07 14:36 ` [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Niklas Cassel
  5 siblings, 0 replies; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam, Bartosz Golaszewski

From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

The devicetree node of the PCIe Root Port/Slot could have the graph port
to link the PCIe M.2 connector node. Since the M.2 connectors are modelled
as Power Sequencing devices, they need to be controlled by the pwrctrl
driver as like the Root Port/Slot supplies.

Hence, create the pwrctrl device if the graph port is found in the node.

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 drivers/pci/probe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 41183aed8f5d..cd7efd20a74a 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -9,6 +9,7 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/msi.h>
+#include <linux/of_graph.h>
 #include <linux/of_pci.h>
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
@@ -2585,7 +2586,7 @@ static struct platform_device *pci_pwrctrl_create_device(struct pci_bus *bus, in
 	 * not. This is decided based on at least one of the power supplies
 	 * being defined in the devicetree node of the device.
 	 */
-	if (!of_pci_supply_present(np)) {
+	if (!of_pci_supply_present(np) && !of_graph_is_present(np)) {
 		pr_debug("PCI/pwrctrl: Skipping OF node: %s\n", np->name);
 		goto err_put_of_node;
 	}

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
                   ` (3 preceding siblings ...)
  2026-01-07 14:11 ` [PATCH v5 4/5] PCI/pwrctrl: Create pwrctrl device if the graph port is found Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:11 ` Manivannan Sadhasivam via B4 Relay
  2026-01-08 12:15   ` Bartosz Golaszewski
  2026-01-07 14:36 ` [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Niklas Cassel
  5 siblings, 1 reply; 17+ messages in thread
From: Manivannan Sadhasivam via B4 Relay @ 2026-01-07 14:11 UTC (permalink / raw)
  To: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Niklas Cassel, Linus Walleij, Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide,
	Manivannan Sadhasivam

From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

This driver is used to control the PCIe M.2 connectors of different
Mechanical Keys attached to the host machines and supporting different
interfaces like PCIe/SATA, USB/UART etc...

Currently, this driver supports only the Mechanical Key M connectors with
PCIe interface. The driver also only supports driving the mandatory 3.3v
and optional 1.8v power supplies. The optional signals of the Key M
connectors are not currently supported.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 MAINTAINERS                               |   7 ++
 drivers/power/sequencing/Kconfig          |   8 ++
 drivers/power/sequencing/Makefile         |   1 +
 drivers/power/sequencing/pwrseq-pcie-m2.c | 169 ++++++++++++++++++++++++++++++
 4 files changed, 185 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 5b11839cba9d..2eb7b6d26573 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20791,6 +20791,13 @@ F:	Documentation/driver-api/pwrseq.rst
 F:	drivers/power/sequencing/
 F:	include/linux/pwrseq/
 
+PCIE M.2 POWER SEQUENCING
+M:	Manivannan Sadhasivam <mani@kernel.org>
+L:	linux-pci@vger.kernel.org
+S:	Maintained
+F:	Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
+F:	drivers/power/sequencing/pwrseq-pcie-m2.c
+
 POWER STATE COORDINATION INTERFACE (PSCI)
 M:	Mark Rutland <mark.rutland@arm.com>
 M:	Lorenzo Pieralisi <lpieralisi@kernel.org>
diff --git a/drivers/power/sequencing/Kconfig b/drivers/power/sequencing/Kconfig
index 280f92beb5d0..f5fff84566ba 100644
--- a/drivers/power/sequencing/Kconfig
+++ b/drivers/power/sequencing/Kconfig
@@ -35,4 +35,12 @@ config POWER_SEQUENCING_TH1520_GPU
 	  GPU. This driver handles the complex clock and reset sequence
 	  required to power on the Imagination BXM GPU on this platform.
 
+config POWER_SEQUENCING_PCIE_M2
+	tristate "PCIe M.2 connector power sequencing driver"
+	depends on OF || COMPILE_TEST
+	help
+	  Say Y here to enable the power sequencing driver for PCIe M.2
+	  connectors. This driver handles the power sequencing for the M.2
+	  connectors exposing multiple interfaces like PCIe, SATA, UART, etc...
+
 endif
diff --git a/drivers/power/sequencing/Makefile b/drivers/power/sequencing/Makefile
index 96c1cf0a98ac..0911d4618298 100644
--- a/drivers/power/sequencing/Makefile
+++ b/drivers/power/sequencing/Makefile
@@ -5,3 +5,4 @@ pwrseq-core-y				:= core.o
 
 obj-$(CONFIG_POWER_SEQUENCING_QCOM_WCN)	+= pwrseq-qcom-wcn.o
 obj-$(CONFIG_POWER_SEQUENCING_TH1520_GPU) += pwrseq-thead-gpu.o
+obj-$(CONFIG_POWER_SEQUENCING_PCIE_M2)	+= pwrseq-pcie-m2.o
diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequencing/pwrseq-pcie-m2.c
new file mode 100644
index 000000000000..e01e19123415
--- /dev/null
+++ b/drivers/power/sequencing/pwrseq-pcie-m2.c
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ * Author: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
+ */
+
+#include <linux/device.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_graph.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/pwrseq/provider.h>
+#include <linux/regulator/consumer.h>
+#include <linux/slab.h>
+
+struct pwrseq_pcie_m2_pdata {
+	const struct pwrseq_target_data **targets;
+};
+
+struct pwrseq_pcie_m2_ctx {
+	struct pwrseq_device *pwrseq;
+	struct device_node *of_node;
+	const struct pwrseq_pcie_m2_pdata *pdata;
+	struct regulator_bulk_data *regs;
+	size_t num_vregs;
+	struct notifier_block nb;
+};
+
+static int pwrseq_pcie_m2_m_vregs_enable(struct pwrseq_device *pwrseq)
+{
+	struct pwrseq_pcie_m2_ctx *ctx = pwrseq_device_get_drvdata(pwrseq);
+
+	return regulator_bulk_enable(ctx->num_vregs, ctx->regs);
+}
+
+static int pwrseq_pcie_m2_m_vregs_disable(struct pwrseq_device *pwrseq)
+{
+	struct pwrseq_pcie_m2_ctx *ctx = pwrseq_device_get_drvdata(pwrseq);
+
+	return regulator_bulk_disable(ctx->num_vregs, ctx->regs);
+}
+
+static const struct pwrseq_unit_data pwrseq_pcie_m2_vregs_unit_data = {
+	.name = "regulators-enable",
+	.enable = pwrseq_pcie_m2_m_vregs_enable,
+	.disable = pwrseq_pcie_m2_m_vregs_disable,
+};
+
+static const struct pwrseq_unit_data *pwrseq_pcie_m2_m_unit_deps[] = {
+	&pwrseq_pcie_m2_vregs_unit_data,
+	NULL
+};
+
+static const struct pwrseq_unit_data pwrseq_pcie_m2_m_pcie_unit_data = {
+	.name = "pcie-enable",
+	.deps = pwrseq_pcie_m2_m_unit_deps,
+};
+
+static const struct pwrseq_target_data pwrseq_pcie_m2_m_pcie_target_data = {
+	.name = "pcie",
+	.unit = &pwrseq_pcie_m2_m_pcie_unit_data,
+};
+
+static const struct pwrseq_target_data *pwrseq_pcie_m2_m_targets[] = {
+	&pwrseq_pcie_m2_m_pcie_target_data,
+	NULL
+};
+
+static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_m_of_data = {
+	.targets = pwrseq_pcie_m2_m_targets,
+};
+
+static int pwrseq_pcie_m2_match(struct pwrseq_device *pwrseq,
+				 struct device *dev)
+{
+	struct pwrseq_pcie_m2_ctx *ctx = pwrseq_device_get_drvdata(pwrseq);
+	struct device_node *endpoint __free(device_node) = NULL;
+
+	/*
+	 * Traverse the 'remote-endpoint' nodes and check if the remote node's
+	 * parent matches the OF node of 'dev'.
+	 */
+	for_each_endpoint_of_node(ctx->of_node, endpoint) {
+		struct device_node *remote __free(device_node) =
+				of_graph_get_remote_port_parent(endpoint);
+		if (remote && (remote == dev_of_node(dev)))
+			return PWRSEQ_MATCH_OK;
+	}
+
+	return PWRSEQ_NO_MATCH;
+}
+
+static void pwrseq_pcie_free_resources(void *data)
+{
+	struct pwrseq_pcie_m2_ctx *ctx = data;
+
+	regulator_bulk_free(ctx->num_vregs, ctx->regs);
+}
+
+static int pwrseq_pcie_m2_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct pwrseq_pcie_m2_ctx *ctx;
+	struct pwrseq_config config = {};
+	int ret;
+
+	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
+	if (!ctx)
+		return -ENOMEM;
+
+	ctx->of_node = of_node_get(dev->of_node);
+	ctx->pdata = device_get_match_data(dev);
+	if (!ctx->pdata)
+		return dev_err_probe(dev, -ENODEV,
+				     "Failed to obtain platform data\n");
+
+	/*
+	 * Currently, of_regulator_bulk_get_all() is the only regulator API that
+	 * allows to get all supplies in the devicetree node without manually
+	 * specifying them.
+	 */
+	ret = of_regulator_bulk_get_all(dev, dev_of_node(dev), &ctx->regs);
+	if (ret < 0)
+		return dev_err_probe(dev, ret,
+				     "Failed to get all regulators\n");
+
+	ctx->num_vregs = ret;
+
+	ret = devm_add_action_or_reset(dev, pwrseq_pcie_free_resources, ctx);
+	if (ret)
+		return ret;
+
+	config.parent = dev;
+	config.owner = THIS_MODULE;
+	config.drvdata = ctx;
+	config.match = pwrseq_pcie_m2_match;
+	config.targets = ctx->pdata->targets;
+
+	ctx->pwrseq = devm_pwrseq_device_register(dev, &config);
+	if (IS_ERR(ctx->pwrseq))
+		return dev_err_probe(dev, PTR_ERR(ctx->pwrseq),
+				     "Failed to register the power sequencer\n");
+
+	return 0;
+}
+
+static const struct of_device_id pwrseq_pcie_m2_of_match[] = {
+	{
+		.compatible = "pcie-m2-m-connector",
+		.data = &pwrseq_pcie_m2_m_of_data,
+	},
+	{ }
+};
+MODULE_DEVICE_TABLE(of, pwrseq_pcie_m2_of_match);
+
+static struct platform_driver pwrseq_pcie_m2_driver = {
+	.driver = {
+		.name = "pwrseq-pcie-m2",
+		.of_match_table = pwrseq_pcie_m2_of_match,
+	},
+	.probe = pwrseq_pcie_m2_probe,
+};
+module_platform_driver(pwrseq_pcie_m2_driver);
+
+MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>");
+MODULE_DESCRIPTION("Power Sequencing driver for PCIe M.2 connector");
+MODULE_LICENSE("GPL");

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree
  2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
                   ` (4 preceding siblings ...)
  2026-01-07 14:11 ` [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
@ 2026-01-07 14:36 ` Niklas Cassel
  2026-01-07 16:48   ` Manivannan Sadhasivam
  5 siblings, 1 reply; 17+ messages in thread
From: Niklas Cassel @ 2026-01-07 14:36 UTC (permalink / raw)
  To: manivannan.sadhasivam
  Cc: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Linus Walleij, Bartosz Golaszewski, linux-kernel,
	linux-pci, devicetree, linux-arm-msm, Stephan Gerhold,
	Dmitry Baryshkov, linux-pm, linux-ide, Frank Li,
	Bartosz Golaszewski

On Wed, Jan 07, 2026 at 07:41:22PM +0530, Manivannan Sadhasivam via B4 Relay wrote:
> Hi,
> 
> This series is an initial attempt to support the PCIe M.2 connectors in the
> kernel and devicetree binding. The PCIe M.2 connectors as defined in the PCI
> Express M.2 Specification are widely used in Notebooks/Tablet form factors (even
> in PCs). On the ACPI platforms, power to these connectors are mostly handled by
> the firmware/BIOS and the kernel never bothered to directly power manage them as
> like other PCIe connectors. But on the devicetree platforms, the kernel needs to
> power manage these connectors with the help of the devicetree description. But
> so far, there is no proper representation of the M.2 connectors in devicetree
> binding. This forced the developers to fake the M.2 connectors as PMU nodes [1]
> and fixed regulators in devicetree.
> 
> So to properly support the M.2 connectors in devicetree platforms, this series
> introduces the devicetree binding for Mechanical Key M connector as an example
> and also the corresponding pwrseq driver and PCI changes in kernel to driver the
> connector.
> 
> The Mechanical Key M connector is used to connect SSDs to the host machine over
> PCIe/SATA interfaces. Due to the hardware constraints, this series only adds
> support for driving the PCIe interface of the connector in the kernel.
> 
> Also, the optional interfaces supported by the Key M connectors are not
> supported in the driver and left for the future enhancements.

For me, it is not clear if there is a dependency or conflict with your
"major pwrctrl rework series":
[PATCH v4 0/8] PCI/pwrctrl: Major rework to integrate pwrctrl devices with controller drivers

Does one need to go before the other, or are they completely unrelated
and can be merged in any order without conflicts?


Kind regards,
Niklas

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree
  2026-01-07 14:36 ` [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Niklas Cassel
@ 2026-01-07 16:48   ` Manivannan Sadhasivam
  0 siblings, 0 replies; 17+ messages in thread
From: Manivannan Sadhasivam @ 2026-01-07 16:48 UTC (permalink / raw)
  To: Niklas Cassel
  Cc: manivannan.sadhasivam, Bjorn Helgaas, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
	Damien Le Moal, Linus Walleij, Bartosz Golaszewski, linux-kernel,
	linux-pci, devicetree, linux-arm-msm, Stephan Gerhold,
	Dmitry Baryshkov, linux-pm, linux-ide, Frank Li,
	Bartosz Golaszewski

On Wed, Jan 07, 2026 at 03:36:31PM +0100, Niklas Cassel wrote:
> On Wed, Jan 07, 2026 at 07:41:22PM +0530, Manivannan Sadhasivam via B4 Relay wrote:
> > Hi,
> > 
> > This series is an initial attempt to support the PCIe M.2 connectors in the
> > kernel and devicetree binding. The PCIe M.2 connectors as defined in the PCI
> > Express M.2 Specification are widely used in Notebooks/Tablet form factors (even
> > in PCs). On the ACPI platforms, power to these connectors are mostly handled by
> > the firmware/BIOS and the kernel never bothered to directly power manage them as
> > like other PCIe connectors. But on the devicetree platforms, the kernel needs to
> > power manage these connectors with the help of the devicetree description. But
> > so far, there is no proper representation of the M.2 connectors in devicetree
> > binding. This forced the developers to fake the M.2 connectors as PMU nodes [1]
> > and fixed regulators in devicetree.
> > 
> > So to properly support the M.2 connectors in devicetree platforms, this series
> > introduces the devicetree binding for Mechanical Key M connector as an example
> > and also the corresponding pwrseq driver and PCI changes in kernel to driver the
> > connector.
> > 
> > The Mechanical Key M connector is used to connect SSDs to the host machine over
> > PCIe/SATA interfaces. Due to the hardware constraints, this series only adds
> > support for driving the PCIe interface of the connector in the kernel.
> > 
> > Also, the optional interfaces supported by the Key M connectors are not
> > supported in the driver and left for the future enhancements.
> 
> For me, it is not clear if there is a dependency or conflict with your
> "major pwrctrl rework series":
> [PATCH v4 0/8] PCI/pwrctrl: Major rework to integrate pwrctrl devices with controller drivers
> 
> Does one need to go before the other, or are they completely unrelated
> and can be merged in any order without conflicts?
> 

Only patch 2 has the conflict with pwrctrl rework series, but that is trivial to
fix. Otherwise, both are mostly independent.

- Mani

-- 
மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-07 14:11 ` [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
@ 2026-01-08 12:15   ` Bartosz Golaszewski
  2026-01-09  6:02     ` Manivannan Sadhasivam
  0 siblings, 1 reply; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-01-08 12:15 UTC (permalink / raw)
  To: manivannan.sadhasivam
  Cc: Bjorn Helgaas, Manivannan Sadhasivam, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Damien Le Moal, Niklas Cassel,
	Linus Walleij, linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On Wed, Jan 7, 2026 at 3:11 PM Manivannan Sadhasivam via B4 Relay
<devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org> wrote:
>
> From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
>
> This driver is used to control the PCIe M.2 connectors of different
> Mechanical Keys attached to the host machines and supporting different
> interfaces like PCIe/SATA, USB/UART etc...
>
> Currently, this driver supports only the Mechanical Key M connectors with
> PCIe interface. The driver also only supports driving the mandatory 3.3v
> and optional 1.8v power supplies. The optional signals of the Key M
> connectors are not currently supported.
>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

This looks good to me, though there are some nits I may fix when applying.

I'll pick it up for v7.0 once the bindings are reviewed.

> +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c
> @@ -0,0 +1,169 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + * Author: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> + */
> +
> +#include <linux/device.h>
> +#include <linux/mod_devicetable.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_graph.h>
> +#include <linux/of_platform.h>

It looks like this is a leftover from previous versions and you no
longer need it?

> +
> +static void pwrseq_pcie_free_resources(void *data)
> +{
> +       struct pwrseq_pcie_m2_ctx *ctx = data;
> +
> +       regulator_bulk_free(ctx->num_vregs, ctx->regs);
> +}

I would call it pwrseq_pcie_m2_free_regulators() if you don't mind.

Bart

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-08 12:15   ` Bartosz Golaszewski
@ 2026-01-09  6:02     ` Manivannan Sadhasivam
  2026-01-09  8:24       ` Bartosz Golaszewski
  2026-01-09  9:02       ` Damien Le Moal
  0 siblings, 2 replies; 17+ messages in thread
From: Manivannan Sadhasivam @ 2026-01-09  6:02 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: manivannan.sadhasivam, Bjorn Helgaas, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Damien Le Moal, Niklas Cassel,
	Linus Walleij, linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On Thu, Jan 08, 2026 at 01:15:12PM +0100, Bartosz Golaszewski wrote:
> On Wed, Jan 7, 2026 at 3:11 PM Manivannan Sadhasivam via B4 Relay
> <devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org> wrote:
> >
> > From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> >
> > This driver is used to control the PCIe M.2 connectors of different
> > Mechanical Keys attached to the host machines and supporting different
> > interfaces like PCIe/SATA, USB/UART etc...
> >
> > Currently, this driver supports only the Mechanical Key M connectors with
> > PCIe interface. The driver also only supports driving the mandatory 3.3v
> > and optional 1.8v power supplies. The optional signals of the Key M
> > connectors are not currently supported.
> >
> > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> 
> This looks good to me, though there are some nits I may fix when applying.
> 
> I'll pick it up for v7.0 once the bindings are reviewed.
> 

Ok. I'm expecting patch 1 to go through ATA tree, patch 2 through DT, and
patches 3,4 through PCI tree.

> > +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c
> > @@ -0,0 +1,169 @@
> > +// SPDX-License-Identifier: GPL-2.0-only
> > +/*
> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> > + * Author: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> > + */
> > +
> > +#include <linux/device.h>
> > +#include <linux/mod_devicetable.h>
> > +#include <linux/module.h>
> > +#include <linux/of.h>
> > +#include <linux/of_graph.h>
> > +#include <linux/of_platform.h>
> 
> It looks like this is a leftover from previous versions and you no
> longer need it?
> 

Yeah.

> > +
> > +static void pwrseq_pcie_free_resources(void *data)
> > +{
> > +       struct pwrseq_pcie_m2_ctx *ctx = data;
> > +
> > +       regulator_bulk_free(ctx->num_vregs, ctx->regs);
> > +}
> 
> I would call it pwrseq_pcie_m2_free_regulators() if you don't mind.
> 

Sure. I indeed missed '_m2'.

- Mani

-- 
மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-09  6:02     ` Manivannan Sadhasivam
@ 2026-01-09  8:24       ` Bartosz Golaszewski
  2026-01-09  9:02       ` Damien Le Moal
  1 sibling, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-01-09  8:24 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: manivannan.sadhasivam, Bjorn Helgaas, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Damien Le Moal, Niklas Cassel,
	Linus Walleij, linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On Fri, Jan 9, 2026 at 7:02 AM Manivannan Sadhasivam <mani@kernel.org> wrote:
>
> On Thu, Jan 08, 2026 at 01:15:12PM +0100, Bartosz Golaszewski wrote:
> > On Wed, Jan 7, 2026 at 3:11 PM Manivannan Sadhasivam via B4 Relay
> > <devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org> wrote:
> > >
> > > From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> > >
> > > This driver is used to control the PCIe M.2 connectors of different
> > > Mechanical Keys attached to the host machines and supporting different
> > > interfaces like PCIe/SATA, USB/UART etc...
> > >
> > > Currently, this driver supports only the Mechanical Key M connectors with
> > > PCIe interface. The driver also only supports driving the mandatory 3.3v
> > > and optional 1.8v power supplies. The optional signals of the Key M
> > > connectors are not currently supported.
> > >
> > > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> >
> > This looks good to me, though there are some nits I may fix when applying.
> >
> > I'll pick it up for v7.0 once the bindings are reviewed.
> >
>
> Ok. I'm expecting patch 1 to go through ATA tree, patch 2 through DT, and
> patches 3,4 through PCI tree.
>

I think it would make sense for patch 2 to go through the pwrseq tree
with an Ack from DT maintainers.

Bartosz

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-09  6:02     ` Manivannan Sadhasivam
  2026-01-09  8:24       ` Bartosz Golaszewski
@ 2026-01-09  9:02       ` Damien Le Moal
  2026-01-12  7:58         ` Manivannan Sadhasivam
  1 sibling, 1 reply; 17+ messages in thread
From: Damien Le Moal @ 2026-01-09  9:02 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Bartosz Golaszewski
  Cc: manivannan.sadhasivam, Bjorn Helgaas, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Niklas Cassel, Linus Walleij,
	linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On 1/9/26 07:02, Manivannan Sadhasivam wrote:
> On Thu, Jan 08, 2026 at 01:15:12PM +0100, Bartosz Golaszewski wrote:
>> On Wed, Jan 7, 2026 at 3:11 PM Manivannan Sadhasivam via B4 Relay
>> <devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org> wrote:
>>>
>>> From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
>>>
>>> This driver is used to control the PCIe M.2 connectors of different
>>> Mechanical Keys attached to the host machines and supporting different
>>> interfaces like PCIe/SATA, USB/UART etc...
>>>
>>> Currently, this driver supports only the Mechanical Key M connectors with
>>> PCIe interface. The driver also only supports driving the mandatory 3.3v
>>> and optional 1.8v power supplies. The optional signals of the Key M
>>> connectors are not currently supported.
>>>
>>> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
>>
>> This looks good to me, though there are some nits I may fix when applying.
>>
>> I'll pick it up for v7.0 once the bindings are reviewed.
>>
> 
> Ok. I'm expecting patch 1 to go through ATA tree, patch 2 through DT, and
> patches 3,4 through PCI tree.

Patch 1 seems to be completely unrelated to the power changes, so please send it
to the ata list separately. It is otherwise very complicated and confusing for
everyone to have patches from one series being applied through multiple trees.


-- 
Damien Le Moal
Western Digital Research

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors
  2026-01-09  9:02       ` Damien Le Moal
@ 2026-01-12  7:58         ` Manivannan Sadhasivam
  0 siblings, 0 replies; 17+ messages in thread
From: Manivannan Sadhasivam @ 2026-01-12  7:58 UTC (permalink / raw)
  To: Damien Le Moal
  Cc: Bartosz Golaszewski, manivannan.sadhasivam, Bjorn Helgaas,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Niklas Cassel,
	Linus Walleij, linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On Fri, Jan 09, 2026 at 10:02:10AM +0100, Damien Le Moal wrote:
> On 1/9/26 07:02, Manivannan Sadhasivam wrote:
> > On Thu, Jan 08, 2026 at 01:15:12PM +0100, Bartosz Golaszewski wrote:
> >> On Wed, Jan 7, 2026 at 3:11 PM Manivannan Sadhasivam via B4 Relay
> >> <devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org> wrote:
> >>>
> >>> From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> >>>
> >>> This driver is used to control the PCIe M.2 connectors of different
> >>> Mechanical Keys attached to the host machines and supporting different
> >>> interfaces like PCIe/SATA, USB/UART etc...
> >>>
> >>> Currently, this driver supports only the Mechanical Key M connectors with
> >>> PCIe interface. The driver also only supports driving the mandatory 3.3v
> >>> and optional 1.8v power supplies. The optional signals of the Key M
> >>> connectors are not currently supported.
> >>>
> >>> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> >>
> >> This looks good to me, though there are some nits I may fix when applying.
> >>
> >> I'll pick it up for v7.0 once the bindings are reviewed.
> >>
> > 
> > Ok. I'm expecting patch 1 to go through ATA tree, patch 2 through DT, and
> > patches 3,4 through PCI tree.
> 
> Patch 1 seems to be completely unrelated to the power changes, so please send it
> to the ata list separately. It is otherwise very complicated and confusing for
> everyone to have patches from one series being applied through multiple trees.
> 

Many maintainers often prefer patches in a single series for the complete
picture. That's why I clubbed all of them in a single series. But I can send the
ATA binding separately also (once it got reviewed by Rob).

Btw, with b4, it is no longer a hassle to apply individual patches from a single
series.

- Mani

-- 
மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector
  2026-01-07 14:11 ` [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector Manivannan Sadhasivam via B4 Relay
@ 2026-01-13 16:37   ` Rob Herring
  2026-01-13 16:48     ` Manivannan Sadhasivam
  0 siblings, 1 reply; 17+ messages in thread
From: Rob Herring @ 2026-01-13 16:37 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: Bjorn Helgaas, Manivannan Sadhasivam, Krzysztof Kozlowski,
	Conor Dooley, Bartosz Golaszewski, Damien Le Moal, Niklas Cassel,
	Linus Walleij, Bartosz Golaszewski, linux-kernel, linux-pci,
	devicetree, linux-arm-msm, Stephan Gerhold, Dmitry Baryshkov,
	linux-pm, linux-ide, Frank Li

On Wed, Jan 07, 2026 at 07:41:24PM +0530, Manivannan Sadhasivam wrote:
> Add the devicetree binding for PCIe M.2 Mechanical Key M connector defined
> in the PCI Express M.2 Specification, r4.0, sec 5.3. This connector
> provides interfaces like PCIe and SATA to attach the Solid State Drives
> (SSDs) to the host machine along with additional interfaces like USB, and
> SMBus for debugging and supplementary features.
> 
> The connector provides a primary power supply of 3.3v, along with an
> optional 1.8v VIO supply for the Adapter I/O buffer circuitry operating at
> 1.8v sideband signaling.
> 
> The connector also supplies optional signals in the form of GPIOs for fine
> grained power management.
> 
> Reviewed-by: Frank Li <Frank.Li@nxp.com>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> ---
>  .../bindings/connector/pcie-m2-m-connector.yaml    | 133 +++++++++++++++++++++
>  1 file changed, 133 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
> new file mode 100644
> index 000000000000..e912ee6f6a59
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
> @@ -0,0 +1,133 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/connector/pcie-m2-m-connector.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: PCIe M.2 Mechanical Key M Connector
> +
> +maintainers:
> +  - Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> +
> +description:
> +  A PCIe M.2 M connector node represents a physical PCIe M.2 Mechanical Key M
> +  connector. The Mechanical Key M connectors are used to connect SSDs to the
> +  host system over PCIe/SATA interfaces. These connectors also offer optional
> +  interfaces like USB, SMBus.
> +
> +properties:
> +  compatible:
> +    const: pcie-m2-m-connector
> +
> +  vpcie3v3-supply:
> +    description: A phandle to the regulator for 3.3v supply.
> +
> +  vpcie1v8-supply:
> +    description: A phandle to the regulator for VIO 1.8v supply.
> +
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +    description: OF graph bindings modeling the interfaces exposed on the
> +      connector. Since a single connector can have multiple interfaces, every
> +      interface has an assigned OF graph port number as described below.
> +
> +    properties:
> +      port@0:
> +        $ref: /schemas/graph.yaml#/properties/port
> +        description: Host interfaces of the connector
> +
> +        properties:
> +          endpoint@0:
> +            $ref: /schemas/graph.yaml#/properties/endpoint
> +            description: PCIe interface
> +
> +          endpoint@1:
> +            $ref: /schemas/graph.yaml#/properties/endpoint
> +            description: SATA interface
> +
> +        anyOf:
> +          - required:
> +              - endpoint@0
> +          - required:
> +              - endpoint@1
> +
> +      port@1:
> +        $ref: /schemas/graph.yaml#/properties/port
> +        description: USB 2.0 interface
> +
> +      i2c-parent:
> +        $ref: /schemas/types.yaml#/definitions/phandle
> +        description: SMBus interface

This belongs outside of 'ports'. I would expect you'd get an error if 
you tried to put it here as '/schemas/graph.yaml#/properties/ports' 
shouldn't allow it. Please include the property in the example.

> +
> +    required:
> +      - port@0
> +
> +  clocks:
> +    description: 32.768 KHz Suspend Clock (SUSCLK) input from the host system to
> +      the M.2 card. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.1 for
> +      more details.
> +    maxItems: 1
> +
> +  pedet-gpios:
> +    description: GPIO input to PEDET signal. This signal is used by the host
> +      systems to determine the communication protocol that the M.2 card uses;
> +      SATA signaling (low) or PCIe signaling (high). Refer, PCI Express M.2
> +      Specification r4.0, sec 3.3.4.2 for more details.
> +    maxItems: 1
> +
> +  viocfg-gpios:
> +    description: GPIO output to IO voltage configuration (VIO_CFG) signal. This
> +      signal is used by the M.2 card to indicate to the host system that the
> +      card supports an independent IO voltage domain for the sideband signals.
> +      Refer, PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more details.
> +    maxItems: 1
> +
> +  pwrdis-gpios:
> +    description: GPIO input to Power Disable (PWRDIS) signal. This signal is
> +      used by the host system to disable power on the M.2 card. Refer, PCI
> +      Express M.2 Specification r4.0, sec 3.3.5.2 for more details.
> +    maxItems: 1
> +
> +  pln-gpios:
> +    description: GPIO output to Power Loss Notification (PLN#) signal. This
> +      signal is use to notify the M.2 card by the host system that the power
> +      loss event is expected to occur. Refer, PCI Express M.2 Specification
> +      r4.0, sec 3.2.17.1 for more details.
> +    maxItems: 1
> +
> +  plas3-gpios:
> +    description: GPIO output to Power Loss Acknowledge (PLA_S3#) signal. This

GPIO input?

> +      signal is used by the M.2 card to notify the host system, the status of
> +      the M.2 card's preparation for power loss.
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - vpcie3v3-supply

All the GPIOs are really optional?

> +
> +additionalProperties: false
> +
> +examples:
> +  # PCI M.2 Key M connector for SSDs with PCIe interface
> +  - |
> +    connector {
> +        compatible = "pcie-m2-m-connector";
> +        vpcie3v3-supply = <&vreg_nvme>;
> +
> +        ports {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            port@0 {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                reg = <0>;
> +
> +                endpoint@0 {
> +                    reg = <0>;
> +                    remote-endpoint = <&pcie6_port0_ep>;
> +                };

Please make the example as complete as possible.

> +            };
> +        };
> +    };
> 
> -- 
> 2.48.1
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port
  2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
@ 2026-01-13 16:37   ` Rob Herring (Arm)
  2026-01-14 10:31   ` Damien Le Moal
  1 sibling, 0 replies; 17+ messages in thread
From: Rob Herring (Arm) @ 2026-01-13 16:37 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: Conor Dooley, Bartosz Golaszewski, linux-arm-msm,
	Dmitry Baryshkov, devicetree, linux-ide, Stephan Gerhold,
	Niklas Cassel, linux-pci, Bartosz Golaszewski, linux-pm,
	Manivannan Sadhasivam, linux-kernel, Linus Walleij, Bjorn Helgaas,
	Krzysztof Kozlowski, Damien Le Moal


On Wed, 07 Jan 2026 19:41:23 +0530, Manivannan Sadhasivam wrote:
> An external connector like M.2 could expose the SATA interface to the
> plugin cards. So add the graph port to establish link between the SATA Port
> and the connector node.
> 
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> ---
>  Documentation/devicetree/bindings/ata/sata-common.yaml | 3 +++
>  1 file changed, 3 insertions(+)
> 

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector
  2026-01-13 16:37   ` Rob Herring
@ 2026-01-13 16:48     ` Manivannan Sadhasivam
  0 siblings, 0 replies; 17+ messages in thread
From: Manivannan Sadhasivam @ 2026-01-13 16:48 UTC (permalink / raw)
  To: Rob Herring
  Cc: Manivannan Sadhasivam, Bjorn Helgaas, Krzysztof Kozlowski,
	Conor Dooley, Bartosz Golaszewski, Damien Le Moal, Niklas Cassel,
	Linus Walleij, Bartosz Golaszewski, linux-kernel, linux-pci,
	devicetree, linux-arm-msm, Stephan Gerhold, Dmitry Baryshkov,
	linux-pm, linux-ide, Frank Li

On Tue, Jan 13, 2026 at 10:37:33AM -0600, Rob Herring wrote:
> On Wed, Jan 07, 2026 at 07:41:24PM +0530, Manivannan Sadhasivam wrote:
> > Add the devicetree binding for PCIe M.2 Mechanical Key M connector defined
> > in the PCI Express M.2 Specification, r4.0, sec 5.3. This connector
> > provides interfaces like PCIe and SATA to attach the Solid State Drives
> > (SSDs) to the host machine along with additional interfaces like USB, and
> > SMBus for debugging and supplementary features.
> > 
> > The connector provides a primary power supply of 3.3v, along with an
> > optional 1.8v VIO supply for the Adapter I/O buffer circuitry operating at
> > 1.8v sideband signaling.
> > 
> > The connector also supplies optional signals in the form of GPIOs for fine
> > grained power management.
> > 
> > Reviewed-by: Frank Li <Frank.Li@nxp.com>
> > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> > ---
> >  .../bindings/connector/pcie-m2-m-connector.yaml    | 133 +++++++++++++++++++++
> >  1 file changed, 133 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
> > new file mode 100644
> > index 000000000000..e912ee6f6a59
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
> > @@ -0,0 +1,133 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/connector/pcie-m2-m-connector.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: PCIe M.2 Mechanical Key M Connector
> > +
> > +maintainers:
> > +  - Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> > +
> > +description:
> > +  A PCIe M.2 M connector node represents a physical PCIe M.2 Mechanical Key M
> > +  connector. The Mechanical Key M connectors are used to connect SSDs to the
> > +  host system over PCIe/SATA interfaces. These connectors also offer optional
> > +  interfaces like USB, SMBus.
> > +
> > +properties:
> > +  compatible:
> > +    const: pcie-m2-m-connector
> > +
> > +  vpcie3v3-supply:
> > +    description: A phandle to the regulator for 3.3v supply.
> > +
> > +  vpcie1v8-supply:
> > +    description: A phandle to the regulator for VIO 1.8v supply.
> > +
> > +  ports:
> > +    $ref: /schemas/graph.yaml#/properties/ports
> > +    description: OF graph bindings modeling the interfaces exposed on the
> > +      connector. Since a single connector can have multiple interfaces, every
> > +      interface has an assigned OF graph port number as described below.
> > +
> > +    properties:
> > +      port@0:
> > +        $ref: /schemas/graph.yaml#/properties/port
> > +        description: Host interfaces of the connector
> > +
> > +        properties:
> > +          endpoint@0:
> > +            $ref: /schemas/graph.yaml#/properties/endpoint
> > +            description: PCIe interface
> > +
> > +          endpoint@1:
> > +            $ref: /schemas/graph.yaml#/properties/endpoint
> > +            description: SATA interface
> > +
> > +        anyOf:
> > +          - required:
> > +              - endpoint@0
> > +          - required:
> > +              - endpoint@1
> > +
> > +      port@1:
> > +        $ref: /schemas/graph.yaml#/properties/port
> > +        description: USB 2.0 interface
> > +
> > +      i2c-parent:
> > +        $ref: /schemas/types.yaml#/definitions/phandle
> > +        description: SMBus interface
> 
> This belongs outside of 'ports'. I would expect you'd get an error if 
> you tried to put it here as '/schemas/graph.yaml#/properties/ports' 
> shouldn't allow it. Please include the property in the example.
> 

Okay.

> > +
> > +    required:
> > +      - port@0
> > +
> > +  clocks:
> > +    description: 32.768 KHz Suspend Clock (SUSCLK) input from the host system to
> > +      the M.2 card. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.1 for
> > +      more details.
> > +    maxItems: 1
> > +
> > +  pedet-gpios:
> > +    description: GPIO input to PEDET signal. This signal is used by the host
> > +      systems to determine the communication protocol that the M.2 card uses;
> > +      SATA signaling (low) or PCIe signaling (high). Refer, PCI Express M.2
> > +      Specification r4.0, sec 3.3.4.2 for more details.
> > +    maxItems: 1
> > +
> > +  viocfg-gpios:
> > +    description: GPIO output to IO voltage configuration (VIO_CFG) signal. This
> > +      signal is used by the M.2 card to indicate to the host system that the
> > +      card supports an independent IO voltage domain for the sideband signals.
> > +      Refer, PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more details.
> > +    maxItems: 1
> > +
> > +  pwrdis-gpios:
> > +    description: GPIO input to Power Disable (PWRDIS) signal. This signal is
> > +      used by the host system to disable power on the M.2 card. Refer, PCI
> > +      Express M.2 Specification r4.0, sec 3.3.5.2 for more details.
> > +    maxItems: 1
> > +
> > +  pln-gpios:
> > +    description: GPIO output to Power Loss Notification (PLN#) signal. This
> > +      signal is use to notify the M.2 card by the host system that the power
> > +      loss event is expected to occur. Refer, PCI Express M.2 Specification
> > +      r4.0, sec 3.2.17.1 for more details.
> > +    maxItems: 1
> > +
> > +  plas3-gpios:
> > +    description: GPIO output to Power Loss Acknowledge (PLA_S3#) signal. This
> 
> GPIO input?
> 

I defined the role from a card PoV, but it should be the other way around, from
the connector/host PoV. In that case, this will become input. I will change
others also.

> > +      signal is used by the M.2 card to notify the host system, the status of
> > +      the M.2 card's preparation for power loss.
> > +    maxItems: 1
> > +
> > +required:
> > +  - compatible
> > +  - vpcie3v3-supply
> 
> All the GPIOs are really optional?
> 

Yes.

> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  # PCI M.2 Key M connector for SSDs with PCIe interface
> > +  - |
> > +    connector {
> > +        compatible = "pcie-m2-m-connector";
> > +        vpcie3v3-supply = <&vreg_nvme>;
> > +
> > +        ports {
> > +            #address-cells = <1>;
> > +            #size-cells = <0>;
> > +
> > +            port@0 {
> > +                #address-cells = <1>;
> > +                #size-cells = <0>;
> > +
> > +                reg = <0>;
> > +
> > +                endpoint@0 {
> > +                    reg = <0>;
> > +                    remote-endpoint = <&pcie6_port0_ep>;
> > +                };
> 
> Please make the example as complete as possible.
> 

Okay.

- Mani

-- 
மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port
  2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
  2026-01-13 16:37   ` Rob Herring (Arm)
@ 2026-01-14 10:31   ` Damien Le Moal
  1 sibling, 0 replies; 17+ messages in thread
From: Damien Le Moal @ 2026-01-14 10:31 UTC (permalink / raw)
  To: manivannan.sadhasivam, Bjorn Helgaas, Manivannan Sadhasivam,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Bartosz Golaszewski, Niklas Cassel, Linus Walleij,
	Bartosz Golaszewski
  Cc: linux-kernel, linux-pci, devicetree, linux-arm-msm,
	Stephan Gerhold, Dmitry Baryshkov, linux-pm, linux-ide

On 1/7/26 15:11, Manivannan Sadhasivam via B4 Relay wrote:
> From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
> 
> An external connector like M.2 could expose the SATA interface to the
> plugin cards. So add the graph port to establish link between the SATA Port
> and the connector node.
> 
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

I applied this patch to the libata tree, for-6.20 branch. Thanks !


-- 
Damien Le Moal
Western Digital Research

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-01-14 10:31 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-07 14:11 [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Manivannan Sadhasivam via B4 Relay
2026-01-07 14:11 ` [PATCH v5 1/5] dt-bindings: ata: sata: Document the graph port Manivannan Sadhasivam via B4 Relay
2026-01-13 16:37   ` Rob Herring (Arm)
2026-01-14 10:31   ` Damien Le Moal
2026-01-07 14:11 ` [PATCH v5 2/5] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector Manivannan Sadhasivam via B4 Relay
2026-01-13 16:37   ` Rob Herring
2026-01-13 16:48     ` Manivannan Sadhasivam
2026-01-07 14:11 ` [PATCH v5 3/5] PCI/pwrctrl: Add support for handling PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
2026-01-07 14:11 ` [PATCH v5 4/5] PCI/pwrctrl: Create pwrctrl device if the graph port is found Manivannan Sadhasivam via B4 Relay
2026-01-07 14:11 ` [PATCH v5 5/5] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors Manivannan Sadhasivam via B4 Relay
2026-01-08 12:15   ` Bartosz Golaszewski
2026-01-09  6:02     ` Manivannan Sadhasivam
2026-01-09  8:24       ` Bartosz Golaszewski
2026-01-09  9:02       ` Damien Le Moal
2026-01-12  7:58         ` Manivannan Sadhasivam
2026-01-07 14:36 ` [PATCH v5 0/5] PCI: Add initial support for handling PCIe M.2 connectors in devicetree Niklas Cassel
2026-01-07 16:48   ` Manivannan Sadhasivam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox