Commit 5970c1da authored by Manivannan Sadhasivam's avatar Manivannan Sadhasivam Committed by Bartosz Golaszewski
Browse files

dt-bindings: connector: Add PCIe M.2 Mechanical Key E connector



Add the devicetree binding for PCIe M.2 Mechanical Key E connector defined
in the PCI Express M.2 Specification, r4.0, sec 5.1.2. This connector
provides interfaces like PCIe or SDIO to attach the WiFi devices to the
host machine, USB or UART+PCM interfaces to attach the Bluetooth (BT)
devices. Spec also provides an optional interface to connect the UIM card,
but that is not covered in this binding.

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: default avatarRob Herring (Arm) <robh@kernel.org>
Signed-off-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Reviewed-by: default avatarBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260326-pci-m2-e-v7-5-43324a7866e6@oss.qualcomm.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
parent 1785c7bc
Loading
Loading
Loading
Loading
+184 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/connector/pcie-m2-e-connector.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: PCIe M.2 Mechanical Key E Connector

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

description:
  A PCIe M.2 E connector node represents a physical PCIe M.2 Mechanical Key E
  connector. Mechanical Key E connectors are used to connect Wireless
  Connectivity devices including combinations of Wi-Fi, BT, NFC to the host
  machine over interfaces like PCIe/SDIO, USB/UART+PCM, and I2C.

properties:
  compatible:
    const: pcie-m2-e-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.

  i2c-parent:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: I2C interface

  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

  w-disable1-gpios:
    description: GPIO output to W_DISABLE1# signal. This signal is used by the
      host system to disable WiFi radio in the M.2 card. 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. This signal is used by the
      host system to disable BT radio in the M.2 card. Refer, PCI Express M.2
      Specification r4.0, sec 3.1.12.3 for more details.
    maxItems: 1

  viocfg-gpios:
    description: GPIO input to IO voltage configuration (VIO_CFG) signal. The
      card drives this signal to indicate to the host system whether the card
      supports an independent IO voltage domain for sideband signals. Refer,
      PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more details.
    maxItems: 1

  uart-wake-gpios:
    description: GPIO input to UART_WAKE# signal. The card asserts this signal
      to wake the host system and initiate UART interface communication. Refer,
      PCI Express M.2 Specification r4.0, sec 3.1.8.1 for more details.
    maxItems: 1

  sdio-wake-gpios:
    description: GPIO input to SDIO_WAKE# signal. The card asserts this signal
      to wake the host system and initiate SDIO interface communication. Refer,
      PCI Express M.2 Specification r4.0, sec 3.1.7 for more details.
    maxItems: 1

  sdio-reset-gpios:
    description: GPIO output to SDIO_RESET# signal. This signal is used by the
      host system to reset SDIO interface of the M.2 card. Refer, PCI Express
      M.2 Specification r4.0, sec 3.1.7 for more details.
    maxItems: 1

  vendor-porta-gpios:
    description: GPIO for the first vendor specific signal (VENDOR_PORTA). This
      signal's functionality is defined by the card manufacturer and may be
      used for proprietary features. Refer the card vendor's documentation for
      details.
    maxItems: 1

  vendor-portb-gpios:
    description: GPIO for the second vendor specific signal (VENDOR_PORTB). This
      signal's functionality is defined by the card manufacturer and may be
      used for proprietary features. Refer the card vendor's documentation for
      details.
    maxItems: 1

  vendor-portc-gpios:
    description: GPIO for the third vendor specific signal (VENDOR_PORTC). This
      signal's functionality is defined by the card manufacturer and may be
      used for proprietary features. Refer the card vendor's documentation for
      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 Wi-Fi

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: SDIO interface for Wi-Fi

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: USB 2.0 interface for BT

      port@3:
        $ref: /schemas/graph.yaml#/properties/port
        description: UART interface for BT

      port@4:
        $ref: /schemas/graph.yaml#/properties/port
        description: PCM/I2S interface

    anyOf:
      - anyOf:
          - required:
              - port@0
          - required:
              - port@1
      - anyOf:
          - required:
              - port@2
          - required:
              - port@3

required:
  - compatible
  - vpcie3v3-supply

additionalProperties: false

examples:
  # PCI M.2 Key E connector for Wi-Fi/BT with PCIe/UART interfaces
  - |
    #include <dt-bindings/gpio/gpio.h>

    connector {
        compatible = "pcie-m2-e-connector";
        vpcie3v3-supply = <&vreg_wcn_3p3>;
        vpcie1v8-supply = <&vreg_l15b_1p8>;
        i2c-parent = <&i2c0>;
        w-disable1-gpios = <&tlmm 115 GPIO_ACTIVE_LOW>;
        w-disable2-gpios = <&tlmm 116 GPIO_ACTIVE_LOW>;
        viocfg-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
        uart-wake-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
        sdio-wake-gpios = <&tlmm 119 GPIO_ACTIVE_LOW>;
        sdio-reset-gpios = <&tlmm 120 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 = <&pcie4_port0_ep>;
                };
            };

            port@3 {
                reg = <3>;
                #address-cells = <1>;
                #size-cells = <0>;

                endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&uart14_ep>;
                };
            };
        };
    };
+1 −0
Original line number Diff line number Diff line
@@ -21044,6 +21044,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-e-connector.yaml
F:	Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml
F:	drivers/power/sequencing/pwrseq-pcie-m2.c