From nobody Fri Dec 19 12:48:14 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 601A92FF668 for ; Wed, 5 Nov 2025 09:16:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334203; cv=none; b=c6/M5cyraDuDfENa3uw5VAugexyoHWqrmaUVDHpWM+XeEX1bbZwLgmyEwJTovXda916SqW+4OBD38kf66v2/L2LQq+7zh+hFShKaJC9Sd6D4aRs9/45PgVDZ11KSVaSjj8yQsvis9L1aLDIJQe39PY8ZJ0TLWJ5o9mk3NKx6onI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334203; c=relaxed/simple; bh=A9ti4s4wSaiXfw3JIiAVtqvMXhv9C1M/PRlWv+V8fok=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kYJvsxFFGQZFbIkQG9k9H0OGfE5KDFTPcyYy12WpZfKX3b+JA9AE/yQ805MfDZ+JmiQnMK7Fig/zXU1xLhLJVGI76s2Llw6WxXD2LcoF/LUebFAm998cf+PJzNfonV4dM1e28xUs0jgy3CuS+0qtqnBY7b35SPKBZrGTZ+zwyHg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=FJMxn/rh; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=R1AI2t1L; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="FJMxn/rh"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="R1AI2t1L" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A57nLBT2927463 for ; Wed, 5 Nov 2025 09:16:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= JKGXmxysrCSUCXJZc61bKgPq0wJnPYCRj4YwJdhI/ow=; b=FJMxn/rhUvOTOzxA YxMTNtzGjgYJc8VOrAs7UxbYPnY1lgpWfJGzywqMbCo8Q2rgc7DmT6tpE6YP034M NTM03GNq2b//8u5sEFqFDuMNL2nvma/scUdsgvSYekjC6lDMz/rVCptNhvle6X/b A1b6hqFpW4PiopDGHQOylaVEpFAOQoDGK4Vy/ZBgdpnLSwuCHdjcoQCndovd1gT5 0VMHhrHPnOn1g9OcEOlygF7/jFxgDiGJW+W76Gtl2vY2QRXYzEPC838TErLVGi51 W71kXzByTc2nBUXnPoL9hrw0k4bZwlWnyoT/H9btOCRALdufZQGYewUO0Ud3pvTn z15KQg== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a7me5trha-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 05 Nov 2025 09:16:40 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-34176460924so1840977a91.3 for ; Wed, 05 Nov 2025 01:16:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762334200; x=1762939000; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=JKGXmxysrCSUCXJZc61bKgPq0wJnPYCRj4YwJdhI/ow=; b=R1AI2t1LyyFGuLeWHnHotGo4ztjrWMbuXRt8/UXdLSBeURi04g7xLH6I6pRxAzQY+c 7mX0pnX7ce0LMZUqNt8/TmzgUlQPU5Qm/5K6ICfwBWxuc1AQrXKZvQut1btnoXXQnPxv NLP2l5ZbMN/MheKNAbTMGfGGJcTvAtGGuzsPF/uxUDa7O0ISeckWRTgGecVhARfyQpsS iR35iHzdujtNokmN53mN4YIILRMDWewmt4sJ/Q2oC2dBDg0NkARNNpZ8g6NQIQvZLGQ9 Fr8edabwuCJ0NU4FLTuNliCic9E5OcjL5PmBNIMeBS5exSQy2ZsvmvMZ/mlf6Tat4uQI gulw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762334200; x=1762939000; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JKGXmxysrCSUCXJZc61bKgPq0wJnPYCRj4YwJdhI/ow=; b=V2ema4dgO0CUIzdYMJ25JYveFdz1kVuuWN2PKORc3x3tvTDFkwnp96Bo+TJXX11441 XhSATwC/yrt7Xomztk0dvloXESMLM8/8UN/uxqgi67c9YmDCrCj+kAQ/Qf6y7Fm6VVU7 o/9AxdKveA6AncxT4rIYzHt0uMKw5sVAZ4e8NXN4cukIKxohwD/bSpDP2F/G2D13P/2S NBr+luM4ID6Hp/yndIqb3YgP/Zlmcc/4ppsatxpGedc6nIXO8QG2Tfqc9+QdEWc8+/5A yXs60+wUi6RhoMO/LY5pXLT56GgZUi9JM1hyQ1NckTyLOKl6j1u8+jo6S/BPW2Q/T5Nj ajPQ== X-Gm-Message-State: AOJu0YxyHm8lzTWwFb9Ga2FqFhCmbtfvJYzXzdSNhxk4CnfIfmvF+FkL cG83sKHPr5n4O5KeN0NpAGoRABkw9x/ktldRG6C3b+tkRaBPdqnqZWxfj21zMTmUvmS+SghdBjm VKNZWFJOOw62Ev8rGCaVFfDOlg0dRdPfv6JHR5KbPGK3/QWMyH56/fxRpUnsX86JEoO0= X-Gm-Gg: ASbGncugra147zPn3aMh+9UpHfn3gU3eMDWrnwCZCEhLGY6XXjwnORTdsnt2cqzzaHq ky3kz7hZYz6ziu8dN7IKpzAxiYHuJzKZNwtogKHXjwpdkx0+5NCI4Wm172uURKoh0lA1osSaqBs YuR5z+bh0Ih3Kvs4sefqGxDVjN6hdlqkqjzGsPPeVCrKQKcyp6IjVFoz6F8QGZuirDO2oySbt+k pYCU0mCECypJS8D2TYk4/2KjQvKBvp2gZx0ksxJ3axGgkidhQO//hCPm4LiUZ9GNfYcX0HYorNq uQSU4k2SD7nTlP8/ZITCmlvWNSNL6rjg1V7ZtZ59FVeT+2dD2jKW0gLPhKlx205ZjE/4m3YowDT PrjNLschOMdvOE29fGD5J6ACPI2Wt X-Received: by 2002:a17:90b:1d4d:b0:32e:52aa:3973 with SMTP id 98e67ed59e1d1-341a6c1e1edmr3019405a91.8.1762334199632; Wed, 05 Nov 2025 01:16:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IHV7QgAd558YVAFSjQJudcKW/aI1xyFRUAkLB6cz3hMh0JP6kISy8THKMgqQOqwmy1smdJc9g== X-Received: by 2002:a17:90b:1d4d:b0:32e:52aa:3973 with SMTP id 98e67ed59e1d1-341a6c1e1edmr3019350a91.8.1762334198983; Wed, 05 Nov 2025 01:16:38 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.120]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3417a385563sm2274249a91.0.2025.11.05.01.16.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 01:16:38 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 05 Nov 2025 14:45:49 +0530 Subject: [PATCH 1/4] dt-bindings: connector: Add PCIe M.2 Mechanical Key M connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-pci-m2-v1-1-84b5f1f1e5e8@oss.qualcomm.com> References: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> In-Reply-To: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , Manivannan Sadhasivam X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5517; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=A9ti4s4wSaiXfw3JIiAVtqvMXhv9C1M/PRlWv+V8fok=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpCxXo/3egFPr03OzBAGmFojCRWd5IW7Mq20dUz PuXa3KZz5OJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaQsV6AAKCRBVnxHm/pHO 9Sv8B/oCE9oXfkhSibtdfOWmq81wQIZOBkLw/0VpjoAuVDYZmti2bIS3+PETsv3YuewcE2C/fbY sftVnl8XSwztbHh/AdmhBBUzdtv7hhC8DHdNlO3ykVxItWf+0gjersXN23osxjJnnLCn6bL26Vc HXezwR+7EgrT69Wji0MgpHK9AIg6HBdyHH7jqiqgX0Xtmav3zzNMd3JrB6YBuvn6QPNEOlvYbOi jnPe6urGGQPB0HTAKlVBfK3e+prpl6eylUui8vijRm5gWSqnIHqavmWljdm4iqdqAEi5XgGB1EK PCIEx46MXIxSuM2T0CyuDa3E+kSKT5f43TgnCOAWvZhwUh6m X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-GUID: _RRmesRgLDvcRhzZe6mshkWptM1x8Gau X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA1MDA2OCBTYWx0ZWRfX9YvtVHRklTEj 4QtV6cNI1WXWJZX2qwjH8lDd4C9L+Wf7CO6yGQpvqnmff0l+ZyRmliVutIwyk+Uk/Ndz/IbRHv/ H4C+KyFFuqEJXnZ7t6GLlanvy2XK3ub1qSFeIPRyo45rU3GY0udrcp46h0LTi4WPdlXFVqSMcec lzuH+2ohhDfBWIGPgr5yN9wzAISSNkFO6TB2vNFVUw4QaKjZYvH4zFAR+yuEpuCKrhpFYJ0A5SQ BJVhgNg0cUG+kUfE3g4u+rNs+pdfPpQv1OiMmBIbkBrhYL1Vs1tame8VcZ6gvg72KOYJm2zYQnK BZWJ4dFV9m/Ij0tg8wtj7jZmJoqCPogUa/sHrzxJIwIH/u7cmPzETWR3aLiRxYHq1R0bocopmgG izNb5lk1uoq9hD0dE6/bsHBIBXwk3g== X-Proofpoint-ORIG-GUID: _RRmesRgLDvcRhzZe6mshkWptM1x8Gau X-Authority-Analysis: v=2.4 cv=IpsTsb/g c=1 sm=1 tr=0 ts=690b15f8 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=adoi+G5QptZiRYWGMQz2cA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=uqBuD39NasnnOmdszP8A:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_03,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 clxscore=1015 malwarescore=0 adultscore=0 suspectscore=0 impostorscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511050068 Add the devicetree binding for PCIe M.2 Mechanical Key M connector. 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 SMB for debugging and supplementary features. At any point of time, the connector can only support either PCIe or SATA as the primary host interface. 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. Signed-off-by: Manivannan Sadhasivam --- .../bindings/connector/pcie-m2-m-connector.yaml | 121 +++++++++++++++++= ++++ 1 file changed, 121 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-m-connecto= r.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.ya= ml new file mode 100644 index 0000000000000000000000000000000000000000..2db23e60fdaefabde6f208e4ae0= c9dded3a513f6 --- /dev/null +++ b/Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml @@ -0,0 +1,121 @@ +# 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 + +description: + A PCIe M.2 M connector node represents a physical PCIe M.2 Mechanical Ke= y M + connector. The Mechanical Key M connectors are used to connect SSDs to t= he + host system over PCIe/SATA interfaces. These connectors also offer optio= nal + interfaces like USB, SMB. + +properties: + compatible: + const: pcie-m2-m-connector + + vpcie3v3-supply: + description: A phandle to the regulator for 3.3v supply. + + vio1v8-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, ev= ery + interface has an assigned OF graph port number as described below. + + properties: + port@0: + $ref: /schemas/graph.yaml#/properties/port + description: PCIe/SATA interface + + port@1: + $ref: /schemas/graph.yaml#/properties/port + description: USB interface + + port@2: + $ref: /schemas/graph.yaml#/properties/port + description: SMB interface + + required: + - port@0 + + clocks: + description: 32.768 KHz Suspend Clock (SUSCLK) input from the host sys= tem 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 controlled connection to PEDET signal. This signal i= s 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 + + led1-gpios: + description: GPIO controlled connection to LED_1# signal. This signal = is + used by the M.2 card to indicate the card status via the system moun= ted + LED. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.2 for more + details. + maxItems: 1 + + viocfg-gpios: + description: GPIO controlled connection 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 controlled connection to Power Disable (PWRDIS) sign= al. + This signal is used by the host system to disable power on the M.2 c= ard. + Refer, PCI Express M.2 Specification r4.0, sec 3.3.5.2 for more deta= ils. + maxItems: 1 + + pln-gpios: + description: GPIO controlled connection to Power Loss Notification (PL= N#) + 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 controlled connection to Power Loss Acknowledge (PLA= _S3#) + signal. This signal is used by the M.2 card to notify the host syste= m, the + status of the M.2 card's preparation for power loss. + maxItems: 1 + +required: + - compatible + - vpcie3v3-supply + +unevaluatedProperties: false + +examples: + # PCI M.2 Key M connector for SSDs with PCIe interface + - | + connector { + compatible =3D "pcie-m2-m-connector"; + vpcie3v3-supply =3D <&vreg_nvme>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + m2_pcie_ep: endpoint { + remote-endpoint =3D <&pcie6_port0_ep>; + }; + }; + }; + }; --=20 2.48.1 From nobody Fri Dec 19 12:48:14 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFABD312807 for ; Wed, 5 Nov 2025 09:16:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334209; cv=none; b=OypE2Nzbj9ymiWPLEQbiwamQs5d1wtMxmeT3Nz/ABCQQOPtl3LqvMCA0er1oYffh29f/B10PCBK4LXd8iBqR6/LyVYw3s+WcwwI0oguiqzFb6pzgYY4lodQlcX5gexbCzGBVDHvDCyH2JZnSYGcWznn1g/7DPBRVVCtcQkJsbLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334209; c=relaxed/simple; bh=6JV6iijCVKWK12xOisbku7kPcAUn8AtYsjIJ5OCWPFI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KsZRqSsQsJeSbnuRLsZAziV70qdN/6LUfvBxGfL52uDYBJZXwGjpn65AfLYa7N+/zPqT81QyBBtKP2W9ldKJkHFWhPojvARATn/NjjPSCrbn5KDLQUEzKlmhhS0vhLbxusHAjoieUN5St/Kaqz95/EYPmLfv57zzyUjvRgoJ234= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ccsDX/ah; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XA80tFHl; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ccsDX/ah"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XA80tFHl" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A583IS73049562 for ; Wed, 5 Nov 2025 09:16:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Fr/wxR5o/dgbV3wh8KKr+sf9R0I5j0Vgjg2foUPt36M=; b=ccsDX/ahHOAU9SIv k3oUU+hyAQAwcC8vJfmonKiSpfSdySdaktnVMMAOnhqz8JtoRLtCwUL/HmatQITz aBuEQkq86E9l7fdcXBB8z1HKLrc8JR6z98Y09b9BhdDckuAWbATQt6GRHS413PNM IDvOU4limZzAZLQW0vJo3HZPoe9qx8gIyNi6fJhPIN5fKnehNRXY3R5mHgljikgk ilRbSQCNTxJgROm+Sa5dF+uXFRxNBuvS22vCocC7GhElp14chhS3MFx51rNasCQR sHNFCO9L0Am/8S4G9M33MaUHpevKP9lu9MIhNcedN/g6Lw+NFEvJW6j+03Y4Vc7R lkPq0g== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a7ex7urx1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 05 Nov 2025 09:16:46 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3416dc5754fso2918267a91.1 for ; Wed, 05 Nov 2025 01:16:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762334206; x=1762939006; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Fr/wxR5o/dgbV3wh8KKr+sf9R0I5j0Vgjg2foUPt36M=; b=XA80tFHlUKQevg11jRpdq5xPLgHxMAocgf6eKG5XYHFJaB8mXZqahm1sgQJwAlwd9A pmSCbdevpf93HuEcWMuAExYHgN2n4omUZKL8EmGHeSERYE0xOTfUvVxo/KHPkai5s7Fe HfM+cYQnVdG1oU0Sj7m6PEz8FeMBq90a2jevJ67trP9vZLXBKr4GhbK1hXQmVwxTWnkg U7jsa45xpPa2FEIvqDG2RIkiWpq7JSpFQWrAad3JNfOI11SMr3n9Pyn3v5ZlmUYfsdNX qv6kO0cHDcwDm4lXxmg1VuvzZUq6WBo1LgBCM+CqxjFf+htaoDf2rDSQ68CnT2dypC8H gZmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762334206; x=1762939006; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fr/wxR5o/dgbV3wh8KKr+sf9R0I5j0Vgjg2foUPt36M=; b=Kn35Kn5x79TTPns2agu02cKDqZvVe70zR93roAGa4RHEx04V89iMI6Qx8vKNiczzQK +R1uy8FAfTnC0rR5BHpwy4GWDCmdIOnLclMatANzpXuPVfBlANgAbOkSS028/JvbJbPK sHrrsH8sEKHpBn1DQrGSfhNGNpsSYgD01IMAcp1vzeFVyUie+il5Sw87TXtNpmKMsqJ0 9we8KoXFb0L/r3eQLxRW1o114WNkpGyB9XIIjlkyx0R9avCAnn6w4VBZ49gnMJqdJSxs cJNBsON2Q8ju67fpohCVj+gZvABIen1JKHeP96Ajp8Hb/qu2YfCJbJaitKw0V9Vper1C t35w== X-Gm-Message-State: AOJu0YwXIu7STZZuuT6vIhpCHwYniVLvR1McEEZbeemoZFVaFbYb55W/ g2rD1eZkVm9LjMvG2rwdy+jGtf5o+V8U9wXzBOlFLSMdWhLNn3GbmhE4msEjnK11EZpq8lqe6Zo Zoqez/UFWJJfmsNZOqse/IGHZL7LbZ+2JDS8yGwt2l0zrvxXDNx4YvsF3NxRpaCokBnqHYlQEId 4= X-Gm-Gg: ASbGncuFdJ1TxxBn81V1CFfADpoovjOiIdVQg1ca2kLcLQqappmwB3Y9dvJPRnH+mbc L/C3gympEYDNUQ+clI9bcBrKz1Z4nbLLr+Y6QQC9p6L48shPSdCU/cS/WQQhEMh64YRYWDVsQHa i8IFthZd/Q5G9bRWmdQMELQYvWt5Ql+yOWqxVy3ku1aKm2zxQJZ+i5vzUzgjYJH3LDB4rmT37/w /kHkpIOvFnBRES8WscqdrO7HDHfx3Xk2qKgB8InaPsVjv8zgemfHbhZK0XAA9kAjQZm07Y18NS2 +uTVEXob5sIxUN9XCH/1VDNWotpieJm5Wqp5dGP1ZEAYS8w4mlqUYhQWo0x/avOleKYJwR8B9EQ OfQ3Tng3lD685Am2dLK++uVnSGFoy X-Received: by 2002:a17:90b:48ca:b0:340:f05a:3ecb with SMTP id 98e67ed59e1d1-341a6ded3a8mr3020705a91.28.1762334205649; Wed, 05 Nov 2025 01:16:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IFKwsvUGdrfKTQhaqiwzEypp+iS5QzZH09d6n929jY+N764lQ1Gt7nCYOFdvWBtf2B+FDuBSw== X-Received: by 2002:a17:90b:48ca:b0:340:f05a:3ecb with SMTP id 98e67ed59e1d1-341a6ded3a8mr3020664a91.28.1762334205088; Wed, 05 Nov 2025 01:16:45 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.120]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3417a385563sm2274249a91.0.2025.11.05.01.16.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 01:16:44 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 05 Nov 2025 14:45:50 +0530 Subject: [PATCH 2/4] PCI/pwrctrl: Add support for handling PCIe M.2 connectors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-pci-m2-v1-2-84b5f1f1e5e8@oss.qualcomm.com> References: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> In-Reply-To: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , Manivannan Sadhasivam X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3917; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=6JV6iijCVKWK12xOisbku7kPcAUn8AtYsjIJ5OCWPFI=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpCxXoCyTIkkKmbRofz4BXOgj+hgIcJiMyJzFHE 6fXLle3+wmJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaQsV6AAKCRBVnxHm/pHO 9SofB/97Zy40OYNFyPILHV9/VogbBFLuszEaspIiN624N2tKtZSWiU/fsRJB7et/oc+uBk8YhVY JnIO5xFZSpLLIn1wV5J9V5qxSp9rXKUaPIaVnhPYyrM6xOBowoL9vCNQEAwQkTi4DUyJFVawRfG bpoLxDWiV4f1I+EglDR0L8yr3zsIBzBv3r/H7+0MgvegB8IOi34Yi7Z9xzyXVB5ZJuDD7G9U1rD r5BOseJOjqhHqzd9uSNttgb16/CF2W1ailQJxwUGmNnBT17mU1QbtOHGMJc3FS3CqrXNSUT8po9 l6SAIlGuRIbWRhvk+dNukITDyeAvd1drTpvjgXMM8j/ZPsZj X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA1MDA2OCBTYWx0ZWRfX6HwXGfTt1NSp isJMVOEumw2YPmCEy9WwcRFsKBk0ZYdOYdt53HdkIDmUwG3+KHQp99IN+SO9+2w0pSps3s+x2ti QBNePkp18SN07qTIJyyiq70KVQv5vs773d4LgA3n85E3D2SWMuD6BGUCIKEl3NdbX5sLsqhtXZr D8souci7tFqt3TiAxg5Id9cBsMr6TBbYo+RkzKD61qRpU9hDkr4VRURE5Kx6VLyVO8s6k3agk2x XSQH0EWzSPD68xbsSYC34C2iN4/i+ECL8tn+RybU7dinWfGyusgRHCBPxuad1wuk+KX5lijirMb cgf4bbnHDZoQhM4NX2p/94WPSPziAdFovMhAtidj3kJmcRJ805BKGVCwqheF/MV7ULGgLQEHh2q vKfM+8bCg8GQZX0vbQMkn5sjTV0vLw== X-Proofpoint-ORIG-GUID: GT4nmqzYmTfrc7T9iTVbglwZAl_1Bh0v X-Proofpoint-GUID: GT4nmqzYmTfrc7T9iTVbglwZAl_1Bh0v X-Authority-Analysis: v=2.4 cv=auy/yCZV c=1 sm=1 tr=0 ts=690b15fe cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=adoi+G5QptZiRYWGMQz2cA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=T-2iuOupZRtFYbKAKI8A:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_03,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511050068 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. Signed-off-by: Manivannan Sadhasivam --- 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 6956c18548114ce12247b560f1ef159eb7e90b10..9a195cb7e117465625c68301534= af22000dfca8d 100644 --- a/drivers/pci/pwrctrl/Kconfig +++ b/drivers/pci/pwrctrl/Kconfig @@ -13,6 +13,7 @@ config PCI_PWRCTRL_PWRSEQ =20 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 3320494b62d890ffbae6f125e2704167ebccf7b9..d46c2365208ac87c4e83ba8d69a= c1914d9bf9088 100644 --- a/drivers/pci/pwrctrl/slot.c +++ b/drivers/pci/pwrctrl/slot.c @@ -8,8 +8,10 @@ #include #include #include +#include #include #include +#include #include #include =20 @@ -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; }; =20 static void devm_pci_pwrctrl_slot_power_off(void *data) { struct pci_pwrctrl_slot_data *slot =3D data; =20 + 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; =20 + if (of_graph_is_present(dev_of_node(dev))) { + slot->pwrseq =3D 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 =3D pwrseq_power_on(slot->pwrseq); + if (ret) + return dev_err_probe(dev, ret, + "Failed to power-on the device\n"); + + goto skip_resources; + } + ret =3D 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_devic= e *pdev) return ret; } =20 - ret =3D devm_add_action_or_reset(dev, devm_pci_pwrctrl_slot_power_off, - slot); - if (ret) - return ret; - clk =3D 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"); } =20 +skip_resources: + ret =3D devm_add_action_or_reset(dev, devm_pci_pwrctrl_slot_power_off, + slot); + if (ret) + return ret; + pci_pwrctrl_init(&slot->ctx, dev); =20 ret =3D devm_pci_pwrctrl_device_set_ready(dev, &slot->ctx); --=20 2.48.1 From nobody Fri Dec 19 12:48:14 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38D02312821 for ; Wed, 5 Nov 2025 09:16:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334217; cv=none; b=o9Tsk80eNxmzC/zhmS5Gwr2pmT6DAuYNVMvmytHg0WKi8eCRH1MGw2vl1n/3eSFB+mrHKUNAf5JB2DLwaa1N7yrYR1gAZs8o5AQeZg6OqQ159qoFFLBVjOiLrw3/e+3aPxHfk/cnqwbbE8n3sZKsAcsM9FOyj/MZbha0V5id8eU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334217; c=relaxed/simple; bh=vNGFtql0TkKs5KVaiPU3EbeFeb54nkJVtXGFSv+d82k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Op36enKriA+KL/a79EHBxiePanN9/jNaywFQxCiTA3sQ1z8ZbUd+SbdXbJsLaOUf4PYflV59UrGqhDKnBGyySy9/WGiboHiZ3M5Pq07dZAAzT6Nul45mZb+kRyhEnfRqp/a76pX1Um4zj0bsYhpfS4KWQMEv1myU5iAEVXQ3/Ko= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=GwHPk0wt; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WVO3QXq0; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="GwHPk0wt"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WVO3QXq0" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A57mstU3091498 for ; Wed, 5 Nov 2025 09:16:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= PsvMdivlLb1u8imgIMqsYM8vQGjaomHhkwMUSd15O+Y=; b=GwHPk0wtFLVg35Nl 3QajAS0KVrJXOPgdKKRi1a692MlD331M4JlACtCZUdrh2cuhyLPF4c6M3nECZcqI BOmo8ry5/wNlzPTehGxyMFpBjlxEGjwTfQ491YcuUxZsasCQwg2r9TPkxyA50xkf lzMXFruxivumaDrOo27Vv/iq/QMo+aTGBTY+hT4g57Qg9fPcKLw99vnQM5DIG9D+ hkpXUXY/8bwTxTvmyCo8dHt6ycnxNFqio6WKvjhJFNO/XPfoP6x7d2I+ByN73PVS q/Co8jAtZS8yLt43x3qiGNC/AOAcPq2aQRMlZzC+d+QjA3J1xcPRQoaaLasd/fcY QgWAMg== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a7s5e9tf8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 05 Nov 2025 09:16:53 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-340299cc2ecso1218652a91.1 for ; Wed, 05 Nov 2025 01:16:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762334212; x=1762939012; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PsvMdivlLb1u8imgIMqsYM8vQGjaomHhkwMUSd15O+Y=; b=WVO3QXq0aHxZ9dzBM3IXtxPbC+XszyIOwf+Zs4pjZ5ya2A3qThNAa0H24atHrdqXSx ejJAyMTxTF+SL8HV1xKGIrL0ehGXigSUxzKKUWHKp0bx4mBuhScDFizu2HeBWknqJSJ4 9LKvsv6qynyAaJKtPB+Vy7VUBfslk+mnVMI8wUjfSfK+3VXhUsKmNk+dYSoCyq0UfNNw 5spPE83NQHsnzFRUtqp1GtNWCuZIvxciY60QQWxUlzdCoKbxNFDeWVLIZYaxL+9dcRZ8 5QQUpBdR5Uye4f7T1Vc2ROKR+1M/a6xZ3jdv10j4L3BheK2PCPyYMmxuEhGZEbGC2tRu gIgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762334212; x=1762939012; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PsvMdivlLb1u8imgIMqsYM8vQGjaomHhkwMUSd15O+Y=; b=K5KJRLKEA19KTGL5h1mCgHf6Qd265Jb5kAlmTrLixNDq90mXvM92vzLjzNRhsUy9mq ZqFTwv4R0gB+epfba8pfI40iDNuyjP4FcNMA8SSpMZIaRjUHCPNEihJ9QO5APST8fWRt TgP5YFSOksVacMoagB8MIabyoZ9t30hil/v67zNy3bDp/SpBhbBB3G4cV2IiPtx2v/qA 230viLuP3cK69pseWG8p8uCjaJ6v/Vbh8G8ipAO9IlviIF7SSUyDVQe3fE9gbc018Wc7 WTamDhdYgKeWIAKd8I/MB58U9bboA5kVfL1jrcnXY0vE16lvliDtSyN6us1eSa10SxvY zM7w== X-Gm-Message-State: AOJu0YzaZkAr1QbQ0YeHrN4DLTZAUoT/bprwEgKCSh++l/pngXqbsKOI UZfXP2CdtQuUqpXxDi4mfosxgmWyNz0nygPU3viCPPQFhtxLum4We7HgbT88vFzh7Wyaj9c2rjJ z2Wrm0PEnKl6/wUeYHufHI3ZRxzUZGuN3UHu5GoiWdUFd1T4l/lLK+Hb9rzh6X1jvEzg= X-Gm-Gg: ASbGncutzYmpYpudJhOz+k3OsKQKrcMbjdm2VhZOw6IoG6Ac4bWeN+U/DpZ/JvT0kFT l2Oez1SeB7F1Nui8uvtRcUn6Yerso+gI+yQW1dg/as9nC/g00k/vpxV7/SzSJO3zUT5zDM1df9p vt5+cqo9BEFnF5B5DR2SxJSe1prdy+lfmQ0xf38NN1s3yYExXsAgitjvjSUGcv5mvcBDzcZUXDR /OJhjQmeuI7yoFJEy1uHtLSvsYHcLpf780DPBnVZ79Myt7ej5FVAci2iHm7LDaQ06IWCJLnzyYe RDKo8vHJhZrhFqayBwQnOnFB/H1O5vVyrElowJWOzcKdYHKVZh07zqW9rWOLRPI5K/xjPIztSJ9 dCjL+accdpYRcUM/XhrdOPvgKveRy X-Received: by 2002:a17:90b:180b:b0:340:bfcd:6af9 with SMTP id 98e67ed59e1d1-341a2d96eedmr3386115a91.3.1762334212075; Wed, 05 Nov 2025 01:16:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IGdkfEQO5EwZQcqaHfM2ZxF2RJTEyKeZ92D/5evi1SyRPQKg2y7+uM8gEnkID6U/DFqcBS/pQ== X-Received: by 2002:a17:90b:180b:b0:340:bfcd:6af9 with SMTP id 98e67ed59e1d1-341a2d96eedmr3386085a91.3.1762334211516; Wed, 05 Nov 2025 01:16:51 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.120]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3417a385563sm2274249a91.0.2025.11.05.01.16.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 01:16:51 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 05 Nov 2025 14:45:51 +0530 Subject: [PATCH 3/4] PCI/pwrctrl: Create pwrctrl device if the graph port is found Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-pci-m2-v1-3-84b5f1f1e5e8@oss.qualcomm.com> References: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> In-Reply-To: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , Manivannan Sadhasivam X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1389; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=vNGFtql0TkKs5KVaiPU3EbeFeb54nkJVtXGFSv+d82k=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpCxXokpXAS6e+Gz8ICBzFYRedOVBNudMT1HWe+ Gq3lKrjwE6JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaQsV6AAKCRBVnxHm/pHO 9Wb7B/sEZ6BBfOxN6O2UdeREfQI7lxYM4PbKK0OOw/21XuR2RWAFfmH4XUSKvCnIk60/8/6AKdj CokyAFjPPeYNKaFciz0y5VuBnMnj+t24gJ9sqFw7q5URzggEKXa/aSaAfYGc2KOeFieiVI3F2Iq kXeh9sRFEhhH+Bx6E6gIU22ZKfRYfK3HO9rqHuHSAvTyMlVbpkZZrGsSgu4z7vRzVToPjGBe/1r 12sArn+8Dc2vQe/G7jqo92ZCQ9WuqhaKWPOYU0gBYbCfZrKsLnj9EKnHsP/SKXiNXoRc9kk0ZKF ytYbEq5i1Jl9/F4+tNsdSoh+4DF0+JvLf4t/D6Vuv0R//6JR X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-GUID: MKtR9oIQlFRvq8xf4r8LVYFr6HmWLhUM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA1MDA2OSBTYWx0ZWRfX1xADct9Vl1Ia fe/0RW5K47vB/0TzxgiJwryxK78H+GpaMSxOLvlGQix1DO4yQVvXYphaLvIoiWtwLyro/5PyjOS rlRAazqU87CQoo8/oKllm7uRiotj72I27IPYV16IgTXyOYBWG70T0Amg/GFsZ9wpAM5QefifBP0 LK4CckNm619fRKIUdtFbrXH85uywCS2Elzt9K9AerW8VyFCNwxXrwc8ZNjJDB9uEMi0FbOTNxtz VnaA1PdHoHhNypKU5jwsp2pVJQLd2kQR7hN8bsOh4xPWFOIayXrCUT1fN2y2qnefCQyJZ9CDCkt 0KcwiHhX+sx3BeHi7+eGGkO9zzrimqvCxA2AbJgli3tQnVfCMQtt3AdaS5xqMNNTCsgZbChXS/m eAJrmtDzic5OB+mUDnw9CQzIf8Gbzg== X-Authority-Analysis: v=2.4 cv=OayVzxTY c=1 sm=1 tr=0 ts=690b1605 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=adoi+G5QptZiRYWGMQz2cA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=0pvPJS888BSDkZzuOKoA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: MKtR9oIQlFRvq8xf4r8LVYFr6HmWLhUM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_03,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 phishscore=0 adultscore=0 impostorscore=0 bulkscore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511050069 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. Signed-off-by: Manivannan Sadhasivam --- 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 c83e75a0ec1263298aeac7f84bcf5513b003496c..9c8669e2fe72d7edbc2898d60ff= dda5fc769d6f5 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -2555,7 +2556,7 @@ static struct platform_device *pci_pwrctrl_create_dev= ice(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; } --=20 2.48.1 From nobody Fri Dec 19 12:48:14 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8BEA8313294 for ; Wed, 5 Nov 2025 09:17:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334224; cv=none; b=m0iybQL2if+S+DB/1/wpUIvfQX08zXhrGWJRQr4ipt+SvQBdZbhc8w+PoLAt6dv4zNXm85cC2+bNued0tTXWm0JmcUG6vQJAlhYoCc2ksy6L3USw5zZ7ea97wwLjA6mTYSU/e4JW4wkJqHL2lSAXCkB2Qsk58t1DNqjJtmz2lkc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334224; c=relaxed/simple; bh=lxfnNvznOLNH3wJtE9qJQ2eIkCun9KOQbBjwFBEZthw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oQrLJwbuhQiADCWDPArK/Z5fJB5+TggnNRFixXIVjpFXay2JWD+Ca39PdnL0gtJjubZMItHIKcaOEiuq1W+LuDg2INAoB/U2NQt9oyNal+9kxEJ27QZkINjUxKiV4PJASgZsKMuwE2Vw9h9YAXwT81p5asKYnj6DlDy976UXB2U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=l8OO1Pr+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NZ0dijXT; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="l8OO1Pr+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NZ0dijXT" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A58NF0V3049552 for ; Wed, 5 Nov 2025 09:17:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 9BY18Ay9QO6HeFXDmCB5iQgxLMLWXgoQWG17t0/ypi4=; b=l8OO1Pr+w2QUqw2T rzeJ7UEnNZxfQ1/6WJkbwL+xd5zx5LaHbslt1i4D8oFy0kqdobqL0AWHv4XN2Ozb kXWmjaaenshzehOpXRkrICJPDPZpU3IYr4lP/NKn0Qw3WmQJASvaL8aM6K0tD0Aj oZ5x4yy4DOJ4bHjh5r2JACC0NGc851tje/CZGZgFRLU/myKw8YZ3w/h3RrqEqP5U GjEMYjwUw7DcZNfT/6ivxPhcY1bs1bL73PN4603rj6eUIIfzPKCWPpBWJlaTIL7a RuYhYtn3SLvdRip1EyWtz4FF8x3pZcozTqQkeJFl6W1ZqGswZIX7nieSv+B9aq6M YJ5KAA== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a7ex7urxr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 05 Nov 2025 09:16:59 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-32eb18b5659so5523979a91.2 for ; Wed, 05 Nov 2025 01:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762334219; x=1762939019; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9BY18Ay9QO6HeFXDmCB5iQgxLMLWXgoQWG17t0/ypi4=; b=NZ0dijXTqxbPHMe6IADi/leNOuYQERS5sgvwh947kYvt3F8qMJR2kWy/C/a91eeWQ9 Zqm3ssmi2Agg2VNQVWkJMIsIilhhrQfAc8FTxjtlD2JXZ9NEd3nKdp5JBWE8hUd5LKT1 IgNA1vvHhGiPdGnVdbCr0HYFJ7jwuebffBpQyZDI81rvDf9rT0n9yRzX4pT1GG6uNmmo Y/jTO7xY6pdHVH4U/0TsNFKwJoT+YeNC7ZgyXtwuB0XX+yeUg5aGhNHG1KvzN9UmjwMj rynQJ/v2vVDxKeCTkw3+UE2WTI0UjLpjsK7VJ+5EmTB8PWEqwxKflw5sp+ZQvpTV0QSK DhHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762334219; x=1762939019; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9BY18Ay9QO6HeFXDmCB5iQgxLMLWXgoQWG17t0/ypi4=; b=GA6xj/Ev90ce2W2nDle28qlXhUqljuV4HSXbwOEogXfheql9xNRar8urrefpL0jD7h oqJaMsOVYDrF3tgoFKqmMjzTefM4QU10cINRBJ6TxhJ7GXYNrsbHQZ1Kb6stk7FCBnSY SmYHCKwrCZol43EqaHTp72f+CGHm9fLgu6gPRc8gCu1RmNa6qFpWEPnBJNAuzX59xKpl boNr+vrXn2bAtZcxgrHINd0s/Cd9hUCrwRlSjG+8bLmuKn0tEWB01DzuDWliD/FH8STq KxGHZY6NXPnuoL9NiHLOC4xVIOyGaEeyrJcVjb/j95UXutDNm47bwmjZAJrqUrbk/GZN s1ng== X-Gm-Message-State: AOJu0YzMLdmIjei+jodZuDm/ehoSz0su4dClJIRc38IKyPW32pyWzjzA xms3rYvo1xdN4loFRHiLU0nv806HEm9lQ14cnyTIXiuDWx88kFi4OcLyydmlobZ34VgNGVsON43 vAvRvFV6ZGaGNWHrEaiWxeBeLdIpqDI5KpHuk+7Nj/V8JVQwInuKhR+eIg2D/uEm6yMI= X-Gm-Gg: ASbGncvvg0XNs2teyWji3CNtZNQPh9o8J4aOGF2PmxLRyZP0Bwjgji+le9G4BKo1HQ/ eHOBTfR3rtdRXPwnU8Q1mFhGpuR0fSOnUEwVzHLQ9iEd+ADJijiU+0iFzfOV3PAGEGzfagXUDA1 nQYjS7fEnI959I2ShjZi5BCwGDanwI1ei9Yh/ijkduWHGmn8IemhAgkN0AT4lqV2lk2RbYgB6YQ NUvQFaBiCN9lYTQFjvDAGmaMu0AYMjLjyzLS0m6DSVG1lXimnmfzbEIaEDUYpXMB7StwmhG5Fxv 4s1Lu3dxrv1sFUnM/Di9hGGoXhOXWW/gLEsx8NwshnJdq/a3QxuykaleYLp7SUgMQVs64N00kC0 3y5XuIoa3pLDcthN+z6tRbUZg8ZJC X-Received: by 2002:a17:90b:48ca:b0:340:bfcd:6af8 with SMTP id 98e67ed59e1d1-341a6bfb6bdmr3006796a91.4.1762334218433; Wed, 05 Nov 2025 01:16:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IHKJhLn7P20MHnaF2lSocg1hIj2BoJNGSeY2P/QuEBxQZEn+Q+rm1gcYAX/apj7eTvwoUyNRA== X-Received: by 2002:a17:90b:48ca:b0:340:bfcd:6af8 with SMTP id 98e67ed59e1d1-341a6bfb6bdmr3006767a91.4.1762334217932; Wed, 05 Nov 2025 01:16:57 -0800 (PST) Received: from [192.168.1.102] ([120.60.68.120]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3417a385563sm2274249a91.0.2025.11.05.01.16.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 01:16:57 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 05 Nov 2025 14:45:52 +0530 Subject: [PATCH 4/4] power: sequencing: Add the Power Sequencing driver for the PCIe M.2 connectors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-pci-m2-v1-4-84b5f1f1e5e8@oss.qualcomm.com> References: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> In-Reply-To: <20251105-pci-m2-v1-0-84b5f1f1e5e8@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , Manivannan Sadhasivam X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7041; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=lxfnNvznOLNH3wJtE9qJQ2eIkCun9KOQbBjwFBEZthw=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpCxXoqyQNKc1YDTRJOAiLbRWTNHfIQDpoDikcb 7I0QY7J4dSJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaQsV6AAKCRBVnxHm/pHO 9T5lB/9e1Ptnw12dhC7Bbv7HkDK+rPmYh2e24YDYb266Seuczy0ibRnGhnSFhnZNq/Nq8s0GcwU FM4QdQTZg8wrwA/MA47yPaRjDmpsDeHakI/kryqrxD2nTmpSqDpIlQtJ6eFDinBr2lcAzc6kEZs 2gHUv6Zy6jengUJ0zq600KmWgX2DiAw6Y68DXL++w6iD2nzh0a5Ubbk/Q2Dtz9Oa/gEc4zSp2tp SugyDKGyafl39/S6auRryHRacuihMEsHcguk6GU4gp8P6cEVAQq0Qdmfmca4uoziYHuwKnzptgu zjIPm/fsKhkwUV7ybL3Cs8VVkMmbfG4EVC7oSOuuZpKixG9r X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA1MDA2OSBTYWx0ZWRfXyB79WO5QkIlp 9IDXFqw5VwPX5g0c6vQXlpnLoubCGJIE1RbB+ZfpNvO6UiaDqTzxGUPwuP+Zs+80reGQbHqG6c0 giKZe+kdwtrPbaf7feiOcw+Ll/BGFrJeVWXWFFQ+ndBvCztYzhq/nWxrkyyfmEmUQSreY00VMI6 m7H9ze77HfLvB36hoqppC+Esd5t+aGXlgsxGgq4PTd3iWTeY1lU6dBzQu9KEw+V1d1DqAwL6lJC LoRMY6MpsaCM6GuIJ+a1mT+rDmp4XbEAGgZn9z3oCKlfXnXXed+MsZJ719k3oy2pvKuT1MqoVzB sO3069OsXHIpQ85UGDdkPjz+KyyMCok3jyFiXFTCrOFUl51tQYgNz8rbPD02E7PgvjPfm6ssX9G FpJ5pQJgwU/IDOGP2J4a0zu1yyolJw== X-Proofpoint-ORIG-GUID: 3Y1NShmDOmn1ca7bySYyMOa8QKK609sa X-Proofpoint-GUID: 3Y1NShmDOmn1ca7bySYyMOa8QKK609sa X-Authority-Analysis: v=2.4 cv=auy/yCZV c=1 sm=1 tr=0 ts=690b160c cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=adoi+G5QptZiRYWGMQz2cA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=7CQSdrXTAAAA:8 a=OecXa5kVODwZ4gSi3wAA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 a=a-qgeE7W1pNrGK8U0ZQC:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_03,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511050069 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 --- MAINTAINERS | 7 ++ drivers/power/sequencing/Kconfig | 8 ++ drivers/power/sequencing/Makefile | 1 + drivers/power/sequencing/pwrseq-pcie-m2.c | 138 ++++++++++++++++++++++++++= ++++ 4 files changed, 154 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 46126ce2f968e4f9260263f1574ee29f5ff0de1c..9b3f689d1f50c62afa3772a0c68= 02f99a98ac2de 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20474,6 +20474,13 @@ F: Documentation/driver-api/pwrseq.rst F: drivers/power/sequencing/ F: include/linux/pwrseq/ =20 +PCIE M.2 POWER SEQUENCING +M: Manivannan Sadhasivam +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 M: Lorenzo Pieralisi diff --git a/drivers/power/sequencing/Kconfig b/drivers/power/sequencing/Kc= onfig index 280f92beb5d0ed524e67a28d1c5dd264bbd6c87e..f5fff84566ba463b55d3cd0c07d= b34c82f9f1e31 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. =20 +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/M= akefile index 96c1cf0a98ac54c9c1d65a4bb4e34289a3550fa1..0911d461829897c5018e26dbe47= 5b28f6fb6914c 100644 --- a/drivers/power/sequencing/Makefile +++ b/drivers/power/sequencing/Makefile @@ -5,3 +5,4 @@ pwrseq-core-y :=3D core.o =20 obj-$(CONFIG_POWER_SEQUENCING_QCOM_WCN) +=3D pwrseq-qcom-wcn.o obj-$(CONFIG_POWER_SEQUENCING_TH1520_GPU) +=3D pwrseq-thead-gpu.o +obj-$(CONFIG_POWER_SEQUENCING_PCIE_M2) +=3D pwrseq-pcie-m2.o diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequ= encing/pwrseq-pcie-m2.c new file mode 100644 index 0000000000000000000000000000000000000000..b9f68ee9c5a377ce900a88de86a= 3e269f9c99e51 --- /dev/null +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -0,0 +1,138 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * Author: Manivannan Sadhasivam + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct pwrseq_pcie_m2_pdata { + const struct pwrseq_target_data **targets; +}; + +struct pwrseq_pcie_m2_ctx { + struct pwrseq_device *pwrseq; + 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 =3D 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 =3D 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 =3D { + .name =3D "regulators-enable", + .enable =3D pwrseq_pcie_m2_m_vregs_enable, + .disable =3D pwrseq_pcie_m2_m_vregs_disable, +}; + +static const struct pwrseq_unit_data *pwrseq_pcie_m2_m_unit_deps[] =3D { + &pwrseq_pcie_m2_vregs_unit_data, + NULL +}; + +static const struct pwrseq_unit_data pwrseq_pcie_m2_m_pcie_unit_data =3D { + .name =3D "pcie-enable", + .deps =3D pwrseq_pcie_m2_m_unit_deps, +}; + +static const struct pwrseq_target_data pwrseq_pcie_m2_m_pcie_target_data = =3D { + .name =3D "pcie", + .unit =3D &pwrseq_pcie_m2_m_pcie_unit_data, +}; + +static const struct pwrseq_target_data *pwrseq_pcie_m2_m_targets[] =3D { + &pwrseq_pcie_m2_m_pcie_target_data, + NULL +}; + +static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_m_of_data =3D { + .targets =3D pwrseq_pcie_m2_m_targets, +}; + +static int pwrseq_pcie_m2_match(struct pwrseq_device *pwrseq, + struct device *dev) +{ + return PWRSEQ_MATCH_OK; +} + +static int pwrseq_pcie_m2_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct pwrseq_pcie_m2_ctx *ctx; + struct pwrseq_config config; + int ret; + + ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->pdata =3D of_device_get_match_data(dev); + if (!ctx->pdata) + return dev_err_probe(dev, -ENODEV, + "Failed to obtain platform data\n"); + + ret =3D 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 =3D ret; + + memset(&config, 0, sizeof(config)); + + config.parent =3D dev; + config.owner =3D THIS_MODULE; + config.drvdata =3D ctx; + config.match =3D pwrseq_pcie_m2_match; + config.targets =3D ctx->pdata->targets; + + ctx->pwrseq =3D 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[] =3D { + { + .compatible =3D "pcie-m2-m-connector", + .data =3D &pwrseq_pcie_m2_m_of_data, + }, + { } +}; +MODULE_DEVICE_TABLE(of, pwrseq_pcie_m2_of_match); + +static struct platform_driver pwrseq_pcie_m2_driver =3D { + .driver =3D { + .name =3D "pwrseq-pcie-m2", + .of_match_table =3D pwrseq_pcie_m2_of_match, + }, + .probe =3D pwrseq_pcie_m2_probe, +}; +module_platform_driver(pwrseq_pcie_m2_driver); + +MODULE_AUTHOR("Manivannan Sadhasivam "); +MODULE_DESCRIPTION("Power Sequencing driver for PCIe M.2 connector"); +MODULE_LICENSE("GPL"); --=20 2.48.1