From mboxrd@z Thu Jan 1 00:00:00 1970 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 9D1562DCF43 for ; Fri, 19 Dec 2025 09:19:37 +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=1766135980; cv=none; b=AQp4nhGh6ayYNGsJpDt4kk+68LvnH4shWOPB5W3xRSv2icV/r9XGIdWZwp2fWj0W1QHMHvPT+xu3LmYclYXN6dFuSyx5MHuWaguWDL30VfOFcnx3RwNiSLpPYkKw1wiHpv0NN1gFpcJEU2o72Sgh7aTA9apUFCjs+XS7Q9Cjx8M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766135980; c=relaxed/simple; bh=xh6Pbh0uWTIaJo9YnXyM3s8lP/uhb6VTvGe8mTnmtJQ=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=dnb3h3nnaSsp+q1tWJWt1pFG8Xov5iD8msdBJ5PhdcaTeqRlusQvccw/ADSuXvTqvGM5s+WSN1PgNDwa8IGjx9u+Af2d+B4a6Qj4Zd9tmtiHbSkybgFvbNJiQv8gg5A007EH0rL/rxPbpCN1lGfZSL46VGU4MbMte9xZTC8zWcI= 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=Rnavz9a6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=VIWpDjIP; 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="Rnavz9a6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="VIWpDjIP" 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 5BJ4c0sA4100966 for ; Fri, 19 Dec 2025 09:19:37 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= fAvrRD8TuzsgeKhtNKbSE9hAEe9ZjO0kt6Db19I21xc=; b=Rnavz9a6bq/JYna7 vnAmzuVs3bwK1CvNTty49QfBw/GdDWyL4+5GAeNz/BpnCmfYOdpQ4pCGeEgoNGUJ B5yZEjA3z3D3xwqr8CHMOFdeLY46AVYFsNjSrCH1XfPVFcNVBfWGGFfJOwo0wDWA 8kKSC7lX7dsgKlm1xCnqbPJ/U8j5ts9RW09W9OUUU1WoX2kWbpRQWu5YQ5FwQwGn dLOvGC1haOae3XD3evTu/ikjU0CDngiwZjKyP12NbNlp1QDwtA6tej15hJF1BBkA ZWIgs1+YbxLKCUtmP3NfAHo3nLthHKu8v5QWSKWmhTbNFD8x30yxLm0O0Ut3OZt2 lhC36w== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b4r2c22pn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 19 Dec 2025 09:19:36 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-29f27176aa7so29474915ad.2 for ; Fri, 19 Dec 2025 01:19:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766135976; x=1766740776; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=fAvrRD8TuzsgeKhtNKbSE9hAEe9ZjO0kt6Db19I21xc=; b=VIWpDjIPOakrVccy2h0f0M/jL/suq7rZ9shelToZqan9ZJKvSm92n9qTNsC4+uWn2k zRuSkc+nyaa5HMR443reBD35BQnQ55YYx7Wfc1qimGfQ5LCgP4/t/rBa/O3ZrEn3p6Yq Kzhm858Jk0FUhrfdgUtp1LRI2P2mxlSvZTp3VmhSGTJql0E3MDPGtGrtXQ9hvNpF+jLO t1l/5qo9tjovJifsLw5lhOzSEUtWsi+jJAF5cL396p0/Tn0/hBkDU78Xo+KJiWiKIY6p 9C1gkw/qoHmEUXeCfXyMV1aXTzTACF7uh/c03tYy58G+iD5RkcSNRn0ViHRu9ipYbowh gRyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766135976; x=1766740776; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fAvrRD8TuzsgeKhtNKbSE9hAEe9ZjO0kt6Db19I21xc=; b=s7hvx7uQDtv/iytAnwwGXllwn7oDkzqXdyT3CGPmXn1j4rq6bkV7tqKtmysp2bAlN7 hZ3CEX/adW9U9EYAcySuSdq6veWswzwqVxTFTmrRoSJbDxCWcRQ22M42hLmYEisVJrbb 7yyex1SvCgN+ihDkmdPuvmIIHU/ux4I6/NFDAzms7U1wbYcu7kM/SUpzMItgwg5vBQGQ l/Mu/yRA/urJRxGQCi7KLKiLzvJjKJssN9if15f81zxScib9bBnLG6q29P/Vge3Nkpw2 p+9qJ40IqnBx4wHCXTad8LgL4s1h0saa1jSZwurtEwt0EnIfAgs+gOB9z4nrMCzKRixT Yl6w== X-Forwarded-Encrypted: i=1; AJvYcCWsZ+NcRNzt/j3mZEswGOjiVh+L7Aaf35nG4M8mV1NGLyUjDll0mQ1OB+UW8lgJE0nDiM11Cto54zM5+B8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3pGPObsO1lHxk7fZ+cyZf7IKMiy5gWnYaPcLW4k8oBDs3sLh1 5qOn+hjSDbbAF2Vv6ZNPhP+k1o9gO6M7NYJKuYLM3yX0yztk8naXMUKpo25beJC9zBt91k4oGD5 Sq1rQhKZ8f13wiGWYGYzQbghsQc+lL77epUYn1qle9dVHBGxz/5aVV/Jj1ioKOpyO82E= X-Gm-Gg: AY/fxX6AvBYF2jDZj15XGJFXgOft2ksx6+MA2C04PEZzgqH8FS8wFK8o+WV2p7aIVjm XSQcMiTpoL3Cksd00ROBKBM2HDWe16Vfpc33DKlAz+OpMLNfczsrA/o9xoTOKv4+g3L3Q47A6tN YUUiYrMsUqImhDU/911EZ/4DKJMCkcxQb4LC7eH61f7JbLvkoqfjlPEhci0RfjXUSmjcyqi57cr QzxCG2WlgK53Vc7DCevuqKazscI1ssDF/jOJ+fRQHS8UTCrjaHKDAXFKabH3dSNV976Ei1tPGBT jYAg/te1SSMnta2Hy11inIWLB3Y1NUn9z4D1VVA3KaBWNnMN4zm9ciCyG0FASX33JqSnZgSmSJa iLeKC2FGRvmYFhD3Cvc/r7DzVLMTKn79WyfPZrVcd54xTBxuzNEkPbB37beFXLQs+9Q== X-Received: by 2002:a05:7022:f409:b0:119:e56b:c74a with SMTP id a92af1059eb24-121722b29ddmr2435076c88.15.1766135976048; Fri, 19 Dec 2025 01:19:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IFHLncFl/Iqm9W8a4XTUYn9gRPfCdgmH0wDAwBm1zZM/UvMERAxXt5Y13MSnJriA8Eqv/U0vA== X-Received: by 2002:a05:7022:f409:b0:119:e56b:c74a with SMTP id a92af1059eb24-121722b29ddmr2435035c88.15.1766135975395; Fri, 19 Dec 2025 01:19:35 -0800 (PST) Received: from [10.110.43.182] (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1217254d369sm6369095c88.16.2025.12.19.01.19.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 19 Dec 2025 01:19:35 -0800 (PST) Message-ID: Date: Fri, 19 Dec 2025 17:19:30 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 1/1] Bluetooth: btqca: Add WCN6855 firmware priority selection feature To: Dmitry Baryshkov Cc: Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, cheng.jiang@oss.qualcomm.com, quic_chezhou@quicinc.com, wei.deng@oss.qualcomm.com References: <20251117021645.712753-1-shuai.zhang@oss.qualcomm.com> <20251117021645.712753-2-shuai.zhang@oss.qualcomm.com> Content-Language: en-US From: Shuai Zhang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE5MDA3NiBTYWx0ZWRfX2x1iXU1kP/jf DV2iiY1ebD3tPeLp2gEYjAJzadbVFwF3sT5DYVBWaAfBGqPxGoCkejF/mQBP3Ky2ryu5YRsKVrP nZlis7aGlX19w7IYWgAmnf3MFQTiA5iGdP7295O9qlecxZoNy09wedI73mZ7czNMCwnnBtM6d5G 36n7ljTaRgVHcFyKF3bzUUiUjjL/TiRZqXyAe/aFVzSwMjO/Y+X7Yi6xEli7EwUE1CWIYMYSG0u Qv1mT6eXa112TxSUB46EbSsM7dqGU9hWXyWGpWD9tmPnQPgUwG9eZxi1qKaExoHdGzMxsCyqxNx TvVo51llRdHgpdyrjgrYXy6FLh5pJbPEhxQbYS4AHYPpt/D12WI7w6DOyBPiXzQrM5lIwYRCm1W lEgJ9mZFKU/wOBlek6oBBZMOIpGjYLDlw/g9bnFciB0VOio74cacTVXvw4oGYs9QI9FAjNS54iJ pT+pi3lsUEbyF4+AdNQ== X-Authority-Analysis: v=2.4 cv=dOmrWeZb c=1 sm=1 tr=0 ts=694518a8 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=CPydP0X5_9nDnWI7JbAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: HeZT3B37fFYjWpPKHaukvQHk-aJ5l2In X-Proofpoint-GUID: HeZT3B37fFYjWpPKHaukvQHk-aJ5l2In X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-19_02,2025-12-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 malwarescore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512190076 Hi Dmitry On 11/19/2025 3:59 PM, Dmitry Baryshkov wrote: > On Mon, Nov 17, 2025 at 10:16:45AM +0800, Shuai Zhang wrote: >> Historically, WCN685x and QCA2066 shared the same firmware files. >> Now, changes are planned for the firmware that will make it incompatible >> with QCA2066, so a new firmware name is required for WCN685x. >> >> Test Steps: >> - Boot device >> - Check the BTFW loading status via dmesg >> >> Sanity pass and Test Log: >> QCA Downloading qca/wcnhpbftfw21.tlv >> Direct firmware load for qca/wcnhpbftfw21.tlv failed with error -2 >> QCA Downloading qca/hpbftfw21.tlv >> >> Signed-off-by: Shuai Zhang >> --- >> drivers/bluetooth/btqca.c | 22 ++++++++++++++++++++-- >> 1 file changed, 20 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c >> index 7c958d606..8e0004ef7 100644 >> --- a/drivers/bluetooth/btqca.c >> +++ b/drivers/bluetooth/btqca.c >> @@ -847,8 +847,12 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, >> "qca/msbtfw%02x.mbn", rom_ver); >> break; >> case QCA_WCN6855: >> + /* Due to historical reasons, WCN685x chip has been using firmware >> + * without the "wcn" prefix. The mapping between the chip and its >> + * corresponding firmware has now been corrected. >> + */ >> snprintf(config.fwname, sizeof(config.fwname), >> - "qca/hpbtfw%02x.tlv", rom_ver); >> + "qca/wcnhpbtfw%02x.tlv", rom_ver); >> break; >> case QCA_WCN7850: >> snprintf(config.fwname, sizeof(config.fwname), >> @@ -861,6 +865,13 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, >> } >> >> err = qca_download_firmware(hdev, &config, soc_type, rom_ver); >> + >> + if (!rampatch_name && err < 0 && soc_type == QCA_WCN6855) { >> + snprintf(config.fwname, sizeof(config.fwname), >> + "qca/hpbtfw%02x.tlv", rom_ver); >> + err = qca_download_firmware(hdev, &config, soc_type, rom_ver); >> + } > Is there a reason for ignoring how it was done already for other cases when > we need a similar fallback? Please extend the existing code (or rewrite > it) instead of adding a similar hook at a completely different place. Current Strategy (when DTS does not specify rampatch and firmware):     Rampatch: Load the rampatch based on soc_type.     NVM:  Load the NVM with board_id based on soc_type.                 If the file corresponding to board_id does not exist, then load the NVM file ending with .bin.     For HSP (new requirement):         First, load the rampatch/NVM files wcnhpbtfw and wcnhpnv.         If not found:         Rampatch: Fall back to loading the hpbtfw rampatch file.         NVM:  Starting from wcnhpnv.bxxx, load the NVM file ending with .bin.                     If still not found, look for hpnv.bxxx and then apply the above NVM strategy again (soc_type(board_id)  to .bin). The current changes are based on the original implementation, which should make them the clearest modifications. Please review according to the existing strategy, and feel free to let me know if you have any questions. >> + >> if (err < 0) { >> bt_dev_err(hdev, "QCA Failed to download patch (%d)", err); >> return err; >> @@ -923,7 +934,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, >> case QCA_WCN6855: >> qca_read_fw_board_id(hdev, &boardid); >> qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname), >> - "hpnv", soc_type, ver, rom_ver, boardid); >> + "wcnhpnv", soc_type, ver, rom_ver, boardid); >> break; >> case QCA_WCN7850: >> qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname), >> @@ -936,6 +947,13 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, >> } >> >> err = qca_download_firmware(hdev, &config, soc_type, rom_ver); >> + >> + if (!firmware_name && err < 0 && soc_type == QCA_WCN6855) { >> + qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname), >> + "hpnv", soc_type, ver, rom_ver, boardid); >> + err = qca_download_firmware(hdev, &config, soc_type, rom_ver); >> + } >> + >> if (err < 0) { >> bt_dev_err(hdev, "QCA Failed to download NVM (%d)", err); >> return err; >> -- >> 2.34.1 >> Thanks, Shuai