From nobody Fri Jul 24 21:30:15 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 3F612495517 for ; Thu, 23 Jul 2026 12:36:43 +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=1784810204; cv=none; b=CkJO+TZRlUTBbjqPWi7kc2zL6HrTCmenSNWkAxrXiSug3NMemc0Vm1BrX9rUoR5uVH9KTeNVxK6++ghqeQ9aTV/tIcrkaeS3OG/7NjVEVBbKpUEReHBv+k7ijPWVKmGc1Rix9p9KOeY9V1PDrhx/ucCc1Esn/njxdHYt2ZECRfw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784810204; c=relaxed/simple; bh=ZD+ycYNZR7+dxERdgOdimE2dn8185efkGSlgkCCELqI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uL9QyMpV8pYY3pw6yVXwuPBZtMUES9UdWuvUmzRd/EfY0Ne78adgBYovKJrLoO1CdRb2aopFM1vPG5FKY2CvVtfASC4FpUgn4MVQ4RiSSxGFzAYfx2H/zD/PiVdLaFD8HtDssO+OAwRb4IrWwoghNodh1AgRX49XC0l+34VWCpQ= 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=YuRmb+7r; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=V7bYBGl6; 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="YuRmb+7r"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="V7bYBGl6" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66N8qvLH3392627 for ; Thu, 23 Jul 2026 12:36:42 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= cj2mWj1s6GFHWqMWFLzY4Iirhlp9UN4R3/IzGe53L/s=; b=YuRmb+7rNiLxyDP2 NCGU8hJGFCy1J11203M43N7zrBJa5mPWSANCoB5oFqji208MjELzgvI9oqpvG7WI MRXc0QbYwGOniYHp73KcjKyZfmP7IB9d93/RH0TbV3l6XWZxhuRhzFAzBuoZcV7V iLhTCqsvGO5g+v1hDilf2oVL4lPQohf6qNSkUzX/+XWgchOco5ndOSCqoGSeGnhp 1lRKCkYW5eRqtaZfDGH4CWj6k+pWyasmwzQyFjs4k1j2PyvJfujqAptJuga0lrtc Ca0Au7EjBT+eC9qSqwmBKuO36CxXr3dHqZNI4CzL1iG7qN9qMGi4Cii0jbKjaspI 0kHtTQ== 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 4fke0ksbjc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 12:36:41 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2cacf17c7e0so8229755ad.0 for ; Thu, 23 Jul 2026 05:36:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784810201; x=1785415001; 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=cj2mWj1s6GFHWqMWFLzY4Iirhlp9UN4R3/IzGe53L/s=; b=V7bYBGl6H70s6Wy1tuPD//V9nP513+Kgtxf0kl/9sHNxW8bgnfg0VW7lpJpfgpG8f2 ud5uVotYHkH5FvhWdPMktr36Qu2vpFjyokDasu+lKVkLVzBymHXBkiido2jJ5g/cYLUt Otz4wVRlRvIytTqjsmK5oJ3ZF6cjuy47o7D60ur676+u951tqOu5TtKCpvE5TY2yb4ym cMDh5xA9KH/+i51im3ivZ6iPkeYy3Hb3pzIOOWQbWOIRo8eiDYEny/v5aJxR8TebP05f fVpbCLVjlYUkwpjewH2F4ea6fsI0a38MfAzcHes16OJdmMXGD73sa+0mUM8tpo84jQHh AQwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784810201; x=1785415001; 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=cj2mWj1s6GFHWqMWFLzY4Iirhlp9UN4R3/IzGe53L/s=; b=g8cUse74CSx2+ug8wOoLgnIdWzxO+acbvQmgKailTYFLuNBJ4yQqMQ7ingEEu+SFdt TNluKxkG8rzJZgoty4D4G7o3htMAMMteDOp94UjH+olJ+jQmOfVhAKiGzaSje55U6DBn JHLdRSCbiSwJXLiMm3HTJG4UsoZPq3Touw9AJKDSW1FGiXZNZhPjrT9cwSSBJI4OZnpZ SCIk961BdqUrFwdzdZRvvRPe+VHNX5p15ttyKU2OLvefxuyZpzm6RR9ciZ5shlWZe0IU ZJ7EMo700R8+04xQakSfzN/ydViChJjGhXbPiyfFQQ4AEMogtOjtYXc4VPbq1XmUW1yo Pfkw== X-Forwarded-Encrypted: i=1; AHgh+RrMg0jTHwYYDMY4zoLbhZdraITr+PGW6Lzj8QOqG85F2kQ4fzU1K+brTz2D4bm0uTVhX8PjH6HTYyZQ2eM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx6FnoDrgXZiMeK7gVK9b7hCAaQapcGvGp8GmvMZ1n9xgOukRSi mv2TVXFXN4dXfoVZsxcEkaQizauM9KzyzUJ7Y3hdiI1qDOEfEpC19xBlNBe1hZQHu17eyRjBuVd VjAULSKw862KR373g1nZbxn35ZqcdMKCxTCXIKcV+amSM5UzNSVFYo5kLHCOdh5UbaKA= X-Gm-Gg: AR+sD10rSSPYSFlcSfkdm95Mqc9d6+bnUYYD0G2FOjRdBWEBJkADNYGBWVkwfBe5kCz B/FNB6ux5Lujbn5urHOROkV07y6kapgYeA3zXVLFuiNelGTYlbNXTFpdeMfeh/4MH+p4+vsGWN1 6uZKzadzTkMfqSvDPQMrWUvMNavcQlnaz5srn8pL19aO+ujGZwQCtqnTQruNHBQWnhAErwcDXyN iaNKa4Ju5Dh2Qw/TQSgN39vhbxzRsPyzfbdB2IJW6HSM4nTwiICKyqudNmotElWIhEBA34n1pgV 18HjyBSzK+1HhbyIGvXdFwReyhwMU2tMCJLW4oqCnu3lbfBDewflouwGU/Jil4NY5do+jU11NPE E6Mv9lTHRcUx/aruxYn0DSgNlHNTK9w== X-Received: by 2002:a17:903:37c8:b0:2ca:bf8e:35fe with SMTP id d9443c01a7336-2cfa6b75512mr33224905ad.16.1784810200844; Thu, 23 Jul 2026 05:36:40 -0700 (PDT) X-Received: by 2002:a17:903:37c8:b0:2ca:bf8e:35fe with SMTP id d9443c01a7336-2cfa6b75512mr33224415ad.16.1784810200339; Thu, 23 Jul 2026 05:36:40 -0700 (PDT) Received: from hu-samana-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8efd76c4sm33851225ad.23.2026.07.23.05.36.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 05:36:40 -0700 (PDT) From: Rahul Samana Date: Thu, 23 Jul 2026 18:01:07 +0530 Subject: [PATCH 1/3] Bluetooth: qca: add QCC2072 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: <20260723-rb3-industrial-bt-uart-v1-1-3c8e580c09d1@oss.qualcomm.com> References: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> In-Reply-To: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> To: Luiz Augusto von Dentz , Krzysztof Kozlowski , Marcel Holtmann , Bartosz Golaszewski , Conor Dooley , Rob Herring , Bjorn Andersson , Konrad Dybcio Cc: Rahul Samana , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, quic_hbandi@quicinc.com, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, quic_anubhavg@quicinc.com, quic_mohamull@quicinc.com X-Mailer: b4 0.15.2 X-Proofpoint-ORIG-GUID: YQyhd5O-so2RcOANp1W04T4dBkDe_-r8 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfX9+QpFDDGt8+p e+5CjKKiD5uD/a9daWxKxyUNXE2rfIycc5/WCASvwNMpYD1cjTixJSXyC7/w0/qZ+7tw1z8lbrA qLkjdEbdnRj57KgdHE+KrDAfvfPgzxs= X-Authority-Analysis: v=2.4 cv=S7DpBosP c=1 sm=1 tr=0 ts=6a620ad9 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=bBbZijagYEdtm7BDMOcA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: YQyhd5O-so2RcOANp1W04T4dBkDe_-r8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfXxiluoOset18z 8yThRYsFMQxyMteKf5rU71o7DM8Ot+LhSJoRTSAmKiB+h3wAuuIXAzURrUDBcwMFol7n2S7T6w2 LFpSYrWyFIaLzg5XLbosgUOax2OphVxtwZC5/FNk9B9yHPl01Xzy/aZQ0CXjBz6LW6Wb9oVAoh7 hWbG3GxJHeLp/ktNnTPPtAfRu6/FKJq1THRCkPoNgBAI9GZsKIlNmFfxoxly74TOIoPpE1VTZ0c bbxD9jOKDvQU5Q+dfO4u+DsTreCLaE2/Sf7ach4AxdHr6oAhXo8ez8WcWnseJihAhzVxdFu4YEl N7HwKerZ1Fa/YxBhSB3ScKqKmWPsv4tqdfNn8wUhFQ5y6hP5QThlmyNiXwnckxgwzcmoJiqLYJv 3JyPGuTMj4OEGNaYIiED6SithWA33OQemEEwyNJHKCkHXXzEiSjpQYRRqSeh470xY14XV4uuhoi 2KWr89PIoewgFNjXkPw== 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-23_03,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 bulkscore=0 priorityscore=1501 adultscore=0 impostorscore=0 phishscore=0 clxscore=1011 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230124 Add QCC2072 as a supported Qualcomm Bluetooth controller. QCC2072 uses the ORN firmware and NVM naming scheme. Select the NVM file and BCS calibration file using the controller board ID when available, with fallback to the default files. Register the QCC2072 compatible with hci_qca and route it through the same UART setup, speed switching and power-control paths as recent Qualcomm Bluetooth controllers. Signed-off-by: Rahul Samana --- drivers/bluetooth/btqca.c | 70 +++++++++++++++++++++++++++++++++++++++++= +++- drivers/bluetooth/btqca.h | 2 ++ drivers/bluetooth/hci_qca.c | 24 ++++++++++++++++ 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index 10c496eaea2c..69427cc7eb5a 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -569,6 +569,54 @@ static int qca_inject_cmd_complete_event(struct hci_de= v *hdev) return hci_recv_frame(hdev, skb); } =20 +static void qca_combine_nvm_calib(struct hci_dev *hdev, u8 **data, + int *size, char *calib_name, + size_t max_size) +{ + const struct firmware *calib_fw; + struct tlv_type_hdr *outer_hdr; + size_t inner_len, combined_size; + u8 *combined_data; + int err; + + err =3D request_firmware(&calib_fw, calib_name, &hdev->dev); + if (err) { + if (qca_get_alt_nvm_file(calib_name, max_size)) + err =3D request_firmware(&calib_fw, calib_name, &hdev->dev); + + if (err) { + bt_dev_err(hdev, "QCA Failed to request file: %s (%d)", + calib_name, err); + return; + } + } + + bt_dev_info(hdev, "QCA Downloading %s", calib_name); + + inner_len =3D *size + calib_fw->size; + combined_size =3D sizeof(*outer_hdr) + inner_len; + combined_data =3D vmalloc(combined_size); + if (!combined_data) { + bt_dev_warn(hdev, + "QCA Failed to allocate memory for file: %s", + calib_name); + release_firmware(calib_fw); + return; + } + + outer_hdr =3D (struct tlv_type_hdr *)combined_data; + /* high 24 bits =3D payload length, low 8 bits =3D type */ + outer_hdr->type_len =3D cpu_to_le32((inner_len << 8) | 4); + memcpy(combined_data + sizeof(*outer_hdr), *data, *size); + memcpy(combined_data + sizeof(*outer_hdr) + *size, + calib_fw->data, calib_fw->size); + release_firmware(calib_fw); + + vfree(*data); + *data =3D combined_data; + *size =3D combined_size; +} + static int qca_download_firmware(struct hci_dev *hdev, struct qca_fw_config *config, enum qca_btsoc_type soc_type, @@ -614,6 +662,11 @@ static int qca_download_firmware(struct hci_dev *hdev, memcpy(data, fw->data, size); release_firmware(fw); =20 + if (soc_type =3D=3D QCA_QCC2072 && config->type =3D=3D TLV_TYPE_NVM) + qca_combine_nvm_calib(hdev, &data, &size, + config->calib_name, + sizeof(config->calib_name)); + ret =3D qca_tlv_check_data(hdev, config, data, size, soc_type); if (ret) goto out; @@ -845,6 +898,10 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/hmtbtfw%02x.tlv", rom_ver); break; + case QCA_QCC2072: + snprintf(config.fwname, sizeof(config.fwname), + "qca/ornbtfw%02x.tlv", rom_ver); + break; default: snprintf(config.fwname, sizeof(config.fwname), "qca/rampatch_%08x.bin", soc_ver); @@ -878,7 +935,8 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudra= te, /* Give the controller some time to get ready to receive the NVM */ msleep(10); =20 - if (soc_type =3D=3D QCA_QCA2066 || soc_type =3D=3D QCA_WCN7850) + if (soc_type =3D=3D QCA_QCA2066 || soc_type =3D=3D QCA_WCN7850 || + soc_type =3D=3D QCA_QCC2072) qca_read_fw_board_id(hdev, &boardid); =20 /* Download NVM configuration */ @@ -939,6 +997,15 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname), "hmtnv", soc_type, ver, rom_ver, boardid); break; + case QCA_QCC2072: + qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname), + "ornnv", soc_type, ver, + rom_ver, boardid); + qca_get_nvm_name_by_board(config.calib_name, + sizeof(config.calib_name), + "ornbcscal", soc_type, ver, + rom_ver, boardid); + break; default: snprintf(config.fwname, sizeof(config.fwname), "qca/nvm_%08x.bin", soc_ver); @@ -1001,6 +1068,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baud= rate, case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: /* get fw build info */ err =3D qca_read_fw_build_info(hdev); if (err < 0) diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h index 8f3c1b1c77b3..425133096eda 100644 --- a/drivers/bluetooth/btqca.h +++ b/drivers/bluetooth/btqca.h @@ -94,6 +94,7 @@ enum qca_tlv_type { struct qca_fw_config { u8 type; char fwname[64]; + char calib_name[64]; uint8_t user_baud_rate; enum qca_tlv_dnld_mode dnld_mode; enum qca_tlv_dnld_mode dnld_type; @@ -158,6 +159,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 1222f97800f4..6fe3aab688e6 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1375,6 +1375,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uin= t8_t baudrate) =20 /* Give the controller time to process the request */ switch (qca_soc_type(hu)) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1462,6 +1463,7 @@ static unsigned int qca_get_speed(struct hci_uart *hu, static int qca_check_speeds(struct hci_uart *hu) { switch (qca_soc_type(hu)) { + case QCA_QCC2072: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1513,6 +1515,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: hci_uart_set_flow_control(hu, true); break; =20 @@ -1548,6 +1551,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qc= a_speed_type speed_type) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: hci_uart_set_flow_control(hu, false); break; =20 @@ -1864,6 +1868,7 @@ static int qca_power_on(struct hci_dev *hdev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: ret =3D qca_regulator_init(hu); break; =20 @@ -1963,6 +1968,10 @@ static int qca_setup(struct hci_uart *hu) soc_name =3D "wcn7850"; break; =20 + case QCA_QCC2072: + soc_name =3D "qcc2072"; + break; + default: soc_name =3D "ROME/QCA6390"; } @@ -1986,6 +1995,7 @@ static int qca_setup(struct hci_uart *hu) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: if (qcadev && qcadev->bdaddr_property_broken) hci_set_quirk(hdev, HCI_QUIRK_BDADDR_PROPERTY_BROKEN); =20 @@ -2019,6 +2029,7 @@ static int qca_setup(struct hci_uart *hu) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: break; =20 default: @@ -2172,6 +2183,12 @@ static const struct qca_device_data qca_soc_data_wcn= 3998 __maybe_unused =3D { .num_vregs =3D 4, }; =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_wcn6750 __maybe_unused = =3D { .soc_type =3D QCA_WCN6750, .vregs =3D (struct qca_vreg []) { @@ -2274,6 +2291,7 @@ static void qca_power_off(struct hci_uart *hu) =20 case QCA_WCN6750: case QCA_WCN6855: + case QCA_QCC2072: gpiod_set_value_cansleep(qcadev->bt_en, 0); msleep(100); qca_regulator_disable(qcadev); @@ -2429,6 +2447,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: qcadev->bt_power =3D devm_kzalloc(&serdev->dev, sizeof(struct qca_power), GFP_KERNEL); @@ -2448,6 +2467,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: + case QCA_QCC2072: if (!device_property_present(&serdev->dev, "enable-gpios")) { /* * Backward compatibility with old DT sources. If the @@ -2490,6 +2510,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) if (!qcadev->bt_en && (data->soc_type =3D=3D QCA_WCN6750 || data->soc_type =3D=3D QCA_WCN6855 || + data->soc_type =3D=3D QCA_QCC2072 || data->soc_type =3D=3D QCA_WCN7850)) power_ctrl_enabled =3D false; =20 @@ -2498,6 +2519,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) if (IS_ERR(qcadev->sw_ctrl) && (data->soc_type =3D=3D QCA_WCN6750 || data->soc_type =3D=3D QCA_WCN6855 || + data->soc_type =3D=3D QCA_QCC2072 || data->soc_type =3D=3D QCA_WCN7850)) { dev_err(&serdev->dev, "failed to acquire SW_CTRL gpio\n"); return PTR_ERR(qcadev->sw_ctrl); @@ -2576,6 +2598,7 @@ static void qca_serdev_remove(struct serdev_device *s= erdev) struct qca_power *power =3D qcadev->bt_power; =20 switch (qcadev->btsoc_type) { + case QCA_QCC2072: case QCA_WCN3988: case QCA_WCN3990: case QCA_WCN3991: @@ -2785,6 +2808,7 @@ static const struct of_device_id qca_bluetooth_of_mat= ch[] =3D { { .compatible =3D "qcom,wcn6750-bt", .data =3D &qca_soc_data_wcn6750}, { .compatible =3D "qcom,wcn6855-bt", .data =3D &qca_soc_data_wcn6855}, { .compatible =3D "qcom,wcn7850-bt", .data =3D &qca_soc_data_wcn7850}, + { .compatible =3D "qcom,qcc2072-bt", .data =3D &qca_soc_data_qcc2072}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match); --=20 2.34.1 From nobody Fri Jul 24 21:30:15 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 02FC14963B3 for ; Thu, 23 Jul 2026 12:36:47 +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=1784810209; cv=none; b=Yt4n2S+bHFhIPZ4fvi0mUjQLoR+drT+4FAeHzBTW3/IN/2gCearBeFUCMHm0TAdObxCJen63FXi/iFfrZKw3j+Ilrj0wu7mZPJZIKYIB82y/Dn16c0TCwLqV3n/RptumUBczOncZv0C/2cfBTOYU3N2bWKrnz+De2wllvd8nXoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784810209; c=relaxed/simple; bh=QNVB8O7hVWJg702gCWNCTaBEjYG5HzIl+/6J+f6oXHo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WOCxkWT5AUAP2LZ2K3YqIsfpJOM0zpIV5zFF+zifhWSGAI7sm3UMIGtEYmYR+9jMtohCjqXkQk3FFyf2lvEuPqn6sR9fR3OnETq9bfLPj10iUzW2pQwGbteeli3Zz3psr8zipfmps34hGub9NfcvEJuKXA+8creFCKR9hCUXyy8= 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=WQp/uWH/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=e9LWWBND; 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="WQp/uWH/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="e9LWWBND" 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 66N8qaYT3606109 for ; Thu, 23 Jul 2026 12:36:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= r4PK/2k1a6tHryB1sthUTAfUlknsFtu8WXkM20bAkdA=; b=WQp/uWH/K9NyABx0 1fZHyes2MAX/o/g2YgQ1WwVJo9BswxbiwGCHsKy/IEcQqE4Ph7vdmQ8RC5tZoqsi FAcXhKkAxi85ed3QY0i7YaiuayObNYJFmfakoh7i17q0BMC8/UJ16TVTYl+5Yw57 gWpj1zT5prPv4GkEp1qEEfKa06zkFfeI1hYmEX0wNKcm3swU0n8CsiUU/7pufetl HZwPqYNnRMLE5GAoI9LBcA+8kbVUcTpx0htDKaew2y238oz0oHi5k6Kz5surQEVX Jb6KZSgFE6YjekcjiVKGJkEW4e37PN+3v7hbjT0kAL/vzZ8idHdPSGQsM+9QxhGw SqIpkg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fke7qha4b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 12:36:46 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cfa4e4684bso17255055ad.2 for ; Thu, 23 Jul 2026 05:36:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784810206; x=1785415006; 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=r4PK/2k1a6tHryB1sthUTAfUlknsFtu8WXkM20bAkdA=; b=e9LWWBNDwZJ/iw0sAH2iWSHh27Gi25tsIvoaiL6qP0VewJVioqEYXUHtwQkF4fziz4 d8nm0cd49grlHk+b3qE/J5yBJU6DxBoCAUio5z4h/cwYgFoZTMKUmiTRHGPCUjZfJKc4 ujqpKOdzNVqarfqFJz6uLdkrwiuYS5LZ4fsaZ5kTGBO5wdqfCeZVxu6qB3YMODkGbWOb KMa4FuPW2aKHbsn2KcLnSYuj1JPpcrGdqROP8bHsMmgRDI+tJF5Nfs1qrQqVRxHWVju5 o3CF3Se3czXsnLlg62+BdHNrC9gZSIE04G7Wa145jxI1lLAT+Tx/dEobf43N0NxgAWI/ rhZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784810206; x=1785415006; 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=r4PK/2k1a6tHryB1sthUTAfUlknsFtu8WXkM20bAkdA=; b=RsBA9u91oV3M9W4exNIAf1RkyGN7Pz7miZPNpCUGWoYqNF8q1Cf5vAVdtZaWOLrQs/ uyOzgUy4TuoO/ieJk3GgTSDwQxR9CGvdNZJW3jWgIdVTgbradLDY5HqpKzcVXpZfhCMG qivg+Q/bH8++Y7qqS3YmEzreKzkJ37iIdJ5RcQq/0vpeTQOl1SyPbSuOTQrjTRXo7kFQ CnUxIudAwuypkTDLFIbrwYdbUdnKrRpEhIf96XXvWbYSKvdxLSonxx8dB+kb/jY19xIN g5K8dMt5YzK87geZCtxx8ZFkuchkvN5tE1I1MZDpOg74jCdbTBeNOOmhrhMvQmZ8ruoZ buWg== X-Forwarded-Encrypted: i=1; AHgh+RriuzSVjneADcmc8GpdhUoCBLaacdY7Ghm3+NlLLfSfxA5NOBEdkDehG/Wu9mzLQMI/j4ySaQOU8ruqXNE=@vger.kernel.org X-Gm-Message-State: AOJu0YzJCvU/7dC0Pf69EAKJiwzblVk/Cpc1nUCftSIisKkBDiyI0sZI 5rgBVPmzylTcn5R98WVq3fR24wJWazfq9eheaIAUb0BhuTOgw1aqQ+R8GScVUdqPB7vEL4hIx9C lbLLVKbIFNaSNq7hgJZDL5W9m4QiU/xbwPMKYDNU3uAVSSvrQkYwNA9fLLxI4HFRa+4YnXyjm3W I= X-Gm-Gg: AR+sD11zqw9tpi45QIxes2QhvNLFNK8ZfpuKxOdXzQjz68P6Xcu1Qo1O7r8KJi9nOJ6 GT3BOm/eoWZjJoDLQCOG/7gK2P5XTBUfob5Jnm8vWPmbwvlOq4FX6ZG3plKKSd47UFzioI1bmqD mOKeGMI2zFj+g/XKWpOnOZEtX5BIi8/fvl4my4L6SWwLHoyxMkCuR2APl6KViSRz0OrniBXXoMu h++GZK9TBc7y4d+L8Lhj7qtYLGNbK1bfJiktjRRa4Ve3LqQI5GotygOOmegTAqbKvK3bQ2nmxju B4diJYkyOn2XjSrSaawxiRxXRZoeE1j9/MV8xsWgdDVHh7g7aBt4MUe+VKb6+6aBYrcU6RytRbU v/GfeTqYawejnrMjduq9LXNL8HhztVg== X-Received: by 2002:a17:903:2c08:b0:2ca:d31e:ac50 with SMTP id d9443c01a7336-2cfa71d95c0mr38934475ad.17.1784810205779; Thu, 23 Jul 2026 05:36:45 -0700 (PDT) X-Received: by 2002:a17:903:2c08:b0:2ca:d31e:ac50 with SMTP id d9443c01a7336-2cfa71d95c0mr38934045ad.17.1784810205393; Thu, 23 Jul 2026 05:36:45 -0700 (PDT) Received: from hu-samana-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8efd76c4sm33851225ad.23.2026.07.23.05.36.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 05:36:45 -0700 (PDT) From: Rahul Samana Date: Thu, 23 Jul 2026 18:01:08 +0530 Subject: [PATCH 2/3] arm64: dts: qcom: kodiak: mark PCIe root port as bridge 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: <20260723-rb3-industrial-bt-uart-v1-2-3c8e580c09d1@oss.qualcomm.com> References: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> In-Reply-To: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> To: Luiz Augusto von Dentz , Krzysztof Kozlowski , Marcel Holtmann , Bartosz Golaszewski , Conor Dooley , Rob Herring , Bjorn Andersson , Konrad Dybcio Cc: Rahul Samana , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, quic_hbandi@quicinc.com, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, quic_anubhavg@quicinc.com, quic_mohamull@quicinc.com X-Mailer: b4 0.15.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfX9nRZs6c0YGTX ivCjXs8NXJ/CppOJhXQZ8DZ0ShjLE6S17cUc9Uqfe64tR/Ece0AbypzJQcgbE3WB/5CeheDc3S8 le4ltw7f4vnI4P61tTPrutoaz7WEreo= X-Authority-Analysis: v=2.4 cv=aYxRWxot c=1 sm=1 tr=0 ts=6a620ade cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 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=cMMLQAvtHmgBvpjJQrcA:9 a=+jEqtf1s3R9VXZ0wqowq2kgwd+I=:19 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: n_x8vj5JoPw7ZAtikfSieXNu2WXUxF3f X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfXwGdzER53eRLx SOaat0+zq6gSWNCkOto9U0DpRTBiyfJ5Tc40EdXcTg/ori309ToS/4pwOhYMBOPNgVtRfYpP0vJ 9KxFhjWWRVV2q/Eqy8I0ODpXETNj2YRq+RwkE7kuWVMGcQlnkDVYbBgUaQd2CEbpT6vmfhWkWWO rSVR3dw32dOY0eh7IPNhzk94RV78wOkxCoGswoo3pnDES1dvujmhP6t2yQ7HHPdOncEUlRe/xVP 2Bs8Yu6AgdC+zzu36TzC7MFGhWF6KvKKn9GGNq/cnYuTdw301RWrZOA14jbBT/i3qr7K5bRXJNs EyZHmm8ldHj06dInxFO3k4vpjfNMOJUuAAZDVpSQpBbWIUydezFIZHzwLpU3tb2OKK7HQJXBz2a sF4gl3Ww6m9wXN5aFuP7v4GczxlhQOQYuI8kvhL8APwLrbjS/rqfU1fJDYVltfo0p18nbisJxYr 8XA+bmVm7GcWlQ9vqZw== X-Proofpoint-ORIG-GUID: n_x8vj5JoPw7ZAtikfSieXNu2WXUxF3f 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-23_03,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230124 Add the PCI class compatible to pcie0_port so child nodes below the PCI bridge can be matched against the enumerated PCI topology. This is needed by the M.2 E-key graph description used by the RB3 Gen 2 Industrial mezzanine Bluetooth UART overlay. Signed-off-by: Rahul Samana Reviewed-by: Konrad Dybcio --- arch/arm64/boot/dts/qcom/kodiak.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qco= m/kodiak.dtsi index fa540d8c2615..12594967d2c2 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -2296,6 +2296,7 @@ pcie0: pcie@1c00000 { status =3D "disabled"; =20 pcie0_port: pcie@0 { + compatible =3D "pciclass,0604"; device_type =3D "pci"; reg =3D <0x0 0x0 0x0 0x0 0x0>; bus-range =3D <0x01 0xff>; --=20 2.34.1 From nobody Fri Jul 24 21:30:15 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 1DE5247ECF9 for ; Thu, 23 Jul 2026 12:36: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=1784810214; cv=none; b=KGnyYHcN/GSpacRevnFr3A9lv3i/7GG4JAVPY8OH/SmAdcOahg1Z2HwYNQploMle/+XdsQwJp/RLzCohvFwg/8aIGmZg5tFZiZKPxzQkIZkxZs17RTIkYc6cuRVf7cZ0CCCAceZC/Bg4Z8Rd4RiDjatDLGinT8WWafIkHKFDtjg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784810214; c=relaxed/simple; bh=MIFQXUvAtwmgOUcunrJdpxB7lkEYC76HSseE80aRcPs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FeTqnPyKQ0pIY4L2/FdJExUkfbT4tIDQFde5o/wfb9EHQHRD9wdw1MJ6W0Mv9uUo10w38LhsRBKBOjs0AU0/qXWdhgHAI0zNcSPPi/9HQcSaXhngwLcfAgd75mjA+EKUlQn4DNyq0dZMeX/nKI5l70YcG9RDj08LG7j/sIthS+k= 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=Mpf8Q9UO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MJ6vWQTk; 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="Mpf8Q9UO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MJ6vWQTk" 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 66N8qaWH3668004 for ; Thu, 23 Jul 2026 12:36:52 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= CMEk/wsPN+7sowI+XK59uaUQPgLYiebmeLhtXo4zWew=; b=Mpf8Q9UOu02/TvTA AWRLlkqFSudBBk2Nl6O1C4l3GhL7Cd+ehLodGqyFZfO02uqkzAx2yS8JOMzuA3DV R3Jzo9iGG4D5+7oFeNxmosfhIFoaMaYwKxx9G3o0IMMzstu1bD8uEnqf4zsBAdwn KJ1mldvN1EHmy0hLd0u0OlzkvCoe8X9Zg9jBh3JiEBxtRu7GGMduQopIzEl2NfZv x7YFLlyE/yeZ6vPYq6Gssvlfy04VchAuSjENQHJTAuzNZBaFBLTMzxvah5CANBYR SnvBMDMA5AxpgRTZu7JSb7FGQ0UXjctWG/ffAsKW+HqeKhXWJFc5p7rEOW0AizHs Sky+Dw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fk5cc37e2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 12:36:52 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cd01a14e81so9719395ad.1 for ; Thu, 23 Jul 2026 05:36:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784810211; x=1785415011; 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=CMEk/wsPN+7sowI+XK59uaUQPgLYiebmeLhtXo4zWew=; b=MJ6vWQTkhaZWHaB7hWY079Ke3+dh9IXsUXU+ch2hy9+NPBha3/b+uFqBOkj3grNcCf aq96z4Uwa0kXg3KTig1mK+zQLK5VdLj6vHBON+SYbqLbbVqqozlbMYhdLlzX1yoC2WJ+ fCKAVS1EEQ+T1PKHVln3yRelx3nt3KQOM6lPHfbkK9eevY9/yaDSReGTEYScxCha5XRw 2V+aS/X/mtKAXh8pcJ4S901AIC9l8YRvtVySVElF0Y+r/2jUTzRG+3MxB4PkQJQj6LXs biA5vIsoFtU8YJ3CGArvNYxIXcEppv+2LKtclQkdGhdKwURdJf7PvMCV+YUc3f9ZcoRa Wj6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784810211; x=1785415011; 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=CMEk/wsPN+7sowI+XK59uaUQPgLYiebmeLhtXo4zWew=; b=nLoWHPhQEiIOr21VmNAaN4uX91+Wm4jTrPRcHt4jTGL2uq5WoChYT8Ez4Ge+aK9t6X 92NJNQFR5phO4XwC9gexIlEtWRKXcpqrnWTFQy7EAeZlKq71pCYdyw+rINBgjG2SRB1n F8gHmAqpRO//+Oxh2jBF8dmLoOohvSWUjDWQllCJrT/N0UxqwGDBb6xANlgfxZoMxceE yEw7GngomWWCFTHFDRKlObFWdra9+oo4p3V6wCiqPj1H0Y9PeXE3H6681UdM2ZbeApY2 LCVj6qOn8foy2DezKTNOqiBnxEBVOUanZH696QQN6ZLLWQnA4MgS2QRmK3O/bnOX0Vbf ys9A== X-Forwarded-Encrypted: i=1; AHgh+Rqq3Ir/93OrimT7jDhKTpM4u6Uo5U6EadzMnf5KlgYwX8pgq8kRfAVAwIQ3vJ6IeS6LTMxaQ4muqfLVc3w=@vger.kernel.org X-Gm-Message-State: AOJu0YwjbU44CWP45p2KVyuce0f1/NXOvGNCX40rG8aGGDvsTsIK5BvD QO5glI9fsFfVQsdiJayOd8vVYbzzO4JmiSPGjycDRS6KvfxSQVj1fyCHbdZtwhwEWrHe2vIOyMS zbbxCr1Q4s7GhXhcrxgvPSJ+/n02trNZeu9NIPwIVKLBNAPQV6tIXltFiPbPufrNGYwE= X-Gm-Gg: AR+sD117jkfwyv7tJ8SWpGvXyT+gvNxRAglVRi4c8eqlT25RPfWiAQ84nXGT6d3jBkz 8nk9HUMq+SbzkD0LGU5MBvSOSORrdzNqYmIgw1KARpBrkruTxcCXvlzHYBWAFrKqiBI2Ea8K6Iy VWhDCqupYmZCTVLX/6POoLKqY/xG/BUznNpQxGJcselrOA42+IurSmO9SQo2eQTB2vhyStiCjgQ BCRii9MeaIbX/PePjcf+yxbL1r7inOnCiUnXYXOySx4E1AK1HH4IhhV4N3cjh4rzTYQw39tnaVR 6P+Lsj0a4orK0O0Kq2oKAwMkvGp0493+RvbB/ntlskEqWYGHZ0uidvIhIPyJEGwuws03ZRkntnR soJFk/FmzX0aQBEu6Kxl96m0irJDTqw== X-Received: by 2002:a17:903:ac6:b0:2cf:9f62:1dcd with SMTP id d9443c01a7336-2cfa6d83500mr39741915ad.32.1784810210880; Thu, 23 Jul 2026 05:36:50 -0700 (PDT) X-Received: by 2002:a17:903:ac6:b0:2cf:9f62:1dcd with SMTP id d9443c01a7336-2cfa6d83500mr39741455ad.32.1784810210398; Thu, 23 Jul 2026 05:36:50 -0700 (PDT) Received: from hu-samana-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8efd76c4sm33851225ad.23.2026.07.23.05.36.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 05:36:50 -0700 (PDT) From: Rahul Samana Date: Thu, 23 Jul 2026 18:01:09 +0530 Subject: [PATCH 3/3] arm64: dts: qcom: rb3gen2: add Industrial BT UART overlay 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: <20260723-rb3-industrial-bt-uart-v1-3-3c8e580c09d1@oss.qualcomm.com> References: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> In-Reply-To: <20260723-rb3-industrial-bt-uart-v1-0-3c8e580c09d1@oss.qualcomm.com> To: Luiz Augusto von Dentz , Krzysztof Kozlowski , Marcel Holtmann , Bartosz Golaszewski , Conor Dooley , Rob Herring , Bjorn Andersson , Konrad Dybcio Cc: Rahul Samana , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, quic_hbandi@quicinc.com, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, quic_anubhavg@quicinc.com, quic_mohamull@quicinc.com X-Mailer: b4 0.15.2 X-Proofpoint-ORIG-GUID: TFVUMe0Ze5xQWb_6FKISN5ZFT9H7GQ5V X-Proofpoint-GUID: TFVUMe0Ze5xQWb_6FKISN5ZFT9H7GQ5V X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfXzieHu1y6szaF z22Fhk6D/fMOO+zPuhxXPXokQNHnk1xWXOEzAjoNxRikl4nB9cJtCGbK2P1MmPzIYKhkDWfSZKE tYui7f7U/KNDwTubQNPfqeOndIYngIY= X-Authority-Analysis: v=2.4 cv=L/ItheT8 c=1 sm=1 tr=0 ts=6a620ae4 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=WIP-PoRWG5U8A2xzRqUA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDEyNCBTYWx0ZWRfX/ZDSQP+JD0P+ laUrEM+ewbHtKCWRwYM3iiSnGjDC+zfDDeAO8aCP5D38CG2Qk4i9edOjrC2Hq7vwg7hJtckvG34 nkdwi2fuRJaIrrmYZAsuoJm7t+zlR9FXXd4wp1xYpsEQlwxZ12Nq1Ca5Z2GgjEMEneYhYHEKPBW auCsBS1dX/r8oZqbG/euMz8AxWLQLReoHplwKIbjjWvcR21ByCTbnXCdvJ9VBncQ2VA/lUzaoaX Ct96agFqVl4GEAXdvjsnIbtfQ41lRiPXCgWUmykGXT0roWWspnVHLqTZBlFtyI9aWyjIgg7vitJ fkx6368m8ZvUrq6G4IK3Zp4u1PcsKEZL+wFalVDDbLMp6B2L4/WwGqegWIoZS3CogSkyyo0DXWv axLMdxVgzqOpkfPiTjNJaJJ8BjWQTjmY2mNwNcBJNRkU7CPcQZZE32E8sty4OmsAzo/7QPP3KSv Wm/AslvPQTigup9P91A== 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-23_03,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 lowpriorityscore=0 adultscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 spamscore=0 bulkscore=0 malwarescore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230124 Add an overlay for the RB3 Gen 2 Industrial mezzanine variant that routes QCC2072 Bluetooth over UART4 and models the M.2 E-key connector graph endpoints for PCIe and UART. The default Industrial mezzanine overlay describes the common mezzanine hardware. Build this variant by applying the common Industrial mezzanine overlay first, followed by the BT UART overlay, because the reworked board keeps the common mezzanine description and only changes the Bluetooth transport routing. The overlay also disables the on-board WCN6750 PMU and UART7 path so the M.2 QCC2072 Bluetooth controller can be used instead. Signed-off-by: Rahul Samana --- arch/arm64/boot/dts/qcom/Makefile | 2 + ...s6490-rb3gen2-industrial-mezzanine-bt-uart.dtso | 133 +++++++++++++++++= ++++ 2 files changed, 135 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 6f33c4e2f09c..45786d3db14a 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -179,8 +179,10 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-rb3gen2.dtb =20 qcs6490-rb3gen2-vision-mezzanine-dtbs :=3D qcs6490-rb3gen2.dtb qcs6490-rb3= gen2-vision-mezzanine.dtbo qcs6490-rb3gen2-industrial-mezzanine-dtbs :=3D qcs6490-rb3gen2.dtb qcs6490= -rb3gen2-industrial-mezzanine.dtbo +qcs6490-rb3gen2-industrial-mezzanine-bt-uart-dtbs :=3D qcs6490-rb3gen2.dtb= qcs6490-rb3gen2-industrial-mezzanine.dtbo qcs6490-rb3gen2-industrial-mezza= nine-bt-uart.dtbo =20 dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-rb3gen2-industrial-mezzanine.dtb +dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-rb3gen2-industrial-mezzanine-bt-uart.= dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-rb3gen2-vision-mezzanine.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-thundercomm-minipc-g1iot.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs6490-thundercomm-rubikpi3.dtb diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-= bt-uart.dtso b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanin= e-bt-uart.dtso new file mode 100644 index 000000000000..06560df0a719 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-bt-uart= .dtso @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2026 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; +/plugin/; + +#include +#include + +&{/} { + vreg_wcn_3p3: regulator-wcn-3p3 { + compatible =3D "regulator-fixed"; + regulator-name =3D "VREG_WCN_3P3"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + + regulator-boot-on; + }; + + m2_e_connector: m2-e-connector { + compatible =3D "pcie-m2-e-connector"; + vpcie3v3-supply =3D <&vreg_wcn_3p3>; + + m2_e_ports: ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + m2_e_pcie_ep: endpoint@0 { + reg =3D <0>; + remote-endpoint =3D <&pcie0_m2_e_ep>; + }; + }; + + port@3 { + reg =3D <3>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + m2_e_uart_ep: endpoint@0 { + reg =3D <0>; + remote-endpoint =3D <&uart4_m2_e_ep>; + }; + }; + }; + }; +}; + +&qup_uart4_cts { + bias-bus-hold; +}; + +&qup_uart4_rts { + drive-strength =3D <2>; + bias-disable; +}; + +&qup_uart4_rx { + bias-pull-up; +}; + +&qup_uart4_tx { + drive-strength =3D <2>; + bias-disable; +}; + +&tlmm { + qup_uart4_sleep_cts: qup-uart4-sleep-cts-state { + pins =3D "gpio16"; + function =3D "gpio"; + bias-bus-hold; + }; + + qup_uart4_sleep_rts: qup-uart4-sleep-rts-state { + pins =3D "gpio17"; + function =3D "gpio"; + bias-pull-down; + }; + + qup_uart4_sleep_tx: qup-uart4-sleep-tx-state { + pins =3D "gpio18"; + function =3D "gpio"; + bias-pull-up; + }; + + qup_uart4_sleep_rx: qup-uart4-sleep-rx-state { + pins =3D "gpio19"; + function =3D "gpio"; + bias-pull-up; + }; +}; + +&pcie0_port { + pcie@0,0 { + pcie@2,0 { + port { + pcie0_m2_e_ep: endpoint { + remote-endpoint =3D <&m2_e_pcie_ep>; + }; + }; + }; + }; +}; + +&uart4 { + status =3D "okay"; + /delete-property/ interrupts; + interrupts-extended =3D <&intc GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>, + <&tlmm 19 IRQ_TYPE_EDGE_FALLING>; + pinctrl-names =3D "default", "sleep"; + pinctrl-1 =3D <&qup_uart4_sleep_cts>, <&qup_uart4_sleep_rts>, + <&qup_uart4_sleep_tx>, <&qup_uart4_sleep_rx>; + + port { + uart4_m2_e_ep: endpoint { + remote-endpoint =3D <&m2_e_uart_ep>; + }; + }; +}; + +&uart7 { + status =3D "disabled"; +}; + +&{/wcn6750-pmu} { + status =3D "disabled"; +}; --=20 2.34.1