From nobody Mon Jul 27 18:58:56 2026 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 EB84437C0E3 for ; Thu, 16 Jul 2026 16:18:28 +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=1784218712; cv=none; b=nejsqkSx8FOK2z1o5t1qB+AOg0RsfcfsgSd8bkXGu2TFMXWGPM07TvQvqtQqRx2cttgoZxiQo9eVTo2BH3NbFKn9LgtN62V8kZIg5zBxxiVTuB9y2L7iI61NVouRKqQp/TGRyJNYd0npf1odCVhoX4GHDG70v3WgvBzyN55SmCU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218712; c=relaxed/simple; bh=KEpaGYLJg/HFUQ4VCnAAAa4/K+FU5Ww1paHM4mUD9UU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=haeONhfS4Z0wTy0ZAGO3N7d2vgvCayIQ6FaYaos1FCIKTdORU7Vn/HJ7V9x6azG1NaUeK5Mf3N8r51JuEHCKYZkK0P5c19cBxZP7ga8r0L35jl7ZBG5kxXP0aueB6dieYjrrAVZ+3ysbkfn0YzT3kBmk1TGEJJKIQPpTWHEjKLE= 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=jOXqOVLZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gAzxOuzu; 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="jOXqOVLZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gAzxOuzu" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GG1K1c3207630 for ; Thu, 16 Jul 2026 16:18:27 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= 9xHOUNHGElRK8fUN+Vx3VXwXih6zrlUor3vLrF9tWE0=; b=jOXqOVLZC6BBHj+3 XLMie+g+71G9u/wYEPDYrJ3KKe4zYFaauBBV8N/SmJsnKitT5CT2VUecq1mcCWHd um/6RrZ6wvAw4iTGGChmed0ie0RpdXigKmiabE+7Lkp3RnzRArloONiBnbL/JLcl GBHQ+mtFO5m81hFdr8wH1JH88pDI+0FWeVHV/3A5AUvynHR6ULBhxjLxBwMhz5/H gScdlUkHFPFMBUToCkgWmH9i/dt8bwP311Qm4zuS2mGfMRxTPhOHAbYVJW5CSQXM VxCwHmYkPLvmDoPrVJ1v8iRkIE59KJJzcQ3eFWtBhNI3osy2GrpBfn0t8vrH/kyO zjl0gg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ff2f2r35k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:27 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c0e702df8so73408621cf.2 for ; Thu, 16 Jul 2026 09:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218706; x=1784823506; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9xHOUNHGElRK8fUN+Vx3VXwXih6zrlUor3vLrF9tWE0=; b=gAzxOuzuXgVrE2WxsjQyQGxnU6sKbjC6yCuSrsXogOxf68BZwF+psvgBI4jMpa3tkk bvuIGIeGvOG2puIc7eJMjuSENfWZPmwaXwrufCDPEw7DWARmGw5nul7IFeVqUZ95VzaI dly4Uv3PiLOqlnMYaSBy02WwNRd5ab3CpCQiyCC9XCCn9AfvDe9CuBfkVhMv4TMVGOlq pk3n5EPID2ipOoAya3E0249bJhFVEG1ky0mAwDDKQgv5LI8hfCmi5750UdMlYmKG0qAP EAdGvRMGsIxzNCrEXJ8vXYOSLoopVScZPoSAOrRyGZADrtiK9uLMz2/U5f76OVrurn6C GkcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218706; x=1784823506; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=9xHOUNHGElRK8fUN+Vx3VXwXih6zrlUor3vLrF9tWE0=; b=Stc+ZFDLpbqCeVTKri7tVM6hLZg+8yFMZHQ+m158T1Tm+sriNQIUjouNm+g2bPMLfe WkNpZXotng8tbhxcHMo7vbpWdy0XdP57ot2pIVxeR8MpnuB7n4CZKo5FtTQ1skKTqPwe 3FpewWeO8fLUxZSUWb7NraL43FNHuh5N2gZzX/OHDfv5sotnzX9bhEPVYNaICiAp71jo 8Go4HlTH9wpvG2v8YeKuXxF5oxm0yX1D4d2w6hp3IVsx/OfOocMeQ5aSfMXaHbJlzY/z O0gz/TKjgXSBSRKLravHfZapPF3vLg17FDZ9GxwY9GDCX87sgTZcEahz43tDfqiK3LQ3 I/ng== X-Forwarded-Encrypted: i=1; AHgh+RoaW5BK4VddBDwndsA+zm4b6izXJG2Xfjq1spfeJmg/5CpBinbOOFlTXjHYHT2keOECpcolTYV1lmD2tT8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx59EaVGTF+whaWRb8/wUSGhnHmhdfUpFu90l73LZZFbWz0Hq8O OYa5KNNK/nRNpj3cY23TEtmAqMf9EjcFcu5KPWSmnJ4WJbZaHTFCHj5TzEI0vjOo7q0D207lufu MF3RDD9TdI35vNXLiQ4PayCeiHFMD/9GsgzeMamJdlg6Hkql1y8x1amHPfh0Lm43uacM= X-Gm-Gg: AfdE7cmNXUUtoybmVSIjKZYh4AVQa4g+zAjeLdDW8UR7jgN7qrwZHe5HY8XcRXt7vNs aHDKrf6eTYedRwiCJkpe3zozm4D0O3eO1wsGGQ3ZF5TTeVGP75HMS3nYjI1AYeMfyg7BT/ASeCV sprwMBLCnjepXlJKbvxOropQQ+Q0sP9dRxoCP3VVCdiwjh+NRpbxLpE9p+emqkCtVbe1LdYSGjw 2vnIJMmpbY+V/EF2bzL0Z0HCGBa3br2v0NpIEAX2ip/HLEPq100occ/g2bSKCGvqoD5PoB/o++m hF18RoPfUFhEbfZ+LBu05lMqqL97XO0H3X8FpNc4EbZL5FkHtlUt/ucZU/F3KyJuUMXbmNuzNd9 oThEGnLF+ehBVXoeW1Lr/vXCGDeljeLKhk2yv4HXq8Gm9iKWuYT3CydpGA7jzkyi1MAsUsfMaAJ hxOJ8kCfw9Z2LRsTYV7ejNmfcB0vdfaKIbrl1Bhd8kZpquYOouhGo= X-Received: by 2002:a05:622a:a888:b0:51c:43d8:8604 with SMTP id d75a77b69052e-51e42453df2mr108398041cf.51.1784218705401; Thu, 16 Jul 2026 09:18:25 -0700 (PDT) X-Received: by 2002:a05:622a:a888:b0:51c:43d8:8604 with SMTP id d75a77b69052e-51e42453df2mr108397371cf.51.1784218704675; Thu, 16 Jul 2026 09:18:24 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:23 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:18 +0200 Subject: [PATCH v4 01/11] Bluetooth: hci_qca: Add M.2 Bluetooth device support using pwrseq 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: <20260716-monza-wireless-v4-1-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain , Bartosz Golaszewski , Dmitry Baryshkov , Wei Deng X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: J240GKZ7EfXpeuQPFOkUAzE1FSk38U3p X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX3vbmXshRiXPF TEuNj48blT/PAt9ZQIgAOqfueoAAChg48M7WwYnpmZthm/PDfCv/WCpsiR1H8eNH0bGoKyEpd8p icDzN4qP55m5jtNxyRJzNl+XvNQOEoU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX0vOIVmF207aF xh6iUxfRaWfhyQEDt5bh2WaBTxlYj0N5rqdWWOLJkQt9g/HNAZDJCWGrKIvNgfCi4U9wTnD/91h oLDJdlSVencfahceHuHGHx0dYN9u97/53wC8MfcZwWjuAG2cccUiDV63ASYH3AA0B4ji7ZOUxnU 1ubZLkMiodbkRPMQQ0SJyGm15nVJXfD1Rb5BvtJRKNH0lNJJXqO3gi6vnFHihYRXJIIU5+3wcbN WnE31J0Y0Nor/c1fYruRaT3jhIryVEUDqlWji+CBhTE05MGtYS8FB/fmCFp8miLZUYEdtb12Ja0 YAZkgXDHGG2sPTerEazlvmXDgU09x2uE3RBED+NxH+imnfplN1eTgl5qxVA5h6Ca/aXjMQRGbOV TFD0cB2n1vgJFwHno6m4YUqorWCewbMGmtBSGm5Nv6l45tGckHKCX/o5QAg1z2tl1ZjHm61bDA0 eyhUH/hUKLkqxNP5q4A== X-Authority-Analysis: v=2.4 cv=NcTWEWD4 c=1 sm=1 tr=0 ts=6a590453 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=14bN-6-z4zEjTU3E0XQA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: J240GKZ7EfXpeuQPFOkUAzE1FSk38U3p X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 From: Manivannan Sadhasivam Power supply to the M.2 Bluetooth device attached to the host using M.2 connector is controlled using the 'uart' pwrseq device. So add support for getting the pwrseq device if the OF graph link is present. Once obtained, the existing pwrseq APIs can be used to control the power supplies of the M.2 card. Reviewed-by: Bartosz Golaszewski Reviewed-by: Dmitry Baryshkov Signed-off-by: Manivannan Sadhasivam Tested-by: Wei Deng --- drivers/bluetooth/hci_qca.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 2444471956197bae62a1c4c3a776c5591780ec02..135c79e696aefe2b37ee7a7a668= 715360a1e2d75 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -2445,6 +2446,18 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + /* + * OF graph link is only present for BT devices attached through + * the M.2 Key E connector. + */ + if (of_graph_is_present(dev_of_node(&serdev->ctrl->dev))) { + qcadev->bt_power->pwrseq =3D devm_pwrseq_get(&serdev->ctrl->dev, + "uart"); + if (IS_ERR(qcadev->bt_power->pwrseq)) + return PTR_ERR(qcadev->bt_power->pwrseq); + break; + } + if (!device_property_present(&serdev->dev, "enable-gpios")) { /* * Backward compatibility with old DT sources. If the --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 B094737C109 for ; Thu, 16 Jul 2026 16:18:31 +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=1784218715; cv=none; b=DLCeUbk4D00bRh94qsoPMMUptr7+u2xHd6+ja+pwKM+7Nq/6CqEFKjE4Cbho7iqDktnMKFuZDB/wS1xq5MnaJS0HHknFTVuyiS8qr1ZoZTciB7zcuDFW7ubKKiLQTJ0hdWFjHL9usfWjmPMacDy+/5PeBrdotBe9R4CMHfm7Rvc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218715; c=relaxed/simple; bh=SDP/HXgz4amfEH/BI3vkK16jvRVsmUt0sdawVFBJlw8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SkY7Bon6NR2IBmO3RHmweFEXzOq3rD9i7AQRP+gpShi22v8DbW+yi6CoNbJgaAd99aBJtZxYs1WRf+a9elJqIAN0zM8sE35GRMCVPj9tyTAaXuviCsr77LYN03UuftPi2WHuj8/Z/tQbQZjRpo53FQuf4De4AMl4RWSmgCRGvbY= 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=AEdaw8EP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iOuJR0ng; 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="AEdaw8EP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iOuJR0ng" 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 66GDKHdm2959787 for ; Thu, 16 Jul 2026 16:18:29 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= iPJCmDf+q7ppTTlm3G73k4uw7uFCawMqMX2beUHHwpo=; b=AEdaw8EPUB0um5rn QvxNivBNe7znLZRvXMtDnqg4K7M/EeM7+28mptmwZ52lT68O4tU3NvYuFaD8TU0t cdk/W9RXG/4wbGVYUkPEetDFYJAdXBmPZd2dmkgdhyJQ/FzyuS96LvrErh3nrjAd 89TVSLvm1TzuueCvM1fpvkzmEzfM+txsnLJfJHx5NN6jDU5KEUbo4U5kW0cGcRbi 7IuIgQa/6a2/BAoELavwshaDfmXkU/yzFLxCoOFZ5QwlRqF9U+PTRyRYY+RzInoV 3IqMsl80hi/DrQd6+HnhPJzJxeFlq5dBa29+d7Z2imRpaEQRJSaH5T29AaRfAF/g wqRG7A== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feym1904u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:29 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8f1e4e0eac1so89773606d6.1 for ; Thu, 16 Jul 2026 09:18:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218708; x=1784823508; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iPJCmDf+q7ppTTlm3G73k4uw7uFCawMqMX2beUHHwpo=; b=iOuJR0ng3Wtog2Gw2u6eZPxhMyUMgJ50TUnmXRwqKVHWErn5PJzDUwOqvHlbfjc3KK u+SZRpCKEQeGdQH9px5Rqrdupj7MB6ZH9jFhad6jMd1/NHbJFVE4eG3LrnOjibG9tmgI 9BHnMM6xKRZPUKQg4jrf04qK/aD/iZ1QFtUJaIm1FraQgtTnOFiSzntLx6UN0WAZTJGd sMznq6yF7mPSEwv1E6zQaRKbESx4UeSRuBuI6+QN6WSs/f6QYGnTHlEcUHCgViCryvey N4YvlH1V16nFcMQYyRHrx3kD7zyOrnpD67mH6/Jw+o0rhig3NDioa6MkbCIBWhOnAfUi oVPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218708; x=1784823508; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=iPJCmDf+q7ppTTlm3G73k4uw7uFCawMqMX2beUHHwpo=; b=V5Z8HMd1x23I3JHMXh6vKsHLLrAJYaZxeqgcrIeGESuhV93V4c2wY/cypQjyh5znxo VOp4yOj5IlP86+mi+ZiUP5l1DumUi8lKeD4ZF9N52d4NbIKLSEsG6tjI9YpVgnmRvyKs 7p80LQF1rUHPF22t1VA/qaZk5tdtvI7E1SGsiG7Am3FxG3YSGmzRIdHPBzfCwtgkGDkJ DPGg/OwDRJDda3QCP/y4MAMWeb3v0Xuit5xZnK9i7JzMelZOAPH6+VghbPEptxRJgBYz laah1xMHH7WV08N9m7fhFokY8XkbnsrOaBObGSilpDXWrqXJ4vNYCeMOKrG/MoBaZSoz 4OxQ== X-Forwarded-Encrypted: i=1; AHgh+RrY9QYuRA0xSDFV59UHxp/1wII82+masTGFpKaTaDOAk/F+suZ14zq7ef9blQn5VecG3jijquovYhho3Xc=@vger.kernel.org X-Gm-Message-State: AOJu0YygLniTnZVHvaIU0m7KW+ZEvMYZErxP19SK9EknC/m3fVKPm6H8 sblKm9EJ5sLblO6yytBUG2QDG3ja3tenZIXFfbS+t1spE9en5k9LW+xZnlzglAqC+gRIjnO6vGT 2vinboB/Go7VDeGTgp65Q56snawV8QIthgten6R6JOyHXsm4IYrLW01wQ3wYvk2RtLCY= X-Gm-Gg: AfdE7clWkP8R1sebsbl0Xu6URhSprEsL56JGg44nWERsoWDdU6DShTARcocAdsFttJ5 Pl4VIM/f59KOFGozya7993so0jj7UJ1VY7ZDc6ZOsI7rF/P/PoHhsaNgtJjWr76zmXPJsLuSkoj mYmNKJO1fqGD5uhur5/Zvb65Asm94rZ6CXnfq5O30LkYhAC+KTK5ON6gRNmS94ABGx+kOMT1j1Q sVGFl2xk4mJ/wIGXAwSFu7NaRVOuKKpyOP+epAQiD5nlJRybpFc0iCfrQXFADuxHOmSJ+mfYBPv vjTpsKkCtP3AxPNDcliKzHs2ebJySwTbrqBUdSYV1Lf640SdyKQth9nOxqNXgqoVMvOjT5E+k+X 1k3xOPg6iH0YF6KW9w4LQ/YLo5icbeA3lau4ZfOfthmM+eD/BX1as4madaukd0L/XcH0jBX5SU6 ooxi+01C0e8oWyF/5D1J+wlk7LZ5BACZ1u4nUP/gsZ9DMXwEgpSt8= X-Received: by 2002:a05:622a:2c8:b0:50d:e471:2d1e with SMTP id d75a77b69052e-51e4239fd84mr117365411cf.35.1784218707524; Thu, 16 Jul 2026 09:18:27 -0700 (PDT) X-Received: by 2002:a05:622a:2c8:b0:50d:e471:2d1e with SMTP id d75a77b69052e-51e4239fd84mr117364701cf.35.1784218706689; Thu, 16 Jul 2026 09:18:26 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:25 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:19 +0200 Subject: [PATCH v4 02/11] Bluetooth: hci_qca: Rename 'power_ctrl_enabled' to 'bt_en_available' 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: <20260716-monza-wireless-v4-2-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain , Dmitry Baryshkov , Bartosz Golaszewski , Wei Deng X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=KPRqylFo c=1 sm=1 tr=0 ts=6a590455 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=wYtw_XDhO1ghKZOGarAA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX+uxOy/SHIn5h +3sKhsy66CCx+UIAFWm+vcJMgeCpugL3969TyY3tKGeUr7a0UDs+RXkkFSOgPYsOV+03e43Vbgc zOJVuq0lasCXnJi19wtzzQW8uARwEwJ2OzQU5A5KNse1fBAMSVGj4aaI1kQ6BeHqo1o8L8p9Cuo zBE5upZZ8J5cpFSPXLqoIXBd18KB6Tm1HUG30JMPCzLq/epWVcZCMMb6x14n7g2eErPZdC1y4hl nVpAL/swb05AvRm3yPUMTrKJyW1bUKX5VWUGkYDh3Ff9wRjI0FZi2Dq6N5KNKrxaaqugvbyOYOi f5bDaXNLuaNym+bnXFJOMfAtizPlB4DxFEestyWhWMz4z6ivgdSqgrkK0mmj3ZDJuNfwGpgW1IJ bc5iM8mmIMcXD2hKzlq8hYi63ynMjQq0Rl3AW48YbP90FpayVNJrdqcl23KWuecUL3oo6Dgq4nQ Sa+1RBJG61fNrkwHxvw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX4ustCTFmeEAn 9X604d7dcoCnW20toBix89+OsInw4qAq9wkzpLN24d3GyRgXgiDzdB6XlWA3l5E2S7Ua2V11Ai6 62mJJLB3te5Obir2xr1s27tmIeB0Ppw= X-Proofpoint-GUID: R_K0H7Mv_lTsAs2j30tOW9v1YR0VANrc X-Proofpoint-ORIG-GUID: R_K0H7Mv_lTsAs2j30tOW9v1YR0VANrc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 bulkscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 From: Manivannan Sadhasivam 'power_ctrl_enabled' flag is used to indicate the availability of the BT_EN GPIO in devicetree. But the naming causes confusion with the new pwrctrl framework. So rename it to 'bt_en_available' to make it clear and explicit. Reviewed-by: Dmitry Baryshkov Signed-off-by: Manivannan Sadhasivam Reviewed-by: Bartosz Golaszewski Tested-by: Wei Deng --- drivers/bluetooth/hci_qca.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 135c79e696aefe2b37ee7a7a668715360a1e2d75..17f436484e1e74d1dd690ada221= 34315abb767c4 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -2393,7 +2393,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) struct hci_dev *hdev; const struct qca_device_data *data; int err; - bool power_ctrl_enabled =3D true; + bool bt_en_available =3D true; =20 qcadev =3D devm_kzalloc(&serdev->dev, sizeof(*qcadev), GFP_KERNEL); if (!qcadev) @@ -2501,7 +2501,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) (data->soc_type =3D=3D QCA_WCN6750 || data->soc_type =3D=3D QCA_WCN6855 || data->soc_type =3D=3D QCA_WCN7850)) - power_ctrl_enabled =3D false; + bt_en_available =3D false; =20 qcadev->sw_ctrl =3D devm_gpiod_get_optional(&serdev->dev, "swctrl", GPIOD_IN); @@ -2539,7 +2539,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) } =20 if (!qcadev->bt_en) - power_ctrl_enabled =3D false; + bt_en_available =3D false; =20 qcadev->susclk =3D devm_clk_get_optional_enabled_with_rate( &serdev->dev, NULL, SUSCLK_RATE_32KHZ); @@ -2557,7 +2557,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) =20 hdev =3D qcadev->serdev_hu.hdev; =20 - if (power_ctrl_enabled) { + if (bt_en_available) { hci_set_quirk(hdev, HCI_QUIRK_NON_PERSISTENT_SETUP); hdev->shutdown =3D qca_hci_shutdown; } --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 E955F37C904 for ; Thu, 16 Jul 2026 16:18:31 +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=1784218716; cv=none; b=hKObLYARzNFcC50VHYV/lMjzo15Bk29rb4V49MqiBPDr7NLRVXMtIxEbr0mGCGbnXT82Mk5mLGpWjt7xTeoZ7D3IQQOZUbHsKnREFZCmvQDaQyQ1XJ/bvfCSDiRNa+eOr2n+EFMgYOIc+TMynY3uxofy2eKW2IKUVD/8om2gfr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218716; c=relaxed/simple; bh=OvZGQdRrKQ1cKCtBZ2vJJlctMXShVHIPX/EnnD1FRmQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zt3Lydpr/Hyk3kskqL16WfQPq3SmSoc41f5cOtjq9yR8s0d7PQlo2ElObDunKOMH0PJL+b7+OA6rz7OqKlN94TYf8UBwebO6Vwhh1sL307jBtxWTtJgoFkJLMSrgyS7Ae2fdPE9xYwZVzFtGDzXqhIBmJNlMB4wSuA6XzJw63Kw= 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=CnSn1BRp; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SB7Fjzz1; 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="CnSn1BRp"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SB7Fjzz1" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GDKMh72857816 for ; Thu, 16 Jul 2026 16:18:30 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= rBvoXcE6fyfh67dFVJmu8Fy0oBNY0thH0kUQWM4o/d4=; b=CnSn1BRpTHnJbFGf +T/6tewwxH6wTIdT0lXcjtg3atp9yuC5+r1BGMEx/6ME8clCZqHN5QYZY29MyPRV vjlbCxinuqm/0qULVrWZt7GEfSOr5TGDUFPLIgPEq3x+wPwJ/vvFoC9s2MTLjTa2 n7Xkzy4O8QTcG0fYsJGuuxylsYuPutVCSEdlPlRUhHIuAB2DPnTr1GlbTYSaDXI7 3NfO/kFdk/q7jZTftR/lKDXGmMHcx5UQb0Neym0uUucX3JvFftGrEOaShPJxc5ub 3vb06u/V/pAEh+j0BF1E7neqB1N6Bre5F7nSOnCYaDFShH5CtThMyq5xm+mu6/Ju nJZp8w== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feuex25xh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:30 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1c7f135bso65089341cf.0 for ; Thu, 16 Jul 2026 09:18:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218709; x=1784823509; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rBvoXcE6fyfh67dFVJmu8Fy0oBNY0thH0kUQWM4o/d4=; b=SB7Fjzz1UP3Kj0yNGAWVrg+afazPamEP+b6hNp/KUuXGp6bh2gOTflYM48fqAKat5B KE+gEwE0VKaX9x3/TIy0Fuzbo7rRvrvm4kImaQxxAYYG/4nmakT1VztBMA/YPLg9Yi9A D+vw4xLdK6LnSxwPXtcwPZVOjFqaGNVXiNXHIc/iGxqnJVwslsAntAm8uZNC3/TreK0C Y30OuFTBIkEMeIUkgA0oB+QdXuWEzLuIA7lzblsjHPitbFYOUszYPBRL5dYvGhTEOVq5 BGuyxm1gYsfxApPrCJs62etTdquQ3zwVDyg2m5dyauP/hpTKBjlliDCB833c1sB5hvBi 2QjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218709; x=1784823509; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rBvoXcE6fyfh67dFVJmu8Fy0oBNY0thH0kUQWM4o/d4=; b=MfzFc0qrOfvYJusm7lmP5QdGL4YOI8P1zg03B+Np6EHUAUnUB826UBsIneS44dWCGF jq/nVKrDLF+A1QeOub2xvp44rlgwj0dwWitc/staxt1ws7fNoP37QnY+FbBPVedRTfT1 T06I2S2ChBQK7VGiJm9UkqcIrcWjkk1fJqlXSBxtRMkMkhuWywXbySzh0qf+KDF/R0nt Q/Qj1/XbR3S0E19VhqAMLZHUfjwHEb/kkOdV3WtdwouUgP6g1277iEjxUTeIAiElDx8L tm5yK54arZ27LsdGdLaPccpDotLa00NjpvGj2Hgh3j1JhbCDxEcqsT9SE8IPEmjZfdhO H4ug== X-Forwarded-Encrypted: i=1; AHgh+Rq0FFyGrfuZLJ6JL45kXUeq4vxBHYFKwZ5uKT0MhsEKIw5JRujj2G2lacrn//Pv9Q0U+U/LgGfGF7Foc+A=@vger.kernel.org X-Gm-Message-State: AOJu0YwBVoRt9HDZKYkymxElNPYRmgEhr7VkueLsKNCECMiKpqVz8TBM Ou9dj+sRBpyeY8dqwnWBGjXv7cRtd6L3kbIqQAXuRnGeh8t+sKV7PEchXe6cODN4yuIt5Ki7f50 7JW8Eq043RTOxZsZt2/jVPHwGtrA8LUpG/k5KD8CLCnOk4JxKtOr8FLtKlN3h2IczZrU= X-Gm-Gg: AfdE7clndNsRo58m9tnmLTqNUwN/BO/o2tn/Cg7ecKr/6/yCY+crO9FCkQBCiDuxCBl odEFDQywvtJPtsRMsOgDhzZ6ExqciM+x1lTGiy8DXhQ0sP3vWyHtbpS27P57Tyd2FqA5hbgJkMR +dlDtjBmNmkUJgR1CKr77y93J7s6KrzILm9h8dA1KZAuWMZli8vVsjAy4DTxkI0gxllq5wB3BfC Es6kNq49kYLYy496KkdUe8COWL4bXenfTz7noFt2gOpEqJdJhk8H8X9GkYSprMaCFPBR9QZn01n IVaCZMdtJdpx3laxLgan/5V0OpvEX4mTgp8lBKlDRHrn4qhftMeZU1Q1qpMNEczHLudFgA9802F OMVSNQmH3X8MGOtRC2KN6YX9vUdkUw7YmVNxHyPHEy5YCVm3LYrr0YVddD9T09XZYqBt2Qeb0AK vfm5TubvG3cwThmvHkjIO+x+rmmU2FiJwLHNmmix+6qGKSe70b6Ao= X-Received: by 2002:a05:622a:112:b0:51b:f40b:2fac with SMTP id d75a77b69052e-520be692394mr2840861cf.50.1784218709376; Thu, 16 Jul 2026 09:18:29 -0700 (PDT) X-Received: by 2002:a05:622a:112:b0:51b:f40b:2fac with SMTP id d75a77b69052e-520be692394mr2840331cf.50.1784218708837; Thu, 16 Jul 2026 09:18:28 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:27 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:20 +0200 Subject: [PATCH v4 03/11] power: sequencing: Add pwrseq_is_controllable() API 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: <20260716-monza-wireless-v4-3-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=JeeMa0KV c=1 sm=1 tr=0 ts=6a590456 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=4a-8Ivk512-2hps7UIkA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: liMyVhjWDzu6Db7IouAhlYNYzK0HE3qw X-Proofpoint-GUID: liMyVhjWDzu6Db7IouAhlYNYzK0HE3qw X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX+cIZN3jqPVtf WM2gj9xT80/WmsHbQEaqgyeUkIvWDp/hW+0SAFAbQaFUNVFO8DViTAbvTDocQTE0lp5Te0IrWgM XHUsy2+0OBWft7TjzpNqd7JCWOEKC1U= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfXxoT6VFP0wqtz Kxnm9bDuu0ubU4NAIZndH260b+S82c7GfksJzHPMUoxGeMxiixlLnYKo/ASdqPjt4XCoNq1FWfv /GP+kYV4SmKTBVxTbFDpnN9LaeZb44/w4aLanQD75LuBWlaNgF6/BK27Y0BWPbH/Rn9y3tUh4/5 ZMHH6u/HPft6qyN+XggLWLs/aTWiF6Kx9sgfVCiS/9hNeQuqMzvQvOfV0j6588uvfewobxU9VsX NKHMzyDwxA8JoJGJQv+WVJVJkZKBKUsEGnKr0MiQz4ZqIhV0XIJ4/inXbTvyMxUpcDAwaalmyhc v3X0C5KuSOmgqCzI92eypE1eF7VqoSsB7hf95X84LZxcR631yqXzp+auDKvaBGV6e1sKRwAT935 VU3LBSAfejXjPI2LTtsARo10ZFu6G7sYUzb8NkW5t2Uzh1cWnfhyVE4CXeVsmv2qSin4Ru3BvOs SV36iGOAHZ3Ob3WerPQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 On some boards a power sequencing target has no host-controllable enable for its function, for instance when the enable line is not wired up to a GPIO and is hardwired to an always-on level. The pcie-m2 "uart" target is one such example: when the M.2 connector does not route the W_DISABLE2# signal to a host GPIO, its enable/disable are no-ops and the consumer cannot gate the Bluetooth function at all or exclusively. Add a generic pwrseq_is_controllable() helper. It reports whether the target's final unit provides a host-controllable dedicated power actuator. The target can implement a new optional is_controllable() callback, reporting whether that actuator is effective on this target (for example depending on GPIO presence). If the target does not provide the callback, it is assumed to be controllable. Note this only describes the target's own enable actuator. It does not imply that a power-off reaches an electrical OFF state, since a target may have multiple consumers. It also does not mean that power is uncontrolled for the target's dependencies: those may still be gated on their own. And it does not restrict consumers from calling pwrseq_power_off() either, which remains valid to drop this consumer's vote on the (possibly shared) resources and dependencies of the target. Signed-off-by: Loic Poulain --- drivers/power/sequencing/core.c | 49 +++++++++++++++++++++++++++++++++++++= ++++ include/linux/pwrseq/consumer.h | 7 ++++++ include/linux/pwrseq/provider.h | 8 +++++++ 3 files changed, 64 insertions(+) diff --git a/drivers/power/sequencing/core.c b/drivers/power/sequencing/cor= e.c index 02f42da915985339d3de507fc36dd158b0035a99..cabb3d0885f94d9d70e0631861e= d6905d91ad3bc 100644 --- a/drivers/power/sequencing/core.c +++ b/drivers/power/sequencing/core.c @@ -182,12 +182,15 @@ static void pwrseq_unit_release(struct kref *ref) * the state lock has been released. It's useful for impleme= nting * boot-up delays without blocking other users from powering= up * using the same power sequencer. + * @is_controllable: Optional callback reporting whether enabling/disabling + * this target actually controls power. */ struct pwrseq_target { struct list_head list; const char *name; struct pwrseq_unit *unit; pwrseq_power_state_func post_enable; + pwrseq_is_controllable_func is_controllable; }; =20 static struct pwrseq_target * @@ -206,6 +209,7 @@ pwrseq_target_new(const struct pwrseq_target_data *data) } =20 target->post_enable =3D data->post_enable; + target->is_controllable =3D data->is_controllable; =20 return target; } @@ -991,6 +995,51 @@ struct device *pwrseq_to_device(struct pwrseq_desc *de= sc) } EXPORT_SYMBOL_GPL(pwrseq_to_device); =20 +/** + * pwrseq_is_controllable() - Check whether the target provides a + * host-controllable power actuator. + * @desc: Descriptor referencing the power sequencer. + * + * Some power sequencing targets provide no host-controllable enable for t= heir + * function on a given board, for instance when the enable line is not wir= ed up + * and is instead hardwired to an always-on level. For such targets a call= to + * pwrseq_power_off() is still allowed, so that the consumer can drop its = vote + * on the (possibly shared) resources, but the host cannot gate the functi= on + * on its own. + * + * Returns: + * True if the target provides a host-controllable power actuator, false + * otherwise. Also returns false if @desc is NULL. + */ +bool pwrseq_is_controllable(struct pwrseq_desc *desc) +{ + struct pwrseq_device *pwrseq; + struct pwrseq_target *target; + struct pwrseq_unit *unit; + + might_sleep(); + + if (!desc) + return false; + + pwrseq =3D desc->pwrseq; + target =3D desc->target; + unit =3D target->unit; + + guard(rwsem_read)(&pwrseq->rw_lock); + if (!device_is_registered(&pwrseq->dev)) + return false; + + if (!unit->enable && !unit->disable) + return false; + + if (!target->is_controllable) + return true; + + return target->is_controllable(pwrseq); +} +EXPORT_SYMBOL_GPL(pwrseq_is_controllable); + #if IS_ENABLED(CONFIG_DEBUG_FS) =20 struct pwrseq_debugfs_count_ctx { diff --git a/include/linux/pwrseq/consumer.h b/include/linux/pwrseq/consume= r.h index 3c907c9e1885dc2958043a9a733fbe20bdf95f6e..f70f694c19ab73f70ccf775aa24= 902bfcc982a42 100644 --- a/include/linux/pwrseq/consumer.h +++ b/include/linux/pwrseq/consumer.h @@ -25,6 +25,8 @@ int pwrseq_power_off(struct pwrseq_desc *desc); =20 struct device *pwrseq_to_device(struct pwrseq_desc *desc); =20 +bool pwrseq_is_controllable(struct pwrseq_desc *desc); + #else /* CONFIG_POWER_SEQUENCING */ =20 static inline struct pwrseq_desc * __must_check @@ -58,6 +60,11 @@ static inline struct device *pwrseq_to_device(struct pwr= seq_desc *desc) return NULL; } =20 +static inline bool pwrseq_is_controllable(struct pwrseq_desc *desc) +{ + return false; +} + #endif /* CONFIG_POWER_SEQUENCING */ =20 #endif /* __POWER_SEQUENCING_CONSUMER_H__ */ diff --git a/include/linux/pwrseq/provider.h b/include/linux/pwrseq/provide= r.h index 33b3d2c2e39decafac6c6fca9254ad4329d90e94..7285ad94a2214070a1c27f25c78= 3f51105705b36 100644 --- a/include/linux/pwrseq/provider.h +++ b/include/linux/pwrseq/provider.h @@ -6,12 +6,15 @@ #ifndef __POWER_SEQUENCING_PROVIDER_H__ #define __POWER_SEQUENCING_PROVIDER_H__ =20 +#include + struct device; struct module; struct pwrseq_device; =20 typedef int (*pwrseq_power_state_func)(struct pwrseq_device *); typedef int (*pwrseq_match_func)(struct pwrseq_device *, struct device *); +typedef bool (*pwrseq_is_controllable_func)(struct pwrseq_device *); =20 #define PWRSEQ_NO_MATCH 0 #define PWRSEQ_MATCH_OK 1 @@ -43,11 +46,16 @@ struct pwrseq_unit_data { * the state lock has been released. It's useful for impleme= nting * boot-up delays without blocking other users from powering= up * using the same power sequencer. + * @is_controllable: Optional callback checking whether enabling/disabling= this + * target actually controls power (for example when the + * controlling GPIO is wired up). If not provided, the + * target's power is assumed to be always controllable. */ struct pwrseq_target_data { const char *name; const struct pwrseq_unit_data *unit; pwrseq_power_state_func post_enable; + pwrseq_is_controllable_func is_controllable; }; =20 /** --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 899B037CD41 for ; Thu, 16 Jul 2026 16:18:34 +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=1784218720; cv=none; b=VmjRVd0vUsloiyZ3Rr58/mrCJuHwigLrcYlf+4AHhDlVO6M4Uqni7BJ+OrpLctG/xF1UboCqXR763F3rTnK6q3AXBpvplDw+DjzStWaeETZX/9s4VHxlsziHTmM5+T9gp3QJxl2rwDpyuMS5olX03rdr4fNs8GiqEnADekFDVNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218720; c=relaxed/simple; bh=axJo0QsdmJg35RBqGTfo/6nxaHHL0FSyQ0xk2oeWY4I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FlKB2jDW3TXN6G3+W3oEFY2BBElBe5kk1agRtterL0U3oUBV/eQfNJ++AXwSybIffpMw8t1iJC8CGtW+9NLFgDM2Zynt0QTh2kN1Tz4yYVCvhZJ2H9lY9MjF84jkinGJIE3e5zngFACAV60yiyouVHJPTLKp8p73VbnIKcCT/bc= 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=YZhImFcT; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TdzOILi1; 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="YZhImFcT"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TdzOILi1" 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 66GDJoln2734544 for ; Thu, 16 Jul 2026 16:18:32 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= fwGrtQXZOZLHM8CW5djIH+FZH0mzGoPJDhLtNrPv7hk=; b=YZhImFcT5m2pF49g syOvP3NGIYqkDogY3x5jnadc1wR06vX/bkETO3PenWTUjQ+T6WwEd2ZM+IcXWgyO zV1UAP2Yrn+gT4ODEp+2KZmDDaQJzmtbERrwA8trGQ2hojdEqaXMbjwsph830Qu3 plAVXxqn7AOsHEhpPkLlrrWd0g4yx5jgw2tBaWoQmDnQypSCxP0SzK1zwiH14tR6 nutMMBFRLxuX2ZPwLopXt6oozxhblP+pc4Dubi0IwOCXAWKs67q94CnKWHjtu5rp gefAZiXvinNRiqrR2yGh4pDiAc5JqOShuyEJNwWNTqZpEbamiCjWs5NJj5p0W5eb /6qZPg== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fevkv1ufm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:32 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1e6f602cso64988901cf.3 for ; Thu, 16 Jul 2026 09:18:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218712; x=1784823512; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fwGrtQXZOZLHM8CW5djIH+FZH0mzGoPJDhLtNrPv7hk=; b=TdzOILi1SS5+kjWpoLo0A6SdOZ5VCR4BpHEuqyyfBTVi6SpB0o/n6Jp2MVENo7ddkF bA2VDq6YFjrC9mg5mmNL7bb9BK8dbCxjixlo1Da6UAS2hKRvOd8UfduqshOui3ow8rrv ZD1dcJlo54fX9DaKDw7E3jtbiBqSBbu9+3Q4ytl/TQUnkb7df1G5bS6heBAGAyoEmdWt X9Voy7gD1+mKCDIDfBKFegQCdOiL9wotJaFqPOPkfa/hj9i0TPApKIBsRx2GFh18LTOT 5pQf9/d7n5bICzRlB7NJeMnTdW7Va1ddy/nrI3dNZZND21SLtGlLrA0R0GftQdFsDXc3 azZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218712; x=1784823512; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fwGrtQXZOZLHM8CW5djIH+FZH0mzGoPJDhLtNrPv7hk=; b=eAzpB+QhzBTseiiJjHf/hWaMdcHXPXLXaPsCQ6m/oUd87J5ntsQEAtR8/uMJyDrekm uOwGFOOuluORmdup3PBZRZPCI5HgW2S8nXNQN9ltbhyyZVnbb7e0NGK/UxX+agI7UWdV dfrwCygAsUlW6yqXrxLMP/J/6Sz5bqT7MIqy3HaNxyXP7g5h0F/vcF9f8Rq/eV0VmuSH W5vlKbx6wQmG5dcvpduhUEQjjVf3NrRUvq+S9KcQtNn2zJqJ8sJj5ldRoZN+mQzyYiez 8DYpmkpOoFhbfRl5lKSMal+2RQWWB1uZEQTOdvDtBzkXQJ2Q+T/Xtask5b0suN6K4NEU trWA== X-Forwarded-Encrypted: i=1; AHgh+Rq2seU5GTTuaDctnNiRO2lxujt5nLS5aEmoUJJe13JkB83G0YaKX74RPJPco7DXj7r/91naeE1mvzDYdUI=@vger.kernel.org X-Gm-Message-State: AOJu0YyKaJnXUYMVUwBTY8MMuURl1dA+5X509fAksyaIMgIFNWWamL/C LS6rFsxuJD3RNP+QQALn6dXE4gLpy8Q23ydkc6s2tfBOf4V6M7/2ZhiuHdfz2EWQEgWOUGRPAjk HQrNREIccbKfasf6rny/QXYAFwsrXJCvW2tJBAfFAKU5pHRsh7ud54HSCiQQ8oq0qqBg= X-Gm-Gg: AfdE7cnI5iv2pzoqUDusWFJDtdBz4WQR3xiNyO6LY4oMZQEQSOF35X7UMNfp1P6pty5 T0J4wtyGHcz/Huf1kQ0U9ENVgXB2Y2FuPO0ztQe81IbY9JjyfUJSOdDooaGJ5agcuEgbdYLDa7c QdExYkNURbkkZdbh28Abgt9TDUuhayy2u8PoHWMtFkeFppzUJ4CVao1RuQwyLDk/jqjgQNhqXYe G+uC0ntUvWPUaBlyEzMv/P7V0rYF0jgwRmStlz4qXPjwR4GdyC658vi3zozV680DGK8ewdGkOZV 2I9Oqpet72A3zihthGJ7QJWrgwhZhecA2fCKiVE9Omswj+LdURwIeAyZ16QKtWm+xnPBaSACgId JXDZvgdy1P0mPdUL47OVR49mBADY/35sta9zPRmh7YzDJnIEdlul1rICxYb5gFgmnGt5aZtlPgt Ek//+sTCuaCvq3RVtx3ZELvN0AoNA+c51aKu5H74Tedc/7gf2pC/M= X-Received: by 2002:a05:622a:248:b0:51c:257c:8166 with SMTP id d75a77b69052e-520bcdf04fdmr2656741cf.33.1784218711637; Thu, 16 Jul 2026 09:18:31 -0700 (PDT) X-Received: by 2002:a05:622a:248:b0:51c:257c:8166 with SMTP id d75a77b69052e-520bcdf04fdmr2655801cf.33.1784218710638; Thu, 16 Jul 2026 09:18:30 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:29 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:21 +0200 Subject: [PATCH v4 04/11] power: sequencing: pcie-m2: Report power controllability 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: <20260716-monza-wireless-v4-4-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX7y7kegEZ7cgn LhzDNVkYvbCBauFTGKzFK/CyJidX1HIpZ5UZ/gJ5aPXZs46kibu/YTJcWYhuKNq08wcowgB1TNY WIQfWcY0h+QuRiM3n1zxk6XczcN9s/Oi4Nx69FcddoPVtjynmPJBDNnXIX5jP7NLAjuHZV698ZY OEYRBHObTJ4PUpXCgzhnhjt3trzGhpX/JHi+ZQFlHNMB718Ya+idx+HPRPN+vY3qNR/DZiHoqta g8XuBLgTUc03SJeTW4+3CVVbIzzmYbS2RJyWah5GtOAzHApWAXtHvLLQMVH3r19FcBNx80EH+2E dnm00ciMwmyVez984ulM9DB7SjG7lZxu4bQPluRq17LiCTmFWjcVL5ckUsz9u9mo/BVx+pAo6cO BKpJKNLv3UThl4/wqKSwz17BK7OCQuWVThQCU4sWshpnNaBLNFzvhZ05QZs/EVSaJ9LVfn7hAxc 1CLv+wlPaxSZCgfOzwQ== X-Authority-Analysis: v=2.4 cv=WrEb99fv c=1 sm=1 tr=0 ts=6a590458 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=Wval_j7vKiRkorSqWqkA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: uZX1aXjPT7_HEjsDpm_3v1vbEcDDnOPC X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX7k72WOgIfYFI S1F8y42lmVUfZvkzFVXA2K3EG8+da7FGJ6bNjPxXyAvWGuzkBV6+niXkRbkgsiAOpRCnq+ywFyM PEtw7u0shrtAD/Y0p25OTaNktCDwmz8= X-Proofpoint-ORIG-GUID: uZX1aXjPT7_HEjsDpm_3v1vbEcDDnOPC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 The M.2 Key E connector gates/resets its functions through the W_DISABLE1# (PCIe/WiFi) and W_DISABLE2# (Bluetooth) signals. When a signal is not routed to a host GPIO, the corresponding enable/disable callbacks are no-ops, so the consumer cannot gate or reset that function on its own. Implement the .is_controllable() callback on the "uart" and "pcie" targets so that consumers can query this per instance (based on the runtime presence of the W_DISABLE2#/W_DISABLE1# GPIOs) via pwrseq_is_controllable(). Signed-off-by: Loic Poulain --- drivers/power/sequencing/pwrseq-pcie-m2.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequ= encing/pwrseq-pcie-m2.c index e3ba9169144dabbf0c553c0a4302c3b511fcaaa1..8e4cb778e31f66aa171ad9831d4= 213e17d2e6145 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -84,6 +84,18 @@ static int pwrseq_pci_m2_e_uart_disable(struct pwrseq_de= vice *pwrseq) return gpiod_set_value_cansleep(ctx->w_disable2_gpio, 1); } =20 +static bool pwrseq_pci_m2_e_uart_is_controllable(struct pwrseq_device *pwr= seq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + /* + * The UART enable is driven through the W_DISABLE2# line. When it is not + * wired up on this connector the enable/disable callbacks are no-ops, so + * the host cannot gate the Bluetooth function on its own. + */ + return !!ctx->w_disable2_gpio; +} + static const struct pwrseq_unit_data pwrseq_pcie_m2_e_uart_unit_data =3D { .name =3D "uart-enable", .deps =3D pwrseq_pcie_m2_unit_deps, @@ -105,6 +117,18 @@ static int pwrseq_pci_m2_e_pcie_disable(struct pwrseq_= device *pwrseq) return gpiod_set_value_cansleep(ctx->w_disable1_gpio, 1); } =20 +static bool pwrseq_pci_m2_e_pcie_is_controllable(struct pwrseq_device *pwr= seq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + /* + * The PCIe/WiFi enable is driven through the W_DISABLE1# line. When it + * is not wired up on this connector the enable/disable callbacks are + * no-ops, so the host cannot gate the PCIe/WiFi function on its own. + */ + return !!ctx->w_disable1_gpio; +} + static const struct pwrseq_unit_data pwrseq_pcie_m2_e_pcie_unit_data =3D { .name =3D "pcie-enable", .deps =3D pwrseq_pcie_m2_unit_deps, @@ -133,12 +157,14 @@ static const struct pwrseq_target_data pwrseq_pcie_m2= _e_uart_target_data =3D { .name =3D "uart", .unit =3D &pwrseq_pcie_m2_e_uart_unit_data, .post_enable =3D pwrseq_pcie_m2_e_pwup_delay, + .is_controllable =3D pwrseq_pci_m2_e_uart_is_controllable, }; =20 static const struct pwrseq_target_data pwrseq_pcie_m2_e_pcie_target_data = =3D { .name =3D "pcie", .unit =3D &pwrseq_pcie_m2_e_pcie_unit_data, .post_enable =3D pwrseq_pcie_m2_e_pwup_delay, + .is_controllable =3D pwrseq_pci_m2_e_pcie_is_controllable, }; =20 static const struct pwrseq_target_data pwrseq_pcie_m2_m_pcie_target_data = =3D { --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 5DA0B37E5DD for ; Thu, 16 Jul 2026 16:18:37 +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=1784218726; cv=none; b=nq+Fsh6Lmes4xDpK2Lod4sK6xgSKbe363TWnOHQXiU0mkmH8/ksFm3GjRrRaitZDYDLEeqerT0hpPWj8Hp3H9Ju+9YMPILI7bHJrKNJKYWynd+p54KyG7Tuxt+EkTwdQypZMvqmWr4whc4q1YleYb7Fn0PoLGlXlOT4aINWd+ng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218726; c=relaxed/simple; bh=+a2PwVdZXIN3LhIMygJSk6N3n7PMH7uL5OC0qbZNTaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mq+F5/xXU/Mb1FulUl2ttR6Urr4qtrIaJ0OWQX+kabhqRxSkiZ6NsvxSUpqhGinl0GpFrlbfB3aoWMNUlj3w83xhgGChsNnu72cyNr+4CIjhVlZsdqipNgQcowt56clCFZ+guo6rQRL3dIak/kTiUqh6aqusWZIcA+03M6d+SbE= 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=GYgQrQs5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jwinWmL0; 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="GYgQrQs5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jwinWmL0" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GDJmNA2897271 for ; Thu, 16 Jul 2026 16:18:34 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= Bxz9ivOcsV3K3IoCDrb+Cf/SPwDvUEWG7a6NEPjdfs4=; b=GYgQrQs5ChdhQ7ok ReS1TaxAQ007HtFnLTqhwEoCVtxQ379eB+DhXh9+EyB3WcpPU8tjWydTQzd+WbsY oiOz6wf9BlGenF6QpKTBp8JUVF9NoDGQqQuTd9c0WQtE7aytueC2hYjZ0TSxsMfp Ozzxle9TRnByuUSVxKviwTCqzC5K7FDVPlYrgiBBroOrgoyzJSTp+ap8dP39G3TU 1NXC+PRyxXiNTIHaT4LNz6d0jqJEx+ls3OwkWOlfWekpRFvkJDXWnT0BgQp5AcFC Jy4dP07WLACoVYkYxhQXOHrsm/d7UTtWSYKzoVrsdCwFil2gdAEukVqJpbl477qr 6UfDZw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feve1syrm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:33 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c0e702df8so73409801cf.2 for ; Thu, 16 Jul 2026 09:18:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218713; x=1784823513; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Bxz9ivOcsV3K3IoCDrb+Cf/SPwDvUEWG7a6NEPjdfs4=; b=jwinWmL0nxCwQlr3+JBLMWqen3zzkqEYXZCFjRKXgf8HzsePXWKugihbD8SLNwZ7rD R6cGAri7eHBD+mA6/3ja3KGuDpMUQIqjsBRzlsqri/jFXRAWiGbqqPBTW84m9fEWfE0N oDY2QKocXSzz7TxSSe6d2By/gNeEVv9/LNxx7UicFKUjT3GboIbtqT3oGVeJ5OHRO6UZ ZdYK40WPEEtsmTpgF9A+HIxJhdJFoET5smc7DP2+sZyf4CzIliydf4Z4osBh7geeGin8 Aw/elL4C1K4ljP8NLQMuxpQ0LqPjZtV8HIn4wHwrymI5usklAy4SRIDRN5SaBLH6P4vy 8Kzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218713; x=1784823513; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Bxz9ivOcsV3K3IoCDrb+Cf/SPwDvUEWG7a6NEPjdfs4=; b=P4deqtA4mt+CHlnHqUtoa5stqW12I12dGSjzPJ96yepXYfm/YHopm3RzKDl1eIdR1v psyht3jfGjNfbndHv7NBCdb8exKhqtg/pymWvVbhGzbLSwvzQNrODODmXxq2qHYuuu+p llEYCLsKhgqUXXiPHTGCyNeKbHEtJ4lnC6ar+JxKYs9xWZLqkknyMai/cj8VSX4MFrZO /N68wFg/pq8EzC409ChLkiCk9HDnoMIP8BQkxCji+aGuUmIKntJwHmPOtp0T2zNACeM3 vgVY77ZsiBiLgGCbGEPyM39hYzSlDAW2GRw4DB/OYqD3r3biCbTteLsbtZNgYc798PHi 9YYw== X-Forwarded-Encrypted: i=1; AHgh+Rp0bwx4RalncNlGfwPZllOPNn4TVT2zw7R0TE0LMvDJODoKkCnKsFTEN5b+1+bcZLvrKLAn6rAIi0NJMq4=@vger.kernel.org X-Gm-Message-State: AOJu0YxM5VJ+NyYxz8nTHeDat/1d3Uv/GLQI1xPIMH0KWLgI43w+hHh1 x5Fh7xnnelm5VXMvHf/cm/JhBmYL2c4cJyDj8p/724UTsxoAopvfMEXzvEFsfj2ceAEpbAJvmYm HfgIp0p0Y7vhXNdT2sq9S52ijfi+/ohJocR5WDdMD4TRj+oV0sYOojQ2qRI1ry38A8Os= X-Gm-Gg: AfdE7cm7aNdcIee089sze4+K0IuZ6M9s5/F3sPvF4HKqkD5ErRYy45/uhFKzWO3fC6p 0Q1WbTmYZwmYvDFWxyKUv+/eXMvtzaVgr9F4cS9WUOisfOXaihRSHIJ7L1to1oTY3bfBL5P2mdy y0H/dI9sFR1t9Wi9Ja/rhQyD7SG5rL0bWsqU3XYJEykoXNFiL18z91k4ylstnKBpqvZlLaIO2Ph S1ROM+kWA7MBx/rY3LFuoSOck3Nn400iSKkLnbu/TyD9bKDI2AAUBIoOboL0EbApDlvqniW8olF RKsq4W9sfw3PwJjCX+bv657pFRfCvsz7jjaFnACkfl9EIjV1Nzo3raAZaYxfGbvK/KO1zdfeXdf q2UnRD0zmbDDkoTjASGIDny+3KbQTYZ5Rl6sEFgds4E1iw+4KuHaOXBug+I2tA5U2EqY89uVNMS C3iIcQ7x3W037uc6gwL3D7dK9NuxhOWK3X5P+yXHQPWklnIjJKGF0= X-Received: by 2002:ac8:7f13:0:b0:51c:7b12:5fde with SMTP id d75a77b69052e-51e42497dc8mr115017571cf.74.1784218713175; Thu, 16 Jul 2026 09:18:33 -0700 (PDT) X-Received: by 2002:ac8:7f13:0:b0:51c:7b12:5fde with SMTP id d75a77b69052e-51e42497dc8mr115016901cf.74.1784218712393; Thu, 16 Jul 2026 09:18:32 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:31 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:22 +0200 Subject: [PATCH v4 05/11] power: sequencing: qcom-wcn: Report power controllability 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: <20260716-monza-wireless-v4-5-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX29JjHU1H/ltf W5RQqojhrgXsVONDA/v4u/6CM/71mXwK9DFLuG89rzl6oNJbGcyRUk5HIpMYE+Drn+OBAJH8Kia IQGV4NssJ6znSoWYllbygHUPRSS+fs3sULs8U6u11B4/Wq9e6tXcwI1YpWyzTF4dqAyXKnicBks RcORuuWEEGLan8+gXCMedLVcjlN8CRJ+25TTIkHA6S26RLloYzhV9FCcGfwdbCFZiQxWSyeBUuu tB+So4Gqhxo5bxI3/1UDE1T7D3At+obAa/7l4fHHNnzWJnLv2fSvBrbLxAnqcCAB/PVPf3Ak1zG aSn8gcVGsWVXi2MeK5yWQ+5XoInupiksfCjSsMFOmao9zTSEkRwfAmB6oF5n3obtas4oBmbTEMF OXJWW6rLdfLymkFUQ3mVrLkU4LhV2fGAortBdroWnXfGzcg0uB53jQbPxTbbqHU2514zf6HB6UM jQb21TCR9u1/nBCUKNA== X-Authority-Analysis: v=2.4 cv=DvpmPm/+ c=1 sm=1 tr=0 ts=6a590459 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=QWuo0IUDA92h_ITipQ8A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: PQS9nmtdu5cOov4m5139zJ65_DrjR0k_ X-Proofpoint-ORIG-GUID: PQS9nmtdu5cOov4m5139zJ65_DrjR0k_ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX0CFiU1L9he9C G7WKM04JvldFa1MGMpXpbttSdcjPJY+VxRuumNtuqejHqbPNgfH4RPU1fD2YW0w64jxVXW0d0ZE /FweRMIj3BJ1mzRUOJQOUjNk4fbLLgY= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 malwarescore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 The "bluetooth" and "wlan" targets drive the BT_EN and WLAN_EN GPIOs to gate the respective functions. These GPIOs are optional, on some boards they are hardwired to an always-on pull-up and not routed to a host GPIO. In that case the corresponding enable/disable callbacks are no-ops, so the consumer cannot gate or reset that function on its own. Implement the .is_controllable() callback on the "bluetooth" and "wlan" targets so that consumers can query this via the pwrseq API. Signed-off-by: Loic Poulain --- drivers/power/sequencing/pwrseq-qcom-wcn.c | 30 ++++++++++++++++++++++++++= ++++ 1 file changed, 30 insertions(+) diff --git a/drivers/power/sequencing/pwrseq-qcom-wcn.c b/drivers/power/seq= uencing/pwrseq-qcom-wcn.c index b55b4317e21b626e050e022648147770ca7f386e..19b51c94653b7f8e7e1f5a2fe90= 6c0cc1cd46aa8 100644 --- a/drivers/power/sequencing/pwrseq-qcom-wcn.c +++ b/drivers/power/sequencing/pwrseq-qcom-wcn.c @@ -184,6 +184,19 @@ static int pwrseq_qcom_wcn_bt_disable(struct pwrseq_de= vice *pwrseq) return 0; } =20 +static bool pwrseq_qcom_wcn_bt_is_controllable(struct pwrseq_device *pwrse= q) +{ + struct pwrseq_qcom_wcn_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + /* + * The Bluetooth enable is driven through the BT_EN GPIO. When it is not + * wired up (e.g. hardwired to an always-on pull-up), the enable/disable + * callbacks are no-ops, so the host cannot gate the Bluetooth function + * on its own. + */ + return !!ctx->bt_gpio; +} + static const struct pwrseq_unit_data pwrseq_qcom_wcn_bt_unit_data =3D { .name =3D "bluetooth-enable", .deps =3D pwrseq_qcom_wcn_unit_deps, @@ -218,6 +231,19 @@ static int pwrseq_qcom_wcn_wlan_disable(struct pwrseq_= device *pwrseq) return 0; } =20 +static bool pwrseq_qcom_wcn_wlan_is_controllable(struct pwrseq_device *pwr= seq) +{ + struct pwrseq_qcom_wcn_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + /* + * The WLAN enable is driven through the WLAN_EN GPIO. When it is not + * wired up (e.g. hardwired to an always-on pull-up), the enable/disable + * callbacks are no-ops, so the host cannot gate the WLAN function on + * its own. + */ + return !!ctx->wlan_gpio; +} + static const struct pwrseq_unit_data pwrseq_qcom_wcn_wlan_unit_data =3D { .name =3D "wlan-enable", .deps =3D pwrseq_qcom_wcn_unit_deps, @@ -258,12 +284,14 @@ static const struct pwrseq_target_data pwrseq_qcom_wc= n_bt_target_data =3D { .name =3D "bluetooth", .unit =3D &pwrseq_qcom_wcn_bt_unit_data, .post_enable =3D pwrseq_qcom_wcn_pwup_delay, + .is_controllable =3D pwrseq_qcom_wcn_bt_is_controllable, }; =20 static const struct pwrseq_target_data pwrseq_qcom_wcn_wlan_target_data = =3D { .name =3D "wlan", .unit =3D &pwrseq_qcom_wcn_wlan_unit_data, .post_enable =3D pwrseq_qcom_wcn_pwup_delay, + .is_controllable =3D pwrseq_qcom_wcn_wlan_is_controllable, }; =20 /* There are no separate BT and WLAN enablement pins */ @@ -281,12 +309,14 @@ static const struct pwrseq_target_data pwrseq_qcom_wc= n6855_bt_target_data =3D { .name =3D "bluetooth", .unit =3D &pwrseq_qcom_wcn6855_bt_unit_data, .post_enable =3D pwrseq_qcom_wcn6855_xo_clk_deassert, + .is_controllable =3D pwrseq_qcom_wcn_bt_is_controllable, }; =20 static const struct pwrseq_target_data pwrseq_qcom_wcn6855_wlan_target_dat= a =3D { .name =3D "wlan", .unit =3D &pwrseq_qcom_wcn6855_wlan_unit_data, .post_enable =3D pwrseq_qcom_wcn6855_xo_clk_deassert, + .is_controllable =3D pwrseq_qcom_wcn_wlan_is_controllable, }; =20 static const struct pwrseq_target_data *pwrseq_qcom_wcn_targets[] =3D { --=20 2.34.1 From nobody Mon Jul 27 18:58:56 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 1BAFC37F72E for ; Thu, 16 Jul 2026 16:18:40 +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=1784218727; cv=none; b=j5dkmmjP6zlf0nHuIwW5bY5l4xr/YTxSVoA8Az7w4QttnHU+ChvT2WFNvZILhqz+suZReODeQs+KuCYdQCsFutXPa+kJJF+3exkM2ReESHs17SfEYSHqC+bVPHKKDYm8zjQBIyDd0ZkrsWeuAh/kYQ1FMh5FWb7FmNAf8ERSF7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218727; c=relaxed/simple; bh=USfleaUVsPGQXLVUjbre3lqCswipT+fDSdHAw6xnKWE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MVDFU6bkyOMlMxqrGTc9i5Ipm9IWMGN+BPHfqyqykLMJ59csml8dEMEXWyVpZFwww6E3i5GvoxKl3aVliguqwROD/KM8+R38leTQ5hT0QLL9Ys2BTXjxjbdpXJHadUVzbGbdtjcvCXocLlPnCiLnDAvUpG8ukw5QkRTKXKcDAgE= 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=eF7HNDpK; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YC+lqfyR; 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="eF7HNDpK"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YC+lqfyR" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GFNdng3006271 for ; Thu, 16 Jul 2026 16:18:36 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= CUSdiqJFqg8hwn97+boIemtGgCjGndnT1ZgagmOIPvM=; b=eF7HNDpKPmRuaZx8 4/5SO3m/WN8rIxWyJyqRFTfL9lRHETXR3kVhlb8C5ztZX8WFv2SBm/TlzxayYyYZ TlfMWnXUpU3HZrgPVsdvRLFQUwkU1xFcdnGbXvP/SfM8ZVAolffTKbtAdcpEvNdQ vugk7lwawDpVEjYSSZlZhk4vb0OwXs91STcWn/L1NlrFLDUJI3clQdfeQB8rdj1q iSQcFURn8OKp8qPFzVBS9JLjcQiefrQttOxtBpoObeSrOZcjYqEuelyiFNZq+AWH QY5OmoHodAV6VF3CnnsqjILym/2UpvhfnReqpJjgSPyUnAxp7+4Hi79vSAiS9XSL NHhXUQ== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ff1we87kk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:36 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c0199faafso76923161cf.3 for ; Thu, 16 Jul 2026 09:18:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218715; x=1784823515; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CUSdiqJFqg8hwn97+boIemtGgCjGndnT1ZgagmOIPvM=; b=YC+lqfyRPr+1/ocKvubWH+dlHQnxyk8QyXOFmYpNZQsYLlrMjFl4GEqEYHOaw8HLRj Is6v3g1u25bRb2iin5Iy10VpA53F68i2ydF0GA8PNBJDujE6o0YkyKgavciTj2bCH5Vm GYARibBAYW5EIFx7GwuGQ2tWOeEY1CGhwqcxvRwAfWarGtkOq9hnmt4QBQSM3ZUgVIt6 jKF7YT/D8GPyTZEDLjcszL/bM497C46ypNu+V1wE5M4jD2Vs0JBTSI8DJC9zBs+28Fqr qtPZ8m4Xe3NhesWFANhyQtyoKwY4gKtmkD7CCf36KVhFudWK6WeUCw+vvO2k1kj33jK1 7Dlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218715; x=1784823515; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=CUSdiqJFqg8hwn97+boIemtGgCjGndnT1ZgagmOIPvM=; b=SyYgMcmN7LkMiDm2ggvvz30pnVnqP9Svija1utIUYpEOs8SrBYBlrMp/qQXrzmUw18 O1Fxnja3uS5f+nkZmXxjip6HKBfFQxXZhImA6he2mkbOUp33BGHOgFMHzEFRiLl2A/3/ TqkXk9srppRK+YyYojR0PMU0sa5PH86PkFfK5yvWYTIq3bV1bIU3mWeoRNDdRjSOpXYY DiogBFTjp3ryNRQXMzjiagpvNbsimCvH3Z5/fHlA5E/o1bYUqTukEtX5Amj0mwdxg0Uh tJieh5B5K6/kDDOuDan/As5wJarcLxRzmZFuv6+JcBx3rtIupAoWWHzEuO8uTkzdkJgx LD9Q== X-Forwarded-Encrypted: i=1; AHgh+RqjhFlYz2434fvB46aB4o5E/5QCkPxQSgoWX2RSdVw4iAzXF9gRdOgP6M4BTKOEjLEzxKHNye1FvGK4IJo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3AkFR8Ci1DzkN154Rt3pNv0RreZ5XjfXZ/y7C3/RIQU0lNDUB tnHqiPXUKKEz2Yx+tdtVfG32Lge/Mc4Zjn9MpOOfMXTGm9ye4OoubI2XS9fDpmyofeyPLSxHaQX 2/F/rnhDbHTjJ9VQ9MC8KQidSpGvLj+LdHEl82nFlnfnACKne8emsAHxxfdg1NyZZl3E= X-Gm-Gg: AfdE7cmYbRwhw2HknUcMDLpUuTdDYzEE7VP3AKJrRJXDMCxoRgZUeeZx9Tb4SrusiMC 7edCF48myzXXDzVRkKukko4IhW3vEDHAJmGF6JY/rEwzUOJG3X4C7bI48IVeZfRFy5VvmvvqKCj a1C5sJc23rWFztxankvYLfCv/sn4lV8DQ/lFC6/ZxitPO2uAGnt88T5MuagTHN/BfBpFSsdzOCF j9igSDWT/AZmMDtTElwJ9uIz8xVOGfsqT6LZaMBrouG+FRzxcxcgwuLnfBPz/KVDEGZTQI5s50L i6iBqQPhU27dvl9qIt6yUZWM/IpbnrROVbQ8uphKbtHOQKMPRZvPK3YWfe2y20qrOHOxepO606D n9jcUpQpKzhUYofU8MHbxzSwFuVQ1aDCc3f3yx6pMhArZNk15mtdE5Qbww1aLD9mCrY+lUfvIPB vWPsTq+Cp30KUfEDh+obER8YJHtvPGtjcQ+/q9eT5Anzhje2TpNgg= X-Received: by 2002:a05:622a:190c:b0:51b:fde4:cd4f with SMTP id d75a77b69052e-51e4237cd7bmr114630721cf.30.1784218715115; Thu, 16 Jul 2026 09:18:35 -0700 (PDT) X-Received: by 2002:a05:622a:190c:b0:51b:fde4:cd4f with SMTP id d75a77b69052e-51e4237cd7bmr114630181cf.30.1784218714223; Thu, 16 Jul 2026 09:18:34 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:33 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:23 +0200 Subject: [PATCH v4 06/11] Bluetooth: hci_qca: Set 'bt_en_available' based on pwrseq power controllability 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: <20260716-monza-wireless-v4-6-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX+kF3+F2tVizZ IMnQCYX25Nf9ZRQEhCHFu0YNdsFWoxe9qnPF7HsGIPCiH9cAWbIP2o5p2f37AHXa8mfbezwPsMf qC90TV7OUTkM43JsfsqV6tVZ2ImHVz29ZCdLKv4ga5CGK2SB4OiU8y+kLembQSXOYS6kq9387fN 6XAuD2oJTW6fdejfZyUZmgRJrGe3YevTCSLtpInwWbAHtWpXTDemKJjVqRWxPlfw1EVmYC2Misd OJsOJX+Ql+DC/ggESY0cXli/gxrHT7T91Z0T5igBVo3xlPaVmLQKwBjWAGw6FO7ULZkW9FGb5wU I9OqrABfhcc6XzpiG+oYA1NV6lcj5BvyIL0YYct+yGy/Q8Bd3AbWsJ9IV6x+e3nSmesUXmDSfZz BmUk61eeI5/QVGG5kfj2Xar0FLnF82osWQLzwggwvWIKJRZN3nvVR2LAz+ILABe7hWqgUi3Q8/V 3NhBt1nmxXQ+mpY/66A== X-Authority-Analysis: v=2.4 cv=JJ8LdcKb c=1 sm=1 tr=0 ts=6a59045c cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=kStU6zbECEpzgAoP-VAA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfXxBaia0p41JFf /hFeku6g8eBN3iA/7w5kB3SFnzuWV/HjdCkKlfnLqK7ByerEm5gHE834AroH8/nYqQOHaT/bCH8 yjwMXrW8fgvuzzaTHtzy7F9/h4QIaFs= X-Proofpoint-ORIG-GUID: xhrJgrT7raE3UEdIIiKOww0UhbyL0j4o X-Proofpoint-GUID: xhrJgrT7raE3UEdIIiKOww0UhbyL0j4o X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 adultscore=0 suspectscore=0 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 A Bluetooth device only needs the non-persistent setup if the host can gate its power, so that it is actually reset on the next power-on. When the power is controlled by a power sequencer, whether the host can gate it depends on the hardware wiring, e.g. the presence of the BT_EN or W_DISABLE2# line. Query the generic pwrseq_is_controllable() helper whenever the BT power comes from a sequencer, regardless of which provider it is (M2, WCN, ...). If the power is not controllable, clear 'bt_en_available' so that HCI_QUIRK_NON_PERSISTENT_SETUP is not set. This is based on Manivannan's original patch that keyed the decision off the W_DISABLE2# device tree property, it now uses the generic pwrseq helper and handles the always-on case. Signed-off-by: Loic Poulain --- drivers/bluetooth/hci_qca.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 17f436484e1e74d1dd690ada22134315abb767c4..41e8c302abc2a820022d1783f1f= ad76b358ae67c 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -2548,7 +2548,18 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) return PTR_ERR(qcadev->susclk); } } -=09 + + if (qcadev->bt_power->pwrseq) { + bt_en_available =3D pwrseq_is_controllable(qcadev->bt_power->pwrseq); + if (!bt_en_available) { + /* The host cannot gate the BT power individually. + * Treat it as always-on and drop the pwrseq handle. + */ + pwrseq_power_on(qcadev->bt_power->pwrseq); + qcadev->bt_power->pwrseq =3D NULL; + } + } + err =3D hci_uart_register_device(&qcadev->serdev_hu, &qca_proto); if (err) { BT_ERR("serdev registration failed"); --=20 2.34.1 From nobody Mon Jul 27 18:58:56 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 58599380FEB for ; Thu, 16 Jul 2026 16:18:43 +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=1784218730; cv=none; b=listgtuMvfEFv5MC/6E/Ft90iQG8aNw51jv90s88UEz4bqxwZjWEaiSxUmRzLuD+QeqwZMMY0Pg4J0KFwwbgc84FYvGCSpSpPsAHeZgQEoTodMdrh8j0T0J5TSawO8D2aymFodzcoob8FOKCsGIIfaQzFRv9+2TPjqZBVRMC+kg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218730; c=relaxed/simple; bh=xM69rdwj/4s4KU6DoN0jDrVsnH2NCoFH3DVoSAMRnTQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o50oY3PLtdKLmJKHXHvlGWgKCWh2r/ZOjaQjQGGqCo+dfIuj1P2kwmlMqX5B/ZScxBVgCD5uWMnEn+LtVL1owJwNNq1ii7jNGt1fCZA+VDegZERD6nQpYwDQC/cLTQ4u28DCLu/wVOjlQRqnC79e8qM0NHyuP12EsNSawZtbCoQ= 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=UxjjV5cA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kdhottZX; 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="UxjjV5cA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kdhottZX" 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 66GDJtPW3988626 for ; Thu, 16 Jul 2026 16:18:39 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= iA2Yiw9uzbXh2h9O8pkl6U4Hyg4t6O2C/nSL7Zx+AZM=; b=UxjjV5cAYc4dm11p NTuTvZnrsFOqxPZILMOsJaFgQDrpoZYqim40h89ov7KLgMxLtsmx84PtEqDHsS4p yPkK2R00/3fnKa8bpxFqjLnYKESFx4ZsWq4LNefkhOYMm+IzYtUjTtn/N4qCA36I 4zaBEq6R5wCGQ9llAKuZwcRRsNBvvI4Wa2iTAL47aEihx2W6oV2PuGVOOeN7Nb04 kOsGcgArOHBz8nQXJ70cTp119vMJ08++1Fy8rv6gwnjDQXpMnW+/eXwG8pZotkOM Wo/HCysdfzirKxO6uvYQ+tcXFhw6AE/9jKb4hoENi7bmWn0erKneee1sIXz7JsaG NO3kjg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feq3pk72p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:39 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51bec738909so58678121cf.1 for ; Thu, 16 Jul 2026 09:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218718; x=1784823518; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iA2Yiw9uzbXh2h9O8pkl6U4Hyg4t6O2C/nSL7Zx+AZM=; b=kdhottZXjKTZUFdtdCuB4QtiiTW9+OEYbzW4pK2VxER8kjttrXsJ+1pMYmcLtmj2q3 fbRu6toNf8RNWnVb2yR57ga/JcZlxRDxoLWeq5ZpVs1D24NCbT7+Ch2oFMAXRs0Z1lVW F7WD4FqjMpzjDvp8bKH5rxxeweVLGY+O6R5qvmFL1i1DV6mE38GgrxABSypEwHUKoPN5 sxrVZSSmi7gYFr6kUwB8c9bajZeojkOHAqocKp3tyXgwyPrxued4XuBtKLUkbzRnA8Jf GuOY3J59DUoouQU3/7wB9DCUZgAVGXdDzHXJ2X8S9bwPZ7HxnxXEBSIFZ/S/JQWUzuKb dcWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218718; x=1784823518; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=iA2Yiw9uzbXh2h9O8pkl6U4Hyg4t6O2C/nSL7Zx+AZM=; b=a8Fqyvx+6iRSgsg8pgfOCzGXRiKITy240N+RUfDghbjqU1MHqkBpMB/H2LkCyQoen1 rIIg4k33SwxQ+PoM9rvNlxUd5ufw9fHmuMV4SFTQbTjZIoprAHjUK8DIVpPbICycUr4C siGLKHVrcBTlo2zJM7Je9d07gsuONtxWsWVTyFt+bf3H6P9nBAjh+jV41GO8EXAhuAmi OT4ogIUyzzqO0ixGKKSEADzm7NX/IrZdhQlN6aoqevfQB+ZmxT0u5P4LzOku044vc98Z +UNiC1IO4cl09gv3CSabPg2OGr4PRzBAt2etudvmw6emoTEOQKNM86H2rBS9XIHB+ow3 luMw== X-Forwarded-Encrypted: i=1; AHgh+RpxTLvLiVTLrP+vJD/KTYfAEySg+jlmf+88PYaeFFznZeV9q5fnJChV/jEPmQPFQ1ztB9WVMDzwlkAabyw=@vger.kernel.org X-Gm-Message-State: AOJu0YxyJatT94JayXCptp4xVOL1awswYCagAfifYMH0G/qY4bDMQabU Tmd4b5//iBeH9d7a9jfYNmhNAbvdrXrTvHId9KjcIP35pGuS+n4K6UuC6EYHKpdsI5nrTTx6Rg+ l3FykMjPCt5zNTcinYOx30jJ3Bhozy3WpbkLFxDRYaz430xgwEf+hb1XJ4FBubOclO2s= X-Gm-Gg: AfdE7cmqKtHmvEkiUfMV7vt89AKQtaq5wZrjyqXKHtG1nCp3Zs/t/DIcvMwMIXP/6As 7SeoJgfj74tyZEsnGruooq0SI4IaoSe4/lvmeLWv60vikO/8eWH8XVcCTpT5sjDGVlzxjzITy57 eW2rm2T11ObjMXL7Adkg8a6gkXrtq7Ypnatlj5jU18wvxzQBa5tvOZQQDf3YYOKsuT7uGAePivJ J6FX9FiD1KpBwiZ/mlnJ7QRNYNb4aCd8PAT+gN5/9nJ7j0O/tLmXpcYpmR75cQLoX1N0tT6VcbI qzcT7x9tle16rpnsEO5MmsEVLNQiNVCmEtb4ogxq/Y4l0hmrW4aE8aE9p2XFpWetLsntzdZ4btB 8alsmaCcuidxurj3rLu5PX052iV/cX8BRFHCFXUarvwkl/zPrlfPxHKdXgRUoFtiLK0Pvw0l9fu E/VKyKlPVeHCfl1EKoppi+Neggz53uGs1vLxXo+dIAH13kYhsgMgI= X-Received: by 2002:a05:622a:4c0a:b0:51b:efe9:27c0 with SMTP id d75a77b69052e-51e42497dbcmr119477211cf.71.1784218718045; Thu, 16 Jul 2026 09:18:38 -0700 (PDT) X-Received: by 2002:a05:622a:4c0a:b0:51b:efe9:27c0 with SMTP id d75a77b69052e-51e42497dbcmr119475821cf.71.1784218716229; Thu, 16 Jul 2026 09:18:36 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:35 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:24 +0200 Subject: [PATCH v4 07/11] Bluetooth: hci_qca: Embed bt_power in struct qca_serdev 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: <20260716-monza-wireless-v4-7-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: XotbbIyPppDurDt6ISwtWeNpvSBZORby X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX33iT+xcsUzPb 3iyRCr3MtuhZN6errOjTfNAwy2A7fP9k+nZvQJqfc8Ylf47PB9tY18WRAZPxtcJgMXJrAEhzfMP fSFLyiKffErbc5NXC/ouJmHuZUnn48I= X-Proofpoint-GUID: XotbbIyPppDurDt6ISwtWeNpvSBZORby X-Authority-Analysis: v=2.4 cv=PN8/P/qC c=1 sm=1 tr=0 ts=6a59045f cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=Z5-lucBUan0SmjtTDS4A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX009ni2C3jgHV b9g8SMAP5SYvWp4RhkFz/lUeakuUkDLzg4iBTt1S/ZydOGhHHQPBnAq1EE0bLtAEw4mfkDpQ1cS qsqHJtE5RHca3dKCQvXjJEyst/K72gnucxK5ZuFZnAsPNa/bq5+jOrLG2nrDNiLtMrTxsDnbg7P C0A5axyFHb1R5NaEj/7zwbRyzgWZ/0mlD8WBMwqomTMi1ygrPsvtm6MeXusi02seQy571l8VMkQ KxAZBVFtLp4TIA6DivFCJ39mmahfOBQbpyfTTES0vjGeUCBzmIBqZ7BUyd9XFTOHiQpeoegDsb1 nOMgR3iPYU+P4l51GBbvMbxuCOCfNl2ejBePqoTDA8bdMSeFI6T4nsVY1PV/SU3ZnNEyt2mFfhH f/T1wfnIz7Ghwkr4/qwPET4/MWnUfiSssuH8yiOWQbr2/jXJ9EYSjYzT/tmRohfBbuySxNk5tp9 J0yB+5UHfCWtuKBVQ5A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 adultscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160167 'bt_power' is allocated dynamically only for a subset of SOC types, using a switch on the SOC type that mirrors the one that follows it. This is about to become pointless as the power sequencer path (used by M.2 modules) is independent of the SOC type and needs 'bt_power' populated for any type. Embed 'struct qca_power' directly in 'struct qca_serdev' instead of allocating it separately. This drops the extra allocation and its dedicated SOC-type switch, and removes the need for NULL checks on the pointer. No functional change intended. Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- drivers/bluetooth/hci_qca.c | 72 ++++++++++++++++-------------------------= ---- 1 file changed, 26 insertions(+), 46 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 41e8c302abc2a820022d1783f1fad76b358ae67c..25c4387136245fca25e375951f9= 60d7240116781 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -226,7 +226,7 @@ struct qca_serdev { struct gpio_desc *sw_ctrl; struct clk *susclk; enum qca_btsoc_type btsoc_type; - struct qca_power *bt_power; + struct qca_power bt_power; u32 init_speed; u32 oper_speed; bool bdaddr_property_broken; @@ -1776,7 +1776,7 @@ static int qca_regulator_init(struct hci_uart *hu) */ qcadev =3D serdev_device_get_drvdata(hu->serdev); =20 - if (!qcadev->bt_power->vregs_on) { + if (!qcadev->bt_power.vregs_on) { serdev_device_close(hu->serdev); ret =3D qca_regulator_enable(qcadev); if (ret) @@ -2242,7 +2242,7 @@ static void qca_power_off(struct hci_uart *hu) return; =20 qcadev =3D serdev_device_get_drvdata(hu->serdev); - power =3D qcadev->bt_power; + power =3D &qcadev->bt_power; =20 switch (soc_type) { case QCA_WCN3988: @@ -2256,7 +2256,7 @@ static void qca_power_off(struct hci_uart *hu) break; } =20 - if (power && power->pwrseq) { + if (power->pwrseq) { pwrseq_power_off(power->pwrseq); set_bit(QCA_BT_OFF, &qca->flags); return; @@ -2313,7 +2313,7 @@ static int qca_hci_shutdown(struct hci_dev *hdev) =20 static int qca_regulator_enable(struct qca_serdev *qcadev) { - struct qca_power *power =3D qcadev->bt_power; + struct qca_power *power =3D &qcadev->bt_power; int ret; =20 if (power->pwrseq) @@ -2345,7 +2345,7 @@ static void qca_regulator_disable(struct qca_serdev *= qcadev) if (!qcadev) return; =20 - power =3D qcadev->bt_power; + power =3D &qcadev->bt_power; =20 /* Already disabled? */ if (!power->vregs_on) @@ -2417,26 +2417,6 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) else qcadev->btsoc_type =3D QCA_ROME; =20 - switch (qcadev->btsoc_type) { - case QCA_QCA6390: - case QCA_WCN3950: - case QCA_WCN3988: - case QCA_WCN3990: - case QCA_WCN3991: - case QCA_WCN3998: - case QCA_WCN6750: - case QCA_WCN6855: - case QCA_WCN7850: - qcadev->bt_power =3D devm_kzalloc(&serdev->dev, - sizeof(struct qca_power), - GFP_KERNEL); - if (!qcadev->bt_power) - return -ENOMEM; - break; - default: - break; - } - switch (qcadev->btsoc_type) { case QCA_WCN3950: case QCA_WCN3988: @@ -2451,10 +2431,10 @@ static int qca_serdev_probe(struct serdev_device *s= erdev) * the M.2 Key E connector. */ if (of_graph_is_present(dev_of_node(&serdev->ctrl->dev))) { - qcadev->bt_power->pwrseq =3D devm_pwrseq_get(&serdev->ctrl->dev, - "uart"); - if (IS_ERR(qcadev->bt_power->pwrseq)) - return PTR_ERR(qcadev->bt_power->pwrseq); + qcadev->bt_power.pwrseq =3D devm_pwrseq_get(&serdev->ctrl->dev, + "uart"); + if (IS_ERR(qcadev->bt_power.pwrseq)) + return PTR_ERR(qcadev->bt_power.pwrseq); break; } =20 @@ -2465,8 +2445,8 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) * let's use the power sequencer. Otherwise, let's * drive everything ourselves. */ - qcadev->bt_power->pwrseq =3D devm_pwrseq_get(&serdev->dev, - "bluetooth"); + qcadev->bt_power.pwrseq =3D devm_pwrseq_get(&serdev->dev, + "bluetooth"); =20 /* * Some modules have BT_EN enabled via a hardware pull-up, @@ -2474,21 +2454,21 @@ static int qca_serdev_probe(struct serdev_device *s= erdev) * through the power sequence. In such cases, fall through * to follow the legacy flow. */ - if (IS_ERR(qcadev->bt_power->pwrseq)) - qcadev->bt_power->pwrseq =3D NULL; + if (IS_ERR(qcadev->bt_power.pwrseq)) + qcadev->bt_power.pwrseq =3D NULL; else break; } =20 - qcadev->bt_power->dev =3D &serdev->dev; - err =3D qca_init_regulators(qcadev->bt_power, data->vregs, + qcadev->bt_power.dev =3D &serdev->dev; + err =3D qca_init_regulators(&qcadev->bt_power, data->vregs, data->num_vregs); if (err) { BT_ERR("Failed to init regulators:%d", err); return err; } =20 - qcadev->bt_power->vregs_on =3D false; + qcadev->bt_power.vregs_on =3D false; =20 qcadev->bt_en =3D devm_gpiod_get_optional(&serdev->dev, "enable", GPIOD_OUT_LOW); @@ -2522,10 +2502,10 @@ static int qca_serdev_probe(struct serdev_device *s= erdev) =20 case QCA_QCA6390: if (dev_of_node(&serdev->dev)) { - qcadev->bt_power->pwrseq =3D devm_pwrseq_get(&serdev->dev, - "bluetooth"); - if (IS_ERR(qcadev->bt_power->pwrseq)) - return PTR_ERR(qcadev->bt_power->pwrseq); + qcadev->bt_power.pwrseq =3D devm_pwrseq_get(&serdev->dev, + "bluetooth"); + if (IS_ERR(qcadev->bt_power.pwrseq)) + return PTR_ERR(qcadev->bt_power.pwrseq); break; } fallthrough; @@ -2549,14 +2529,14 @@ static int qca_serdev_probe(struct serdev_device *s= erdev) } } =20 - if (qcadev->bt_power->pwrseq) { - bt_en_available =3D pwrseq_is_controllable(qcadev->bt_power->pwrseq); + if (qcadev->bt_power.pwrseq) { + bt_en_available =3D pwrseq_is_controllable(qcadev->bt_power.pwrseq); if (!bt_en_available) { /* The host cannot gate the BT power individually. * Treat it as always-on and drop the pwrseq handle. */ - pwrseq_power_on(qcadev->bt_power->pwrseq); - qcadev->bt_power->pwrseq =3D NULL; + pwrseq_power_on(qcadev->bt_power.pwrseq); + qcadev->bt_power.pwrseq =3D NULL; } } =20 @@ -2594,7 +2574,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) static void qca_serdev_remove(struct serdev_device *serdev) { struct qca_serdev *qcadev =3D serdev_device_get_drvdata(serdev); - struct qca_power *power =3D qcadev->bt_power; + struct qca_power *power =3D &qcadev->bt_power; =20 switch (qcadev->btsoc_type) { case QCA_WCN3988: --=20 2.34.1 From nobody Mon Jul 27 18:58:56 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 A2BA437E310 for ; Thu, 16 Jul 2026 16:18:43 +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=1784218729; cv=none; b=YeGp8iTAfA8FsDp9IDAFAd9y8EWBfd1azTJDtHth15+125wExxAd77yakCZcsAkTwXDUmMCNcO2OlSoDzUy2oF7zPyZRsTpNe20/DXqBPy8YYptKVKp75m49dlqyB7QH9beDuLYAhnC7tfC0mD4cSGdvisZI1yUc/2rW/AVg7Tk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218729; c=relaxed/simple; bh=Xp5FK98F4aXVm1IaIUQg7a8ZJjOswS0wCMRvU+2daPg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dpmPcNoUpzj2biHO4WrHbdVuEGFHLHhPsfU9xjBLXBzF+T9z8+vobOjmpNszB1jTk4hKcYGTZ7x2FNOTCJf2arU505f/C071llnFXYpigmt0jg9apH2+W+XPz9b5ourZBvUs9B9TLbdRRP2xVDwDubKSKuB7B89nDCTn2+P4QC8= 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=Qt9HQI1v; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jHUgnpi4; 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="Qt9HQI1v"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jHUgnpi4" 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 66GDJd9p3988086 for ; Thu, 16 Jul 2026 16:18: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= KnNGLFZg8KBKoCKQkuNws9wP1R08Qecii+OaAbhSdTc=; b=Qt9HQI1vaCGtbfBA SyYNQAwcyr3yHQqJVYqzqZqd+cZhHgb/Jl6W8i0VtNlkGJY8npAPSaKcyuAigC9y LoVjcmqvwnqbrCy/wjM+VQ8JfFk4VDCHrF/1d9uXZzWvadgFMrZI3mrpwbpH+uLU YQMX/zShurTmpUekIIYcDH8a4byUacD7taKw7LTF+HdHSknXVTA2QGsYQYdJxvLa P3g+mKHbdufnTaHjARHtfkWhLBHCYXllDmyf7QC+y0D/L2AuOFz8DB+KfotvAhuy dAdMUBaCv2VvFCwCwRdlYGrJ4JOCvDSHWWcVMFr5w1Hh3qY7oUQT16vz/n+Igab0 VfSEgA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feq3pk72v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:40 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-5174a23afcbso41357631cf.3 for ; Thu, 16 Jul 2026 09:18:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218720; x=1784823520; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KnNGLFZg8KBKoCKQkuNws9wP1R08Qecii+OaAbhSdTc=; b=jHUgnpi4Ax1M1gjwGwOgYwezwl75AI+qTtCycIkTSJMTvAAVWT+LiL1gblTXTt4Mlv 5RzOL6Orp/F2xErGOpkpGqo6yG4xMkCgV206Q7d5qfUqGJz0AfZ5NL21GrrB71bCWHrj hfT/VIBhgOraWFpjpy0M67bYiMzCd0WWwTBSTGNX955J6HF/PFR9JI7CgAw1Gzt/vjAH 4ya3sNEtNytA7qcKLNhEt3ADEKs8MY80qgOyImf/fe+diyKFvosxmC/Mp74Ta9iKF2s4 BPJ+6+Yj/WEEIKCNchhXxWAk7WZLQrFL0e6ccDmJQd4c2lXe8mGFBPOLjhdP3/LPtPdd L4Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218720; x=1784823520; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=KnNGLFZg8KBKoCKQkuNws9wP1R08Qecii+OaAbhSdTc=; b=JsbVqMaJtm6jIM3EyUh2D0BKct3o8G3kH4DPTXzgInjd9pPegChKGeaD8kgLcVUK5a qcCWnXYQSGuhcdNNnBKvB3eOB8ibr4ejczo30O5YnHnUNbHhn9xhYMshBvMgk4rHAMN3 e6M6r0ZU1bnyxBt7/A92asa4Jd6K1Vh1znDlYppXakh/U6rJHwOx2LzQLt3+gYkNfsUI crHSSFYlQlN9130MQcd2fw3hiU04iTaGVhVcyuCSsG4Jec35lcxSKqcJlvlzNaTbzvD4 lbQ+ryaQV7T2KyV5XUS10994N+i9OLTLck5f2ESUYUZ2LOcGjss3AjrrUlhGcLS8/7Ww W0Ng== X-Forwarded-Encrypted: i=1; AHgh+RrJ6b6xFnHs4EK5n/VAxXAbPezp5NTxiNf+qfHpAjSApIiI2HADCuh+4xZ5FPwHTubMFJjJVRBXBok5C/8=@vger.kernel.org X-Gm-Message-State: AOJu0YyqhN00WGkAyqgpXgfmYJuj2MpiturqQp41QIHqBjacs6GLrFba nhlysylIYNqBX/dE/JuF9gK23rmr2aYR0zOa7h6LO0cmetqaSCYTasRmXaflOSNFkpm9nF73zKL cI/+E9KNQtNH1gCXcaLWgzHeXvGGah9YOsU8+vaRGHO5TXW9hxjA6jJidJgri7eqWvic= X-Gm-Gg: AfdE7cnpg7PLYD1mKs9Ir3sXKd03j/2f/YUQxk9BJGgK7b6gHnFuhBo0ZO0s5BQ3sZS 9x321FwmBwTYZSCxEhgpzHf/wo3HsDwoasSyxuv9VawQYMVu1cqBubq8MKNRqbgasyHpAqc+Kcd 3m7UPIRVBQhBbSjpO7MNAVEQoMw/xAyfe9UhXxfvcRfu2bem4oaDvMmwmaFxtUXzdFl4fYtijKE s2vp2MsRiEwBHJh5GQmhII3LjH/FLQyZ/EA+UX2hAmaCVLybZwzWXDjSJMdRwNGSidz+rPoTkMf wZwtiveY079nYwk56FGnGbYKJY9cw8K7cTa3crTO5ZReQmsF6TWVomfbEfSNAxmAl+c22kLBnSn 1wt4b4dPBJV7aOZJVohD298HJ7J9GXOWlzJrp6fGnB8kocScu/6GKA5zdAQo6aShvBkfd98ERJo 9832odS03YS+X+HLgstm5yGqzC5W/LeFnWnDF6OuPmkr/ak0wbv4g= X-Received: by 2002:a05:622a:130c:b0:51c:1b78:b044 with SMTP id d75a77b69052e-520be7934d6mr2443411cf.61.1784218718713; Thu, 16 Jul 2026 09:18:38 -0700 (PDT) X-Received: by 2002:a05:622a:130c:b0:51c:1b78:b044 with SMTP id d75a77b69052e-520be7934d6mr2442971cf.61.1784218718124; Thu, 16 Jul 2026 09:18:38 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:37 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:25 +0200 Subject: [PATCH v4 08/11] Bluetooth: hci_qca: Support QCA2066 on M.2 connector via pwrseq 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: <20260716-monza-wireless-v4-8-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: CTMtuhpmOyaM3XTUlnEM5U2k31__WsGv X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX+scbiRzJt0bf 3R0yLl2He/AHSVCx9qo8k6LaJUS/7lrfCE7mgwRnigMdAw/+S+5wjJWKnPs6hGJyFHZ9roAtHPl JHlMPX48pBueqA309+b7Rp6rUadLcL4= X-Proofpoint-GUID: CTMtuhpmOyaM3XTUlnEM5U2k31__WsGv X-Authority-Analysis: v=2.4 cv=PN8/P/qC c=1 sm=1 tr=0 ts=6a590460 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=CW3gqymaXyTMcD2nhgsA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX1BJjaVLCzHRF Hhwm55Nx5ufhJmp8gRtJ6P5x9dnIEDBBLXc8i1oopq0goag0DEe/S0KErj16D753pMuBTlUEBLy aqAJmE6g25LZQnCITv4QNiGDyPOGDuU2bsSZdEOy194UjfRjfMZI19i1oJe6hc4WnSL/uC8wELX i9ZWfD06tPIrzKcYTiYowhf9BfVk8cTree/7KhnyY3nnK4pm2pY4aGtiwWX2pNK3tzjZ2KndDbP f/EKmq33K1AdxJ/QFKTizfb+gB2gTqSiPESxWAzzb5sxP9TZec9a55TWTiGlL9Hmd5zFcq5TaqG OuqO/XY9PtWEGA1HkuHSp63uulCt5xRHKOrjD5R7oMxR8rieQT38ztXh4XU8K48fyHYjmxF37C1 Xm836Ba/iua4THtxCfWWvkxEWH4ZpMZ6RScjkUDxdBoDUDJBN8XYiRr9fZBOhQqNv8QZFPY+ke2 sha1v8xeqRJcipJp3qw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 adultscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160167 For QCA2066 (and other QCA chips) on M.2 connectors, the UART enable is controlled by the W_DISABLE2# signal managed by the pcie-m2 power sequencer rather than a dedicated BT enable GPIO. When the serdev controller has an OF graph (indicating it is connected to an M.2 connector), acquire the 'uart' pwrseq target from the connector's power sequencer and use it to control BT power instead of the bt-enable GPIO. This is factored out into qca_serdev_get_m2_pwrseq(). Reviewed-by: Manivannan Sadhasivam Signed-off-by: Loic Poulain --- drivers/bluetooth/hci_qca.c | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 25c4387136245fca25e375951f960d7240116781..22f6185a946ef04c45e41b2b341= 26e3f58d603ca 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1872,6 +1872,9 @@ static int qca_power_on(struct hci_dev *hdev) /* Controller needs time to bootup. */ msleep(150); } + + if (qcadev->bt_power.pwrseq) + pwrseq_power_on(qcadev->bt_power.pwrseq); } =20 clear_bit(QCA_BT_OFF, &qca->flags); @@ -2387,6 +2390,28 @@ static int qca_init_regulators(struct qca_power *qca, return 0; } =20 +static void qca_serdev_put_pwrseq(void *data) +{ + pwrseq_put(data); +} + +static int qca_serdev_get_m2_pwrseq(struct qca_serdev *qcadev) +{ + struct serdev_device *serdev =3D qcadev->serdev_hu.serdev; + struct pwrseq_desc *pwrseq; + + if (!of_graph_is_present(dev_of_node(&serdev->ctrl->dev))) + return 0; + + pwrseq =3D pwrseq_get(&serdev->ctrl->dev, "uart"); + if (IS_ERR(pwrseq)) + return PTR_ERR(pwrseq); + + qcadev->bt_power.pwrseq =3D pwrseq; + + return devm_add_action_or_reset(&serdev->dev, qca_serdev_put_pwrseq, pwrs= eq); +} + static int qca_serdev_probe(struct serdev_device *serdev) { struct qca_serdev *qcadev; @@ -2417,6 +2442,10 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) else qcadev->btsoc_type =3D QCA_ROME; =20 + err =3D qca_serdev_get_m2_pwrseq(qcadev); + if (err) + return err; + switch (qcadev->btsoc_type) { case QCA_WCN3950: case QCA_WCN3988: @@ -2426,17 +2455,9 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: - /* - * OF graph link is only present for BT devices attached through - * the M.2 Key E connector. - */ - if (of_graph_is_present(dev_of_node(&serdev->ctrl->dev))) { - qcadev->bt_power.pwrseq =3D devm_pwrseq_get(&serdev->ctrl->dev, - "uart"); - if (IS_ERR(qcadev->bt_power.pwrseq)) - return PTR_ERR(qcadev->bt_power.pwrseq); + /* M.2 connector modules are powered by the pwrseq acquired above. */ + if (qcadev->bt_power.pwrseq) break; - } =20 if (!device_property_present(&serdev->dev, "enable-gpios")) { /* --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 C77DC383C8F for ; Thu, 16 Jul 2026 16:18:51 +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=1784218735; cv=none; b=eJPDEeWwX8or3WlFy6TM3A0Qnp3DOSYt4/M0u5EkoY6adij7zYoi7A9zw5K6WJNuYnluMipq0YV3HLh+eJpion80gbRj3y9DLXuQoQtgcE2Wa2nitDLW5SCgtWEZNoHwtZKCoZ7UIz6kDfkq/MPuq14JKwBMRMTrQ+T8L10Ct7s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218735; c=relaxed/simple; bh=AKJ2rYuq3UXtw84o9Wv2rgBoSN8Fv9N585Y291G3LZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G3tkqmb+NsTio/ix4g+6ytdZusVV1hIzZsmI5roMyW2pN0CHyeFQcqv/XiajJaNZC0P5iLqtZ08azQjoXg+/9L49imylphiohiTJ23cUrA2tgnt+1K7XI3EcZWJdlNMMW7cO9x2ac0/d4PU71qzazBe36826vrJpSXCGUgXj3/Y= 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=iASYWyQi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=USWxPA0d; 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="iASYWyQi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="USWxPA0d" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GG1JSE3207620 for ; Thu, 16 Jul 2026 16:18:48 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= lSQgtm9Gy/goYjkRUPvH4fsLeTRSZbUNnPPwbkXFunA=; b=iASYWyQiOGz5VgA/ XTn0KGINXOl7iwun+L+oaK4UAkSppUti72AQRZkNnhLuR7vlGMy9mYHpJZTlL1AS UCOFvEyNexd/9B8cYqhNYm874EsqBHlM2inRvqdW77kI96fLNTftVFb/lYiKLtsG izL6/2U1hmISKnZKom+b04CJLrwYK/woloqfhSEsBa29akkHZBX4MrQzNyd+LEbG YONpu/dlF9TLwyHAXLY1UknVarwA3a50abYjFz/NLt7GhRneucqbDGu+n6johAq5 POp/1A0LGxxHL8eQfEhXIKFoL1sxcvK77aXu5LiRBgZT/jAy/9+35RjtxI8XPFoE ub5I5Q== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ff2f2r378-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:48 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51a8c689b5fso114656641cf.0 for ; Thu, 16 Jul 2026 09:18:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218728; x=1784823528; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lSQgtm9Gy/goYjkRUPvH4fsLeTRSZbUNnPPwbkXFunA=; b=USWxPA0dquVSQCqvRP/vyS8ZY0IzO7Jnh0OHbV+D/3D4RPjH7zGsTYDLljjG4kU9QU 0IV4wBID7q2wPFNRuUmYo99CUraiqK2SvWuyp14RKFcZKGiD52es1696Rp9oe2KaRyu0 bzL3pveUsKO1jOFvwSlftMq1LiscsWRo6IyeDK7Kiyt/Mqft+r2KzF4f29qZR1iWiqYW RU2CzbBWDEUDgDB0dJFOIh7gvyCuRaVhAvIGNk+lep2tRFgvFJzqwW+Cdnvkapf0uTZp xgD8b1DOobcKRlYN/Zd7JCjzopJUTx6YutGEIzJTx9o+jzjzvMjtjpuBtcEdo1SmogWg ln8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218728; x=1784823528; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=lSQgtm9Gy/goYjkRUPvH4fsLeTRSZbUNnPPwbkXFunA=; b=RDQCrfg4FC2sJTMCcDvaB49D2pvTLG25yAmnM2eiM3wHA3uJnRzLUSKrRiz4FYd5Ll z6OPoJY+nHtgnl1SkyERyOONIbxBHpid/Jqru3BkKqGHTzZinuMQQDp2IV5eiDF+LTOF 5CXqJQbc45n7QbCcEcYpPvUm+sXhHXC0D7a5i9WrjBgXDbzkC6Jggwjd0GAGkqDndF9J BGyOWdBB2q3UMnfoEkKFgRqDPJ4ctKwXhNed0sud7bDJJw+wMdJleXcpkDkGjQrAkmCq 7L/tdbE0+LNb9d93vYJbmSLMyth0as+GbpmQJaA5/7jey9/6WJC7jXkHbO3xqeCSdq+O P1dg== X-Forwarded-Encrypted: i=1; AHgh+RqISYMjdyK77X2DznQNXqT129XBZ1QhXL5qf4rkg9gM730YgSrNpcOXH2sJfAbqufEaWf0VBrFsv7GHtl0=@vger.kernel.org X-Gm-Message-State: AOJu0YxvTiy/8AGE9RHX2kwOXirxrp9JOnOEfOlXZi/5UeUPtpTMCEv8 oOVY5s4zq6xcd5xgTmcGJlez23WqTV/UvR+iEaaajg/MYNQxdG75bco+nK5ntjBcn7GXle0bOiK 1/3fN0MHc00KFxkdXk32ZpNPDYkf4hTUbbvf6UtocJY/bxzl1sLWBZdHwLPCUV1VcpzM= X-Gm-Gg: AfdE7cm1svw4hm5tWOa7hbcNYuavrxvFffz9CQWIN/Au+VY5G0D+6ryw0mm5k5HncAU sXI32Pypxg7FN5nTJjrwTRpQHozAqIILigh25PnO57o76iD/JYN5IigVdrEMcE+R+e86FwtjC/g yCTucD6J0IHjBWJOj2L6vdRbgSnHeqqmsZG5mCmxO/ItvgCG4VcC8rx9pjttolv1G5pDdmPa6pK Y+7vVKEwajqq2PVdbBs8Bj+EtZPai6Y7Ehseh7Q+yYSYU1B0rVrOnErKkDMBRKSBybToynoPfHY UZ9GSmPdv/MXjb6lcw0QAFoQrdhhQvVYabWvKDDdWuA7Ip7cR9Q2T/7lQPxiQOBFRdhRMxJ/G6F p+r4TrdXXegXLI0doDpdxmX5EZljI/Iz0apQ1ff7h3mkWZu8E4eJM3i13dxzWtLfT+5dsH8GhRt pPtZxzycxUhn9MDldFiX3s+gLJe4frAUG6auqAfhtKEs0ErI8HCU8= X-Received: by 2002:ac8:7f92:0:b0:51a:8c9c:7f3e with SMTP id d75a77b69052e-51e424dc615mr122134681cf.65.1784218727543; Thu, 16 Jul 2026 09:18:47 -0700 (PDT) X-Received: by 2002:ac8:7f92:0:b0:51a:8c9c:7f3e with SMTP id d75a77b69052e-51e424dc615mr122134121cf.65.1784218726995; Thu, 16 Jul 2026 09:18:46 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:39 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:26 +0200 Subject: [PATCH v4 09/11] dt-bindings: connector: pcie-m2-e: Add vendor LGA connector compatible 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: <20260716-monza-wireless-v4-9-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: 0SSIH0bQQZmeW6Z2Zd-ujeuJd69F72wq X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX+jXOSSxmHlLu 5mQ3Plhdtcfneow4BMCjfH0Ln1H6SBbiQWpyn6xZs5b/leyOHw+ueGk+bajWUL09FOWVyn7s1hh iTzB+pXR7ivq4umhq/yLaJWwoUP+qrU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfXwTobwnBgORHt BrUorr0aaJZ27ONu1std1F4mms0LGErmaAvoF49dXRuAwbOmxiEXxACsItllTt5vzUjsI/H1Vzz ZB+PpY/WkdUANFxgn6wM2dyP0CUk+Vhwv5XPJkJ+Tb6FjYXK/vew/x6BE6AZ/HcUd6fpy1TAc2t piUdwOg0Zreng+jncg7V0LbQj+6Ia7KrLTcxDENK5+wTXRVP459XAWNjs549x6lDG+mVe8pcmaC 5vNMuChyKl+36MlQuNwVbAYAbmnBUabKpfX2gg/YbyimjaRVWZz+Pv+0R4HqWgugZflMFH0PPo/ D0JN3kqSek8E65Kl26McwGg26URK7Bpgc/aA72QE+qobe7uqIImgOrZDD3bu2L5tNHrjEZzDhvq PGCMui+l1nRFl1fgwq3E0XmP12NHEwhQOOQBDXeXot4dSCQgewTb31eQi320WTlLKp5YJs2vU8A D7k7KjXLv45sVlIdZEg== X-Authority-Analysis: v=2.4 cv=NcTWEWD4 c=1 sm=1 tr=0 ts=6a590468 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=M8sXMW5dAYDte-7YvdsA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: 0SSIH0bQQZmeW6Z2Zd-ujeuJd69F72wq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 Some modules (e.g. the Qualcomm QCA2066/QCNFA765) expose the same M.2 Key E interface signals but are physically soldered as an LGA package rather than plugged into a real M.2 Key E connector socket. Such designs are not actual M.2 Key E connectors, so describe them with a dedicated vendor-specific compatible while keeping "pcie-m2-e-connector" as a fallback for the shared signal semantics. Add "qcom,pcie-m2-1418-lga-connector" for the M.2 LGA 1418 found on Arduino Ventuno Q (Monaco Monza). Add "qcom,pcie-m2-1620-lga-connector" for the M.2 LGA 1620 found on The Lenovo Thinkpad T14s. Reviewed-by: Krzysztof Kozlowski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- .../devicetree/bindings/connector/pcie-m2-e-connector.yaml | 8 ++++= +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-e-connecto= r.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.ya= ml index f7859aa9b63469cb43919c0b5719c18694c5364d..ce6173a0ec41cfe8ab4a5780940= 999c18674ab7e 100644 --- a/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml +++ b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml @@ -17,7 +17,13 @@ description: =20 properties: compatible: - const: pcie-m2-e-connector + oneOf: + - const: pcie-m2-e-connector + - items: + - enum: + - qcom,pcie-m2-1418-lga-connector + - qcom,pcie-m2-1620-lga-connector + - const: pcie-m2-e-connector =20 vpcie3v3-supply: description: A phandle to the regulator for 3.3v supply. --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 BFF7F382F1A for ; Thu, 16 Jul 2026 16:18:53 +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=1784218739; cv=none; b=Kqwgi5SImv/+jbsMPxfloQZujQ1JhkzklxezvKlLfZxKQCxCmC71PIN1iFVSeDo45XdDqmJjD1vvsiMvf9tM+KadkZiSHKkJXLqxsIBneq1K4562T+xI0V7vzidk/Ue4C3PKKbV8Tk+HNytAnY9rw03HG2KDdOvt8xZzMZps8vA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218739; c=relaxed/simple; bh=Zf1cAa5b0bNP3c/K70OfmcZ/HBkFtBvo/OVNOd6Dz4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VV2czbAM5NBAJ1UsScscNT5/6uxHQNne09iadXxUhbwbjtatQ/qRaUsIBv0kAp4VVaz+dpP1vb+XYELrYOX6UqAZYn2B/00cIb53Qr4p6+zbXgxwpvevQKSUoLrW8eedxQ84UTBkrv/dy6qi1ivx4XeLWvJ3sotRFEX/C9kIRmw= 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=iMPASNCl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MLs1F5sA; 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="iMPASNCl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MLs1F5sA" 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 66GDJmYh2734528 for ; Thu, 16 Jul 2026 16:18:50 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= +v6DYK+7R/PwBLwFZrKIBzxEvo+v4Yk8qTFPX7MFv5k=; b=iMPASNClIiwnBUs9 TLeukO+yIb2e0ANhVibK7//YIYfas5syQgkyc7wnsJQIoTvpZuYEOeHWBJu5VeY6 9yogaFGiAWNTzGIMIIezHR11yGsQeL0YgmV4H5AEiZSn0xPzwCfpa79pEc8vxDOm UM3B3mozqhtGxFH4trB9B/GYLX3AfqAbkhH274guXhQi1qBlML7CKztgKSocX+Tx Xp0bgnLDMnNLUKU0fuwGkEALmg3qiE9mew3+NbFjyghRnqQHK7CYzyuV0sndEKxg Xlp7gXtKJteK8Kbso8RPx1ZJBUev+l3SIc9ZjDrxmrrv/gmkWqj2tRSlZrx2DyHD 2P85SQ== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fevkv1uhk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:50 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8efad04d884so66852546d6.0 for ; Thu, 16 Jul 2026 09:18:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218730; x=1784823530; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+v6DYK+7R/PwBLwFZrKIBzxEvo+v4Yk8qTFPX7MFv5k=; b=MLs1F5sAHKcriSWlp/x+WJuWMmih/wkFDJ4cFY2lJhsMFo5oyhrmcmqayG5nFgd8ve yr7GCMwpMdlOYsbPEpTsyw0nXc1Cs2EHVvPwDApaJEu/13kEsADCRQ7CS/9cjruc7rhS VvHAo54HOG/k6jS2Y3CL4SgymZ4+pLfSo2UrzKZZQzu7D+Ylyjnd4pGetKpOJ0uhpf+E hfAIrdeC+fdg2MEx0c1J3iQA9PKt8WDcAQj5AzTJy5hjOZtc1Nfci0RkLXyVdRL6/y9e sSokfaizZlB3l3dAqH2FsvS1HSEeRIsN3hl2Y44qGjzxI1iLfTRvXp7YuS7cR0pL/POQ HiQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218730; x=1784823530; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+v6DYK+7R/PwBLwFZrKIBzxEvo+v4Yk8qTFPX7MFv5k=; b=n5wEOFfl9t5ePz4kJ4Jhy9TQAUJYhXK70vOghXgePcs7m3O1k3bV/vngsH+JukHdeK LYK9wjK17tDlYH6+bJcUNnZ5wlrpZ5FsHiSWALTjfzZUV2dBiNMSi+LgPc96k6yZamhC HSGX+T/OffdSFSrNVyKfg2di+PPJ3ZbBqA90UXCHUG69m9Vvu/Nt1LPeqJAxhQ6BHdcM hNuhEcWQUJw5lf4jFaM3zxCDPkGvj5FMy+3ZsGguDbhmrInzME9hmAQeN5iQHurs2dGr o38fpdsWO7NNTdYuqbjPXVBKLR1FoRkcEqHd6aQ5aM9olQDm7PFO1EvpgI8cMdfZtmHR EbxQ== X-Forwarded-Encrypted: i=1; AHgh+RqvXQmI0623zX0EWHW9RVRd1ND2oNQ4x30lVTUzU87HhEe5Lw1A5OXFUYnw3BQ3Bf8gm8Or66DkV3ROK4Q=@vger.kernel.org X-Gm-Message-State: AOJu0YwrI521O8MtQsnvRjXl2nN9HRFIppx9JldlOKN9SLKi0vv9mQJm Ko/iB6AjRFRRO2yF/X9l+miYul8/oa8GGkgavSQcUnELjD+y5H964Q5Gu65GK6bG4b7qQi5K2pn 6ihSqWIHiEicnJ0sRpraDvfHUPgIXv1ecP7Ik8cTPYzmv0LtyeZs2/claL1pHVSFiM6g= X-Gm-Gg: AfdE7cnxE9sKumzoPJsrj6MQ09r4WX8JQun2X5sZiq1MnwmMR9oEqYiT/eAfkBdkNMI 2JTxwEXjYiYG2QrWvMcUTJnMMHCbh+TMifwmGWRcjg1YXCuPZJ1NPV1SKiW1oYb4yqDwFc76vQj 8KXRXUVvIVYMJmvgaFP6V0u+LaoEYpNlzxltWpDHGujpTnhpkUH86taBf3nS2HYCzvE3nax9mqP aFCDuVWsho1Bnh2O6+aSilv1vWt2qvflf97Fwg9iatU6y7QCTvWhle4rYUTgcoiOyCs49Ip0eMo /Dbp1GVccjxGQniqk/G0oZxvWblJoXAiAsQXiLbsYkgFc8n5/cqua9E/JyDXDnCyLAAGY8VcIjk sckmwMOxZvDm5c8cHa7nnzbtohuR/44XMGpz8PB+kk8zCk0ZwfjZOcAJWbs+xkrD18M4FTolB7a bYZ74xSM4haamJSozIxsDY2cPqetttPAAeNQBN5Yfm7zlQs0N+lMw= X-Received: by 2002:a05:622a:408:b0:51c:7b12:120b with SMTP id d75a77b69052e-520bf276cf2mr2129891cf.73.1784218729381; Thu, 16 Jul 2026 09:18:49 -0700 (PDT) X-Received: by 2002:a05:622a:408:b0:51c:7b12:120b with SMTP id d75a77b69052e-520bf276cf2mr2129611cf.73.1784218728955; Thu, 16 Jul 2026 09:18:48 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:48 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:27 +0200 Subject: [PATCH v4 10/11] power: sequencing: pcie-m2: Add QCA2066 (QCNFA765) BT serdev ID 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: <20260716-monza-wireless-v4-10-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX/cfyY8FXcdvA dKL/6GQgN6BErG4lxJKxosppEFTIn25r6KxkkFWx4KHPPPkzIzZ+iKH+b3q12++4HjRzMsKI5/2 UNU10cGm9pLqqyMy9+DSvDrFbkYVkLdvZ6J/sjwE8Tj8C+V3C0LM8qYfjQMGvvclyMYRWV1AR3s p07/wqlz/q0C4BU9rnr1HcTHp3Q2xT9fm1qjUKbzlV0mYlGur8BgrzbC73+CCcpTDPn964gm5jT b/nHEUz742L/mv8LfE3YdmKHiK4E2ainHkHP4H+3BpjuFq6V7bGQZF989HPPzjCtYx7N1OkGFSL 5GDfeR8ptWLe0PFKEUNMvS3ZB7rddKctwi0J6mUG/q7WN9fBPEoSOGMnT1YA5m9OVN30K+13yFu eOXSGkfLyw5aaakGQ2tz1MMCPDCww6oRmn1FEjmhVWJTqrCRby0uL7XbafqxJkw7WQ42EBPI8w3 kPa/RxS+jVhiUimKr6Q== X-Authority-Analysis: v=2.4 cv=WrEb99fv c=1 sm=1 tr=0 ts=6a59046a cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=hhiJJhbhXc7jC-Wm4KYA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-GUID: MxxwIasAoLLVm6ZP861X6XvpXOgTIRYX X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NiBTYWx0ZWRfX89S5xBtMgY5Q XBYVVoFDGnZflr4AT24rODAisq2zmmc2L64lqkobQKrq0Or2zPaeZfsaGUqmNZA55f/tKpCBcjJ Wv1PRKZVx+JeZOUWuhJt+DN/3SZ3uAc= X-Proofpoint-ORIG-GUID: MxxwIasAoLLVm6ZP861X6XvpXOgTIRYX X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160166 Add PCI IDs for Qualcomm QCA2066/QCNFA765 to the M.2 serdev ID table, mapping it to the qcom,qca2066-bt compatible string. The Subsystem Vendor ID (SVID) 0x0108 distinguishes the QCA2066 from the WCN6855. This allows the pwrseq-pcie-m2 driver to automatically create the Bluetooth serdev device when a QCA2066-based M.2 card is enumerated. Reviewed-by: Manivannan Sadhasivam Reviewed-by: Dmitry Baryshkov Signed-off-by: Loic Poulain --- drivers/power/sequencing/pwrseq-pcie-m2.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequ= encing/pwrseq-pcie-m2.c index 8e4cb778e31f66aa171ad9831d4213e17d2e6145..741bf593d1716d55494cae99d44= 52600555e53b3 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -216,6 +216,8 @@ static const struct pci_device_id pwrseq_m2_pci_ids[] = =3D { .driver_data =3D (kernel_ulong_t)"nxp,88w8987-bt" }, { PCI_DEVICE(PCI_VENDOR_ID_PHILIPS, 0x3003), .driver_data =3D (kernel_ulong_t)"nxp,88w8987-bt" }, + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x1103, PCI_VENDOR_ID_QCOM, 0x0108), + .driver_data =3D (kernel_ulong_t)"qcom,qca2066-bt" }, { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x1103), .driver_data =3D (kernel_ulong_t)"qcom,wcn6855-bt" }, { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x1107), --=20 2.34.1 From nobody Mon Jul 27 18:58:56 2026 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 34C0238C2AE for ; Thu, 16 Jul 2026 16:18:58 +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=1784218743; cv=none; b=uSeXWzRaLWpHKlMQtN9++vypFNVXQavqiLfoKIUDMJXBxarfwQIG2JBqAPp7iX+MGVFRkcO0mX+JCdfwhKVlqbMBiNV+NquZ24lRvc7T9LZom2ZMwU/VifdsiY8Muon92G/PGJCkt5o7nvc3LSymBgEQY86x2ETVToavmoN678c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784218743; c=relaxed/simple; bh=EILi4Z/HlIjZKXIC4ZrM+OocFMeGQtXeC7RenzsUUVA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OBR3tiUAmEhmwAy9s5OnqXGCdrr6dSHUIdhqdzLWrtuiBES9Qq2Vnz+NBbk4usrH9awoIgnk0+YugfzEwYYxH6sYJBZVzvdcDreJyh6grm9kAORgzqAmQXI+uMFyIneKFzKKVb8dQPdQZmcvJaCQQ0Pl2MVwPSTCrYcyX++COVo= 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=c/rtDTJD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YthqtWeP; 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="c/rtDTJD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YthqtWeP" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GDJxe02972690 for ; Thu, 16 Jul 2026 16:18:54 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= A3c/IYji9aAg2mwzDYhmuLrQNs2xKPwSpSPEjBK9EwM=; b=c/rtDTJD2bBUuIJM hdttu0V9zXhG5WmLieds7CmF3jBFmc5tJNz1pjRl487UTSU+uw3uRYydfFzSkqhZ c/Czndk/hi7/yUnUcl0RfatlbRBMkd3LU8YLsZlbstfG0L9idsCR06LcWQqwuE34 AApHWciA5NMznkYM0E58V2lGQLnnjoxY31mZdBllmQVbVX5O7F0wtM4cVBPYgKKH zkiaC3Ltn0qRnxvX/5/gv0RMHkuS4h0Q7jqE/ssWa9uIn/xtXID8l7poUdphyT9z b3pMOC1ekGaOK2yEI9UM+j/HOLBSDkyfzMaGDf2HHyiPS7Q0Ag02nAqfLySMVeh2 2uO5aw== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feu10aa55-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 16:18:54 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8f0f45415cfso66287206d6.2 for ; Thu, 16 Jul 2026 09:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784218734; x=1784823534; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=A3c/IYji9aAg2mwzDYhmuLrQNs2xKPwSpSPEjBK9EwM=; b=YthqtWePpi+QLwcmo0UlVsjHLio28YYGYWRTUPbFcYpCzMtrWEVOG3qF7y0oyT+RVF Hhml9PdrEUD2/KPVpuUAvJR5m9cBs8Fg4HnuEJBnqDdcSEpON+PcioPfo21uGNqUjJj2 CSEbmGORx1v/TOXTPMqbqOPUrCTQzrkiYHmMJCP30LgvPAT/x463QPJVUiOqRdXtKgg4 b6DtMv1DqbiDXmvbXOw4qTgvATe/E2w7UzO/QrHwyYP2wTDd+lWVFheBIvpWCDSJPsLT L25OVab6z/DC3nBnbJPR3h8u1eQHoOyoywI+vi0b87Y/VyBtn6n/SVMOYRTJbdOI3CsL pKdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784218734; x=1784823534; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=A3c/IYji9aAg2mwzDYhmuLrQNs2xKPwSpSPEjBK9EwM=; b=Y4TxrgNAPSwckCl7/mfj/Zk2e+QwoA++UgXihQyQ98qZaPPSfL14XoOHPUu/hiaGfa Ylh3qjS30Pa7U2Do1ZMxkAqGmzJaeQ45NjS63xzlqfFmaV0BkNJsOULP6z6k+5fqfMXY 9z9wupNW7vl8KXhERoc7sETvnWmqntzaiysVQtPiTAztRUcaTZvTiZuZ6XaFQkebXilC L+Bm9sLCkqkS0zWCpfiGMQMrMiEl2emHxGFhEfTnJccD5SNkiJGjyb/KWi2GOvpU3R/H LAdeincaQkTPezgkGame7wyHUkrKLDGvrGl6XjWZP/cnpQzFRrx3dGW7K5GASlbXGlSN yeFA== X-Forwarded-Encrypted: i=1; AHgh+RqJ9DrL8u+OC7fkRZ7GhGiNnsxDQ2pQyps7uLeyxMfyFJiKn1hnSSikVhyzFVvXNoAZKhfWZwRmOyJ137Q=@vger.kernel.org X-Gm-Message-State: AOJu0YyaggTHNK1hflfjw7IMuJtSaLeVHvU7wP4dHW+DY5a5jXmGJFem vCfMT64+YlWa/lm5MQ80NRwqCnmtcmFoeSJDWY4cqBdW3CDxQIFyzUMqxgAKVfumJQmAxuM4r3C qZqmwbFx8668wM8ZoA+ZVx08em0C5iqKlS7NBXADQ4kcbJVy65vswslitiNiCq6oVuWRdWaXp/q QNxw== X-Gm-Gg: AfdE7clcaiOP6+Be2xwIYVgE7J+ZtsPkjVVtAJ7ji9atkudnupqSYpcer9UR9AG3XzT MiICUbHnkn44wbuUgXEXkHSPeiErGtB69v4jZ9bYcqHBQ0Qnzte6pjz7sWr1spO6akOV89uA2hg U/Y4QTNHkb/RGUKP9Nd8o8ljb4zLiKeFASyOIQCD7JO5wq2mULTT6Cx3d55tItagmDmp5X5mv1V qJ2oevxEIdixIPGyIXCQdrVeTHa1Z+3FlbosZKqV5sYd67Ue1q50Ccl3olwCaGhCOSELgS1mJWC D46dPku4vSOKemWo9XcC0FeIrhrQOjOSVFPZnpOKf1eJDa42rOFX0FuVVm3Kf8cS4C8art0GLya ZQYEwq/7TSiegMxCVCzKMsunRpy3uDFZ2K7ni+ShnU1AyYHW845Pho8EJZ1cbELC5GohWIt54P/ rw7j8aOYkjCov13EXmfr6RYs0Mq3kBPrqsCNT8gTBjeQh6/BK4RR0= X-Received: by 2002:a05:622a:1aa1:b0:51c:c37:df31 with SMTP id d75a77b69052e-520bc709f45mr3031621cf.7.1784218733747; Thu, 16 Jul 2026 09:18:53 -0700 (PDT) X-Received: by 2002:a05:622a:1aa1:b0:51c:c37:df31 with SMTP id d75a77b69052e-520bc709f45mr3031111cf.7.1784218733144; Thu, 16 Jul 2026 09:18:53 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bdddsm257262866b.48.2026.07.16.09.18.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 09:18:49 -0700 (PDT) From: Loic Poulain Date: Thu, 16 Jul 2026 18:18:28 +0200 Subject: [PATCH v4 11/11] arm64: dts: qcom: monaco-arduino-monza: Add QCA2066 M.2 WiFi/BT support 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: <20260716-monza-wireless-v4-11-9b02e6f549d7@oss.qualcomm.com> References: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> In-Reply-To: <20260716-monza-wireless-v4-0-9b02e6f549d7@oss.qualcomm.com> To: Manivannan Sadhasivam , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, Manivannan Sadhasivam , Loic Poulain , Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: CZgHJTbOH7yW1LjULMqv1OBTUxPzqDrz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX3MVDTzoiImO9 SDWH9e7lcBAxSh31LFa4IzUbXVUn9oZwg60Gs0c2/g2iEX4OUvXdexA/NqEyyex/0zPxrO2tI6I 7w6ev0EXPEF1GurfbYzj0PWBlVi4zw0AcoqQyeNXagjVXSDgBjnlGt2kkVvXb+si76pMZ1iZtPE 3lkBx1pMErPM3meRmRzWkeNWJBlKfCtp4jcjOrlRlujOqEB0g7KNPrRF/OZ6c4YkksasZd8T9ai pyoSpnOuUIuThPEoSvZ29gvT4PBhouwt3GDRi2zxtCPXgVNrK9trxrryKoYcc1W4ps1EizcL2+p qMGMeqNP2NZajro3zCd0bxt481z4CadCb9auHZi8MDyYMT3FjxzZkqyz+wmHVQZXrQqGT7PvOnR JU4swLefOY6TEe5hZuh+BHDCBahH6NwQJuGyErWimSF81agP0rEZ+MyGu1OhD81GmZGbgiIwCoz vx/ngEu7EywDCzmqHbg== X-Proofpoint-GUID: CZgHJTbOH7yW1LjULMqv1OBTUxPzqDrz X-Authority-Analysis: v=2.4 cv=BPODalQG c=1 sm=1 tr=0 ts=6a59046e cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=EzCDy3pf2FPqfMyO2-oA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDE2NyBTYWx0ZWRfX7grKmSCJWUwM ooBlckVKEOCcXyY94rOpIQGBT2k43r7WPBh8soxiw0ylJQalIdSyCiYgmUdxDmFV8VLg4BqMXb1 oQK1nlARuWUYT8/v4wSiJpALkI4TER0= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_05,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 priorityscore=1501 phishscore=0 bulkscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160167 Add support for the QCA2066 (QCNFA765) WiFi/Bluetooth module on the Arduino VENTUNO Q board. The module is interfaced via LGA and is compatible with the M.2 Key E. Add wireless-lga-connector node using pcie-m2-e-connector binding, connecting PCIe port 0 to the WiFi interface and UART10 port 3 to the Bluetooth interface. Add pcie@1,0 downstream port node with pciclass,0604 compatible so the pci-pwrctrl driver can acquire the power sequencer and enable the M.2 slot before PCIe enumeration. Add nfa725b_default_state pinctrl for the W_DISABLE1/2 GPIOs (gpio56/gpio55) used by the power sequencer. Reviewed-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov Reviewed-by: Manivannan Sadhasivam Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts | 64 +++++++++++++++++++= ++-- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts b/arch/arm64= /boot/dts/qcom/monaco-arduino-monza.dts index f67a554adf956696aeac2348e478dbd0b74f0e62..5e41e637c1c705ce0f3847aa71b= 229261a1e3664 100644 --- a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts +++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts @@ -155,6 +155,40 @@ vreg_nvme: regulator-3p3-m2 { enable-active-high; startup-delay-us =3D <20000>; }; + + wireless-lga-connector { + compatible =3D "qcom,pcie-m2-1418-lga-connector", + "pcie-m2-e-connector"; + vpcie3v3-supply =3D <&vdc_3v3>; + vpcie1v8-supply =3D <&vdc_1v8>; + w-disable1-gpios =3D <&tlmm 56 GPIO_ACTIVE_LOW>; + w-disable2-gpios =3D <&tlmm 55 GPIO_ACTIVE_LOW>; + pinctrl-0 =3D <&nfa725b_default_state>; + pinctrl-names =3D "default"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + /* WiFi/PCIe */ + port@0 { + reg =3D <0>; + + lga_pcie_ep: endpoint { + remote-endpoint =3D <&pcie_ep>; + }; + }; + + /* Bluetooth/UART */ + port@3 { + reg =3D <3>; + + lga_uart_ep: endpoint { + remote-endpoint =3D <&uart10_ep>; + }; + }; + }; + }; }; =20 &cci1 { @@ -409,6 +443,22 @@ pci@0,0 { ranges; reg =3D <0x010000 0x00 0x00 0x00 0x00>; =20 + pcie@1,0 { + #address-cells =3D <3>; + #size-cells =3D <2>; + device_type =3D "pci"; + compatible =3D "pciclass,0604"; + bus-range =3D <0x00 0xff>; + ranges; + reg =3D <0x020800 0x00 0x00 0x00 0x00>; + + port { + pcie_ep: endpoint { + remote-endpoint =3D <&lga_pcie_ep>; + }; + }; + }; + pci@2,0 { #address-cells =3D <3>; #size-cells =3D <2>; @@ -501,6 +551,12 @@ max98091_default: max98091-default-state { bias-pull-up; }; =20 + nfa725b_default_state: nfa725b-default-state { + pins =3D "gpio55", "gpio56"; + function =3D "gpio"; + bias-disable; + }; + pcie1_default_state: pcie1-default-state { wake-pins { pins =3D "gpio21"; @@ -544,10 +600,10 @@ &uart7 { &uart10 { status =3D "okay"; =20 - bluetooth: bluetooth { - compatible =3D "qcom,qca2066-bt"; - enable-gpios =3D <&tlmm 55 GPIO_ACTIVE_HIGH>; - clocks =3D <&sleep_clk>; + port { + uart10_ep: endpoint { + remote-endpoint =3D <&lga_uart_ep>; + }; }; }; =20 --=20 2.34.1