From nobody Thu Apr 2 11:28:22 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 4FEAA30F924 for ; Wed, 18 Feb 2026 11:50:16 +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=1771415417; cv=none; b=A7yXb/H+vyyMnm+0lBcPhfbALpXpV29Ojz6REOhw7e3ZTed4YUBgUzdTXwTrKytKkVXgdZ23raI+wP+1YKhHJtveE5eIjO8nhi/ZTI1rgBU1dGbRuJQgyVjs6eaIiq2zdZH3Vy8dPc+SqXkHQlKOq77u1w4DIu3SjSPnRMy/gWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771415417; c=relaxed/simple; bh=4ORTcY4FBogvyIPAgOzFGg6Gij8ZFXVUN7JVbbdURy0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MAb1WkD9KJ7t6K7eMVNubFwpAkhdOzdNOhafaox7apisjX13TCXRLzeeD5zO4wFB5Tr3p3f+RCrEpPIo+DdbImZEOFv+73byejljUt3wkn/SthBnKfmHGBLRulCvy+6b18M20vx7ToqJCe58ypc5kJdc6IyMMcSWdRjGRgNBxIo= 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=C6rSto+J; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=I9YSkRkF; 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="C6rSto+J"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="I9YSkRkF" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61I8XAxh3379848 for ; Wed, 18 Feb 2026 11:50:16 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=fwrGMwdsAhD mMDYm8X+2Xe9hSXXfRJYHc4APBbsaMnk=; b=C6rSto+JS2oRQeTIP4T6irT464C Jrp9rAyr4FZgL/WJCu0zlTSUpEaTy8SKbPtG9v507GatduzaPal7eruZpubgnnVs rw9pyLALk/PRDi9lFAPNho6U5jqPCLSEVqvLzN0vDzto1tDDf/hC3I5Dn4BOfClB am4MFwnMNO+ncD9tuo8L5K761/EvPzPwBnW5667WBOH3RpGRVZ52o6SxujYBDgdx 8a3juIUx/fc9Dk7X9RmO4eDBKqOhR8DWhmXdD4p1YcQOYCdeLJ0mQ6UzAde4JNTW bBDifOrh6xaKww+keTGUiia6XBE+ihPzbnFB31N0cGCzt+vgVxzt0AFQOeg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ccxnyj837-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 18 Feb 2026 11:50:15 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a79164b686so70864155ad.0 for ; Wed, 18 Feb 2026 03:50:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1771415415; x=1772020215; 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=fwrGMwdsAhDmMDYm8X+2Xe9hSXXfRJYHc4APBbsaMnk=; b=I9YSkRkF8CVtl12kJ2E4oFXsswCP5VXtHWJqQuc/ZXg5LN3O4FivSaPnSNnAVoJ1CI rKOMGrNbbmfoymnFwUG5Qot0txMCQV/e5sEOyubW3mK79QGoK6CRvE+UzAQLWttUnYqn QsLDsx+P+3wXTs68LmYPiySVzqv58MJOyd2qbSNl/IrdNPt6wHpfcqVDIjTr0BtVgSjE SzQaTFvi89zNjKEXJgB1o6iGtGeyJfKvff/if8IWHbLE8yt7jA8ckhg7KtvKokm6w7U6 x1RgYCqacF6af6lD52rVH6NIgpTVODkXigscQ2g5ux9wN7+aInJA8md/7phHteG1b5mq BhDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771415415; x=1772020215; 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=fwrGMwdsAhDmMDYm8X+2Xe9hSXXfRJYHc4APBbsaMnk=; b=aTiJyAs10nL5E7rpUmhJGdhqHM7gNLLRPdG786XZYXYEmJldDGqV4thCXKD/8Mri0B 3JEJqmhYGq7vLA1hB1Ws458mvlf5MKvJRjTgTyU80bUhuZljNLd2Pdv4u1s5KNRl9wxJ E7QdomXB/cZgDvtA+dajyqI8OAZ5/PumjDTeP8ZHqBZ4SC49RHM6zW1exyrRIab/77Aq VU9RcuN6yv+ucfGszTXP/hnaqkv7I4f0ZUgI+IYqatybWoHIRC/JLCGaO727wnzBXtPP 8u0qqeyD9fmw9TcSYE68UJklxKtORM7WcWARz6nVv5Ca7iUkVxX8b347xgC6eV0/ujn4 kImA== X-Forwarded-Encrypted: i=1; AJvYcCXUj28dY4oT4DXmQCaaGjiZ8s+afBR1KDpQByMmDJF64a4+d3eElSEEDVVXbko3GqfFiWV2bIDFBRQdtjA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7vsPZyeEyDFYS3aNTvuLKhh0YQ419+PHzsKsL/6QcWaRtMT9x SRx3Fg12/0HhqnW6UFA4Q/oofZDOfLcZ+ADFeWpN4NxIWbympksaEZJWbgLnmPpeWIx3G4X2eSI syzzvYgGUV6QeIyxS2I/8fDkjeqxEzkGpnCN9aJJGpeuFMJEse6ACBWgmg3gzjScRvSM= X-Gm-Gg: AZuq6aLTlnFYLVkDo78kaAK9IyJeYh4Kn/xeZvx2/VgC3Rvlgg3lw2Mu4qFf7ny3HU0 2IOafmv8PeZOSgvlQ5cNZJFF+DAVcwH7I8L2lDpvqpGv2TCrYWkv0TeO6SeJzv2PJb2nSBWctLO 5iPoR1Dyu276UBrCIdNc7GhUUFV+F2t56bNzpR3wq1thKd5iKF5uLa+0t470icAODws/Ga+wcjZ jC7XcYfqTiiQyXJU/9cKSR4nd2ixo99o5RHTbzAHhhj7JMYjJmClDoX7BRxMmZSC6YWfRT8kdHw MyKVVQu6iVmte6F3ICCPGhsemHHxkFI5naLQ70ylzc+kf5M/6KhGg+hW5bN4NOhXYJlURMZqFs8 slP/RdY7WhJlmhWtRYk+J9PFXfIRz5O51qLDEDlhZZIohA7ZiTdk= X-Received: by 2002:a05:6300:614e:b0:394:58eb:48f6 with SMTP id adf61e73a8af0-394fc1f3e7emr1671241637.33.1771415414920; Wed, 18 Feb 2026 03:50:14 -0800 (PST) X-Received: by 2002:a05:6300:614e:b0:394:58eb:48f6 with SMTP id adf61e73a8af0-394fc1f3e7emr1671220637.33.1771415414467; Wed, 18 Feb 2026 03:50:14 -0800 (PST) Received: from hu-vivesahu-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6e52fd08fdsm12459222a12.6.2026.02.18.03.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 03:50:14 -0800 (PST) From: Vivek Sahu To: Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Balakrishna Godavarthi , Rocky Liao 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, Vivek Sahu Subject: [PATCH v5 2/2] Bluetooth: qca: add QCC2072 support Date: Wed, 18 Feb 2026 17:19:55 +0530 Message-Id: <20260218114955.3970974-3-vivek.sahu@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260218114955.3970974-1-vivek.sahu@oss.qualcomm.com> References: <20260218114955.3970974-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-ORIG-GUID: UcRZcsW6UZnrBHoEAQR1ehbTkt_PL9MF X-Authority-Analysis: v=2.4 cv=Do5bOW/+ c=1 sm=1 tr=0 ts=6995a777 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==: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=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: UcRZcsW6UZnrBHoEAQR1ehbTkt_PL9MF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE4MDEwMyBTYWx0ZWRfX1/r4Lz5ZYdsA o4rj5PORez9xrzQ0XLY42G0/Jsw+OjMYuCJ8nXVEBiG5Ae5acJa7u8+Q9erMZrEpaA5GPs59BfY hoVlC4woxrGJZ6sM2qOlgiq8IUJdRUrBvCaXhcRmOl3R+jnAOXxnsDKEcE1nTBxo+ZlI5UymlYS jUUUFrBA2Wpz8qHtGAaYel5ZT326LfkFAw+qyH5gL4hnupLseyacJ4B9o0koJ6PB4EnqwrlvAbe E4lTATrgv+L95Z2EMvx3QaG0r88+8M4wltUmaOs2vm5Tp2mrHMMBFplU1HUtdAfNT/0Kjt7NzQL e7tc/i0XHzdi9UYt0hx9Hy9ewmO/2bjtJaYg12zzjnNtUtObJTDBfJMQI9vmZdOCXbG1qFjKS8Y lHhyihY/i5oh3J0mnU2PEoT651waZsbmjWEIeh58pDaiKwVhW9LdxSBCgSCJ2IR1GEkq1NeCMW1 x+eR9AzKaLRLvRLsjRg== 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-18_01,2026-02-16_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 phishscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 adultscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602180103 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 Reviewed-by: Dmitry Baryshkov --- 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..77c393c1be0d 100644 --- a/drivers/bluetooth/btqca.h +++ b/drivers/bluetooth/btqca.h @@ -155,6 +155,7 @@ enum qca_btsoc_type { QCA_WCN3991, QCA_QCA2066, QCA_QCA6390, + QCA_QCC2072, QCA_WCN6750, QCA_WCN6855, QCA_WCN7850, 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