From nobody Sat Jul 25 03:05:25 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 400A33CB8FB for ; Mon, 20 Jul 2026 08:04:11 +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=1784534652; cv=none; b=Satt47djSbA+k29AONVsGPRucNRiLr26uzh+st6kA6YdQDq/8uVIcCfOctapX5CPtQze1W0+bSkUBUMMB1FtDX5kelk2mh/YsLzKyfxKB3Dd6N+eaFmEsOfqkOhOiTv6+1lonAhw1HudH5znbKd4zQAaLTKytliPD1n9TefDRpI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534652; 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=pGOuzo0GklPgtpZ3m1mgego58/J4Ry9wmKaGrK6sBmOsBIZOydoayVVIxF/xMV8MPd1SuD4jzguDUUgmztTHJHCmq7YMZLE6Y5dqTlBIOIn4PTskARycQXvW/8wET+dVse0L7jidJBXonvG/HS3+HR1SYZ7OpARHHnN/5e8/h78= 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=ObLSV1L3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=R0MBgJg1; 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="ObLSV1L3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="R0MBgJg1" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6RTcK1762239 for ; Mon, 20 Jul 2026 08:04:10 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=ObLSV1L3NZM0JoOV awyLlEcXYHGjLDaOAyMHUQbfwnzMIj3Mvbvw62/PIpyGgdcFMziZXLlQfouxi8gT kldrzxmleq3SkRrPABeDwZxstV6McS0Kh0kpS3n5NErEIn3l6CRIrWhnJuwgxiSv kFC4g+b6rpw6VTL1La2/iVkA+1Z5s8FVaneQ2dVzoSTAHU3swfI7hEjoivgHyzSU X6fA7AxmFB4k1CcU8KdWTfzhLw5yCHkzpAj55+20D67MYfWcvCq4P/UvhcE0YJ67 rMl/FcK+GFAGMAx5cgaJViE+dYwX7S6dm091So0L9B2ikLjVSOaft+qJZAsYb2Ej bprGlw== 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 4fg2bnn3kv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:10 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51a8db414c7so163962281cf.0 for ; Mon, 20 Jul 2026 01:04:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534649; x=1785139449; 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=R0MBgJg1O0oE7tGvAhrTw7q33gbHFqotDedJwaZ/cycjQK5ig9XAdCDaiDAWExBVKz EQRHwMB+KeUmXzpoFzc+SsUz0vMXBwgUvPUd30MEQJ07UdPX8XX9DX1fXeoR8X8GkVqa otztwFr9ilXRj32ATW0auUo8Y5rkI1fwV7aSjkWTlO1U4hatGtLus8I0KgnsgJZyxG9p zO10xbyd7eTABlZXaYkxSnN43ThBF2hC8ptOVywMvvkNwN9ZwpTgXdci708DXLPp6CC7 R5CSmHyzh0LL+psUBZRJN+hKerRFtszdI9C6Bnx5iVFwU1AaylxHeK/Sbbmrq3fjIf4p 0Tcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534649; x=1785139449; 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=RrS+DXNPUViff7c3ZZQDkoJS4AD+6wwsGVNHruUdyxI0QUPoymvTOHhF47fGf0QAY5 XlnPRjOHh2BTLDPLhi3HXkbRwtF1ySJl1j6/Xu0ZwuH+BOJUJnO5SnC2BjeEKlxwlx/C T6KLXuKLlHUY5uAo6ZWD/FoV08ABVUp1I7p2e8ZoATxlVwwcOg6N1pw34KDdOj3FMee9 grtqCW6LL6tKGzkHkvRVwmeO7XdKIcnXOqbUZVE+fGx4xlux91EdSg/MtAGUZn/1MjTh POpKrU785oz8abkre8xhga6UtjC7onMhAsT9jR8g5s9GmhnI9g1akhcYs9ho+i3BfA0K Q9kg== X-Forwarded-Encrypted: i=1; AHgh+Rq8Sy+AZBlpFuF40L7Gi9fmYq49I727pyemXyTblvXiT5GdagzYstITJiQ4tFazHC+g7G24iWDUolapkBg=@vger.kernel.org X-Gm-Message-State: AOJu0YxUvNDt0j5dJqJxy3rzmsF8PB8w6PEsJ6gnTFW7oGs72aenNQNT zptpsLCKwrCPWRFUqLvGnsucWUr+oPO9skSPSXP/UIkCORWsMVflhPEYdI3VEO5gENrZb3ondsw pC/RtBsN+QTC0xSHmWTWW8hIHCKZtItoDXh/JC4ZqGpdrL52a6kq1uQGbhzUU5lP0NQg= X-Gm-Gg: AfdE7clVm0ll2uY9Vn/pKjECOHx5BmMMUlYx3H075C0DSsXUz2mg73mWUu/iYHoZBhc VT/GTc88NSCUqy95JAU4M6f9nWrDjEXP2smeZOKxcNNGFFDd5H+YgwB+mhMJBYkjvvGRbZnqxK6 +PPsLwTWYgV45H/yQYydZlbSt+uA+B2BQJJmRcV3gIgvYMjRAuw1Y+SFC0p2lSrv+eXMHOi6VUx qceZ0QCv41QGhHI0MImbb7GIS8QYmVRdT8n/Iw7BqyxfdidFNg4HxOaxFrWav+irdJXSKK9hS3S +6yl2M41xszmG2dDpw7cROsmP4nPVoaBovNhdXsROqQkGIOmP9W74Qefdn84eW6CUVUrsbB6RiB fKLD8WwKLDrVhx5x+9HMU+0Qr0NZvb6sgiX9uk4F4WYC8wcLwwSZIadUQDLpn957Q9Pw4zl1Ocv T874434r/Iz28oN6jZubC7KxAdn/WndfmGD54HsK5KCwuE2f5iGiA= X-Received: by 2002:a05:622a:22aa:b0:516:e249:e30f with SMTP id d75a77b69052e-5213e876fdbmr126377431cf.42.1784534649476; Mon, 20 Jul 2026 01:04:09 -0700 (PDT) X-Received: by 2002:a05:622a:22aa:b0:516:e249:e30f with SMTP id d75a77b69052e-5213e876fdbmr126377021cf.42.1784534648784; Mon, 20 Jul 2026 01:04:08 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:08 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:03 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-1-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfXzMwXQM+fYWu2 M1gcBNuqpaqkF8ysVYOIHr3XXkoiu20Ao5xOOuDgcrw/zp3AbzvPTrrfULBVb03Kf6blwoIU7xV gFfN+gL/f9IFZ0e8e6df1vBy5J6Rw47D9vq1m6CjREg8EJ13YJ/ym8Wol3gG94g/3/YDLeqb5Aw RuxMrvNHaQ+XVV32eP4iPFg+yxYnJ4p24tyfOKfFRMXo8R19d7Oi6oZtMnBip/F3MD6K0uwsQsO hhZ1Xi3WYrqYl/Tf6LSFFEX//EbtHL210WlXiDLtwjlAcZFNBN76d0M0EGbyxQNaiFFzbJ4N5vw SRO14N5FvtYG/2AKiwTlEUWbzJbec1GJknIYgUJz58oM4lq+4tX5XA7BYzy+qrwcaZJRXlgSl1r hLLMzgJG3w6rtppTQ+ONDsefAreMEhfBDrqIwzesNMI+TrNIP96iBHaHjai0QqXMc8h7duBOjuy M65blIWdFgei9Aupi0w== X-Proofpoint-ORIG-GUID: rzQ5PEEi6EETLBIvh_Azuw5OysGsVxpp X-Proofpoint-GUID: rzQ5PEEi6EETLBIvh_Azuw5OysGsVxpp X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX1vomW90jhxyt KwEGxZsTpHU3jt/BPfrS/XegbxKLaKJUA9kB1XCBqy1m1DhVwXorYtXB+E+O2jY4vxhh7M8YN4h 59uWwREv0YKgDhtxtBcGvx4gK6eelQs= X-Authority-Analysis: v=2.4 cv=deOwG3Xe c=1 sm=1 tr=0 ts=6a5dd67a 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=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=14bN-6-z4zEjTU3E0XQA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Sat Jul 25 03:05:25 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 077F63CB907 for ; Mon, 20 Jul 2026 08:04:12 +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=1784534657; cv=none; b=NSntdQAD55hrQ1TQowHKjTQNxagFVLORy2O92x7JBkA6bW6HXZ60Gw7Eb3v2UwDGcLPqGI3EWnGqv9WozisvhRP8MT/VQKpdiCS7yR1kRKRcAEAjwH5EaA3l9leQeXzFOGYTpKnFhM7N2dHW2Qujm6pI+aWQZCcba2YDwJXC1kI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534657; c=relaxed/simple; bh=SDP/HXgz4amfEH/BI3vkK16jvRVsmUt0sdawVFBJlw8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FK1kKlHsjy+RuzgoYUrRQt1AQRfIFq3Qy9OGoPtNEC/fbtTKfjQCcNMd7PfzbU/Ut4dDzYhg7EsjllM16YuaOglh5vxFPuSQzmM2YQOj44010N6UkDm+PZnwnGtZuAeplbGN9XIjOrf6sRAerHO3Qz+kRsKIJmq6YF33CUmP1f0= 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=DP8bfQ4F; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DBnEHCUg; 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="DP8bfQ4F"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DBnEHCUg" 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 66K6RYLx1506356 for ; Mon, 20 Jul 2026 08:04:12 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=DP8bfQ4F8Oyslqhs QXVTuR+92NhVN5zgmwujS7NXAQS7ksKFNQrPsvRYL3ggqc0t23+kU6UM6CCTd6Fg z8KigQGW+fMZQOLmi7RPcIZweHYIFXq0kDiOX9PhGrW31/+Svnu1sVZIjLXbAgXo I+8lW0EyE8xVepBW58DVFx61EZntPyw2BOuyaeSFzWqPBzy6tuu1EkIigcd8lBJ6 vOENIX64u/o1kdT+eFgJqGp6tIE0gLTkpj15fYz+0ysI/8b7RZEJ83GaewmBdsqm 69KSsT43SApxdfhQXyMT3Yu/IXQo9Qqmu1+DoemOVsyuDWnRSCwJK12nkwDiIsbE kVGD0g== 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 4fg2bvw30j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:12 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c075c1e25so137936591cf.3 for ; Mon, 20 Jul 2026 01:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534651; x=1785139451; 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=DBnEHCUgkCUMj9FU+BS4eO1JAkBoDWkMlnNXb68m6RO3+jGWW2mHiNErIZndmxuq7L ZhOsWWeBeNEIdgyDmvbQEOGbfRI3ccQGg3CtnR4oZh9TCeWwdaNwBqmxaTTB3Wy4YoPp ImGaC/JQZhhqpA0gBJYAhKFDawj4BMCOv39dyMH3vYZc9M5Gg/71AYz8VgbEOl+Ffgg5 pWMCwvVMaeyq/SnXUd9YsAkAQtt/fkfVNdsCg6Udxo72zAjNXnruMoW8fXDyuyE+8yJD pkK8nwQeETmpldDHoSWkxCnCg/qVV0xOPjb1MYmsBlFINP1feTxOVU+9wyU8dYwfDSan MMvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534651; x=1785139451; 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=hK75+EwxCDigKiKneU7bcHjEiee1Pfa96OU0QkP/SusIJfaU+/HZz8nKDmdO8OL4ZU GnaVS5y62wATu9uYSU9N4FmKFHfSfB9V1Cvxrfe544lJ7W1LWEczkj3/V2PvlH0BsmNj 2hvVJ26DR/acHHloJW+a0/kV/bU+2WmBBpRtSKjWHfoXvbLM7N7HLafZeePJZQPTftBM s2H5i0r55qhSrSFchr37Bhxwk0C81cfocy/Ux1mzo5RIR1dcTdBsEKlNCNoHjFl0fLAw zTooMKePNMiBTl/6cxBAfkp3xsoiKgM/SDoO3Wh/pPB552VWdyM4BkdbD11/P6dvqpB6 lZQg== X-Forwarded-Encrypted: i=1; AHgh+RrRbkztQhPDcq6Z3mSAyAijYtHi9+EkZHIxw8QBrIa9Qx7bydPS7pr/OLvvCQWgr7YQAuYbvcPy/ZydbLY=@vger.kernel.org X-Gm-Message-State: AOJu0YzK707eD2WAJvdjMvhJj5/74kmq3NGhWcNqYnxLJBQry7LUyWPU fpztbaHKahS0rwgyYYzq1e7c/S/JHKnnhRQE5l6Ry/HhKiOAnlCshcG7b4M+C8k+7XZ0lrJqfOZ MUaAYrllRB8t2qKlkQnbPGn3xjuDo4UeDVUKVyoAr9CZvXNByw74YXs/CixgicOVzjt0= X-Gm-Gg: AfdE7cnVzz8EvwD7wLHYOiom7ma8gk5IxG5s4wkqHH+iZ61VTq63BNueg5WimJ/6E9I qp6Uf4DZek60fBjW0MSz+HIzaQRcx/ETVPRq02ZSSxp0E1g3WFI86BYFUcFpd/MY9AuSalUOYCx Wrn1/1HVfBblVEQAU0HB9/rJi9ok+ZeDmmiVl5l0KyMEg7L6toT/WbBzxw0Q+fxTvy+EX5l59+r doma2MoRqq13mVa8mcG2UUHcFHJ6S/erLpQ9T7N1VdOLXPUAUt28oJcSP0jWy3aDQjw64/pZ73o g0/bQwhHKgLHOHlNLso6EDUKHGGLRpVpn/0VzgJgLDvusqbbHo7k/Ja7rLnAL29PzkIba9jdgpM 1Hpznh/LvBYwKtu7FhaXgi7fEolhBQsefD3gSwU/ZmxrF5hxjESvZZDGk8W9yKwkTBQaol0QAlJ aelgqU63SzzmY7oTFss2V9Snz4aIVS7PaSVB+nN0czoTYk4pZU+HI= X-Received: by 2002:ac8:7d0e:0:b0:50f:ba62:c328 with SMTP id d75a77b69052e-5213c5f3e7amr116482661cf.22.1784534651351; Mon, 20 Jul 2026 01:04:11 -0700 (PDT) X-Received: by 2002:ac8:7d0e:0:b0:50f:ba62:c328 with SMTP id d75a77b69052e-5213c5f3e7amr116482201cf.22.1784534650828; Mon, 20 Jul 2026 01:04:10 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:10 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:04 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-2-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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-Proofpoint-GUID: ohbaMGUF_VaBguf252CvAX8ki3PKv54R X-Authority-Analysis: v=2.4 cv=EcH4hvmC c=1 sm=1 tr=0 ts=6a5dd67c 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=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=wYtw_XDhO1ghKZOGarAA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX89wuCidBJBMc Qm4JVXTkQNUPMHS7tLrmQnKn1rs3/dY1cuko9gZepd8ihHXbPvBUNtihG5XokvAbFkSmijZRuk2 neQFayE/2s4kQnYqzPh2MWEF8s7iW5sEn47SCdu9oV0KzHUEz/ltelROEuoKWvWH5pb957AjeTN kgVT2zYwyr2vOWB5Io6YljhDs2loZaQO2/qJqYBNsM982Qn1Pfx0PXARdfjsX4/Kg91+lrcwZXY TcDrxxxarzfIjG5FQdPY1WoNdKPKAU6ajP8EJe9g+gIVZ+u40NTnLRtfdFAu6BCGCf2JzzpXR3/ lGDFdsrNFdEZy4V2G9XCl0GXLSUgJ5AtEE8EYIg/d4vau59OKFa+N8znEHaszubf/VB6IFGly1D dMj4ncx+7NlvcYSWg2p9xXcc3OnH5/qEcLo4bGU9fsFH3ZC4nSpngE/o+adbrbcg6pkUkyzvbfr qvRMikNr/hi39j2cViA== X-Proofpoint-ORIG-GUID: ohbaMGUF_VaBguf252CvAX8ki3PKv54R X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfXw+K3NvHW3z1N 5yt8nfmyWRMDyksWZsA7KKCb6qtTjt0+fUBRLQ9XTyJPcEr1bYbtMWnLuDkEKd1SsVBZ8l5BLKs I++12pPIx1AlvH2r/z+PqbULswMEMJY= 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Sat Jul 25 03:05:25 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 6DA85391853 for ; Mon, 20 Jul 2026 08:04:15 +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=1784534657; cv=none; b=iUsNtqWtxb1+CVkxM7AL4keF+I/kGFD0LWwy8UxsXZUSmyI98MNes8hKU1j81UuZhnv1vOhGS3ZQ/YLymCssdhR1wbbZzKsrQWI4VJ5Xvty8yGmhf4BYVURdH1FQGvbY0p6Xqot7xC1rT44TSoRg2BeBGAikuBarlzJB7MtJYpg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534657; c=relaxed/simple; bh=OvZGQdRrKQ1cKCtBZ2vJJlctMXShVHIPX/EnnD1FRmQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pA0D6134DmnCw7wMDK+Vy4/SKSyubUVh/7hMYTJwxBMEF+lX7X90kSpuMgZhMsgwxP3MqVgCcsR8zNtmpu0MZH8tZEvGjqrq4Tm+jmxsMzLUMT+adPzq59XWtfeWyYfsNoj+mI9E6FGXWyjcO8GTPLqwXvzu/lN6aloIm12IM/s= 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=fD1FRDv5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NTAufNRO; 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="fD1FRDv5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NTAufNRO" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6RTKl1762265 for ; Mon, 20 Jul 2026 08:04:15 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=fD1FRDv5ltTwAYzp 9AyJ8FEUcIOia4aZfjdkyZps3qII9mesgGOHSH+XfJgTjXjT/LarOKF5fvVSvtB6 yJ3udarldBb4pT7KhZaobbweLzIAI0TEMe0Y65+4G4Ff6VXRRDabZ7kDh8468Mc6 oI5zVEVtxa4K18sR8T7VMUj9ffYGrLzexk0yfqNl6hwFMYm0KgiL86ASBNl7vW/e qaIe05UEsXd6cjkPww9ONxeuRRZ3K5LgqLBWm1Ggzq3Axiqsyadq6/2tK7QlFij+ IM3l9mq1MltLxgH4ncZ85zP+MMNXKpXdyfyBLcBBWs8qpciZkDrkPc6I3WcKx7f7 KvBu+A== 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 4fg2bnn3mb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:14 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c12e43b98so193995341cf.1 for ; Mon, 20 Jul 2026 01:04:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534654; x=1785139454; 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=NTAufNROBswr54aO1eaA1syZf1BVbEt4i21uk7gPUcSW2+C9jF9PAYDbprM1z9T6Ui FMK4ZbNDuvZc75REb/cHCuA/FSNuJP6WdtHdGdg/UfSc+Fr/nGRsMf8ZUXY8cCzfiC6s iRhQqXVgHTe+FCHf+cEFnPyERo7gAbs5iTDqUF4yYzNUXXG7yWbXjt6YwKIaJg1o2MsZ M/t1l4WMek3x62otjkO087x0mpkxzV1nayP94LijBa7OhGOV/7Ls0a/9KSaQF0oDC8xk JliqFd3kVCNl4r9NsTQBjWRKF/xDihUQ52pn775+lDczaYzcZ4HQ7jvKSpMn1ZgFAN5v QbRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534654; x=1785139454; 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=Doxs37Xu/1Bj5XmKX7KPkRzMtcUCpaTEg8BrOi5wpP5F/2QscP4uuTtym25aJu1kmK E6vnEslkd4Q/r55oL8crX0YVdImHJfmqwD45PNsWbvb6R/Ljir8PltS525xtt9LU2HVi /LwPTV+mEGscJ7ixJI+NS87xjNrkjgPDRCUz23GydRbELSEdKR2TWJDA2AUlach6wi3O K4roY6gDb2Y9Ifayr74N4a0cJHq3tMurSnxBKneFxbSAlmVb79x4duDb5+7V30ltx+cq poJMhNE50Fqqncwzt4bgttEXYHgd9rHDCFGrsf/EkVTK8QiXPoQpyKcOPzVThbeNYGhy oLBQ== X-Forwarded-Encrypted: i=1; AHgh+RokD8gC4Mccwg6aFr4DzbV3JzCNP9EnT4D9ASSGHtu4h7F+THxn5fORXyMeaxGmj6qqhlNJl7t6+yMhtTw=@vger.kernel.org X-Gm-Message-State: AOJu0YwPLjvK/S6K7qb6ht3jPMR2zTB57GXlgUVVo3T/nXzHinL6J58y yXfJR25XCtJ8LFu5EWBKqJFl+MS2cx1qnaNzS3DrXKEqvH+VCZN1UyKOToM1ae9OLkPTfg6CiYt u1oqjq6AoGs/f0RUep/0GECbQ13KdKneUCL+E9Oehmd3nNKAI7iWT6K9dtrZlByhgpxY= X-Gm-Gg: AfdE7cn6DLN7vH2okismem7ut4WXU6ScqXBbMIcs20ZH06B2LWOTFlHxIyhrF0UA0Pj PuDvOuECi4r4dq8jLd+KiU2FxfIio7ifEeCWFaxIzYh1h5QehzVaxus35uVZLZVyH5Rejo3r+Jz mzsUt4HAeL2kckONM98AphnAB+UiV0O76/h092OaBTOUwo0jMVSvAptfFr8sLfeoYjelFH4H5Qu Si4LWE6Hw75VHRPnpcA4Y9H8wkxfhapw17JOIs/aeCbNQV4o3IluKxyxbFURvlZWTSjQoIPJSO4 FOv7GkyvGNKtzJsqhqXJQoh0vaLOngaxD9sI4PYsoKeB98xvu7T4mkrr40NiDcqdcNlxQSG014C FX5OUomeFMChP+A3ljlaA6N1S24qb9zNnEDej+JEat4l81JYSrD1CZLgYl3F5udEWl9+0yv2AdR rqcSeJvkDgn0nolNyLcTbhFSJHQ+OStjTF+tOw8kAfSgTGT+jnkRU= X-Received: by 2002:ac8:7fd5:0:b0:51c:7b13:62f3 with SMTP id d75a77b69052e-5213e67ff0bmr121551181cf.73.1784534653677; Mon, 20 Jul 2026 01:04:13 -0700 (PDT) X-Received: by 2002:ac8:7fd5:0:b0:51c:7b13:62f3 with SMTP id d75a77b69052e-5213e67ff0bmr121550961cf.73.1784534653113; Mon, 20 Jul 2026 01:04:13 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:11 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:05 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-3-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX3JQj/ETWXUkU G+ZzDb3q0m3c9a9Ydz0pYY2+DH+NTA+vAW/DeoU+uKJiHDn7RryGcWEGNdjbT2GfNR4psHibBzv pRJdUulH25iVAttWiZLQsdn694jK2Da0lkKAd1UDsXzCw6ruLKH9pbz6mPWlgDTIeklCBDrY1TX tlZMJDjkPWxyo4TYTFe+McTi466P49likln9WClqMzzsnmLzsnAxawDyfeft8WZqOm9yjy6OmZM DdBH03c3uzmHCd88RoW7TUb0384d0RlXhw4w8jR4YvFBhlNpUny4A0R2s/XhHgge9Pwe+VAgKA6 bnd0q2m/SPG5fN895+YSu5Xt5mV0smle1WuFjdngllNpPVFAK3SXF9EgQ8xXpc2f01MtCt9ZUnd AWMamGKXEbCOlHbaBH8mNBQWNQ0KePMQqmTXTV7lRbs9AKT6dkCuFIC+VUF+i1NIEnekpf5r38Z 7b4AQ97amXh/67VxRSA== X-Proofpoint-ORIG-GUID: TbL8d7LaJ7kth8yRrWabK1iaNumkPDJb X-Proofpoint-GUID: TbL8d7LaJ7kth8yRrWabK1iaNumkPDJb X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX0Hw2SZRIUB1j tC9PYiIoPWzaKQ1dajYuV6Ypq+/V+EP5ngb4NRIeLLNlaJ55tvye7HwFOfAA4+MPFAyVvpTQ7ql rwrrJWRTuLSjDf5h2VZPwjS9x65xV6Y= X-Authority-Analysis: v=2.4 cv=deOwG3Xe c=1 sm=1 tr=0 ts=6a5dd67e 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=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=4a-8Ivk512-2hps7UIkA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Sat Jul 25 03:05:25 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 B94373B71C7 for ; Mon, 20 Jul 2026 08:04:17 +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=1784534661; cv=none; b=BxqoLzdbRF/tbnagToJq9be1YAKwzdapfE74dLFxLVYuFjX/84iqQ7+Vg0ipdm6dcBucXn5QCzRNLDsdbudR4s0ast8r8I/kuXNL5BVDLVs9ubVfKhrKm9EChUsvMF4/UTm+X5e+3QKcMjEs5XN0WZ8376vLpAtt/l9zGSROx0Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534661; c=relaxed/simple; bh=axJo0QsdmJg35RBqGTfo/6nxaHHL0FSyQ0xk2oeWY4I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sKiuHUrbaiPf1uMvN5rNJ1P1geNwgbzon2Fn8z+jVbTdKU3lR5ULn9wvRcXo5BsDdlfdX7F5YOfHLnuD3M8f8d8cXXpuqkMjp5p4OYkvWB8lSF194B01YgtbQAVobnLB9f+8mfeIW1WPtHjYMpkAMthWfd8oP177ZKRP8kufM5I= 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=LkBRKcXu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HA2tbBSx; 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="LkBRKcXu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HA2tbBSx" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6RXsl1420259 for ; Mon, 20 Jul 2026 08:04:17 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=LkBRKcXu8H23KcPB FChyV9A0qOOekp5KW04f7D3hfe6JJKYdDRnlgMNorJp0AjaaE1VOzPo35CC78jgR NJ5i58li77h6jGDrosvRwj/aLsyqXk8QR1aaXaBwyTQ0jpEYw1Q4cNN8VWiJO7Wi a3xuU/daZ9l/39xqB9iBglFYXl88QfFkn6vX/NlE5JXNvVTmrDMYuW+owOVi+C1D l3YRDEx1HuYWf4TtuRZ9mXYS96V+Zp9Njh481UIoNoURkBj7clRSTqVLt8kQctzJ SokBoDbiOH9tj50J5l+hqR9n+kPl1IiDVNrVoLmz9t6zWDStvDM2vreD07tpmxcM apvjfg== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2s7w1ap-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:17 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-92e56b2b350so2255020285a.3 for ; Mon, 20 Jul 2026 01:04:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534656; x=1785139456; 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=HA2tbBSxPI1TPSdVVZnU9Mftpz1IeFv0W71yaJzAnkbkghFnKQPcW+EPMM9Glnt23S /CWdQzEE6JCEwRQyP/opR0NLRQNInUUsI1RKhyLcxwBVCc06Mr0Kv87iN1BVcmWonLQh 0nQVr2lh2Dkdbjsubb5M3U7Ey6FUAkkyYv3//BiXTZ2J42BXWeeRVgvYjxsMxNwnRo5h s31BW4UKDQ0cFeQEnkmqBShC0em8S2NFnsCxQqC22Ph4dzgZU5JB1Sxu032W9/G6ddz8 4j6Y0KT74zjdyuc1lbtMk8dSNZMzMt6ev5PmS4stRXUV+QRL/LPNJ+m9hKUSr4ENKGh7 7ZSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534656; x=1785139456; 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=ar2SsexgjYwG0JsYB8nI+8+hlnvttOc25hFKHq2e/1USUw3xeP7gNrCXIcCsSwwaWn fPY8P6KTNiI3UluqJfNkrSAtVIfU/rpFVKQ8t5OUIS5rTiYIOOyZla1CtdPk3uZL1m9P ZX/nlHSn0hVzCpc/zjiTgtczUSkWmtd83bRk7DbI/2/9ZtEfnX76oAlyRLiUzzmxji9U w40EqW/DCT7ZDFxj3CT8edkSdf/X+/08TSTvVjTU6eLFEEzEPOdOyXwi5vH49UnUCJ8R P/YY5GT/wyfEpaeD1Zhvrc8FXym1lCRM12sAxThx3rQojW1pkkXDCR5cRaxA9Rabzg6y ZdQw== X-Forwarded-Encrypted: i=1; AHgh+Rpv9uTl4DYrg5UPojJcuizm5OqUqbaKGI5qufV16GPfKMjwGcXVOiq2jO4bUoIiGFxmHK+HJ5PkdiJyWgM=@vger.kernel.org X-Gm-Message-State: AOJu0YyJ7JD/wc7JVivcZ8Wt3NOY/+JjSKXiBZ9BUX3IY+B5Ym+eu+RQ iTnZ2CzWZwdEzoczpicCD4ClxPcs/lTxKkGUGHltNNnEVziQMyKmALBqqflYgbfRJX+B7zxnggB OefjEqIp2ps2SoC+Q5m8biGC77pNBT2h6e16wNgBzo6YOuq7d9aTpB5o+JUKNUnZ+HLo= X-Gm-Gg: AfdE7cmsHEMfKEGoVHB7PvUC9YA5DwjaLdUAXktsBL+pbbVRw2iYynbPAXMa6edLGz3 J4nKP43/j+tSklXPvmgQ9cXvCcjoH/Sxm0QCnWgds4uvXFJSUkfj3G6aOLTLDHqUShqPAQvJ3C1 qfSgWqCtRwXY+4vTJSOSO8/+8DWJMWsPGeyaR3rlVWRtATY/xdTGsdSPygnWpJjHcyow088896D 0RVfucAoyPaOoe2aOQmP5ZrfppdVGUmuRL2e1Ij4yzv6iEqlX0R25sG9hgZSfLZputIkTogifPr /CxdCBv4ZE0CDUSwwruY4O7TbEZgvkGwUiQi8//9pCZnxSPGeDv1AOmEsfO6yAUhbWgIDGEF14a qg8O5EWYB1JhQ6QQC9/P6TaSy/26ZhO7XLvGPp+ztsJ0Ogtz57ruNTGPxxjqaG7Zo3VB6JE4wcX dPCmrkNYc8DBoNLf9xoGq1gVOfRKYsnzYVrESsiFbcSp8uRzGXPzM= X-Received: by 2002:a05:622a:7:b0:51c:d52:6049 with SMTP id d75a77b69052e-5213ced0406mr130529311cf.28.1784534656086; Mon, 20 Jul 2026 01:04:16 -0700 (PDT) X-Received: by 2002:a05:622a:7:b0:51c:d52:6049 with SMTP id d75a77b69052e-5213ced0406mr130529061cf.28.1784534655488; Mon, 20 Jul 2026 01:04:15 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:14 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:06 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-4-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfXwNkoNXwSx/5X 2u6yRB/5SUvEMk+8bYPaRBTPBlnt+/DEnIPknYeL557kZh7C0NBn4VMgPXbIDUYlAniNyhCgo6x FDVgIP6h7H8VO9akKuRoibjrE8x6y0FdmFqV0v7cNkMh5Ada1E1RN4FbyVatyNGNrMge/1PxThG S91+ZPDd2PHoRvDM3gVR3PlQpwLHuX9vuctkVvb3QMG9mdCad1CiTTfJurICl5CT+IAhUgQEJGU quTPSbBZfqwPeWXQz/FOagntdSkkTcARU8J7XzEBKhqf2zn61wlPc/XtCfd1btXgwYOuEPg7/d4 TAH4Vi9xS0ZQfZeY17pJN2EVTDugRQVn8t+VFdWrc93cK/qE7g3mRyCfI0w3huiwl2BT05FIzq0 HwQE9uNjUj4g2lE98/hI4NEYxxZ1x983buo26GnP21N8U66dg7rU0Wyw2/TeHtHcpaH9wOunVOX oDjB7ZFnSMG21whrNxA== X-Authority-Analysis: v=2.4 cv=eKsjSnp1 c=1 sm=1 tr=0 ts=6a5dd681 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=Wval_j7vKiRkorSqWqkA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: dAkRs7JLaPQQ0SB5T3acnIW7pTqBMFjZ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX6EDRzJNH5r0A f5Xo5TEOV+Z4nrMXsiFp0KrIyrmEo5OhXqmK6lxjdYoYWDwlo0vfoMVNvffH7j97/uH5Ri94XRC T/vZQVkM17JUrSCJ8eP0fFelJLaakRU= X-Proofpoint-GUID: dAkRs7JLaPQQ0SB5T3acnIW7pTqBMFjZ 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Reviewed-by: Dmitry Baryshkov --- 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 Sat Jul 25 03:05:25 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 4A3FC3CC7F3 for ; Mon, 20 Jul 2026 08:04:21 +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=1784534664; cv=none; b=ggws75bcT1ty5A0rDqDAbTByr0KHu4yncCiN6zknaGouBmGxZPCgwAMwA9Me9YOPybkVKiIoB/Qv9RgPr53Jw1tB+k3XQB5mAUREv2gGDFedzicC4HZ36SsgyvfIKP6DBLb6oIwHRzUpoVuHz/jj8aOpbmzZ3EnItlkxXeNmMG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534664; c=relaxed/simple; bh=+a2PwVdZXIN3LhIMygJSk6N3n7PMH7uL5OC0qbZNTaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oembVMb0Ot340lIqRFrL1W8WFN1jRxUxbO1eZVEq4XQ4DOVvZOslg/lizB4oJ7DDF8jGN5nAQICt1MfaEEUoPh0jWYsZRQoWFCz8eYvrrG8Ye+4WNgWyrDkkIEIRJSGBg4JuUEhlmd5P65i6+dZHJiOrYcyksbWHF6zCq6Ps8Go= 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=fQ7sqhGU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bX2xFmyV; 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="fQ7sqhGU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bX2xFmyV" 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 66K6RgTk1774809 for ; Mon, 20 Jul 2026 08:04:18 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=fQ7sqhGUG4Stu72B RIyhrfdXdGQySBtD+iwK3oTc/ESzt40Y4Xl7fU0qkimYW1kaHa6jS3xFEAllsWXs tWT5FanGg788MO7OtGVhWa1hkxoX53XqWE8Wd8ZrUGhq7ZW4XR0HZ9hnOwer8GC7 iLYOuNKFFn/kITX6LEWVJAwUfHyfWTlbGw49cQI3Ci+o/E4lHQRw84ajDE3KrVqH UwHyuHodFgaFrrZlEVBKCgWEUgNMHjRYKGWxebZcEJLKb4BzdNAD/Q1TB8T6vmPL WoSW6DGKASlpI18iU6gBvVxYdur7Py6dtoCshmhMNT4P9M28XTdSzK18Ftngojf0 Kqxz2A== 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 4fg2af5365-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:18 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c110a3b6aso105026951cf.1 for ; Mon, 20 Jul 2026 01:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534658; x=1785139458; 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=bX2xFmyVQbMILlBuKiLcakLR0liKvSyfnoQvDeEVAq19g5vcRcgJMPrMZiLKzmP8G9 lf3sljDEEoCIt4oRjITMpfVEf5RqIbpca4cImwVCvZUCKa+cX3X5ilN2u1rE2WwF5Ik0 iUuMh42ww2VaV/9edCVuUpfw5YEojaaOqdCctRS4jgzTN49w8FhiEK6JwIAJboKN5G6j VL6l5ZsS/lrjt7c9F+WoXM+AUJH40jXQDxcEOrsvmX6OKtxYCHVfZ2h7vOCunbLFaVK5 kilFBrES1K4VnR3zIEU8BtuRKNtvkoFhu0kvKts/dHGdGGnoq7xKMOAiYxVrpEr3MM3N BcVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534658; x=1785139458; 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=JNnKb3r9Bwed5WzNUuGJqUWww1SMOXddWyqVF+FlZDnonTJTv9uLk5Ih/NM7YkSIU3 d01UiWH5LeN1liUVpj/iA8it5O5t1JWCH5Xv2c3Jw9bVwnSmR7hnBLq29rFKulXrNTk0 G5sxpJHxeVqCc7Xdv2BOAgO6sfae3kx1xcNYzNQgvXL51X8afKfT3wZP2h6v9arQU31m 1zMuot+YFIOmg3GQpaVUMgmRVK9irwshA58AHuqlvl0soM7lznN1aLtZ2m5nhRauhqeO COrECVrDc9IubnVacPDhMUNrrTUwwRGuR/6cJZNYq/UGK9q/uWMA4WIAaiNv0KC9KGZ2 K3sA== X-Forwarded-Encrypted: i=1; AHgh+RqrSIt1lwy0l+nBnUcMhOr1xNnLACPsw4tphAOvo+PjgzYwDKz1cCTlHWSyqGwSIaivHQh7hS56ias8dSI=@vger.kernel.org X-Gm-Message-State: AOJu0YyYz30KZMlKXOv0PUMY4mdqnFQPpPiOASPeOFYdVoF/1eIDHBrn JSg0SwHNmqWPfoImAY5E2TLS85gT5UQzFcuqDbYBKmBjhqu0zY3yAV0WvBgVkgc0isoRpl+MgWA Xcr7Fxw8ZYjirLkpFaOOg3zMXuDkI6gF+h8T5IJrZeDQpT0cgukSnpsTumnuW7oxMuxI= X-Gm-Gg: AfdE7ckVpB4OxmBay5A7hUMSYfAfRX0oxK4h7LTDx7QOC6QUK8scK/H4UBjie5RftC9 RyRgIaoQ4fvgZhl8ZI6YJ7vmhYYq42tS2ryQlViFjrAB8OK0NlLU8184LyvQ1h0ph7NExMu1PoR jgMK+nlKgP4/lhhXJ2Gib17escnRWhkj15/1Ua6XyU4nJ2wUASNKe05CIzwkDn6+Smg1gJZoXuA Blok5pyiDQzhJ8vGssdxkjnhMvuS221dXu3+RObYhlQRkXrd1SNAmAXqrPNJm8I3bkygBkp+iOZ yHoL/TS0VD4ytnCL9Co78zkDCou/SOO+OnsQPXSSGOWoVH2o4JGX3dhBhOkhPSrIaD0eYRSVIcs VZBpKD/VIJMZ2Ox4ty3tnRGTceLEPY8sgtxA99yzAjze0/ISWszX1R/dFEdbEz8fTkgsju3Td/i HiN6ImF/SXWXPxZbWwl/CsSRQOkWaSL5sAmRK9Le8/uuuptpn7f5s= X-Received: by 2002:a05:622a:43:b0:51c:6d7:215e with SMTP id d75a77b69052e-5213dc9828dmr122931621cf.32.1784534657776; Mon, 20 Jul 2026 01:04:17 -0700 (PDT) X-Received: by 2002:a05:622a:43:b0:51c:6d7:215e with SMTP id d75a77b69052e-5213dc9828dmr122931301cf.32.1784534657277; Mon, 20 Jul 2026 01:04:17 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:16 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:07 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-5-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX6eUpSVGYAhf1 GWQ3J0wCGRMLUPI4yLlCCSayUfJsdbSCYvRDstqE8yvu5MQl5R37W/lDKfQhrXjQKS+82R8VeMu gIArMnuiEiFQW4/mW86XpoUe5ybP55M= X-Proofpoint-GUID: cpCAbMP_8hotYptODiQw161qtqvg1QLS X-Proofpoint-ORIG-GUID: cpCAbMP_8hotYptODiQw161qtqvg1QLS X-Authority-Analysis: v=2.4 cv=a+sAM0SF c=1 sm=1 tr=0 ts=6a5dd682 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=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=QWuo0IUDA92h_ITipQ8A:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX9u2HoZj+6bVv TJAtEMBhqSj1ExhubWq6yIujiccjXTiOWAm8h4db+9INV5ksIfIULJcDMif74G/flcCyDiTQWBM ui4h1ZJUVz9t5jlPNisP3f0VgneCTLmJ5zHfLRTwQ38aavLd0brK6EDJ22BxjCn/TXvQrnzr1jO Fwg6a6w38FPfgIyhT0jWvzrQaUFDUu9MnidvXB2khDKjROQsTNEbA1SJS8Wsn4TDkeYySU1T10E HpkyPqgyJCG0XRv7TmVyHCCDPJD+xnCX9UIInc10olwAnRCpK9pC+u+0eb2WfMUjWEA3Ba8qYIB LzTaVIBVuP6nXXtNKZahLPlhoNrrQRfdskvnQ5ALRzfYExEfSXLojTCs+mSWIbVzixiANwv1pMl MHhUP9LPoP5xLsbSkkYkxLzXlVAOoE4/Ec+RUY+Kv/QSOxsF+Rt5dYxCqgLAaCBrgfNdreUfI72 1piUODHHZErCqlHhVSg== 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 impostorscore=0 malwarescore=0 spamscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Reviewed-by: Dmitry Baryshkov --- 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 Sat Jul 25 03:05:25 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 4C8963CC9E4 for ; Mon, 20 Jul 2026 08:04:21 +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=1784534663; cv=none; b=XGdxeqoRUGG+Y8Gs/57qj+3NQeUpgCsO3easSy/jpuHlko/fJbOCCdxwgqaNgQLX914tv13xkDPvZXrQpIi3rNF3uqCgm+bXuQA6gJShH9u5Egq06UWgAbfkkLHFMILOxMmx8VNFclTY4vXzEv3YjbWS+lUJlBWm2zIj9/NIUOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534663; c=relaxed/simple; bh=sBKai7E3Yd6U51Yiq12cr94RwHoduXZSxDW+t2dOViM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XvqXIPa4zXelVlV9Wx9i0u8QmoOD3tUbOWpavgM5X8pkyk6KHO5nvuWE3sKg+Qwe2HWkhlKzHwyDf35EKEPJkVSzS3ibmZrAp5Xt3SvRnF58ojPnOWy8oJ0zT6RKxvL9GCalTYJx4z8aitMULKHF8o+X6n1L9OB1M3PoYK2hQzQ= 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=SAdJsA0f; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XqoVZd71; 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="SAdJsA0f"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XqoVZd71" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K7YEZW2043814 for ; Mon, 20 Jul 2026 08:04:20 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= jCx7Bmpo4CVRX0C6gLLQG32H6cEbTnOZZEeiJrqNI3I=; b=SAdJsA0fXMRisTX8 gVuhsMg2w0YDyNaqQFdxPmzW1jq66viAnkO93uoPrM0Y8UTQ09WR9bub79dYGoLh XLitIgyuQcKQQIgpWiYZGJ9b1g8uXShmvNu0wE9YWD7eDRExrLqhY8YoVoM3UP7b xgZbzWJE4vuvOEJ9OkbPPrk2WqJXfMVBU4cRFCID2DgIdSr/MtHQ3XdyqztecKCh 9JIr1nW/2IceKShX8NAMj5JAZ7C+5yUiRTcWK41qSs0M1g0xK77ErlbNOOd/+pPs Vh/yNKINmNUkituC0alpfbvkP8ikq9KnwIyOgtOXhGdHy9wNz9u1EF/zHst6nLtt lXQUDQ== 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 4fhfdcg3ab-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:20 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c110a3b6aso105027151cf.1 for ; Mon, 20 Jul 2026 01:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534659; x=1785139459; 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=jCx7Bmpo4CVRX0C6gLLQG32H6cEbTnOZZEeiJrqNI3I=; b=XqoVZd71deCAMJlT4cnAVgd2FabGJv/Yx3oo7cDqR82VavkfqkUjRnghXTiu5n1eHx F9UePf5kDwgzAKViZRn9Q4nt1SJD3nojwLwC+iD3tWla7RsSRhPewMli2RJp7EAqBsIw hW5AhtRnBl9C1+kdKPG3PG6hZwOUhKpsS6jAJFU6AeG0BOSWxk2txQt7ixxOdORF2FXC BLTgT4SeLakWdIrWQYXHlNG7r4CCPm1ReXZFhXkXzZ4XqSl950Cxtuex+Oaphmycq7y6 vEDf5eVcMeo2iM60IM28WCQN6gHt8GLRLVa86tmLIGqlPfdnokenyh5TmIdOMpdFJ9Ip 9TOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534659; x=1785139459; 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=jCx7Bmpo4CVRX0C6gLLQG32H6cEbTnOZZEeiJrqNI3I=; b=LYU77V0Gj59h0ybxxaym6/RYjgZ6mmdM9gNMBqqtk0FGh8HeS1x0YiAMWsdwu3sYjN aAtdY14lP/QXBNmxa26X45XGo4rHYttlqqhyqTTsluPyxoQ1BkwFOqOdCcz2Q2v30YbS 88UN75yHTR+1wkUXGFCwJAvZ/WHrC9Y8yuxRNmGUGWc+j8M5YP8p4ubK9HohofikThqV BjhI4s67mMInG1GX5dOqonnVnrE3To9VZz5JHQAJRPWiKzy3XimrLBk2nL5a/0Nh8Mml FXnCYbxXWud2zv+SlCl/tVbqiJ4ztbVUNNywG7AgTzh7JtRAIMetM5q4EJdmIka0srF0 f7+A== X-Forwarded-Encrypted: i=1; AHgh+RoV1YYXkWSwVH+6cM96QcbUV3g6NGJyJGz4Wq/mfqw5iS1jszaceREis7JluiIJmU+Y6gAGK+kDA+60QAo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6RB/PkF+NaRkZdPU9zj1YbqnAOwDUPLGJ2XlcsmGJ+msAa5Xk HAYGnx3ixQFZx5whTy38Frl4CIuiQ+902jr3TR5Pyn5l5oIgSuyI3/YNizhfJeBTJONRmRMi4r8 x0CtZKjf3s3jgX4cPozQMQSYDLBBaqcCEn0ONMyQipYOj8L7TbJVlzDzzZFh2VMAepTo= X-Gm-Gg: AfdE7cmGGwwZucYksalyo2F8wHU7DkatENhTQ1EnQf3GAnptteTjE82SeuS0GAuh2Vh tA5NgIxWKkKoH8QyQoKVKW0t+onouk8v0n8xOhHxID6eGce2nUw3rl70t9tWG0kIHbPwHDH5peF dW5z5fZYKN1sxBhxETs/PqZKacX5AMohGXwoWK1660ngLKo5ksqTNqJVSfFQ6+rL6Nm3xoCLB1l a+1V0t/4XrsWgJZI+j4SzdiioiZ5pY7viHKyidVsEwcHVya2MqpBq3q1nqH+Po5It5gcoLD6yyP Loi8s3DV+ZHfep2/XaGHCJaQzYbfgrgMu2hElZz8mqzkygiIgyIQYZ3XFBxNZbf1FKbOomk2aym fOcl1iqjKCo6RSeg94wSc5nx/rbpSYkA85RKOePsd9Qf1oD73aCnotJ5ulalIjhFVxaYzSMBdM/ w8PY8Y1r/GJ1l+YqtZBO2TfJm95Nky27PKkdym69M3eT7Yua72sV8= X-Received: by 2002:a05:622a:302:b0:51c:7b12:120b with SMTP id d75a77b69052e-5213ff50014mr113828071cf.73.1784534659408; Mon, 20 Jul 2026 01:04:19 -0700 (PDT) X-Received: by 2002:a05:622a:302:b0:51c:7b12:120b with SMTP id d75a77b69052e-5213ff50014mr113827921cf.73.1784534658991; Mon, 20 Jul 2026 01:04:18 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:18 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:08 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-6-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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: 5nv_pzRycJS_ZwCA74qS59rdOKLRmKef X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX3RNpvBeAhMeW Ob9cIcY/vNKis5pM53xGRHyIkm003KRGAmtPNGq9ywhTN+Dd8A0k22N1PGCDuPzCB+nENlPlA7P P542bnvdKE8G/BMctUZ9vvi1YTP1zOtoV9/qnUXj3yZgOQj2L6AIKhzYh+5k9JnQyeFG8GLtguO My8Re0ou7sa/sFbfsIdpvaAY/Jv0477cQo+01tlP24E+BeiNZW43tSfEKTj4PMN4R7oDrwJjIQy 1+HhgjJ5hy/88haQTKzHiAJkox7l8xfBfhM2mGHEQFL9rd5g/kt/mbeqO4/VnAkjQO77WoRPJ0x WMsgnmcawtBfThDbwWJgcKdlJnFB8KF1V7RKLMrTzKlC7dioHkx5WJyWkpnux5ZApTlMYGdA4a1 mnr7ypObpBzbT97vR2EhUZuHZnaMuSLuk7nk+yHNOxreO6pdbmmvDGJYw0CWgdEB8zhb/PI2ms5 aDgaw0kLxyfVXn/koFA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX1SUIjDljh1PD TcExBTuyBR0l+rMASGy7yIidmFz3NYce/HTvQeWn5O5+9Oo3AQQTfI9bhn6M6591Yg1q0hlAo9O S4oTkm4Tqf0XIr4u9ISjT08fRl7Y3kU= X-Proofpoint-GUID: 5nv_pzRycJS_ZwCA74qS59rdOKLRmKef X-Authority-Analysis: v=2.4 cv=bv58wkai c=1 sm=1 tr=0 ts=6a5dd684 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=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=kStU6zbECEpzgAoP-VAA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 priorityscore=1501 spamscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Reviewed-by: Bartosz Golaszewski --- drivers/bluetooth/hci_qca.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 17f436484e1e74d1dd690ada22134315abb767c4..81fa41915363ce577ad7c6f25fe= 1b0a69536d462 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -2548,7 +2548,20 @@ 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. + * The descriptor itself is still released by devres, + * so dropping the handle here is not a leak. + */ + 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 Sat Jul 25 03:05:25 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 4D0323CE083 for ; Mon, 20 Jul 2026 08:04:23 +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=1784534666; cv=none; b=lp37/Gy3FPJfxy5/99UMg95iSw6s/5LJoQOlqtheozS6nVKH4Pb3pLTnBhTm6981FJctp4P2kRVlebnIlMeVTqpelRCXyN4OFGDr3bv4e9+9g3p/0/Vl5uzZVO/8Xmn/mFftIvY2tnascPKuM11x0IasEBa/Jou0vgTw9x83neY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534666; c=relaxed/simple; bh=bnTEeD/UVWG+A8qIsKS5oxfA8TAvilyqIIn+RIIDBIo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nNBYwVc55yrEgOfXQR7e0TqXWUM2hpePXlBNKMkEW+VDw8GtdzwJ5BQrtE/uejdspmYSJEHat5zqc/wv14+eYAq5rRONqYlJsTNVwKhVcUr/Gjpwzu8ohONvnKXe11Ph8cKLP1BSl8sWsNabS51Y+wSk3/9MyPO7gpJwV+BxLeA= 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=NfXDaUaN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L34mWyqs; 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="NfXDaUaN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L34mWyqs" 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 66K6RXql1665645 for ; Mon, 20 Jul 2026 08:04:22 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= pMLNj+8YpE+ddjFeUDPdXAz+LLoQFrp5xWINARMGems=; b=NfXDaUaNdKUEhoY0 lnb88ULUhmZaJnNbyOwdDE5UzJ8W2wuFSowyaB2hqJOEnmaVokWErGinYszlqHU4 M0xvahGmm+pIjxP5SZ7AHhGTjgjJ/LhkIU/LjLc3V1YZdlIVQtZPsZUm3+6jUy79 lixPhQJ8OtIHuGxmRur/3ElPVvMjZWTUhhjvqMuqselYABDzwuU8Tr5PvQ2YA1kM dodwhZip4qcsf6guvDJQKOo7vtJ4mxGIYIfmjkWb1pBP1uOXWLe0ZDOMbP0lZwQE +HEoKsGUmHSVoW8h2/zRg4qWOvUB5DfuqjPf70GKeppcES5x3KlkkN+QX3mTWZ9m JJRGtQ== 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 4fgd04v2tt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:21 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c26012cd0so174986071cf.0 for ; Mon, 20 Jul 2026 01:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534661; x=1785139461; 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=pMLNj+8YpE+ddjFeUDPdXAz+LLoQFrp5xWINARMGems=; b=L34mWyqsDSHCVQs9L7puuu7BsqV+Ozj9aF8BZEIQBa1MviqG/dPsUnE2j6cJruULqg 2NmwOY9h0hug81EPRn2OxCLO19J/PRxio00GvOZwvGYykk5oKdQLf5hqwLpZHL1/Sq75 8afdsLf0MVYwoOfuCZGc3Jp6DXiD/ZZkqN/xM2j1CmiYkP+7RWTTBNu9gi2nAHG0j3Up 6wlMGLm1Z5wkhXye5zN799GPFcYLVEYRxbqVDFuqQjIZk4Cw3dTqO/JWANOkNtDp4+vl DAqOJAi2cyhimCnq4TWJX6qGEIGZrFlTOTKglPYf12O0t0EjTNpbjrNZGUacS2w/nWG7 MHsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534661; x=1785139461; 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=pMLNj+8YpE+ddjFeUDPdXAz+LLoQFrp5xWINARMGems=; b=srCL9ft1HSKLgvJZZG/h+ug1i4ar1HO2Qlh/jU0OrFY+ncl2qlAQ58qjFxqMQhO2J1 9Khgswwv0F3WPx01bhoJa6nieiDTtCuxiyC6NNSlz05mVKi6KvjyK4JbKKYBfCVWYPqW CD82/xUr6tjfv5nm4xpWZmMRirWD4KRfwZMP0Yqz2aiQjvrosmoFrYgUVTpHSXw27K3k oCpcHpAMSQW++FuHbio3m4bWIuqxkPQyKse0MLdyWBewqw8HdGLYXhTvPA9qx9KBk7vt xt0mYlTWFkXPlIXAz9Zhl0gB6ukZREyPqjeI5IXKwxFGcMMND6rH5xSG10dWjorOsUw9 rLhw== X-Forwarded-Encrypted: i=1; AHgh+RoGE5SNjnpSwQz+albMhDyNq1RxTbT6M93/+Mm3pL3yygIEidKM2ZxmCLFnrwccAeOh9LQQH8MIt0aKJug=@vger.kernel.org X-Gm-Message-State: AOJu0Yw448+ijFlUvBKUkZiiS0DftCQrWbll9IQlVLIn97B5yOAPNX8o KfqII7XXA78pmYG50qx//KPPCIipQ9KdhnAYnQCuPuNFKOzEVwHVZJ8VCqgCT1NeHmxioO+gqLX dPuHFsyBLdkMatcAg3ezsxAGhD4WWtvFQaSQrjDkqrbuyx9svVVcpp31B0a9dHUXsRPw= X-Gm-Gg: AfdE7ck5pR3Mt+my7uKCrNq74lqdaQKC+ZnDwNT6gr+s7TwT4KHmaah+Ztn8CBCrrWV 7bnbXn/GRZPoPZKCipCj6xDcovFajtHZ2OGm7GBiBNOKyw6BNJzMIOXFttFZ6AQgz21IzZJGZxa cfF1K9ENHQJ/1P03mmLiYdqPLEOucjHeAlvT5Wihswxt3urBRIfqjyrLBzYrnLbAnjK+UrfkGzd CwLV7N4IGS9xe+uVhacDUxEQSwesYvp664rifGjn8vxEwN0jbEFHcNx3bPtoB3pDKXAY5OPPZyg Me9aCMzy48+muEnJBPnxymeDax3KG/tqqqedoae1jQkAghasHakjziAHX+vLDlnK8+4pU013OIS 2hNhOqvaP3tqvjRZXsris282w1e3ekyrL1/2dkprr2HOYeVbpOZYXfZ+o6iMzdKB6uPkjDvBcfV Q3itXexX1JQlygC9DB3hsyhkCvBnnzg3t3D8F1yBjUcuC6lhTnsUM= X-Received: by 2002:ac8:7d10:0:b0:51a:8c97:938c with SMTP id d75a77b69052e-5213e182f07mr124772331cf.67.1784534661102; Mon, 20 Jul 2026 01:04:21 -0700 (PDT) X-Received: by 2002:ac8:7d10:0:b0:51a:8c97:938c with SMTP id d75a77b69052e-5213e182f07mr124772011cf.67.1784534660628; Mon, 20 Jul 2026 01:04:20 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:19 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:09 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-7-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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 X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=POs/P/qC c=1 sm=1 tr=0 ts=6a5dd685 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=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=Z5-lucBUan0SmjtTDS4A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX6Yec8lyZ4zRY G28Tlgimlob0EjnpjKaa4VHgWaGloOu11OY0n2ZkWbKuMN9lzm3RIgtEjbhBUbRdNjFa+WPfHrE KcKokp4f02MQmKsPmayeBU8fxAjQzt6JWb55M/GoKL9C0IPtbbF2d1tvW1qsn8/nEwpOPBMXfSW RX0+47LYf50VeAf05Lc27vr79zYhEGX656xKwRjwg8hRb1I+YK8N9QxSGcibVizlflgP65IusFJ 5UQ/JxXzk9VN1hT/rKISk+lMeHB18oM5uhvteBSq9X8LB3Jr+uilte9dPJNsgNUP/5O7iKESMZg ItmB0gnPllPGpntiQKq9rP7VMLVosXAjUh3MtS1/S4/lnO1e/BnXzWbfoGur8Tf5t5Wks8PUkmn vZN72CQ9Q0kjBdrUiXqNDJXscxlcmB4O9xus1PvZ/FvC/5X+/koRo5pqcwRhhVOgq6SV2aopkfy xiovV+ietunjv02hKHg== X-Proofpoint-ORIG-GUID: k2sL3MZCdiCdrAcCy1PWSwIB2t30fjsj X-Proofpoint-GUID: k2sL3MZCdiCdrAcCy1PWSwIB2t30fjsj X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX1n+AOgtTZp16 n8ajWusNEWCXwQwDenhpw4sspaRQdpXIPmbxx7wZyDDrFBvLXp2y1RzTjeXh9nHN5fwmtN5t2Yp huLrc+BgfAMmbV/hsGnidRAKOvOj/y8= 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 adultscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 '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. Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- 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 81fa41915363ce577ad7c6f25fe1b0a69536d462..7e4cb03d3db0722e5f9fa2e7a5a= 9a0894bf4f18c 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,16 +2529,16 @@ 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. * The descriptor itself is still released by devres, * so dropping the handle here is not a leak. */ - 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 @@ -2596,7 +2576,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 Sat Jul 25 03:05:25 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 D86363CC327 for ; Mon, 20 Jul 2026 08:04:25 +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=1784534667; cv=none; b=X0V3/tJpkj8DPJP7ITv9afyporsyvKiqrRQhlSKQWQomQvyVUmcIfqROvCOeiDGHzkrR2ts/9gQILpRotSZxT74hX+sVrUvRSChTXDEgbru1YzWzLMGGh4+j/lH5Xic2w5Bm9M4S9PdLyc3ClKCDLeN83h1YpbpUoz5o0my3QAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534667; c=relaxed/simple; bh=U8KvuwhbRpvu6yox7283/96nA65nj+Pg5RSb19E+fVU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WYmBDHqTbQUGpgmnU49ZYkkS8fTyS0/7h4/lZNTrZWKDn++VZlQzH3WX5ngogJBV29YDXyd3hUx3bYfRNCBPS5u8NcFVcEulkP5YTMZuC7HZ77sJhvLo1BgX/ngi+//LvFxzxDh9rAiJm3xGmniKEYnFCb8sBfpc9m3XNO5WRSI= 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=SEW7l6PN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RaVBE1eJ; 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="SEW7l6PN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RaVBE1eJ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6RWSU1420204 for ; Mon, 20 Jul 2026 08:04:25 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= NlR6oxj2RqcNvssqISSxd1MdkBoRpFWAjkKBrBG/ulw=; b=SEW7l6PNW4mzQ8Fz LMfkWiQQX+926LWkPHT9O40TIIhZ0FaQ+GMiOJTrA1/r7s3wAkURYbmKBT9QtcWX Dhl686U6TSQcNEHw7apYtL86ChI41II2DboJI0QujoN6fy517Y8j5HPrgPJ+SF7c 6YxnZ9bIQ7gMKeoDIVLRXm5QB+Ujk5rCugEfIObx1c+N8AsMK+n5BhSxKS3LTYyE h5+Ihivtt/h/Uvl/pIRi9PFQNXMMCSZPziM7aTtDr6ALKBgEVo2EHnzJ7OBbmGeC QMkzSSE/W0QNkBd2aOSGcpbq9Hratd2dIczYQ0TEidO3K820YERZABSvm6hEp9Gn 53UO8A== 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 4fg2s7w1b9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:25 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51bec738909so109246981cf.1 for ; Mon, 20 Jul 2026 01:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534664; x=1785139464; 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=NlR6oxj2RqcNvssqISSxd1MdkBoRpFWAjkKBrBG/ulw=; b=RaVBE1eJ1H0C7QjxoUIUpZx3FvkGbedSucrBCIQFoORflrFLm2MB8UTmrCu1AqxLLI MsBtiuzPDxwevfKwKGeg+n2/WT392J5fd7Eq7dcpWm9F1/huNMcvFKY2cEiv8BzOwPBd TKzQ+v71oxukMVvlAJO/5oDIxTcl7bHPcI13EueqmbeKapn/JsybdhlvmerPYXrDZJKm 5QLvKIqBZmMKHxG56BBLztnMCWdPD8zosEHAh4aFZDQupDrcRUN8BpyeJjR3wtM/AXNQ yguUYDI2V0r7RE8Loy0XA41JIeKB1eChmlxmSiiiQQxerwQskItCrrf4GLYmzvbgpBHT Zmow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534664; x=1785139464; 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=NlR6oxj2RqcNvssqISSxd1MdkBoRpFWAjkKBrBG/ulw=; b=mE+es0eyJhEwShX5QmVu+FpxUc0cLpKqw9Dfp1Qol3VYdubOgNbvO4eZG412eFiyZs +y2a3ZjVlYEC4pnuH91tdurBWKTyVwBbUlJtFqE62NvXd7Ps8Nr7jF1d9TZMIlsoIzvJ 9Ju9I1Cpct6Z86yEGbC7KTeB9TG7scMymPxpFb3WdjjyjAxAFVPq1fn+ApyK/2GjdyB/ KoWoCqK6zP0mJG+wDcl44H42H7HPt3J025J0RQ+4LgtG1GREdPRV0ApQk1qMGWblEH/T NU4ww7C08TicJlZgJysqcYXt/8sUXI7sobJGCiSomWKHDDRutQHeogs5dHYA0W5fw1gC nJmw== X-Forwarded-Encrypted: i=1; AHgh+RoyGn3wHpy8NNcUDCVtoEctxKxti4Pp8o2fbHHXthyPp80snK/Ibd3dA6bhhpxxtlnsISz6DX8Hp0s6AG0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywg3LpoF9SG2qFloApcveVYRSU0b5+cPNulvOZOWXIldWUgCJRM 7s0LwafXif2FT1cPACGQG++wi+5+t1bM7d9x+Pp1ef92Bc9xsiIii7/3KUsBWkma7usttXgH/ko ayze1qtZkuXRQtYbFX/btKPRZOs4DjAqrwcx/cR03wu7GgyXBPO4R5RQeJOD97XAUDwo= X-Gm-Gg: AfdE7cm7S2lIbx57lgr86kiWGdKQif36bFI6s9btrPp09zHAXbw8kNb5XiMgJQEMMd2 E2IePTTgWn1PcPc1vIfqLGJz8wKSOo6j8AW6c7XA6v1PlcBdtZJY2FT6il28Hac3BU14JDZOXSd qa9q5j3J/W1+9Rtsg3w2hCGIKvP4/s9jYInENxHcfywnOnLr/Xewnt5GvX88fhujdxV+6n/JFYr gl59+d0Afjhi28vg+JkZX+WNiaQxYQtHJWCGIWd19dr44ExiPNoyjb0LknTYcxwxP/r+crG8oC7 PMmu0JynecSYbphyeh+MtoRvg4FrBDiyqiJN8pEL80YraVzJnBjcOuhaPor9CU1O5pWcOJCNtNE f4vN2L7t3CeJM4mBINXmbeTFjf+g4bMs4fH2XF7LR73knpCAg/q6Hx2olxxu8ei+2L1Y3Eynaft rYuvERXM8MNgWqDfNaf7NIcRm4+Xp0WXirJ9CrwlyLvrVBMSeG8b0= X-Received: by 2002:ac8:7d0c:0:b0:51c:7b12:5fdd with SMTP id d75a77b69052e-5213ed77366mr122378871cf.73.1784534664222; Mon, 20 Jul 2026 01:04:24 -0700 (PDT) X-Received: by 2002:ac8:7d0c:0:b0:51c:7b12:5fdd with SMTP id d75a77b69052e-5213ed77366mr122378671cf.73.1784534663794; Mon, 20 Jul 2026 01:04:23 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:22 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:10 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-8-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfXx0S4lgBj8yvD 1gACY2YqPtDavoU9bllyDbVga9RoVaoTVszxPfW6LSTgerZMzPsiQ84f/PkS/8tSYXFPQn9M6s+ ksF7CzUOTHYinTQ2CxkrvPalPDkdnNFhff9nelM8XtgrR37KF6EIljqVTqPE/BBq1Qc7RpJ1vPq pEv3goIccPQCiLzV93UtkQgu6GuIHumM7CEg2w6umf7NomEEBHAzsq4FZ1JAFSEeQNqmiFRulzH ULuk3iWrT/5WhY6K0StAaDS1IfJ9dyf2yQD4O3x92E/Gf0hmPiuCVnI5d9q/l5ddgqGW3zwTB/m 5Sk5t+XZ1K2VeWUsEvsR6uXGG5EgBu+YKGRlXOk03IQ0G27OD8fALtJijo7Y0kE9uqSdxVU4Sbe SMVOO4t6D0SklfiUJ6NBap2wRokUacWiPeBwBdbihnu5YDDk2WEE1eBoUB1wdRMLjBE+J5kXgA0 PjDvxrpCsPfVFO/J8tQ== X-Authority-Analysis: v=2.4 cv=eKsjSnp1 c=1 sm=1 tr=0 ts=6a5dd689 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=YMgV9FUhrdKAYTUUvYB2:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=reVw4oyKNVL6WbIJD7YA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: iASZpji5ZatndovYXpEKLx1xFXxvnko1 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX0HfDQ5uKBVCN cNBx2/kll+80x4OMXdcoWybSH2CAiOUuX/47nypgaDP5E0Sy6k4+gIGFwwIu7weD6qTK4itiI/x KeLCbhp29+8/HI0E2Fwk1+TN6g0vrEM= X-Proofpoint-GUID: iASZpji5ZatndovYXpEKLx1xFXxvnko1 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Reviewed-by: Bartosz Golaszewski Reviewed-by: Dmitry Baryshkov --- drivers/bluetooth/hci_qca.c | 47 +++++++++++++++++++++++++++++++++++------= ---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 7e4cb03d3db0722e5f9fa2e7a5a9a0894bf4f18c..8496bd428602c48d093bc76f981= 0abb9b1c43cfa 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,34 @@ 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; + + /* The pwrseq is looked up on the serdev controller (which holds the + * OF graph to the M.2 connector), but its lifetime must follow this + * serdev consumer device, not the controller. So acquire it with the + * non-devres pwrseq_get() and release it via a devres action bound to + * &serdev->dev instead of using devm_pwrseq_get(&serdev->ctrl->dev). + */ + 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 +2448,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 +2461,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 Sat Jul 25 03:05:25 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 D2BB43D16FD for ; Mon, 20 Jul 2026 08:04:27 +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=1784534669; cv=none; b=L5mG0fSKW/G9cq1TU7zsM3TxN8BtgIDty6OHe2unLXEk+Sxc26URVlTwJv3WDd3rnC+xX1HxZf3DfDL2LUtRxqpcZJlOrxv0+oNbdFC9Lr0Td6S0Mw3d5Fb00vm9HKPLwkEKfEM0gD5PVUkOS9pwhLqyFi6FAv3RHxyX+PZkako= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534669; c=relaxed/simple; bh=xbR26F+2IK0SwAaQUmAO2+Xe1VwKVtt+NKXks4bobiI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lepohuqnrlA4VdnEQWNbRwxDNcOTE8X2jpKKHLz6IPO1+UVeADmxwotAzo73JO/FNLKKC4iD9yKL0GEecmc3YwziT8Ysaraf/5bbl8vigLuuWfrSLEnUb8y43PdalUcEbWWzSYAWPp9S85vXsZ6swxGnot3U2cNJzGJU8iqqtJo= 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=Zzb3Uuxb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=My88WpM2; 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="Zzb3Uuxb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="My88WpM2" 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 66K76Qij1712940 for ; Mon, 20 Jul 2026 08:04:26 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= fdPleMKS2IC93aynK6NEkJ3p446vokYhvbwvmK8b/Kk=; b=Zzb3UuxbLePsf19z VswifbdogvpjyA5p1PavnkbKMv0olLZEgWqdiK+G9OQgGtvnnjfeLWtOCPPveOv0 5n6sZeUQzDULQK+9/Xe+b216bmSzI2a2Cptuab1M7QgBLYGs1RVivj5Nzcbkww13 yJH05x2VQJ327Fdx9k1EeZ0pxQDB7J2/nhXJ4wUeHLYaZbkyqVARlvipZif19H+5 aMjIPznq3xl7JnKyH+ALRWFjchDANKMT+wllLoJ20Eg0EsBo5pxV8nnvjPoMpF+u a2L2Ccz5aq7GoXdIUDghFrtaILLXaGsTxg0wQ+d0I3IsG+tysUH+uPKnTWF8uBWZ EHDVjA== 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 4fhf0c06wb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:26 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c0f0a0760so235537451cf.2 for ; Mon, 20 Jul 2026 01:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534666; x=1785139466; 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=fdPleMKS2IC93aynK6NEkJ3p446vokYhvbwvmK8b/Kk=; b=My88WpM2gr1AKY9vCuENEKESZBIi0XiDf/Sg15JkBKm34RNH/j38nsOul0MPreU/SH OVsEF8kmB7kXjpaqnesKjQSXzXdiQBHVDzT/ibIbMLUS6dRU/L1+y3YjxjgEllM2QvVQ fGdB/B3ApquHMkPj2qZ2Qv3kzgh6689fl6jdRucaLNBmNPzzw7MKu007nN3k8LEC+BuA neKKXcWIPNpC0sTgtEk7k50QYvNevwGLCY+sgWhKANjfmIWBbalkWbi2G0j18l94Ui6+ KYqYe5iUv3MZSv8Anf9GHFfETe/0AKoVbUFvumdjqEaN6gU+Npn2P2jrYAuNQZWHMXIm rUnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534666; x=1785139466; 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=fdPleMKS2IC93aynK6NEkJ3p446vokYhvbwvmK8b/Kk=; b=BrYnm821KaSQ5G85+RQ26VedbzOfDpCpiqwAYNnk4MJ21RGXIGzCvdRFhFtjbop5ul 8dVeB5/SsD9LVlaFPZz6chZrCPsAJ7hi7gf63duZQJizGCT5XVK3X8YXMgx4JYWJcuo3 6vxI0FyIVvaudvdPR1LgbYtXuHo61mUXoWYr44moWgZuo9qLDzUTOUKS0afejAVxQ1zb hnjpDBiIRqQUigbbRz1wZJxjNav7A7F1zquQDZAQpnivZehqwMK++wuKP2T9VFiH0M3p bGSICMGSltYTBM6ycwVr2rRQQ7pFfPMLEsbjsTGU0mUZ9vT/khjSXJKBEcknwJ5LCnR/ LW/w== X-Forwarded-Encrypted: i=1; AHgh+Rp40Hdorel8P0fom7cmjpLIr7y9SgSghG5A1yvl1bQw04xOAmYWw/ZJW7Jf9Fd8Rl4EljzDmmrFyxcWmLI=@vger.kernel.org X-Gm-Message-State: AOJu0YxJXsow5S9KnonCT0PiKaJGQretyckiT2uzI9FLDxuKh2RVxHu6 I2D9hDdVl0sIgH06pla/yuhtNYndnrSfaO1kHSZ2ldcipNBms+V7MoZHHwCpjB+UbrwmScmcX5g IVUKK8dAJ7CFCRDg5+E8tN6OCMal/qzT/9ed+ksCAZKI5FZLuqaEvW8V/NccwHoelsT0= X-Gm-Gg: AfdE7clIeG/26vvSGf0ucvKjz9+a+cVLeEU9pL4xJJTK6YZ9gFNGfL1UbsRpXbLQ+wf v0FdQRS2xDxUyw0iCaKQ73ZTK/dSrKVxiRv5B18uie8s6elYRNBNCyYg41pGeBZuhryGVcW29MG xObgcu0lBcw4ULzC4ipjdxlKIwb/tgAwyiYrozCWac8hjvj4XzUfC6ww76RvuXRCxzI9sXBClxl KgdJ93TCf1E+k3Rq79TOy9Mr34IVOVo2+ts9SlevKdXqU+fSuleNiSDP69ANiXapGGeHeF71FoP W3693np/QVS/RFdeb37u9whSBguC7NvZY2SU2FzZkHGLRegRFN/eBWASWKd1aTgdwG7TfIx3dfC Bp32eZ5XlLeztEVLDpW6eA5tAyylrRLx5hHt/hSW7rUsFZ1jG/0Zn39/wjfL0zoJA3bKwPz1GdN brkAzQZePONFFkx/uFuUC9LXARDKZVprCa0QznpgKUW4EhzCRsKOA= X-Received: by 2002:a05:622a:1b88:b0:51c:1027:34d4 with SMTP id d75a77b69052e-5213c8e37a7mr124754311cf.11.1784534666038; Mon, 20 Jul 2026 01:04:26 -0700 (PDT) X-Received: by 2002:a05:622a:1b88:b0:51c:1027:34d4 with SMTP id d75a77b69052e-5213c8e37a7mr124753971cf.11.1784534665522; Mon, 20 Jul 2026 01:04:25 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:24 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:11 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-9-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=HeYkiCE8 c=1 sm=1 tr=0 ts=6a5dd68a 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=VwQbUJbxAAAA:8 a=M8sXMW5dAYDte-7YvdsA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: hrhtLrcORLECGZZS_FUuaKhOr_Qvx699 X-Proofpoint-ORIG-GUID: hrhtLrcORLECGZZS_FUuaKhOr_Qvx699 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4NyBTYWx0ZWRfX9RdeE5joFocC wpYaaLg1qD24m+NZWu8mPeY+p4iIwMQqu4EZ20JtlLiffgB5RTEk0vuidtfeOe4rSE4WRpOLaJD RtkNfyO2Fxn+mWq3N/263ZLXhGIYfkk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4NyBTYWx0ZWRfX66PPEcnTrzRA Dp4ZcvCpXnGPz0FaYIuaAJ42lZMji+PwgZ+ZEFIlM856EPdedBHAU6tQ0iZMDQelOhe8VUwMUPb hapVIAa4U44SRN37+NyVE/ZwamtHu/u9oZzSHOGgy1WaCrWbTOZAxOe3tRDmLR7jkyt8ZJhxa4d 4cf/2A5S5SAYeY2lpF+Qe4lpnmKd55AgYm2/Qlup2bs3IYSRYNPXkIBchzK7JWzRfS2fklhj4ZH bXHixu+9xUy6sWRJOJtpd7LD94JiroLeQbC8UO6WycZGKmfXD5um4rn7Ln37E9BJ5q9orQ0v54T Dy2jsFKisBMZB1QY2HyUyzAEufuR+FQzi6hTu6Iwq7pPD6wB9haTo7v0/Z4d5IYESSG465VFnrB tDDdM37Qqfh9ybD1wu9vJ3ZcgtKiwhsm0G6nJaVV19aunr0SmdGJ7sthtBdaCg5e0UUY11sFjS3 2j15j60LjWdD5JHSxNw== 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 suspectscore=0 phishscore=0 clxscore=1015 adultscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200087 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 Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- .../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 Sat Jul 25 03:05:25 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 D31D33D2FFB for ; Mon, 20 Jul 2026 08:04:29 +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=1784534671; cv=none; b=Z2OdhbdSR3/J/a7n94dD9/+L6JzgnQZTDLxkqZF79D44QYcIX8EUTh2UFvIvUMbx9+m42mr0n4OAXp7K1r82cdNtWif3U/hEs/EkxretsOCyLSYk7u1dVQvK8zNoTJWvQcu9DoFqkInhcq4veL9hOdWRNGC9qhToCgc3M3BvM3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534671; 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=Y9+2h6ezCIsB9BcT/WOGJHoRha328h1oM5vvl8cXbT7T+Nwk6SwRF6yxJs9kMRvcfeLcWZMCHbssx4rFD+2JHe/xIb4TNJAyoXIWb7NAD174GPiX+UPciF+Kq4ou2AEemMpLPGITWEA9M2xi31FkAYmu4Bcl0ITUMCNtuiTA6lA= 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=VCaHag1j; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RtWqlTRN; 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="VCaHag1j"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RtWqlTRN" 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 66K6RjAU1713706 for ; Mon, 20 Jul 2026 08:04:28 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=VCaHag1jvVXQ2BOH uwzG4mXIJwSoR2dCt1iFW90dEHbfRejWBmRx91BcorV3V6Lzdj2MXQWZ3004v4mM sWwUu9BVSJiRGAs91ItKhGYM46qxuy+oolDkqiwnBVP9tdkl1XlXu20ywic/CU/3 zdreB3C6EEHTkFQIO8u62CUeYfmZW8VSsgme0yXTKLmkgGVtDQORxZ89DIl1YbbF 1x+8gTjhlhlUvBih5DD3hGiZM0eYKHHzZjGPhi8XPvEHxCQm74lAhcltqvUPSRbR U4ce2CgkNFPsb9E9oi/zebGnahunvDEaepT2DnIPSKcslhcW65EuVOlxfV26Yyuh F/TE2A== 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 4fg2dc549q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:28 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1eb52e1fso77503411cf.0 for ; Mon, 20 Jul 2026 01:04:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534668; x=1785139468; 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=RtWqlTRN1Y9Lejq8UtOzJrNhqa+5/th1Bb+FuxE2GVRwyyfyZDFLUtbNgbyCi3hG2D G6gOpm2x+ZDk4pf8h/JBTCn7t74E28XPmWSt3vAZIBEPNRLgSAU9lTt/xYn44ytE9ZYz 8oYp9tjo2nph+9yw0OOR6gJdDvP5idG/OaPUXKoYtb4vWYYlQjf1I5yQw58iwkT5qbSD yd6F11yuB2xkmJGMhLfB4cUOp68QOuwv7iNZG6KtZVuXQFOWkc77SrJvhI26t6se4l4V pNUBLdwYPoEFLqv3nTEVR/rzz2BRnxrD+H4/bB2reEz4I0GpRqkb0gnTZwCmDGBwvnVR 4DjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534668; x=1785139468; 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=NRnOquohftan1qpHVum63POp5Z4OUU6P84cVaBdVbWyFfC5rInv2bdaDyrn0um3/yG Juft6JHGZXC1RYxsdn3Mx0CDE7PBXh2uq45RQI3dUPh9YPAInm+bUJf5SfvU0i8P7OSW gcyBcDeJ3wFyNHMuPFxkXakQwSuP5uGjQBKoEWmKtNo/EJi5y2p68CWGiJEihLIa/0U1 cXdQa/VFvGizg3ZRCp1HQPtAzgwdaSvL4QctV3LfVxNq3F09v3LTseCHZQCRx1qC7Ybm RNSoWrg8sZdxbGUPSCiAEOoOEvIakhIc0SDAWVnObS3E5keDGkukeUA0p7ejgHx2jHjn hMlA== X-Forwarded-Encrypted: i=1; AHgh+RrW8HYl2bVKsRBL1bXP0DvZpt95jyj/nI1uMqzetxd5s/lkp/bxUxqFssMim1aq+ijMprdaThJ9ySVj+gM=@vger.kernel.org X-Gm-Message-State: AOJu0Yww8Gtx7eedkMaZcbcz3FpG4qWZ2Mw2F0JBGqCVd4xdcu8evyDk WyMhc36kI8q6p6SGosCmnS12cNBAbhu8JdfnaO9YLwfmzCRVDhgCRQGwbjJ6zbtjsj3PEBorrGe +8n1g6yHHk/SeY2hqP4uBNaB2vQx7bhoLgvdaByYhCdVNpstB/nLn4SVLU+BVuN52M5c= X-Gm-Gg: AfdE7clzWE3ZJ5fK2fgC0KGh/5SQosVYoB27lJdgObMoLvGPjUewjEVmnW77XzDydst +ifH1wq8UtjPm8Hfl0qGpP4N2KXHViHMHwasGV74c+D9c2rERQLwBZk+PCsZzpdgTH8xNQYwzM4 Xqtes002oZ1lwN0fzSsG0RQ5tYFMsNrheeGvHzcY8eVDCAg/RMv6O9USO9G7iP9Yhm+87C0RiSm +cxJlJY8Q82NJMuoVYw17VVyYN9FXYNFGAanunQ9z73sEw3kPztKiJfz+S3k8Rzd/zA/xO4ibQO 3fOvKmJFx82fQTDj/FqDyWfFb1GXZmDhRSMa3I+undq35htsef1FG9XUEfMBjB2bX67U7JplsrD 0OAyUGei7Evmq1XC1TWK9KAwZKOya/qjK0J3WVi2bADV13pLIN31V/lKiCDXTxRMJPvdNbV8Q0W RcP9MgL2ur1GrL45CgfA+oz99jJHgpIcqEb3Juxss04kZdT6d1GKA= X-Received: by 2002:ac8:7c42:0:b0:51a:6feb:dc8a with SMTP id d75a77b69052e-5213a384365mr116966621cf.18.1784534667903; Mon, 20 Jul 2026 01:04:27 -0700 (PDT) X-Received: by 2002:ac8:7c42:0:b0:51a:6feb:dc8a with SMTP id d75a77b69052e-5213a384365mr116966311cf.18.1784534667416; Mon, 20 Jul 2026 01:04:27 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:751c:d61c:c91:60dd]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:26 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:12 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-10-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX7D5q2F/ekaXd +wyoYTxmxQ8BpBV/jJEQhrfP4cGZHuzBup7qJjhHoCbAKBLbV+6RFseJmAuLzC3x+vWWuoyBi/J 87nojn+4nO1q8LMcN0wYS8Qk95vAsGU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX1yqrc0sKMglZ aBoss4QNcM+HiOu0SqlehVNZgBAjfz+sYht2Zx/dO8CC5wMeAG+LQlhodbLh4yNNuGEDgomfWUN gfaGEr5jla0sBsYFcpQgvJNShBU5UpJwcY3Q618fiHl0mSMBB1KAJKFceeaLqXMfC/PLuLdXrIr 6gmwjOy4Cmaa9TRbQCvZgJ+FN+BUsptSgOvlG1geRPAYZaT0mx0v246H+3Iwuw/poeRmJ4WTjY9 O5rtgPj4rzM2kOjPCGeEiPiNgx7JNoe4VpgfJac9OK+HdSHnWoFkrQFyqH8XfX1n94ChjWmH/ed 4WVdnv8no6bETHytNrINYIdAVM4fCBMS5gC6G24vdXIHiFmqFBGwU8uQsiw2hvIXurR4T3dwBWQ m5bqK4MT2hje8ZQWiBm/cReP0TjObEuRObDtrkLL7UaUWzIAuv0a9Ah77eOWJwWGdMcCyGG32l2 xoWiAX0WNySDfqvi0KA== X-Proofpoint-ORIG-GUID: Cuuk8RtyrLwvrbas5v7O1cYpf37Q-qv- X-Proofpoint-GUID: Cuuk8RtyrLwvrbas5v7O1cYpf37Q-qv- X-Authority-Analysis: v=2.4 cv=FOQrAeos c=1 sm=1 tr=0 ts=6a5dd68c 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=gowsoOTTUOVcmtlkKump:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=hhiJJhbhXc7jC-Wm4KYA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Sat Jul 25 03:05:25 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 3A8FD3D4108 for ; Mon, 20 Jul 2026 08:04:33 +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=1784534675; cv=none; b=Wvx5+LgVUJ+TnKcEIdAMjtDQCPvYaYJV6beB2IUHO1O+abGoItxfroqAPJKSnifsv2zzwASuVfcdch+vsaTkmt+ItcUXNMTlNYOIizvx2RNllAQfZDb2Fy1gFdV90X5MXslEOsKw0jvKKeDHHA4GdJc9DSftb64/1LZzpMp74Xs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784534675; c=relaxed/simple; bh=aKn+BDqCAE7bj2HMXtEyzQOTzNrYINfaywFfnH4EjTM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TGvUnD73VOmHwWX+F60NO+1y06igpHNjWHxJA5gld09xaOD/z8Rfm2UvOPZV5BsWNGv61xJ367YG7PhcIHVWNYJEGdrTJMO/tRPB/VWZLOH8asNepG5cEFQO/e786sEuTcm43ieoTxwlWXlhk88Tc21cKz8HwnwSEJMS8gM3dAo= 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=INL42TvZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HiUBqbIo; 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="INL42TvZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HiUBqbIo" 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 66K6RvfT1714032 for ; Mon, 20 Jul 2026 08:04: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= 1p0kWGiPSRzk+9UIUD5rcX54pJsmPtFGx4DYvuUbpJA=; b=INL42TvZ4ByF1inS lv+kBeeFSQnhn5pcFZNmkypaiMO15lrp2Zje2RWjXwjQrJmt04zxAJIfnFyzbW75 u7Q69HP1y6Z6E2hw6tYI1mSXXYaKt6B9+49onvqoNe1Fm7R/jxlpXRKepCtCltDz InJkwJwlImitSgfcYkso7vLS4QMTXaeMOJ5FlCF+mFl+RY62zEuPUAcpgMZPRELn lFGWnZrF6QLnCRsFgc4xvPKW1LHErkUZ9RGLKP5avRqmUoo/a9XKiahoOFXxFv7B IlfpzNVUp8sfB763Xri6ezOmVnWQederX4mcjRkyQvtGO7HL6mnWonHx8uQMcTyj CJ5Rjw== 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 4fg2dc549y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 08:04:32 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-522de3c645dso48095821cf.3 for ; Mon, 20 Jul 2026 01:04:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784534671; x=1785139471; 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=1p0kWGiPSRzk+9UIUD5rcX54pJsmPtFGx4DYvuUbpJA=; b=HiUBqbIopCMq8KOaYpplnl5KFWF2/rpbnk8ruzC5MiKXenSArU23hJGk+xYeKNG4+S T9DJbeXuC4lv988oV1nUxgx8fac253NSrWLnCbjmJKBLENhuQwRwiRgJ5mcDXYeWbjLx 1q4eOTmbUlubjv/w1pGiAhruC/K/6M9AaZsU5KXc6cO5npjRXXGRXZTev1N4Mv+4BC4X ThAaE49cIfLpxP6DIe7b9gjBj0QzT5mQIp6Dqn5V+A9Oz/BBujpeh+eT5z5t7z/UQhRm FOzGjtkIl7hYCsnk6c537bj0wmZQC24P0EKY8NhNzCdS1jEZRyZBN7y0qxLhP5egUFzI W7qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784534671; x=1785139471; 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=1p0kWGiPSRzk+9UIUD5rcX54pJsmPtFGx4DYvuUbpJA=; b=BIjjy6RKhwyHGT44EEIa9OjlO1rOgzHcOgtF9mC6gDASIPbwmR4OGIZTb2J167K/eJ UEce4D7fMla9SXUPXeIRgppy8Rn5UIVXDWtmTKra/tu8bVLJ5s8jOLop42XC/8o3p5qW lNoveLmY6ViOH84e8KSsu4Fn5M0XV7a2dJ75rqVCZBEN5zjF4Z8//IFHZQf74vC+82ps nQQC2tL8QmDSTmkg9SRuYVe7CNLApK7vD4iXUbPYLEgTXGfjfSggHTWgccpth/YtOn3t TQjPAGBY3YiwtdR3VaKeMxnrTG+StCnW4Lq0EeGVD6bWLwKL5waXcs4wQeloe3EBrumN qEOw== X-Forwarded-Encrypted: i=1; AHgh+RrG6UVQXqCTzmFnia77hG9EY0j+FJiRju6uYqk6j4vjMljwg7Uf8mJOY89OfTvFO2bYe+t0FkBOaBrLNPY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/o2OYV19OBGzEp10Qe+mHyc710DpfvJUfcfnVkfynUkjHl9bU 5XvNVvMO+Mav+MDBujAutMxZkCRsQF1k7yOQ5HQELe9vWBLs3iK60/fR5wFw8mvOoUjz0VeV7Hz 2kK4uGeFH5D56kAbSIFb+KRtK5yDFtM2IJf27/ORu+eNW9bt4r9DVzlad2ZZDUFtS9hc= X-Gm-Gg: AfdE7cngmT0WH+PhGFFt3HHRbaBR0oQ1Sg0b7n4sTKf+BRPNptys33wvAqm128Dqq4y ct9m7KZJLK8S2kBTDgN5TI7dM1qepAoOMTh4REgtEBvaNe71vEmcJKkmbpT8oxeIVTZfjXMmgOH e6fuohOL4ashnybwS6Yo5Yt4aWNFPV6yP78Aqembd+mw/ni7l3mgyktH3a5QfVZM/Y6DPjoAWN8 1IAyO5tJCcaTtatIF911a4Iqus6guaRIdg7zokDzyv2Q6KGxxUIAM5u9R+W92B+vlIScp9vYraG 8eXsfTAt9r70q2BeKYkGjPb+h+0SK6mBwrWJiBZOgxt1KgoZnUWKtl8CmYru8ZTUBEaDPJBYd+0 uwDFu92+JRwGJYkgR/i6aLWcsCatko1mH0BV151WlTQ41V+AqM8JpWn2PSCpWPQacTOaY/6OYVi MabQQuYYf2qvfALMlczlpnvbxIckyBJ8cvXuRwpZ96PGXgl7iEmiI= X-Received: by 2002:a05:622a:4d8c:b0:517:58f6:29c3 with SMTP id d75a77b69052e-5213ae554d3mr132426191cf.32.1784534671540; Mon, 20 Jul 2026 01:04:31 -0700 (PDT) X-Received: by 2002:a05:622a:4d8c:b0:517:58f6:29c3 with SMTP id d75a77b69052e-5213ae554d3mr132425861cf.32.1784534670986; Mon, 20 Jul 2026 01:04: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 4fb4d7f45d1cf-69e7000c3e2sm4256542a12.30.2026.07.20.01.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 01:04:28 -0700 (PDT) From: Loic Poulain Date: Mon, 20 Jul 2026 10:04:13 +0200 Subject: [PATCH v5 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: <20260720-monza-wireless-v5-11-69ec6743543c@oss.qualcomm.com> References: <20260720-monza-wireless-v5-0-69ec6743543c@oss.qualcomm.com> In-Reply-To: <20260720-monza-wireless-v5-0-69ec6743543c@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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX2jyK2LWAQl8x jlyKXOdlL1LKwUfwUYDJdHegNAAIIVrqm938S8WfwVxktHl7bbL0ahqh6zCjKrmAhZr9bfnC0NQ 1SVRghs0grMrou6tf/fBc3L07aeW3EU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA4OCBTYWx0ZWRfX8F+f1MlQrFKW CpDt+hC5Y0I1GSEEVUN6p2Jt/dY1HmbsMXxL6DuHjEcHIQWsM4pcNUP516e+c9sRCN+HtHZKnJY 9kq9n4dOD7FSqO+0WlmzWMvAh2Wg/CInauGGV7PyrFK6AEYUv81KFfqD/xuuOa4KPJ9rNBg84YQ LOZ3E2ABc6nP5AjCPVsghokdJatMWOlMgrmLPjIvpNc2GBYaCNe4wKS+detB+UUr807NecDhZVe lzBhPVF/EShTVUIy18+C3gOn4TMVrVCSDRb+0yMgiZU5jBl+QLt+bScr3Ilii1JP0E7HpV2+lVG KaHAc/6X8j4ZDJLAguBT+NK2zCCxiDoXQ6kXNP6HjIWPdQLmk9JJFUNH3D2I/FmPpBggRRsiWNx Qi2JcdAMnCX8BOTw+4Fs8PU8oE4wVoIvzkUnhm64WxfucC5TlPhWF1Bnm6YJAjgWshssFZjSfCG 5vZIq984do7LGZNaUfg== X-Proofpoint-ORIG-GUID: _4OqwxpqRTJo1VVkm0juTWDnjsysOyjP X-Proofpoint-GUID: _4OqwxpqRTJo1VVkm0juTWDnjsysOyjP X-Authority-Analysis: v=2.4 cv=FOQrAeos c=1 sm=1 tr=0 ts=6a5dd690 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=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=EzCDy3pf2FPqfMyO2-oA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 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-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200088 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 Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- 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