* [PATCH 0/3] power: sequencing: pcie-m2: Add PCIe M.2 Key B connector support
@ 2026-10-21 13:51 Krishna Chaitanya Chundru
2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Krishna Chaitanya Chundru @ 2026-10-21 13:51 UTC (permalink / raw)
To: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio
Cc: linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm,
Krishna Chaitanya Chundru
Add support for PCIe M.2 Mechanical Key B connectors, commonly used for
WWAN adapters.
The series introduces a DT binding for the M.2 Key B connector and
extends the PCIe M.2 power sequencing driver to handle the 3.3V/VBAT
supply and the FULL_CARD_POWER_OFF#, RESET#, and W_DISABLE1#/2# signals.
Finally, describe the WWAN M.2 Key B connector on the Glymur CRD and
move the WWAN supply from the PCIe6 controller to the connector. This
allows the PCI pwrctrl framework to manage the slot supply according to
PCI device power-management requirements instead of having the supply
follow the PCIe controller power state.
Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
---
Krishna Chaitanya Chundru (3):
dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector
power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors
arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector
.../bindings/connector/pcie-m2-b-connector.yaml | 146 +++++++++++++++++++++
MAINTAINERS | 1 +
arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 29 +++-
drivers/power/sequencing/pwrseq-pcie-m2.c | 82 ++++++++++++
4 files changed, 256 insertions(+), 2 deletions(-)
---
base-commit: 2c455ddca7827ad8fa3a64fdbf5a60efb928b46a
change-id: 20261021-pcie6_fix-cf66f4b8b387
Best regards,
--
Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector 2026-10-21 13:51 [PATCH 0/3] power: sequencing: pcie-m2: Add PCIe M.2 Key B connector support Krishna Chaitanya Chundru @ 2026-10-21 13:51 ` Krishna Chaitanya Chundru 2026-10-21 13:55 ` sashiko-bot 2026-10-21 15:44 ` Alexey Charkov 2026-10-21 13:51 ` [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors Krishna Chaitanya Chundru 2026-10-21 13:51 ` [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector Krishna Chaitanya Chundru 2 siblings, 2 replies; 11+ messages in thread From: Krishna Chaitanya Chundru @ 2026-10-21 13:51 UTC (permalink / raw) To: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio Cc: linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm, Krishna Chaitanya Chundru Add the devicetree binding for PCIe M.2 Mechanical Key B connector defined in the PCI Express M.2 Specification, r4.2, sec 3.2.19.1. This connector is used to attach WWAN Adapters to the host machine over interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0, selected by the Adapter's configuration pins. The connector provides a primary power supply of 3.3V/VBAT, along with optional GPIO signals for WWAN-specific power/radio control: FULL_CARD_POWER_OFF#, RESET#, W_DISABLE1#/2#, WAKE_ON_WWAN#, and DPR. Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- .../bindings/connector/pcie-m2-b-connector.yaml | 146 +++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 147 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml new file mode 100644 index 000000000000..a7f4bcbc5119 --- /dev/null +++ b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml @@ -0,0 +1,146 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/connector/pcie-m2-b-connector.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: PCIe M.2 Mechanical Key B Connector + +maintainers: + - Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> + +description: + A PCIe M.2 B connector node represents a physical PCIe M.2 Mechanical Key B + connector. Mechanical Key B connectors are used to connect WWAN devices to + the host machine over interfaces like PCIe, USB3.1 Gen1, SSIC, or USB 2.0, + selected by the Adapter's configuration pins. + +properties: + compatible: + const: pcie-m2-b-connector + + vpcie3v3-supply: + description: A phandle to the regulator for the 3.3v/VBAT supply. + + full-card-power-off-gpios: + description: GPIO output to FULL_CARD_POWER_OFF# signal. This signal is + used by the host system to turn off the entire Adapter. Refer, PCI + Express M.2 Specification r4.0, sec 3.2.13.1 for more details. + maxItems: 1 + + reset-gpios: + description: GPIO output to RESET# signal. This signal is used by the + host system to place the WWAN Adapter into a power-on reset condition. + Refer, PCI Express M.2 Specification r4.0, sec 3.2.13.2 for more + details. + maxItems: 1 + + w-disable1-gpios: + description: GPIO output to W_DISABLE1# signal. This signal is used by + the host system to disable the WWAN radio on the Adapter. Refer, PCI + Express M.2 Specification r4.0, sec 3.1.12.3 for more details. + maxItems: 1 + + w-disable2-gpios: + description: GPIO output to W_DISABLE2# signal (default function of + GPIO_10). This signal is used by the host system to disable a second + radio on the Adapter. Refer, PCI Express M.2 Specification r4.0, + sec 3.1.12.3 for more details. + maxItems: 1 + + wowwan-gpios: + description: GPIO input to WAKE_ON_WWAN# (WoWWAN#) signal. The Adapter + asserts this signal to wake up the host system. Refer, PCI Express M.2 + Specification r4.0, sec 3.2.13.3.6 for more details. + maxItems: 1 + + dpr-gpios: + description: GPIO output to the Dynamic Power Reduction (DPR) signal. + This signal is provided by a host system proximity sensor to the + Adapter to trigger a reduction in the radio transmit output power to + meet regulatory SAR requirements. Refer, PCI Express M.2 Specification + r4.0, sec 3.2.13.4 for more details. + maxItems: 1 + + 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 + + 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: PCIe interface for WWAN + + port@1: + $ref: /schemas/graph.yaml#/properties/port + description: SSIC interface for WWAN + + port@2: + $ref: /schemas/graph.yaml#/properties/port + description: USB 2.0 interface for WWAN + + port@3: + $ref: /schemas/graph.yaml#/properties/port + description: USB3.1 Gen1 interface for WWAN + + anyOf: + - required: + - port@0 + - required: + - port@1 + - required: + - port@3 + +required: + - compatible + - vpcie3v3-supply + +additionalProperties: false + +examples: + # PCI M.2 Key B connector for WWAN with PCIe interface + - | + #include <dt-bindings/gpio/gpio.h> + + connector { + compatible = "pcie-m2-b-connector"; + vpcie3v3-supply = <&vreg_wwan>; + full-card-power-off-gpios = <&tlmm 121 GPIO_ACTIVE_LOW>; + w-disable1-gpios = <&tlmm 122 GPIO_ACTIVE_LOW>; + wowwan-gpios = <&tlmm 123 GPIO_ACTIVE_LOW>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + endpoint@0 { + reg = <0>; + remote-endpoint = <&pcie6_port0_ep>; + }; + }; + + port@2 { + reg = <2>; + #address-cells = <1>; + #size-cells = <0>; + + endpoint@0 { + reg = <0>; + remote-endpoint = <&usb_hs_ep>; + }; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 7b5cab72d851..22cfd2b72e1a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -21794,6 +21794,7 @@ 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-b-connector.yaml F: Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml F: Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml F: drivers/power/sequencing/pwrseq-pcie-m2.c -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector 2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru @ 2026-10-21 13:55 ` sashiko-bot 2026-10-21 15:44 ` Alexey Charkov 1 sibling, 0 replies; 11+ messages in thread From: sashiko-bot @ 2026-10-21 13:55 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: linux-pci > Add the devicetree binding for PCIe M.2 Mechanical Key B connector > defined in the PCI Express M.2 Specification, r4.2, sec 3.2.19.1. This > connector is used to attach WWAN Adapters to the host machine over > interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0, selected by the > Adapter's configuration pins. > > The connector provides a primary power supply of 3.3V/VBAT, along with > optional GPIO signals for WWAN-specific power/radio control: > FULL_CARD_POWER_OFF#, RESET#, W_DISABLE1#/2#, WAKE_ON_WWAN#, and DPR. > > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> Sashiko has reviewed this patch and found no issues. -- Sashiko AI review · https://sashiko.dev/#/patchset/20261021-pcie6_fix-v1-0-ad37134c35a3@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector 2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru 2026-10-21 13:55 ` sashiko-bot @ 2026-10-21 15:44 ` Alexey Charkov 2026-10-22 4:26 ` Krishna Chaitanya Chundru 1 sibling, 1 reply; 11+ messages in thread From: Alexey Charkov @ 2026-10-21 15:44 UTC (permalink / raw) To: Krishna Chaitanya Chundru Cc: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio, linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm Hi Krishna, On Wed, Oct 21, 2026 at 5:51 PM Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> wrote: > > Add the devicetree binding for PCIe M.2 Mechanical Key B connector > defined in the PCI Express M.2 Specification, r4.2, sec 3.2.19.1. This > connector is used to attach WWAN Adapters to the host machine over > interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0, selected by the > Adapter's configuration pins. > > The connector provides a primary power supply of 3.3V/VBAT, along with > optional GPIO signals for WWAN-specific power/radio control: > FULL_CARD_POWER_OFF#, RESET#, W_DISABLE1#/2#, WAKE_ON_WWAN#, and DPR. > > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > --- > .../bindings/connector/pcie-m2-b-connector.yaml | 146 +++++++++++++++++++++ > MAINTAINERS | 1 + > 2 files changed, 147 insertions(+) > > diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml > new file mode 100644 > index 000000000000..a7f4bcbc5119 > --- /dev/null > +++ b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml > @@ -0,0 +1,146 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/connector/pcie-m2-b-connector.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: PCIe M.2 Mechanical Key B Connector > + > +maintainers: > + - Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > + > +description: > + A PCIe M.2 B connector node represents a physical PCIe M.2 Mechanical Key B > + connector. Mechanical Key B connectors are used to connect WWAN devices to > + the host machine over interfaces like PCIe, USB3.1 Gen1, SSIC, or USB 2.0, > + selected by the Adapter's configuration pins. > + > +properties: > + compatible: > + const: pcie-m2-b-connector > + > + vpcie3v3-supply: > + description: A phandle to the regulator for the 3.3v/VBAT supply. > + > + full-card-power-off-gpios: > + description: GPIO output to FULL_CARD_POWER_OFF# signal. This signal is > + used by the host system to turn off the entire Adapter. Refer, PCI > + Express M.2 Specification r4.0, sec 3.2.13.1 for more details. > + maxItems: 1 > + > + reset-gpios: > + description: GPIO output to RESET# signal. This signal is used by the > + host system to place the WWAN Adapter into a power-on reset condition. > + Refer, PCI Express M.2 Specification r4.0, sec 3.2.13.2 for more > + details. > + maxItems: 1 > + > + w-disable1-gpios: > + description: GPIO output to W_DISABLE1# signal. This signal is used by > + the host system to disable the WWAN radio on the Adapter. Refer, PCI > + Express M.2 Specification r4.0, sec 3.1.12.3 for more details. > + maxItems: 1 > + > + w-disable2-gpios: > + description: GPIO output to W_DISABLE2# signal (default function of > + GPIO_10). This signal is used by the host system to disable a second > + radio on the Adapter. Refer, PCI Express M.2 Specification r4.0, > + sec 3.1.12.3 for more details. > + maxItems: 1 > + > + wowwan-gpios: > + description: GPIO input to WAKE_ON_WWAN# (WoWWAN#) signal. The Adapter > + asserts this signal to wake up the host system. Refer, PCI Express M.2 > + Specification r4.0, sec 3.2.13.3.6 for more details. > + maxItems: 1 > + > + dpr-gpios: > + description: GPIO output to the Dynamic Power Reduction (DPR) signal. > + This signal is provided by a host system proximity sensor to the > + Adapter to trigger a reduction in the radio transmit output power to > + meet regulatory SAR requirements. Refer, PCI Express M.2 Specification > + r4.0, sec 3.2.13.4 for more details. > + maxItems: 1 This seems to be missing the four CONFIG_* pins, which are quite crucial in these connectors, as they define which interfaces the module asks the host to provide on the respective pins. Without those module type detection is impossible. > + 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 > + > + 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: PCIe interface for WWAN > + > + port@1: > + $ref: /schemas/graph.yaml#/properties/port > + description: SSIC interface for WWAN > + > + port@2: > + $ref: /schemas/graph.yaml#/properties/port > + description: USB 2.0 interface for WWAN > + > + port@3: > + $ref: /schemas/graph.yaml#/properties/port > + description: USB3.1 Gen1 interface for WWAN > + > + anyOf: > + - required: > + - port@0 > + - required: > + - port@1 > + - required: > + - port@3 This misses SATA which shares pins with PCIe. PCIe second lane also conflicts with USB 3.1/SSIC, which isn't captured here. Should it be? Should the graph also envisage connections for the I2C bus (GNSS), audio (2 or 4 wire), re-muxing of W_DISABLE2# and WAKE_ON_WWAN# into HSIC functions in Port Config_3, GNSS interrupt line and the such? Should the connector node also define pinctrl configurations for each of the 15 interface configurations? Best regards, Alexey ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector 2026-10-21 15:44 ` Alexey Charkov @ 2026-10-22 4:26 ` Krishna Chaitanya Chundru 2026-10-22 9:26 ` Alexey Charkov 0 siblings, 1 reply; 11+ messages in thread From: Krishna Chaitanya Chundru @ 2026-10-22 4:26 UTC (permalink / raw) To: Alexey Charkov Cc: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio, linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm On 10/21/2026 9:14 PM, Alexey Charkov wrote: > Hi Krishna, Hi Alexey, Thanks for the thorough review, this is helpful. > > On Wed, Oct 21, 2026 at 5:51 PM Krishna Chaitanya Chundru > <krishna.chundru@oss.qualcomm.com> wrote: >> Add the devicetree binding for PCIe M.2 Mechanical Key B connector >> defined in the PCI Express M.2 Specification, r4.2, sec 3.2.19.1. This >> connector is used to attach WWAN Adapters to the host machine over >> interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0, selected by the >> Adapter's configuration pins. >> >> The connector provides a primary power supply of 3.3V/VBAT, along with >> optional GPIO signals for WWAN-specific power/radio control: >> FULL_CARD_POWER_OFF#, RESET#, W_DISABLE1#/2#, WAKE_OQN_WWAN#, and DPR. >> >> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> >> --- >> .../bindings/connector/pcie-m2-b-connector.yaml | 146 +++++++++++++++++++++ >> MAINTAINERS | 1 + >> 2 files changed, 147 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml >> new file mode 100644 >> index 000000000000..a7f4bcbc5119 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml >> @@ -0,0 +1,146 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/connector/pcie-m2-b-connector.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: PCIe M.2 Mechanical Key B Connector >> + >> +maintainers: >> + - Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> >> + >> +description: >> + A PCIe M.2 B connector node represents a physical PCIe M.2 Mechanical Key B >> + connector. Mechanical Key B connectors are used to connect WWAN devices to >> + the host machine over interfaces like PCIe, USB3.1 Gen1, SSIC, or USB 2.0, >> + selected by the Adapter's configuration pins. >> + >> +properties: >> + compatible: >> + const: pcie-m2-b-connector >> + >> + vpcie3v3-supply: >> + description: A phandle to the regulator for the 3.3v/VBAT supply. >> + >> + full-card-power-off-gpios: >> + description: GPIO output to FULL_CARD_POWER_OFF# signal. This signal is >> + used by the host system to turn off the entire Adapter. Refer, PCI >> + Express M.2 Specification r4.0, sec 3.2.13.1 for more details. >> + maxItems: 1 >> + >> + reset-gpios: >> + description: GPIO output to RESET# signal. This signal is used by the >> + host system to place the WWAN Adapter into a power-on reset condition. >> + Refer, PCI Express M.2 Specification r4.0, sec 3.2.13.2 for more >> + details. >> + maxItems: 1 >> + >> + w-disable1-gpios: >> + description: GPIO output to W_DISABLE1# signal. This signal is used by >> + the host system to disable the WWAN radio on the Adapter. Refer, PCI >> + Express M.2 Specification r4.0, sec 3.1.12.3 for more details. >> + maxItems: 1 >> + >> + w-disable2-gpios: >> + description: GPIO output to W_DISABLE2# signal (default function of >> + GPIO_10). This signal is used by the host system to disable a second >> + radio on the Adapter. Refer, PCI Express M.2 Specification r4.0, >> + sec 3.1.12.3 for more details. >> + maxItems: 1 >> + >> + wowwan-gpios: >> + description: GPIO input to WAKE_ON_WWAN# (WoWWAN#) signal. The Adapter >> + asserts this signal to wake up the host system. Refer, PCI Express M.2 >> + Specification r4.0, sec 3.2.13.3.6 for more details. >> + maxItems: 1 >> + >> + dpr-gpios: >> + description: GPIO output to the Dynamic Power Reduction (DPR) signal. >> + This signal is provided by a host system proximity sensor to the >> + Adapter to trigger a reduction in the radio transmit output power to >> + meet regulatory SAR requirements. Refer, PCI Express M.2 Specification >> + r4.0, sec 3.2.13.4 for more details. >> + maxItems: 1 > This seems to be missing the four CONFIG_* pins, which are quite > crucial in these connectors, as they define which interfaces the > module asks the host to provide on the respective pins. Without those > module type detection is impossible. Agreed, thanks for catching this. I will add a config-gpios property (4 GPIO inputs, one per CONFIG_0..3 pin) to v2. It's optional, not required - a board that always has a known, fixed card type in a given socket (e.g. QCOM glymur-crd's WWAN-only slot) can just describe that fixed wiring via the ports property and skip CONFIG decode entirely; config-gpios is only needed when the host wants to detect the card type/host-interface at runtime. Kept it as plain sensed GPIOs with no decode semantics imposed by the schema - the property description documents the full Table 3-18 state table inline (all 16 states) so the binding is self-contained, but turning the sensed 4-bit pattern into "this is a WWAN-PCIe Adapter in port config 0" is left to driver code, consistent with how the rest of the connector's sensed straps (e.g. viocfg-gpios on the E-connector) are already handled. >> + 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 >> + >> + 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: PCIe interface for WWAN >> + >> + port@1: >> + $ref: /schemas/graph.yaml#/properties/port >> + description: SSIC interface for WWAN >> + >> + port@2: >> + $ref: /schemas/graph.yaml#/properties/port >> + description: USB 2.0 interface for WWAN >> + >> + port@3: >> + $ref: /schemas/graph.yaml#/properties/port >> + description: USB3.1 Gen1 interface for WWAN >> + >> + anyOf: >> + - required: >> + - port@0 >> + - required: >> + - port@1 >> + - required: >> + - port@3 > This misses SATA which shares pins with PCIe. PCIe second lane also > conflicts with USB 3.1/SSIC, which isn't captured here. Should it be? Before adding a SATA/SSD port here, I want to double check the scope: per Table 2-1, every SSD-capable board using those CONFIG states is a B+M dual-key card (Type 2230/2242/2260/2280/22110, "B+M" key column), not a pure Key-B-only card. Pure Key-B-only form factors (2242, 3042, 3052, 3060) are WWAN-only per that table, with no SSD row. If that holds, is modeling SATA/PCIe-SSD states in pcie-m2-b-connector even in scope, versus always describing a B+M socket via pcie-m2-m-connector (which already covers PCIe/SATA SSDs) and reserving pcie-m2-b-connector strictly for the WWAN-only Key-B form factors? Or do you know of a real case where a pure Key-B socket legitimately decodes to an SSD CONFIG state that I'm missing? Happy to add the SATA port either way, just want to scope it correctly before v2. > Should the graph also envisage connections for the I2C bus (GNSS), > audio (2 or 4 wire), re-muxing of W_DISABLE2# and WAKE_ON_WWAN# into > HSIC functions in Port Config_3, GNSS interrupt line and the such? > Should the connector node also define pinctrl configurations for each > of the 15 interface configurations? These are all real signals in the spec (GPIO_0-11's BTO-defined functions per Table 3-15, plus the HSIC remux under Port Config_3), but I'd left them out deliberately for now: every one of GPIO_0 through GPIO_9 is explicitly "VENDOR DEFINED or GPIO_x" in the spec text, i.e. there's no fixed function to bind to without a BTO agreement between card vendor and platform. The sibling pcie-m2-e-connector binding takes the same approach and doesn't model its own analogous BTO pins either. I'd rather land CONFIG_0-3 decode plus the SATA/PCIe-SSD scoping question in v2, and handle I2C/GNSS/audio/HSIC-remux/per-config pinctrl as follow-up patches once there's a concrete board that needs one of them with a real driver consumer - adding properties nothing reads yet felt like the wrong order of operations. But let me know if you think v1 shouldn't go in at all until that full state machine is captured in the binding. - Krishna Chaitanya. > Best regards, > Alexey ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector 2026-10-22 4:26 ` Krishna Chaitanya Chundru @ 2026-10-22 9:26 ` Alexey Charkov 0 siblings, 0 replies; 11+ messages in thread From: Alexey Charkov @ 2026-10-22 9:26 UTC (permalink / raw) To: Krishna Chaitanya Chundru Cc: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio, linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm On Thu, Oct 22, 2026 at 8:27 AM Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> wrote: > > > > On 10/21/2026 9:14 PM, Alexey Charkov wrote: > > Hi Krishna, > Hi Alexey, > > Thanks for the thorough review, this is helpful. > > > > On Wed, Oct 21, 2026 at 5:51 PM Krishna Chaitanya Chundru > > <krishna.chundru@oss.qualcomm.com> wrote: > >> Add the devicetree binding for PCIe M.2 Mechanical Key B connector > >> defined in the PCI Express M.2 Specification, r4.2, sec 3.2.19.1. This > >> connector is used to attach WWAN Adapters to the host machine over > >> interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0, selected by the > >> Adapter's configuration pins. > >> > >> The connector provides a primary power supply of 3.3V/VBAT, along with > >> optional GPIO signals for WWAN-specific power/radio control: > >> FULL_CARD_POWER_OFF#, RESET#, W_DISABLE1#/2#, WAKE_OQN_WWAN#, and DPR. > >> > >> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > >> --- > >> .../bindings/connector/pcie-m2-b-connector.yaml | 146 +++++++++++++++++++++ > >> MAINTAINERS | 1 + > >> 2 files changed, 147 insertions(+) > >> > >> diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml > >> new file mode 100644 > >> index 000000000000..a7f4bcbc5119 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/connector/pcie-m2-b-connector.yaml > >> @@ -0,0 +1,146 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/connector/pcie-m2-b-connector.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: PCIe M.2 Mechanical Key B Connector > >> + > >> +maintainers: > >> + - Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > >> + > >> +description: > >> + A PCIe M.2 B connector node represents a physical PCIe M.2 Mechanical Key B > >> + connector. Mechanical Key B connectors are used to connect WWAN devices to > >> + the host machine over interfaces like PCIe, USB3.1 Gen1, SSIC, or USB 2.0, > >> + selected by the Adapter's configuration pins. > >> + > >> +properties: > >> + compatible: > >> + const: pcie-m2-b-connector > >> + > >> + vpcie3v3-supply: > >> + description: A phandle to the regulator for the 3.3v/VBAT supply. > >> + > >> + full-card-power-off-gpios: > >> + description: GPIO output to FULL_CARD_POWER_OFF# signal. This signal is > >> + used by the host system to turn off the entire Adapter. Refer, PCI > >> + Express M.2 Specification r4.0, sec 3.2.13.1 for more details. > >> + maxItems: 1 > >> + > >> + reset-gpios: > >> + description: GPIO output to RESET# signal. This signal is used by the > >> + host system to place the WWAN Adapter into a power-on reset condition. > >> + Refer, PCI Express M.2 Specification r4.0, sec 3.2.13.2 for more > >> + details. > >> + maxItems: 1 > >> + > >> + w-disable1-gpios: > >> + description: GPIO output to W_DISABLE1# signal. This signal is used by > >> + the host system to disable the WWAN radio on the Adapter. Refer, PCI > >> + Express M.2 Specification r4.0, sec 3.1.12.3 for more details. > >> + maxItems: 1 > >> + > >> + w-disable2-gpios: > >> + description: GPIO output to W_DISABLE2# signal (default function of > >> + GPIO_10). This signal is used by the host system to disable a second > >> + radio on the Adapter. Refer, PCI Express M.2 Specification r4.0, > >> + sec 3.1.12.3 for more details. > >> + maxItems: 1 > >> + > >> + wowwan-gpios: > >> + description: GPIO input to WAKE_ON_WWAN# (WoWWAN#) signal. The Adapter > >> + asserts this signal to wake up the host system. Refer, PCI Express M.2 > >> + Specification r4.0, sec 3.2.13.3.6 for more details. > >> + maxItems: 1 > >> + > >> + dpr-gpios: > >> + description: GPIO output to the Dynamic Power Reduction (DPR) signal. > >> + This signal is provided by a host system proximity sensor to the > >> + Adapter to trigger a reduction in the radio transmit output power to > >> + meet regulatory SAR requirements. Refer, PCI Express M.2 Specification > >> + r4.0, sec 3.2.13.4 for more details. > >> + maxItems: 1 > > This seems to be missing the four CONFIG_* pins, which are quite > > crucial in these connectors, as they define which interfaces the > > module asks the host to provide on the respective pins. Without those > > module type detection is impossible. > Agreed, thanks for catching this. I will add a config-gpios property (4 GPIO > inputs, one per CONFIG_0..3 pin) to v2. It's optional, not required - a board > that always has a known, fixed card type in a given socket (e.g. QCOM > glymur-crd's WWAN-only slot) can just describe that fixed wiring via the ports > property and skip CONFIG decode entirely; config-gpios is only needed when the > host wants to detect the card type/host-interface at runtime. Kept it as plain > sensed GPIOs with no decode semantics imposed by the schema - the property > description documents the full Table 3-18 state table inline (all 16 states) > so the binding is self-contained, but turning the sensed 4-bit pattern into > "this is a WWAN-PCIe Adapter in port config 0" is left to driver code, > consistent with how the rest of the connector's sensed straps (e.g. > viocfg-gpios on the E-connector) are already handled. Agreed that the logic of turning the 4-bit pattern into enabling/disabling interfaces sounds like a driver realm, although we probably need to consider if the connector should accept pinctrl-0 through pinctrl-15 to hint the host about which pin muxes should follow from each of the 16 4-bit CONFIG_* pin states. This mapping is hard to recover outside the connector's context. > >> + 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 > >> + > >> + 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: PCIe interface for WWAN > >> + > >> + port@1: > >> + $ref: /schemas/graph.yaml#/properties/port > >> + description: SSIC interface for WWAN > >> + > >> + port@2: > >> + $ref: /schemas/graph.yaml#/properties/port > >> + description: USB 2.0 interface for WWAN > >> + > >> + port@3: > >> + $ref: /schemas/graph.yaml#/properties/port > >> + description: USB3.1 Gen1 interface for WWAN > >> + > >> + anyOf: > >> + - required: > >> + - port@0 > >> + - required: > >> + - port@1 > >> + - required: > >> + - port@3 > > This misses SATA which shares pins with PCIe. PCIe second lane also > > conflicts with USB 3.1/SSIC, which isn't captured here. Should it be? > Before adding a SATA/SSD port here, I want to double check the scope: per > Table 2-1, every SSD-capable board using those CONFIG states is a B+M dual-key > card (Type 2230/2242/2260/2280/22110, "B+M" key column), not a pure Key-B-only > card. Pure Key-B-only form factors (2242, 3042, 3052, 3060) are WWAN-only per > that table, with no SSD row. Your binding is about the host-side M.2 key B slot, which by design accepts both M.2 key B cards and M.2 key B+M cards, and the slot interfaces are explicitly designed to support both. So the binding should reflect the slot's hardware, not the card's hardware. > If that holds, is modeling SATA/PCIe-SSD states in pcie-m2-b-connector even in > scope, versus always describing a B+M socket via pcie-m2-m-connector (which > already covers PCIe/SATA SSDs) and reserving pcie-m2-b-connector strictly for > the WWAN-only Key-B form factors? Or do you know of a real case where a pure > Key-B socket legitimately decodes to an SSD CONFIG state that I'm missing? > Happy to add the SATA port either way, just want to scope it correctly before v2. I don't think B+M _sockets_ even exist. The socket is keyed either B, or M, not both, and a B+M keyed card is compatible with either. It also reflects real-world use: people can and do use SATA SSDs in key-B slots. Same with NVMe SSDs, although those are rarer in B+M form factor (but I own one, and it works fine in a full-function spec-compliant key-B slot). > > Should the graph also envisage connections for the I2C bus (GNSS), > > audio (2 or 4 wire), re-muxing of W_DISABLE2# and WAKE_ON_WWAN# into > > HSIC functions in Port Config_3, GNSS interrupt line and the such? > > Should the connector node also define pinctrl configurations for each > > of the 15 interface configurations? > These are all real signals in the spec (GPIO_0-11's BTO-defined functions per > Table 3-15, plus the HSIC remux under Port Config_3), but I'd left them out > deliberately for now: every one of GPIO_0 through GPIO_9 is explicitly "VENDOR > DEFINED or GPIO_x" in the spec text, i.e. there's no fixed function to bind to > without a BTO agreement between card vendor and platform. The sibling > pcie-m2-e-connector binding takes the same approach and doesn't model its own > analogous BTO pins either. I thought only configuration b1011 explicitly says that the other interfaces besides PCIe and USB 3.1 Gen 1 are vendor defined. The rest have an explicitly assigned function for GPIO_0..GPIO_11, as set out in the Port Config_0 through Port Config_3 mapping table. Port Config_3 is the weird one, with its vendor-defined IPC on most of the pins, but the others are more clear-cut. > I'd rather land CONFIG_0-3 decode plus the SATA/PCIe-SSD scoping question in > v2, and handle I2C/GNSS/audio/HSIC-remux/per-config pinctrl as follow-up > patches once there's a concrete board that needs one of them with a real > driver consumer - adding properties nothing reads yet felt like the wrong > order of operations. But let me know if you think v1 shouldn't go in at all > until that full state machine is captured in the binding. The general guidance is that bindings should be complete, even if the software does not fully implement them yet. I'm not sure how strict that guidance is. In this particular case I'm wary of the risk in merging a version of the binding which will make sane modeling of those extra interfaces impossible later on. Assigning port nodes to all possible interfaces envisaged by the spec is probably easy enough, although subtleties remain, such as: do pinctrl groups for each interface configuration belong to the respective interface providers or to the connector? Does the binding allow additional vendor-specific interfaces on the GPIO_0..GPIO_11 pins at all (e.g. various IPC configurations which the spec leaves to the host and module vendor to decide), and if yes - how? These decisions (and probably others I haven't thought of yet) will likely shape the correct binding structure. It would be great to discuss and prototype them before committing to the binding, which must remain backward-compatible once merged. Best regards, Alexey ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors 2026-10-21 13:51 [PATCH 0/3] power: sequencing: pcie-m2: Add PCIe M.2 Key B connector support Krishna Chaitanya Chundru 2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru @ 2026-10-21 13:51 ` Krishna Chaitanya Chundru 2026-10-21 14:01 ` sashiko-bot 2026-10-21 13:51 ` [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector Krishna Chaitanya Chundru 2 siblings, 1 reply; 11+ messages in thread From: Krishna Chaitanya Chundru @ 2026-10-21 13:51 UTC (permalink / raw) To: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio Cc: linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm, Krishna Chaitanya Chundru Add support for handling the power sequence of the PCIe M.2 Key B connectors. These connectors are used to attach WWAN Adapters to the host machine over interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB 2.0. Currently, this driver only supports driving the 3.3V/VBAT power supply along with the FULL_CARD_POWER_OFF#, RESET#, and W_DISABLE1#/2# GPIOs as a single "pcie" target, since Key B Adapters expose only a discoverable PCIe/USB interface and no non-discoverable bus (unlike Key E's UART-attached Bluetooth device), so no serdev creation is needed. The optional WAKE_ON_WWAN# and DPR signals are not currently supported. Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- drivers/power/sequencing/pwrseq-pcie-m2.c | 82 +++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequencing/pwrseq-pcie-m2.c index e42e85f47629..62185bf30d73 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -39,6 +39,8 @@ struct pwrseq_pcie_m2_ctx { struct notifier_block nb; struct gpio_desc *w_disable1_gpio; struct gpio_desc *w_disable2_gpio; + struct gpio_desc *full_card_power_off_gpio; + struct gpio_desc *reset_gpio; struct device *dev; struct list_head pci_devices; struct mutex list_lock; @@ -111,6 +113,53 @@ static const struct pwrseq_unit_data pwrseq_pcie_m2_e_pcie_unit_data = { .disable = pwrseq_pci_m2_e_pcie_disable, }; +static int pwrseq_pci_m2_b_pcie_enable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx = pwrseq_device_get_drvdata(pwrseq); + int ret; + + ret = gpiod_set_value_cansleep(ctx->full_card_power_off_gpio, 0); + if (ret) + return ret; + + ret = gpiod_set_value_cansleep(ctx->reset_gpio, 0); + if (ret) + return ret; + + ret = gpiod_set_value_cansleep(ctx->w_disable1_gpio, 0); + if (ret) + return ret; + + return gpiod_set_value_cansleep(ctx->w_disable2_gpio, 0); +} + +static int pwrseq_pci_m2_b_pcie_disable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx = pwrseq_device_get_drvdata(pwrseq); + int ret; + + ret = gpiod_set_value_cansleep(ctx->w_disable2_gpio, 1); + if (ret) + return ret; + + ret = gpiod_set_value_cansleep(ctx->w_disable1_gpio, 1); + if (ret) + return ret; + + ret = gpiod_set_value_cansleep(ctx->reset_gpio, 1); + if (ret) + return ret; + + return gpiod_set_value_cansleep(ctx->full_card_power_off_gpio, 1); +} + +static const struct pwrseq_unit_data pwrseq_pcie_m2_b_pcie_unit_data = { + .name = "pcie-enable", + .deps = pwrseq_pcie_m2_unit_deps, + .enable = pwrseq_pci_m2_b_pcie_enable, + .disable = pwrseq_pci_m2_b_pcie_disable, +}; + static const struct pwrseq_unit_data pwrseq_pcie_m2_m_pcie_unit_data = { .name = "pcie-enable", .deps = pwrseq_pcie_m2_unit_deps, @@ -140,6 +189,11 @@ static const struct pwrseq_target_data pwrseq_pcie_m2_e_pcie_target_data = { .post_enable = pwrseq_pcie_m2_e_pwup_delay, }; +static const struct pwrseq_target_data pwrseq_pcie_m2_b_pcie_target_data = { + .name = "pcie", + .unit = &pwrseq_pcie_m2_b_pcie_unit_data, +}; + static const struct pwrseq_target_data pwrseq_pcie_m2_m_pcie_target_data = { .name = "pcie", .unit = &pwrseq_pcie_m2_m_pcie_unit_data, @@ -151,6 +205,11 @@ static const struct pwrseq_target_data *pwrseq_pcie_m2_e_targets[] = { NULL }; +static const struct pwrseq_target_data *pwrseq_pcie_m2_b_targets[] = { + &pwrseq_pcie_m2_b_pcie_target_data, + NULL +}; + static const struct pwrseq_target_data *pwrseq_pcie_m2_m_targets[] = { &pwrseq_pcie_m2_m_pcie_target_data, NULL @@ -160,6 +219,10 @@ static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_e_of_data = { .targets = pwrseq_pcie_m2_e_targets, }; +static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_b_of_data = { + .targets = pwrseq_pcie_m2_b_targets, +}; + static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_m_of_data = { .targets = pwrseq_pcie_m2_m_targets, }; @@ -534,6 +597,21 @@ static int pwrseq_pcie_m2_probe(struct platform_device *pdev) goto err_free_regulators; } + ctx->full_card_power_off_gpio = devm_gpiod_get_optional(dev, "full-card-power-off", + GPIOD_OUT_HIGH); + if (IS_ERR(ctx->full_card_power_off_gpio)) { + ret = dev_err_probe(dev, PTR_ERR(ctx->full_card_power_off_gpio), + "Failed to get the FULL_CARD_POWER_OFF# GPIO\n"); + goto err_free_regulators; + } + + ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ctx->reset_gpio)) { + ret = dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get the RESET# GPIO\n"); + goto err_free_regulators; + } + config.parent = dev; config.owner = THIS_MODULE; config.drvdata = ctx; @@ -598,6 +676,10 @@ static const struct of_device_id pwrseq_pcie_m2_of_match[] = { .compatible = "pcie-m2-e-connector", .data = &pwrseq_pcie_m2_e_of_data, }, + { + .compatible = "pcie-m2-b-connector", + .data = &pwrseq_pcie_m2_b_of_data, + }, { } }; MODULE_DEVICE_TABLE(of, pwrseq_pcie_m2_of_match); -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors 2026-10-21 13:51 ` [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors Krishna Chaitanya Chundru @ 2026-10-21 14:01 ` sashiko-bot 0 siblings, 0 replies; 11+ messages in thread From: sashiko-bot @ 2026-10-21 14:01 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: linux-pci > Add support for handling the power sequence of the PCIe M.2 Key B > connectors. These connectors are used to attach WWAN Adapters to the > host machine over interfaces such as PCIe, USB3.1 Gen1, SSIC, or USB > 2.0. > > Currently, this driver only supports driving the 3.3V/VBAT power > supply along with the FULL_CARD_POWER_OFF#, RESET#, and W_DISABLE1#/2# > GPIOs as a single "pcie" target, since Key B Adapters expose only a > discoverable PCIe/USB interface and no non-discoverable bus (unlike > Key E's UART-attached Bluetooth device), so no serdev creation is > needed. The optional WAKE_ON_WWAN# and DPR signals are not currently > supported. > > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> Sashiko has reviewed this patch and found no issues. -- Sashiko AI review · https://sashiko.dev/#/patchset/20261021-pcie6_fix-v1-0-ad37134c35a3@oss.qualcomm.com?part=2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector 2026-10-21 13:51 [PATCH 0/3] power: sequencing: pcie-m2: Add PCIe M.2 Key B connector support Krishna Chaitanya Chundru 2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru 2026-10-21 13:51 ` [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors Krishna Chaitanya Chundru @ 2026-10-21 13:51 ` Krishna Chaitanya Chundru 2026-10-21 14:06 ` Konrad Dybcio 2026-10-21 14:07 ` sashiko-bot 2 siblings, 2 replies; 11+ messages in thread From: Krishna Chaitanya Chundru @ 2026-10-21 13:51 UTC (permalink / raw) To: Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio Cc: linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm, Krishna Chaitanya Chundru The Glymur CRD has a WWAN M.2 slot connected to PCIe6. Currently the vreg_wwan supply is described directly on the PCIe6 host bridge. As a result, the supply follows the PCIe controller power state and is turned off when the controller is powered down, regardless of the requirements of the device connected to the slot. Move control of the WWAN supply to the generic pci-pwrctrl-slot/pwrseq-pcie-m2 framework. This allows slot power to be coordinated with PCI device power-management requirements and keeps the supply enabled when required by the PCI device, such as for PME-based wake-up. Describe the slot as a PCIe M.2 Mechanical Key B connector and link it to the PCIe6 Root Port using a graph port/endpoint pair, as required by the pcie-m2-b-connector binding. Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/glymur-crd.dtsi b/arch/arm64/boot/dts/qcom/glymur-crd.dtsi index e27c697e3170..73de60b0d0e5 100644 --- a/arch/arm64/boot/dts/qcom/glymur-crd.dtsi +++ b/arch/arm64/boot/dts/qcom/glymur-crd.dtsi @@ -237,6 +237,27 @@ vreg_wwan: regulator-wwan { pinctrl-names = "default"; }; + wwan-connector { + compatible = "pcie-m2-b-connector"; + vpcie3v3-supply = <&vreg_wwan>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + wwan_m2_pcie_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&pcie6_port0_ep>; + }; + }; + }; + }; + sound { compatible = "qcom,glymur-sndcard"; model = "GLYMUR-CRD"; @@ -810,8 +831,6 @@ &pcie5_port0 { }; &pcie6 { - vddpe-3v3-supply = <&vreg_wwan>; - pinctrl-0 = <&pcie6_default>; pinctrl-names = "default"; @@ -828,6 +847,12 @@ &pcie6_phy { &pcie6_port0 { reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>; + + port { + pcie6_port0_ep: endpoint { + remote-endpoint = <&wwan_m2_pcie_ep>; + }; + }; }; &pmh0110_f_e1_gpios { -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector 2026-10-21 13:51 ` [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector Krishna Chaitanya Chundru @ 2026-10-21 14:06 ` Konrad Dybcio 2026-10-21 14:07 ` sashiko-bot 1 sibling, 0 replies; 11+ messages in thread From: Konrad Dybcio @ 2026-10-21 14:06 UTC (permalink / raw) To: Krishna Chaitanya Chundru, Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio Cc: linux-pci, devicetree, linux-kernel, linux-pm, linux-arm-msm On 10/21/26 3:51 PM, Krishna Chaitanya Chundru wrote: > The Glymur CRD has a WWAN M.2 slot connected to PCIe6. Currently the > vreg_wwan supply is described directly on the PCIe6 host bridge. As a > result, the supply follows the PCIe controller power state and is turned > off when the controller is powered down, regardless of the requirements > of the device connected to the slot. [...] > &pcie6 { > - vddpe-3v3-supply = <&vreg_wwan>; > - > pinctrl-0 = <&pcie6_default>; > pinctrl-names = "default"; > > @@ -828,6 +847,12 @@ &pcie6_phy { > &pcie6_port0 { > reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; > wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>; > + > + port { > + pcie6_port0_ep: endpoint { > + remote-endpoint = <&wwan_m2_pcie_ep>; > + }; > + }; This is already defined in glymur.dtsi, just reference it directly as &pcie6_port0_ep {} Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector 2026-10-21 13:51 ` [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector Krishna Chaitanya Chundru 2026-10-21 14:06 ` Konrad Dybcio @ 2026-10-21 14:07 ` sashiko-bot 1 sibling, 0 replies; 11+ messages in thread From: sashiko-bot @ 2026-10-21 14:07 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: linux-pci > The Glymur CRD has a WWAN M.2 slot connected to PCIe6. Currently the > vreg_wwan supply is described directly on the PCIe6 host bridge. As a > result, the supply follows the PCIe controller power state and is turned > off when the controller is powered down, regardless of the requirements > of the device connected to the slot. > > Move control of the WWAN supply to the generic > pci-pwrctrl-slot/pwrseq-pcie-m2 framework. This allows slot power to be > coordinated with PCI device power-management requirements and keeps the > supply enabled when required by the PCI device, such as for PME-based > wake-up. > > Describe the slot as a PCIe M.2 Mechanical Key B connector and link it > to the PCIe6 Root Port using a graph port/endpoint pair, as required by > the pcie-m2-b-connector binding. > > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> Sashiko has reviewed this patch and found no issues. -- Sashiko AI review · https://sashiko.dev/#/patchset/20261021-pcie6_fix-v1-0-ad37134c35a3@oss.qualcomm.com?part=3 ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-10-22 9:26 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-10-21 13:51 [PATCH 0/3] power: sequencing: pcie-m2: Add PCIe M.2 Key B connector support Krishna Chaitanya Chundru 2026-10-21 13:51 ` [PATCH 1/3] dt-bindings: connector: Add PCIe M.2 Mechanical Key B connector Krishna Chaitanya Chundru 2026-10-21 13:55 ` sashiko-bot 2026-10-21 15:44 ` Alexey Charkov 2026-10-22 4:26 ` Krishna Chaitanya Chundru 2026-10-22 9:26 ` Alexey Charkov 2026-10-21 13:51 ` [PATCH 2/3] power: sequencing: pcie-m2: Add support for PCIe M.2 Key B connectors Krishna Chaitanya Chundru 2026-10-21 14:01 ` sashiko-bot 2026-10-21 13:51 ` [PATCH 3/3] arm64: dts: qcom: glymur-crd: Describe the PCIe M.2 Key B connector Krishna Chaitanya Chundru 2026-10-21 14:06 ` Konrad Dybcio 2026-10-21 14:07 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox