From nobody Sat Feb 7 09:29:43 2026 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 5496A2D9EF3 for ; Wed, 28 Jan 2026 15:37: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=1769614664; cv=none; b=FmFW2n6gG2glbkv+Bk+Ah0VtoTW/hc/5Ak6UFGlr3IaNFtdOeOplSY10iwQloogzNOLi46J0ZTgDZKfPLRZLWESUud2smQLIxn7VFL2bLcxKjW96San8JCzSikM6gIyWDk0sJtMZ+iE+v0kQXK9C3UdrvrCMpCaXyOCy2lQK39s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769614664; c=relaxed/simple; bh=YuCxHRB5eTOlGHlMzqnyfdRTTWvaCTT2XjDgLQEJT+s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lo4yTJkPfsCwHcxANhqUhP7tlpDwV7OSeBXjk/Og8SaGXLfqIzicBs25vEsIcpNEpdIJl7NNe+dTUCsXpeqfKyRnLZITUYAMvU4XcAv8m5s8/jE3caMZhbcLS/DV1UcgudHH1QUJWpj7Ta4VDIPS5sLA8K2SL5Y+72OgBOHMcOk= 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=iPmmk9am; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=U8QjRtNy; 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="iPmmk9am"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="U8QjRtNy" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60SBdwxe1750489 for ; Wed, 28 Jan 2026 15:37: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= Sc2/NUEJQWTjoAzk7P9Fi/Yxp2R55mEpExCaYi6v6J8=; b=iPmmk9ampmWxdwJq sbCArtrabrXIrv1erJL9Z4OVEFvYczjjr2eus8gWkFBw8HCuqxwVtiRgYgpwY+Ve vZdFdo06BVgiB17ait2twrtQlj28vha+UubHpr1RVAeLhz5G8xA5jwrcV5WFuRng 2KppQE8Q4Nc9yPPxYKH4s+50JYBuI5Sd569cjT+UxLU/GdJYyVbkNVFE8jBv/btn UrBUzDifp5aWRIyAsMmII5RIoG6ucPZMAprv3omdgHmviARCxZ7v6n1/sHQZpbm4 zZtTVmknyTKMDdhiKtWEMBQkfyhwtOZqK/BfMVui99W5yxLjojwhNcNg2TgzII9b /ZtNxA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4byhsj8t8n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 28 Jan 2026 15:37:40 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-29f25e494c2so14350425ad.0 for ; Wed, 28 Jan 2026 07:37:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769614660; x=1770219460; 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=Sc2/NUEJQWTjoAzk7P9Fi/Yxp2R55mEpExCaYi6v6J8=; b=U8QjRtNyCIshocwH55IqkrX/ZpnnO9XrvzOlVg0cMyjPFH01Hj/YFeKdQJ50WMQoge UMLcs/n8BIQNr/xnLX6VoK42uKErhMnMDSWW/tP6iR33Rc1ZfcGawct0PoMdCa2iLa4r oG0UxQ/w/y9uqKoOWoUG2ev4KJlJdiQJjHU5OaeBCXEowWKUhUyee8RKRjPWE/0CsQR1 vwcLD6JHkewKisNVHIYpXuGBnuftCF4Efs0FcojqP0ClfT6pan5VP4u0qWZLSEJkFtK2 fhd/JEa7tfPlGefXKM0bHGVf/PO3AJXrDgSLwfiNqCozylTmBS2puHe1CCX32IBTPOSs o7dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769614660; x=1770219460; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Sc2/NUEJQWTjoAzk7P9Fi/Yxp2R55mEpExCaYi6v6J8=; b=M+XFGgpNhRKh5iSjHeuh5u48Bwl2naqTc5Eqb7ooqBaTb79oKT0384iF2Sd6V3V7WL Nr/CMicyyDs3MIawz7nACrm8P4q8lS2nJw5K6f8TCA4Iu4SOYeC7mwHNJhoIvM7XefsM m0bM0tROfDjBSx7QCxX11QJHl5jz3r+aJXOWCIMReHUajjFgt+/Oro5gJaTK7IGsCiKf CcBTTJC6wvPYaTc/4xaZS3tPEO5yadX6dx/sYR1JZHhS9IcDjk8vtfLEBi464TsfRa1x 0DPF64CNZ6LiCs5MVA/2s7grJLsTJDv+cxoOis+oQDOnK1NsLoaAw2pnDSJzT5OTuqk+ F+Kw== X-Gm-Message-State: AOJu0YwZuIxo5FmowfeubIUqiUIreImCkz1ZKXBO7S28dcVT2rT8ttii V3ZOpr4+qkX9pAY5q7Q5GTNi3wMY1fNGMrX3WadimEhiVpFAC75LvIWCHnQv+M13UxtBbojerK2 JdGOQO6fnH0zp4tMc1HecYAGSbt9UaMvYySjEe4mVN3zlvtu4bZole2ZP/+Ok52Vm4Ic= X-Gm-Gg: AZuq6aK8FPiE+xoWQAe5reBdkbosPXw3F/LVhEBXSQ+I+JCUzmlK5Zw/xToeylBa1r9 qFgPC52ysLFz8y8NyVjZiNqMiAITm/LvI/xWlz+gH0D+GSU8wHj34E4wUI3g+XHS2fVhPiZXfpR Uv47gGcwcnrzG/M+K/vxBTQpE1Z4RrIBjFxF9nyzMYBGJdBv6X2OhpVeIzj/KATdG7j/CJKSX6V x1+s+CNuPDdHODyDBwaiA5axOp642/6QCmwXQfi9AVvqluabV2hegNL0hGOYChazVTNjaHngHVe PY47z51JYzg8l6lFxR0tAEPkY+5U+0Xc61bv/wRCkORmXPeB9BrWRR5eFy5adjk9ldFy2VEUM/K k4thEkxppHzrbNJAfGP3acx+Ay6q3ZaGhvpEBrA== X-Received: by 2002:a17:902:e74e:b0:2a0:fb1c:144e with SMTP id d9443c01a7336-2a871249903mr58411485ad.7.1769614659795; Wed, 28 Jan 2026 07:37:39 -0800 (PST) X-Received: by 2002:a17:902:e74e:b0:2a0:fb1c:144e with SMTP id d9443c01a7336-2a871249903mr58410585ad.7.1769614659076; Wed, 28 Jan 2026 07:37:39 -0800 (PST) Received: from [192.168.1.102] ([120.60.55.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a88b3ee98fsm26371725ad.9.2026.01.28.07.37.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jan 2026 07:37:38 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 28 Jan 2026 21:07:15 +0530 Subject: [PATCH v7 1/2] 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: <20260128-pci-m2-v7-1-9b3a5fe3d244@oss.qualcomm.com> References: <20260128-pci-m2-v7-0-9b3a5fe3d244@oss.qualcomm.com> In-Reply-To: <20260128-pci-m2-v7-0-9b3a5fe3d244@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski , Damien Le Moal , Niklas Cassel , Linus Walleij , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-pm@vger.kernel.org, linux-ide@vger.kernel.org, Manivannan Sadhasivam , Bartosz Golaszewski X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4156; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=YuCxHRB5eTOlGHlMzqnyfdRTTWvaCTT2XjDgLQEJT+s=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpei01fAplyLyNRf11V0pBcb7WhCsGPDRbQBrwz 3fog/SYMJ2JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaXotNQAKCRBVnxHm/pHO 9RnoB/4n85PkHzIS1q/BTcCI2d/fLPeKMN2IX7VAG+fERBkkMkctcVvhO0CsrUjC6mhZtfHE1tz yBnNqApasY5ptGy1fSEXChLYZ5z3rVoSehTpZKvgiVPiyvsNkVhO4n+YrTGdaf0HZ/+g/ir3DJv 7b5IL8wE6ZKr4tk6NWfYbSlaCFF3YUSfUful6Q+Tdjgp4zZQiS/Vj7jnkWRdu4fChceYi11jKli C6nqLif0pr1fuuUAI3dr+mHCm7ctbNFki5RP79OIm23Jgn5xmM61uhJx08mPoQIumllUVj1pkdr IBcziRiCrjRRxIz26WDrKAloo9yQ6W+xdRdxvTx87fHI5CrV X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-ORIG-GUID: tImOCNlg2ueX39BFGzOdwa1oO5-nSkQn X-Authority-Analysis: v=2.4 cv=GbMaXAXL c=1 sm=1 tr=0 ts=697a2d44 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=F3mjE3T3/ow0zpRzCzjSvA==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=PM17ATdnGC-R3TcMHX0A:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: tImOCNlg2ueX39BFGzOdwa1oO5-nSkQn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI4MDEyOCBTYWx0ZWRfX1mebyYLtIGGL e1GBxUDWjU+WXTL+XdpLCqCX5KQ2/Fi/RLxNBt0iLITPikhGdPUOsTShPz7aYINYej/nqk33AKd BSKYORvKz4BNudDsqaz+VVW6SgSbnLVbJwYGHa0u7k00zAM0umrOzvNbdraA5fSVaHxg07MfSMI XwUhWBK7UTZXPSz8sIiMD8SoSuxYdAJL/NZLcYAAvycImFtPfU6VrpNOWGzop4xWJcnro+z1C+9 vw7iIYLK4A07iH8AbzYUW620bB3vH55S12F4fJuo8FKjXg3/cuvUxDfJTIeT3mW+mXyi66RDxfB VlsZ3icLPhLmjVT892LInKBaPvi1UsCrLkzifP8aMIN3Zmm+RvVQbqyTD4/MngJxwml7rl+1ph9 1l21OhDwPYuRsDCwBP73MYpqLdRIA7+0aC0yxnalLzS37oRt5wpU/Fw2x144qccUobU0vHO7e3k IO0G2lNENR9Nfab9FiA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-01-28_03,2026-01-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 suspectscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601280128 Add support for handling the PCIe M.2 connectors as Power Sequencing devices. These connectors are exposed as the Power Sequencing devices as they often support multiple interfaces like PCIe/SATA, USB/UART to the host machine and each interfaces could be driven by different client drivers at the same time. This driver handles the PCIe interface of these connectors. It first checks for the presence of the graph port in the Root Port node with the help of of_graph_is_present() API, if present, it acquires/poweres ON the corresponding pwrseq device. Once the pwrseq device is powered ON, the driver will skip parsing the Root Port/Slot resources and registers with the pwrctrl framework. Reviewed-by: Bartosz Golaszewski Signed-off-by: Manivannan Sadhasivam --- drivers/pci/pwrctrl/Kconfig | 1 + drivers/pci/pwrctrl/slot.c | 31 +++++++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/drivers/pci/pwrctrl/Kconfig b/drivers/pci/pwrctrl/Kconfig index e0f999f299bb..cd3aa15bad00 100644 --- a/drivers/pci/pwrctrl/Kconfig +++ b/drivers/pci/pwrctrl/Kconfig @@ -13,6 +13,7 @@ config PCI_PWRCTRL_PWRSEQ =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 44eccbca793c..082af81efe25 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 @@ -18,6 +20,7 @@ struct slot_pwrctrl { struct regulator_bulk_data *supplies; int num_supplies; struct clk *clk; + struct pwrseq_desc *pwrseq; }; =20 static int slot_pwrctrl_power_on(struct pci_pwrctrl *pwrctrl) @@ -26,6 +29,11 @@ static int slot_pwrctrl_power_on(struct pci_pwrctrl *pwr= ctrl) struct slot_pwrctrl, pwrctrl); int ret; =20 + if (slot->pwrseq) { + pwrseq_power_on(slot->pwrseq); + return 0; + } + ret =3D regulator_bulk_enable(slot->num_supplies, slot->supplies); if (ret < 0) { dev_err(slot->pwrctrl.dev, "Failed to enable slot regulators\n"); @@ -40,6 +48,11 @@ static int slot_pwrctrl_power_off(struct pci_pwrctrl *pw= rctrl) struct slot_pwrctrl *slot =3D container_of(pwrctrl, struct slot_pwrctrl, pwrctrl); =20 + if (slot->pwrseq) { + pwrseq_power_off(slot->pwrseq); + return 0; + } + regulator_bulk_disable(slot->num_supplies, slot->supplies); clk_disable_unprepare(slot->clk); =20 @@ -64,6 +77,15 @@ static int slot_pwrctrl_probe(struct platform_device *pd= ev) 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"); + + goto skip_resources; + } + ret =3D of_regulator_bulk_get_all(dev, dev_of_node(dev), &slot->supplies); if (ret < 0) { @@ -73,19 +95,20 @@ static int slot_pwrctrl_probe(struct platform_device *p= dev) =20 slot->num_supplies =3D ret; =20 - ret =3D devm_add_action_or_reset(dev, devm_slot_pwrctrl_release, slot); - if (ret) - return ret; - slot->clk =3D devm_clk_get_optional(dev, NULL); if (IS_ERR(slot->clk)) { return dev_err_probe(dev, PTR_ERR(slot->clk), "Failed to enable slot clock\n"); } =20 +skip_resources: slot->pwrctrl.power_on =3D slot_pwrctrl_power_on; slot->pwrctrl.power_off =3D slot_pwrctrl_power_off; =20 + ret =3D devm_add_action_or_reset(dev, devm_slot_pwrctrl_release, slot); + if (ret) + return ret; + pci_pwrctrl_init(&slot->pwrctrl, dev); =20 ret =3D devm_pci_pwrctrl_device_set_ready(dev, &slot->pwrctrl); --=20 2.51.0 From nobody Sat Feb 7 09:29:43 2026 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 D8D672DC76D for ; Wed, 28 Jan 2026 15:37:47 +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=1769614669; cv=none; b=Q2WbhJyGcIvizdeCIM2nBT8ACJYBCEkZ4t6DJ4BCfnddMiz3+fMcD+6DtOptGsyxOsEec7HByPzucS30axbHiP+kdDkQy6HMQmD1/g6kET+R+NbUkW3JdmfeMJGsMjNu0cSg710ZOgLSmunq8GbaYCVGihVn//Y9fKClg8/2K4Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769614669; c=relaxed/simple; bh=ayAnJWhqvxVqxUb3jotL1noUt0bxhrC/p43Y0YGiw+k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CSepNirVGN+eMQIu574cOoH09xJTuy4ZetOKGPPfIzyqcsfc/NETEUQq3CXHJYF0pnMJF3RPnH41QmF/9+XGvXkA5d88iGt9Yu8CwlhTmzz2VsS+cA2wvCP3kIEbWFdR9rmZ+4oHX3wtTp27T5VhGOtZ18d1ue6p8OKmIfPbplk= 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=pm1I/HQV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dFmVdBy0; 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="pm1I/HQV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dFmVdBy0" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60SFWE8i4008376 for ; Wed, 28 Jan 2026 15:37: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= 1SfBbA3M/smVtChdaDHyBs1QmfwqjTWGvIAucfFrNwQ=; b=pm1I/HQViuD+1Wjj US583gRwrpmFHWWZUcIpkChN3JuLgy4e4rdaGCl8H1E9Di0n0On1bdWymUzrfpcs 35N2dDqOY9HsaBDt+2TH1gjCc6PMTx+LDNeZpGIVbc07qzgv2bpvuuPsxk5olQyD 9Eyv9AV2rsSlzjBax/Ffr+Twv2ing1ML/DG67qqaWrVU3ynLoVEkjnbwdQB/TqHS 9eH5ELKPhi7mp36OcuOvZsBJKW3pOO4sztt3cJ6ZeRGrw2qA7hOUXPNghzdeMpfK BsJWMUpUnKrFF+s6yBJ3LhSsiPbCTU+Yd1vk3rS1/oyHubMJDnojdLTsmNJVEDI4 pgptqg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4by1jx4585-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 28 Jan 2026 15:37:47 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a0bb1192cbso58332005ad.1 for ; Wed, 28 Jan 2026 07:37:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769614666; x=1770219466; 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=1SfBbA3M/smVtChdaDHyBs1QmfwqjTWGvIAucfFrNwQ=; b=dFmVdBy00BFgqJnIWvXVeO8B0j6lEr7MdzK4o03oR4cSN0mdpiCJGcQ5UnlIq0X7Ck IsOJ5PAumeqE2gQRBuiXgTjmInRFkyXj/sCAoFLs0XHXKQJdIVrx1Gmc+zrnjbHn4MFp lQr1g+czwbgHlM7C/0vsK4psz0ziAuE4omtAVj5gM9Tr/MkvRJscuhKdkR64AsFiNBp6 FlE2aRWjqWgH+VZTGMnpseBPsuNrWcLqjoiES2lxdbRP9vA4CaV81gBF2jqnlLCgxJM0 /X/SsZmOWp5697AuBlNWKHn9pB+LhMQvhGAmuMOEA5wSYTKUSWb7cHFlLYcsfA2WJQBs Y6bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769614666; x=1770219466; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1SfBbA3M/smVtChdaDHyBs1QmfwqjTWGvIAucfFrNwQ=; b=XmVeY1ErCFRdcDZoexGtNAUpUiddElsYY//FSwPFo0Xj9/pkmQm/0Xb9mycem4Hpog q1d3TnhH/gevX1ytfUZOLDprB9fSEO+HM5ay95vjBUoRlP6etUVJJaI3mf63nxqPlePL 04o6oYT/CiYfW+lhmh8Jj2nlVtwm47h1TsHt9PfOFJ8QAZlSpOBmDoRtESC0ghnmhIUD dfzaGBFNPN4U9o7niV1AOJ6IoPSYN8Tgqi7nsgzAuHDq3cY1efdYr4FkftS2Z4D1XVLG g7z3bXl/MSc/dpPTImvcK9CuFzg3/RraauemDFK72WpNy9SIVup1ZJa7bTzmjyUEtJV8 LzLg== X-Gm-Message-State: AOJu0YzKNmJ4S+DtdMydQ71nI6b7B4a6REpEvA+2kaM/RmNU51BrjqDN SmAfOai89yPb8CL3MJa2m0gBnJPCIl5meLvDcD7QNUDtE+HM5jc7uzvd7cQYSsiPHIUCSoGpFZf 5qcHr5nFVM9ftQQ0ym30Aa4lFhMU1xFxc1xb5fcpI7cbg8IEVja2xQi5YWVtac+e5Hvg= X-Gm-Gg: AZuq6aLzE3NDqXpWvjmcypRRa5H6Kj6NYN9pxBYYuOx2HGE+frkV4NEoBDzxgjIVmuh 1wZJkyTkB4GqHwXW8vIzClXgbfwX2lk9J4lKVPl1oTGPXiqvIebzrVFU+qnZLQNfIrlP/9CapMW 089fqvbHmWTOLZkIkXRo4gHq1yO0EDI6fEMJV0LPzUelBQv8Bg/BKMmtN1vAR2xasewRM92KuH2 BeAAS0vKBH93NBQmHMeUaENqCyUcSuqpm/txF0aplROjIZzfCsv4XN1ETSn6iSht2E/fbZ3lqKz oPhJTuITP4tXx5rz8m6KumI8Sy2koW8Bif/XlVAUshQDgzKj1bGkZP1b0M5oRJr8GFymJgYU+1M 1OJDmZL8AORAqJ1hgYDg2SoOwW2WVBt37h8ZmCQ== X-Received: by 2002:a17:903:183:b0:2a0:bb0a:a5dd with SMTP id d9443c01a7336-2a870e1521cmr59413365ad.57.1769614666355; Wed, 28 Jan 2026 07:37:46 -0800 (PST) X-Received: by 2002:a17:903:183:b0:2a0:bb0a:a5dd with SMTP id d9443c01a7336-2a870e1521cmr59412945ad.57.1769614665732; Wed, 28 Jan 2026 07:37:45 -0800 (PST) Received: from [192.168.1.102] ([120.60.55.34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a88b3ee98fsm26371725ad.9.2026.01.28.07.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jan 2026 07:37:45 -0800 (PST) From: Manivannan Sadhasivam Date: Wed, 28 Jan 2026 21:07:16 +0530 Subject: [PATCH v7 2/2] 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: <20260128-pci-m2-v7-2-9b3a5fe3d244@oss.qualcomm.com> References: <20260128-pci-m2-v7-0-9b3a5fe3d244@oss.qualcomm.com> In-Reply-To: <20260128-pci-m2-v7-0-9b3a5fe3d244@oss.qualcomm.com> To: Bjorn Helgaas , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski , Damien Le Moal , Niklas Cassel , Linus Walleij , Bartosz Golaszewski Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-pm@vger.kernel.org, linux-ide@vger.kernel.org, Manivannan Sadhasivam , Bartosz Golaszewski X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1617; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=ayAnJWhqvxVqxUb3jotL1noUt0bxhrC/p43Y0YGiw+k=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpei01CRkwyRyAd55pohnc7Yxy6JiGTO0PVOqkm WPeunI7yGSJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaXotNQAKCRBVnxHm/pHO 9WDuCACcvTLvfMeR/n6MQQCFzYUGzhc5g0cX7wrTE95npc4sFrWjI0wQKvBG0GHgVWJiXlx9dsj 677q6U/bW9rLCeZulg+DGSW32sg1kLyB68QpFoDAfEjwGFtDHdsJ2TP+v4fLmcfI1GtOYPwQOLM 96Sj5bs8fyDEWXabaFadqIE/N2sXOkfxVxQxkxiRXovHCJ9BnqEd0kWC5xbZnnR09Ft9Nv6vxKy UpUaWQ876MCJXP6+q0e2tyDGPxMT2j3aJU5iQKiFi692tk6jO9IC85Z1qjg3BmCbYqxBL5V4kPO DH88TCj5/aoM/cwvGRPqWTQO5/PBzH1leSk9oTvlkaKnlWpC X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Proofpoint-ORIG-GUID: SBePlLU5mGBnE0dN6dEGm3wWj7mop2WU X-Authority-Analysis: v=2.4 cv=duPWylg4 c=1 sm=1 tr=0 ts=697a2d4b cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=F3mjE3T3/ow0zpRzCzjSvA==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=0pvPJS888BSDkZzuOKoA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI4MDEyOCBTYWx0ZWRfX6GMwtk2baIgL htldmBP6nEPMoG4GntUlZIl77Z5sRbbRelnl9JtdwYywWaJyDSOmmDN63FKMUa27xd7d9yi+9lS UtgLEWEDL/OO/8qbVlupZiFaT7eWxEfORVNgLWX1CygtBWvW2vv7TGf9aifHiuiW0iYhpH5qQKJ U6DQmyQHZ6uVnUqG9ePcmSWnJ7j1f2J3VIooYxHT1YrFgFiQXf1tcu9Jt3lwJ3GjY55aXsIelZO SaqAY9D8u2P4b+WVX5VyRuaqQHzhH4IAN6G96CmFPkQ/Td3GKlvAOS8Bpq2j2uBkAk0Sr+PcQmp kG2OVYJ0INZwFHNH138HxSfrMk2yMd5rA062o7UE+2z2RK4QmkWe1lxXLlmrePvVqGu7onw80cz X3rJsPE+u3lEqr6gitdmZTm3Csil1BtJAw3uzZ+tHYXTygaOymsmqq9hkWvMxcKubC8laoOM2jH OI6vdNwxhO7Wu+HbNOw== X-Proofpoint-GUID: SBePlLU5mGBnE0dN6dEGm3wWj7mop2WU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-01-28_03,2026-01-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601280128 The devicetree node of the PCIe Root Port/Slot could have the graph port to link the PCIe M.2 connector node. Since the M.2 connectors are modelled as Power Sequencing devices, they need to be controlled by the pwrctrl driver as like the Root Port/Slot supplies. Hence, create the pwrctrl device if the graph port is found in the node. Reviewed-by: Bartosz Golaszewski Signed-off-by: Manivannan Sadhasivam --- drivers/pci/pwrctrl/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/pci/pwrctrl/core.c b/drivers/pci/pwrctrl/core.c index 1b91375738a0..6f7dea6746e0 100644 --- a/drivers/pci/pwrctrl/core.c +++ b/drivers/pci/pwrctrl/core.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -295,10 +296,10 @@ static int pci_pwrctrl_create_device(struct device_no= de *np, =20 /* * Check whether the pwrctrl device really needs to be created or not. - * This is decided based on at least one of the power supplies being - * defined in the devicetree node of the device. + * This is decided based on at least one of the power supplies defined + * in the devicetree node of the device or the graph property. */ - if (!of_pci_supply_present(np)) { + if (!of_pci_supply_present(np) && !of_graph_is_present(np)) { dev_dbg(parent, "Skipping OF node: %s\n", np->name); return 0; } --=20 2.51.0