xref: /linux/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*926194a6SManivannan Sadhasivam# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*926194a6SManivannan Sadhasivam%YAML 1.2
3*926194a6SManivannan Sadhasivam---
4*926194a6SManivannan Sadhasivam$id: http://devicetree.org/schemas/connector/pcie-m2-m-connector.yaml#
5*926194a6SManivannan Sadhasivam$schema: http://devicetree.org/meta-schemas/core.yaml#
6*926194a6SManivannan Sadhasivam
7*926194a6SManivannan Sadhasivamtitle: PCIe M.2 Mechanical Key M Connector
8*926194a6SManivannan Sadhasivam
9*926194a6SManivannan Sadhasivammaintainers:
10*926194a6SManivannan Sadhasivam  - Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
11*926194a6SManivannan Sadhasivam
12*926194a6SManivannan Sadhasivamdescription:
13*926194a6SManivannan Sadhasivam  A PCIe M.2 M connector node represents a physical PCIe M.2 Mechanical Key M
14*926194a6SManivannan Sadhasivam  connector. The Mechanical Key M connectors are used to connect SSDs to the
15*926194a6SManivannan Sadhasivam  host system over PCIe/SATA interfaces. These connectors also offer optional
16*926194a6SManivannan Sadhasivam  interfaces like USB, SMBus.
17*926194a6SManivannan Sadhasivam
18*926194a6SManivannan Sadhasivamproperties:
19*926194a6SManivannan Sadhasivam  compatible:
20*926194a6SManivannan Sadhasivam    const: pcie-m2-m-connector
21*926194a6SManivannan Sadhasivam
22*926194a6SManivannan Sadhasivam  vpcie3v3-supply:
23*926194a6SManivannan Sadhasivam    description: A phandle to the regulator for 3.3v supply.
24*926194a6SManivannan Sadhasivam
25*926194a6SManivannan Sadhasivam  vpcie1v8-supply:
26*926194a6SManivannan Sadhasivam    description: A phandle to the regulator for VIO 1.8v supply.
27*926194a6SManivannan Sadhasivam
28*926194a6SManivannan Sadhasivam  ports:
29*926194a6SManivannan Sadhasivam    $ref: /schemas/graph.yaml#/properties/ports
30*926194a6SManivannan Sadhasivam    description: OF graph bindings modeling the interfaces exposed on the
31*926194a6SManivannan Sadhasivam      connector. Since a single connector can have multiple interfaces, every
32*926194a6SManivannan Sadhasivam      interface has an assigned OF graph port number as described below.
33*926194a6SManivannan Sadhasivam
34*926194a6SManivannan Sadhasivam    properties:
35*926194a6SManivannan Sadhasivam      port@0:
36*926194a6SManivannan Sadhasivam        $ref: /schemas/graph.yaml#/properties/port
37*926194a6SManivannan Sadhasivam        description: PCIe interface
38*926194a6SManivannan Sadhasivam
39*926194a6SManivannan Sadhasivam      port@1:
40*926194a6SManivannan Sadhasivam        $ref: /schemas/graph.yaml#/properties/port
41*926194a6SManivannan Sadhasivam        description: SATA interface
42*926194a6SManivannan Sadhasivam
43*926194a6SManivannan Sadhasivam      port@2:
44*926194a6SManivannan Sadhasivam        $ref: /schemas/graph.yaml#/properties/port
45*926194a6SManivannan Sadhasivam        description: USB 2.0 interface
46*926194a6SManivannan Sadhasivam
47*926194a6SManivannan Sadhasivam    anyOf:
48*926194a6SManivannan Sadhasivam      - required:
49*926194a6SManivannan Sadhasivam          - port@0
50*926194a6SManivannan Sadhasivam      - required:
51*926194a6SManivannan Sadhasivam          - port@1
52*926194a6SManivannan Sadhasivam
53*926194a6SManivannan Sadhasivam  i2c-parent:
54*926194a6SManivannan Sadhasivam    $ref: /schemas/types.yaml#/definitions/phandle
55*926194a6SManivannan Sadhasivam    description: I2C interface
56*926194a6SManivannan Sadhasivam
57*926194a6SManivannan Sadhasivam  clocks:
58*926194a6SManivannan Sadhasivam    description: 32.768 KHz Suspend Clock (SUSCLK) input from the host system to
59*926194a6SManivannan Sadhasivam      the M.2 card. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.1 for
60*926194a6SManivannan Sadhasivam      more details.
61*926194a6SManivannan Sadhasivam    maxItems: 1
62*926194a6SManivannan Sadhasivam
63*926194a6SManivannan Sadhasivam  pedet-gpios:
64*926194a6SManivannan Sadhasivam    description: GPIO input to PEDET signal. This signal is used by the host
65*926194a6SManivannan Sadhasivam      systems to determine the communication protocol that the M.2 card uses;
66*926194a6SManivannan Sadhasivam      SATA signaling (low) or PCIe signaling (high). Refer, PCI Express M.2
67*926194a6SManivannan Sadhasivam      Specification r4.0, sec 3.3.4.2 for more details.
68*926194a6SManivannan Sadhasivam    maxItems: 1
69*926194a6SManivannan Sadhasivam
70*926194a6SManivannan Sadhasivam  viocfg-gpios:
71*926194a6SManivannan Sadhasivam    description: GPIO input to IO voltage configuration (VIO_CFG) signal. This
72*926194a6SManivannan Sadhasivam      signal is used by the host systems to determine whether the card supports
73*926194a6SManivannan Sadhasivam      an independent IO voltage domain for the sideband signals or not. Refer,
74*926194a6SManivannan Sadhasivam      PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more details.
75*926194a6SManivannan Sadhasivam    maxItems: 1
76*926194a6SManivannan Sadhasivam
77*926194a6SManivannan Sadhasivam  pwrdis-gpios:
78*926194a6SManivannan Sadhasivam    description: GPIO output to Power Disable (PWRDIS) signal. This signal is
79*926194a6SManivannan Sadhasivam      used by the host system to disable power on the M.2 card. Refer, PCI
80*926194a6SManivannan Sadhasivam      Express M.2 Specification r4.0, sec 3.3.5.2 for more details.
81*926194a6SManivannan Sadhasivam    maxItems: 1
82*926194a6SManivannan Sadhasivam
83*926194a6SManivannan Sadhasivam  pln-gpios:
84*926194a6SManivannan Sadhasivam    description: GPIO output to Power Loss Notification (PLN#) signal. This
85*926194a6SManivannan Sadhasivam      signal is used by the host system to notify the M.2 card that the power
86*926194a6SManivannan Sadhasivam      loss event is about to occur. Refer, PCI Express M.2 Specification r4.0,
87*926194a6SManivannan Sadhasivam      sec 3.2.17.1 for more details.
88*926194a6SManivannan Sadhasivam    maxItems: 1
89*926194a6SManivannan Sadhasivam
90*926194a6SManivannan Sadhasivam  plas3-gpios:
91*926194a6SManivannan Sadhasivam    description: GPIO input to Power Loss Acknowledge (PLA_S3#) signal. This
92*926194a6SManivannan Sadhasivam      signal is used by the host system to receive the acknowledgment of the M.2
93*926194a6SManivannan Sadhasivam      card's preparation for power loss.
94*926194a6SManivannan Sadhasivam    maxItems: 1
95*926194a6SManivannan Sadhasivam
96*926194a6SManivannan Sadhasivamrequired:
97*926194a6SManivannan Sadhasivam  - compatible
98*926194a6SManivannan Sadhasivam  - vpcie3v3-supply
99*926194a6SManivannan Sadhasivam
100*926194a6SManivannan SadhasivamadditionalProperties: false
101*926194a6SManivannan Sadhasivam
102*926194a6SManivannan Sadhasivamexamples:
103*926194a6SManivannan Sadhasivam  # PCI M.2 Key M connector for SSDs with PCIe interface
104*926194a6SManivannan Sadhasivam  - |
105*926194a6SManivannan Sadhasivam    #include <dt-bindings/gpio/gpio.h>
106*926194a6SManivannan Sadhasivam
107*926194a6SManivannan Sadhasivam    connector {
108*926194a6SManivannan Sadhasivam        compatible = "pcie-m2-m-connector";
109*926194a6SManivannan Sadhasivam        vpcie3v3-supply = <&vreg_nvme>;
110*926194a6SManivannan Sadhasivam        i2c-parent = <&i2c0>;
111*926194a6SManivannan Sadhasivam        pedet-gpios = <&tlmm 95 GPIO_ACTIVE_HIGH>;
112*926194a6SManivannan Sadhasivam        viocfg-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
113*926194a6SManivannan Sadhasivam        pwrdis-gpios = <&tlmm 97 GPIO_ACTIVE_HIGH>;
114*926194a6SManivannan Sadhasivam        pln-gpios = <&tlmm 98 GPIO_ACTIVE_LOW>;
115*926194a6SManivannan Sadhasivam        plas3-gpios = <&tlmm 99 GPIO_ACTIVE_LOW>;
116*926194a6SManivannan Sadhasivam
117*926194a6SManivannan Sadhasivam        ports {
118*926194a6SManivannan Sadhasivam            #address-cells = <1>;
119*926194a6SManivannan Sadhasivam            #size-cells = <0>;
120*926194a6SManivannan Sadhasivam
121*926194a6SManivannan Sadhasivam            port@0 {
122*926194a6SManivannan Sadhasivam                #address-cells = <1>;
123*926194a6SManivannan Sadhasivam                #size-cells = <0>;
124*926194a6SManivannan Sadhasivam
125*926194a6SManivannan Sadhasivam                reg = <0>;
126*926194a6SManivannan Sadhasivam
127*926194a6SManivannan Sadhasivam                endpoint@0 {
128*926194a6SManivannan Sadhasivam                    reg = <0>;
129*926194a6SManivannan Sadhasivam                    remote-endpoint = <&pcie6_port0_ep>;
130*926194a6SManivannan Sadhasivam                };
131*926194a6SManivannan Sadhasivam            };
132*926194a6SManivannan Sadhasivam
133*926194a6SManivannan Sadhasivam            port@2 {
134*926194a6SManivannan Sadhasivam                #address-cells = <1>;
135*926194a6SManivannan Sadhasivam                #size-cells = <0>;
136*926194a6SManivannan Sadhasivam
137*926194a6SManivannan Sadhasivam                reg = <2>;
138*926194a6SManivannan Sadhasivam
139*926194a6SManivannan Sadhasivam                endpoint@0 {
140*926194a6SManivannan Sadhasivam                    reg = <0>;
141*926194a6SManivannan Sadhasivam                    remote-endpoint = <&usb_hs_ep>;
142*926194a6SManivannan Sadhasivam                };
143*926194a6SManivannan Sadhasivam            };
144*926194a6SManivannan Sadhasivam        };
145*926194a6SManivannan Sadhasivam    };
146