From nobody Fri Apr 3 04:42:41 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 388622BE02A for ; Tue, 17 Feb 2026 05:47:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771307274; cv=none; b=h+A8A0ykMEHeEr/1bw6NeyBG8kFwUg5/T+o/XCPWoOVBuzYcjgOYp4/9RsqzuViQtvOX9d078qA34yTBa9Vuxb0UpaMooYwXNRF5AptPwUSZ83uFO4wqRDZAFZgpnmuQF8+1zdnY/YiKnOPcL+Z8j2H2cJqkVTmnuTWIC455hag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771307274; c=relaxed/simple; bh=1Nkj3c4nAn0oMGQRVNpOh3P9yb4HcNcK6dWvfXG3dsU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XJna5bMhEdDrGqj3Bea/LKvYXLKFHuzh/xHZK+R+YKnLUM3XahDOXs6k6HIXyGaqU9zC9QKLLYBleXKTeusc8NqLv8j7qRiyyjjRUuMtnyTkFYbA8G1r5CG6BEF8QrV2AYFOhS4B4alKhBuFZTaLpiXNDJYuNiOtvfoTMf4Bf2M= 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=Y7zpzqkV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aHLUOixa; 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="Y7zpzqkV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aHLUOixa" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61GGUCsC1601138 for ; Tue, 17 Feb 2026 05:47:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=lkJF7NQO9W+ KGAGqycP5XAQqhoM3K1UnGhPp4iZPKL4=; b=Y7zpzqkV/eifOrUZbC3DKV7hWXb k1rreuuQeYGn3OckcMn6dnLP181iDvXUFB1lS0HwjUV03m1vXQ0+JtiIAY+xdJSn bEKfPE1MgFgd0jshhPIZu3H8dnHYoKQ2vm64jXLMnhopvxR2e+BknPu7ta+s5oUG 1ISARHTjq3+FNcsiA9T56IY4KNmH+Nl3Cya4Ze/1VnuB9O5SfamWhr5j+QnC4bET IAsXPP6BrRSeO/EODpmlLFgqhee2QXDP0ZphXKOFY/d21hlyB157FX8g5ELWvwOK aI6tbEm1a1afZH/NTX0lkwdMTRA4J3hQEMTo4pQ/geCkFdsN1Y2vwChhccg== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cc6tm97x4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 17 Feb 2026 05:47:52 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-352e6fcd72dso11775558a91.3 for ; Mon, 16 Feb 2026 21:47:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1771307271; x=1771912071; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lkJF7NQO9W+KGAGqycP5XAQqhoM3K1UnGhPp4iZPKL4=; b=aHLUOixasOW956Eeidnttn5JdyHNvKznm88FPCn4z+I4IAJRijplfRVsPKECAlhg7O MydKJADMTvyVxaf6qGIbYAGz+oklx7DkxvmXcnEjkRqCz4uHlLA6QDUmjXRoEyyB1gnR jult3J474w2/gllwdYyEUxHHhV3+KFoJiBKaKD1CLj74ENjC+A3M8S+xrGXz/tiVWQhM zvI2myQYT1zojsJyY10kOIIxR+2opQZ5TSphkof3WCEbibQ+BdMJkXDQ10yLjh92uT1d O3ObLFZ03tvAoYQB1Rpn0lUhknnH8IKSQbyHfcxkRbuGe7o/htQYX4nSy0AYa2QzqK3A KgKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771307271; x=1771912071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=lkJF7NQO9W+KGAGqycP5XAQqhoM3K1UnGhPp4iZPKL4=; b=CtHtMbcXya0pUOqUI9nuYwxq7rdAH/qTqM67ezcDpdZMP2rPpwOC8atffpMy/zK9r8 Z5ibbVpzVoGnBmMcmIEgbLkHht4M6xKPjN8graPzQBSn1RSQOUFRdXgOWMGlJxgWGOs9 eMw4rmER8nEme0GpyE66JwTvi/jfCxs9nDvKwAUmoOddtR8FhQRjDvxDdt5F4LOYknBY hMR2AUI1wJPi7O6l3ao4n9hafQTtwSPfJ29pOL6gOSluAfQO6vnSKIwf0tk2+Za9kZmH 9LCB8zJCIXkPRQcCiDlni8wuwCCRemQcOQiyuYwJFq7NxKzMIxIRGfERuGfSvFp3y0Hi MrPQ== X-Forwarded-Encrypted: i=1; AJvYcCVlVBbNHHKoHTRq7QsILzrxcM2EdCQdWfuP1MGbbjehkulYfycRmfFEm8iuMjDzteenasdMwamgFTkPYf8=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf/H6kM5EcqkcNFE5NOF8eiKa1zrz0m7Yut4jwRDcCuE1sklB2 Wt1EmDniRY4gwO1rk18f+YjU2Ef+MSooDO4+1z9xmOA+kC2JkbyEgcJtGaQoP481wDvB3jRbuOr GSFoBVKLBP34ar4i8P6CVjD/u8/cGfsBpnmMcwEOGSz0DogC0yvxHxfyMx4DNYcK97Rs= X-Gm-Gg: AZuq6aJECXS4nrOXrGgNtzLuWN+d0Q3a4hDvKC+QWYZYq9YeWV98o8x6SZkJIeF3c9l c2u4v0lRc2IUobrETTU/+EagwOPThU+VPAviZWFqhEzWMq/Lvek4yRshQ/DxOiDsvcAv+xzbHQP 85Caj+APnHBctr2JFBtIVw9oTU/Li5cGSTxCw+8KijEzVGEsvbngt/0Wc3n0Dgn+4SsbZiZiUUF jnFIWuKEcyQWQCeiPoAlj53U9vD8Gvh8hlgJ5NSakSN+n3utbKpsuHDyVSEedS9ULzUZuEUXdd/ 6lOaM3J8vAKgiNarZZlw1sdpQPZxdbhpZ0+gct81MlRfC+HxQockzi8UpulS7yD+JJMxgJWNk3m XLjX2VNbuf5/OxZtlIrSfpe+1hHnUDFQ8iMPIhCH7tqhdLoHEEr8= X-Received: by 2002:a17:90b:2e87:b0:354:bf10:e6a5 with SMTP id 98e67ed59e1d1-35844934717mr7841155a91.10.1771307271151; Mon, 16 Feb 2026 21:47:51 -0800 (PST) X-Received: by 2002:a17:90b:2e87:b0:354:bf10:e6a5 with SMTP id 98e67ed59e1d1-35844934717mr7841134a91.10.1771307270682; Mon, 16 Feb 2026 21:47:50 -0800 (PST) Received: from hu-vivesahu-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35662fac3c1sm21429775a91.17.2026.02.16.21.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Feb 2026 21:47:50 -0800 (PST) From: Vivek Sahu To: Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Balakrishna Godavarthi , Rocky Liao , Vivek Sahu Cc: quic_mohamull@quicinc.com, quic_hbandi@quicinc.com, janaki.thota@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/2] Bluetooth: qca: add QCC2072 support Date: Tue, 17 Feb 2026 11:17:31 +0530 Message-Id: <20260217054731.3058567-3-vivek.sahu@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260217054731.3058567-1-vivek.sahu@oss.qualcomm.com> References: <20260217054731.3058567-1-vivek.sahu@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: qg87Wm9OKurBu-edLVhtOSuqvgJtSw-N X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE3MDA0NiBTYWx0ZWRfX0+swl5cIPEeW qgTjUjfk3GqfjwG2iG0HLmfzGiC4okATpgV3Ci4vrr6bJIWaj92sQcrxg8NTX4q8VSJ+Spla6VC XpLXtRzNmBPMeJkPMQhp+13oV4F+W3WIhohvEI24eRsKI+4pq+ZI0dUs5htjLn1eCiwogRBSB4X nNtiXKhjURLuh+rs86XNO7a4rTJdmmhDaM80k2c3sFdm9navmFt2Ta81t2z9mHy6Xj1E5/PIoX/ Mq1Ska7r+BHR18FvNpCHagY0HtqfWjKqldHkEOjAKUaFVyvw1NojeHczZd9XS2LF1+8OW+a4g9k uinSndKe5zaiTAZYZBBhBjOyjFvl0Y/s7l1wtl5D7besUxM/JYb7lJ+jztGKyJ3ezNDFn7Z/QtZ PA7YO947VYTMkySo5sm+YfkatJBMv2PIRXQC6TxrFd+fIqV7e2qVbzeTu6qpIhvUrzH/jWkCXaC M8nxefkdR7oceVv9a4A== X-Proofpoint-ORIG-GUID: qg87Wm9OKurBu-edLVhtOSuqvgJtSw-N X-Authority-Analysis: v=2.4 cv=IOoPywvG c=1 sm=1 tr=0 ts=69940108 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=Wa8knhHJ3zZ-c0kIvlAA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-16_08,2026-02-16_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 suspectscore=0 malwarescore=0 bulkscore=0 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602170046 Content-Type: text/plain; charset="utf-8" QCC2072 is a family of WiFi/BT connectivity chip. It requires different firmware files and has different configurations , so add it as a separate SoC type. The firmware for these chips has been recently added to the linux-firmware repository and will be a part of the upcoming release. Signed-off-by: Vivek Sahu --- drivers/bluetooth/btqca.c | 8 ++++++++ drivers/bluetooth/btqca.h | 1 + drivers/bluetooth/hci_qca.c | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index 9f7e13fcb20e..65c8d2978956 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -807,6 +807,10 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/htbtfw%02x.tlv", rom_ver); break; + case QCA_QCC2072: + snprintf(config.fwname, sizeof(config.fwname), + "qca/ornbtfw%02x.tlv", rom_ver); + break; case QCA_WCN3950: snprintf(config.fwname, sizeof(config.fwname), "qca/cmbtfw%02x.tlv", rom_ver); @@ -900,6 +904,10 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/htnv%02x.bin", rom_ver); break; + case QCA_QCC2072: + snprintf(config.fwname, sizeof(config.fwname), + "qca/ornnv%02x.bin", rom_ver); + break; case QCA_WCN3950: if (le32_to_cpu(ver.soc_id) =3D=3D QCA_WCN3950_SOC_ID_T) variant =3D "t"; diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h index 8f3c1b1c77b3..a175ac31e7b2 100644 --- a/drivers/bluetooth/btqca.h +++ b/drivers/bluetooth/btqca.h @@ -158,6 +158,7 @@ enum qca_btsoc_type { QCA_WCN6750, QCA_WCN6855, QCA_WCN7850, + QCA_QCC2072, }; =20 #if IS_ENABLED(CONFIG_BT_QCA) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 8e035b7c6f3e..7786ced0bbbb 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -625,6 +625,7 @@ static int qca_open(struct hci_uart *hu) qcadev =3D serdev_device_get_drvdata(hu->serdev); =20 switch (qcadev->btsoc_type) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1500,6 +1501,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) * changing the baudrate of chip and host. */ switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1516,6 +1518,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) } =20 switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3990: reinit_completion(&qca->drop_ev_comp); set_bit(QCA_DROP_VENDOR_EVENT, &qca->flags); @@ -1535,6 +1538,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) =20 error: switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1551,6 +1555,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) } =20 switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3990: /* Wait for the controller to send the vendor event * for the baudrate change command. @@ -1935,6 +1940,10 @@ static int qca_setup(struct hci_uart *hu) soc_name =3D "qca2066"; break; =20 + case QCA_QCC2072: + soc_name =3D "qcc2072"; + break; + case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1970,6 +1979,7 @@ static int qca_setup(struct hci_uart *hu) clear_bit(QCA_SSR_TRIGGERED, &qca->flags); =20 switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -2003,6 +2013,7 @@ static int qca_setup(struct hci_uart *hu) } =20 switch (soc_type) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -2108,6 +2119,12 @@ static const struct qca_device_data qca_soc_data_qca= 6390 __maybe_unused =3D { .num_vregs =3D 0, }; =20 +static const struct qca_device_data qca_soc_data_qcc2072 __maybe_unused = =3D { + .soc_type =3D QCA_QCC2072, + .num_vregs =3D 0, + .capabilities =3D QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES, +}; + static const struct qca_device_data qca_soc_data_wcn3950 __maybe_unused = =3D { .soc_type =3D QCA_WCN3950, .vregs =3D (struct qca_vreg []) { @@ -2758,6 +2775,7 @@ static const struct of_device_id qca_bluetooth_of_mat= ch[] =3D { { .compatible =3D "qcom,qca6174-bt" }, { .compatible =3D "qcom,qca6390-bt", .data =3D &qca_soc_data_qca6390}, { .compatible =3D "qcom,qca9377-bt" }, + { .compatible =3D "qcom,qcc2072-bt", .data =3D &qca_soc_data_qcc2072}, { .compatible =3D "qcom,wcn3950-bt", .data =3D &qca_soc_data_wcn3950}, { .compatible =3D "qcom,wcn3988-bt", .data =3D &qca_soc_data_wcn3988}, { .compatible =3D "qcom,wcn3990-bt", .data =3D &qca_soc_data_wcn3990}, --=20 2.34.1