From nobody Mon Feb 9 21:37:27 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 6036948035D for ; Wed, 21 Jan 2026 09:51:08 +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=1768989069; cv=none; b=iYU11FdqmxeKnr3BOlcmu0zNFoNj6QfgIX4phPOdwYaJ4advGnNj65hjo0gj/utAojYfiJlnOp0Js0sbsdENA2oVhMC8DXBULKTPEFelCT61FdG1hkvip8qFP7tkzD+LGEhJqA4Hpu+4eupkpf6KgoLIW4Gx0S3fpAtxue6RMFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768989069; c=relaxed/simple; bh=l4MMsyTuJZ/YHpNJCzs05k83aF0SBRxMCuDzdpmDjgY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pqDZjGCPBqM96axd/ZYmKagZ2V02JbU+iXwo53C0XoD26JrNxSK8u8je3NNYq1dr4F3LaJJi0fskfDdXLDZQVAqAMt3J+zMWCOCoESByfMJ6m3Yex72tlXM5gXkcs4xMFO4JrhGhRcTYKBsVDiughrbbQso2rwRaHJDwxH2nwOM= 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=FcGcdvdR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TONm/zr0; 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="FcGcdvdR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TONm/zr0" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60L9fS5T3991496 for ; Wed, 21 Jan 2026 09:51:07 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=GiQ/XgYHT/W TkJNrYSdtUPJtPfB1bDJIXOaoB92xpxs=; b=FcGcdvdRaYlCBKan5SOhYwBOrQ3 IsIyfqaapy+MPouZkjrCwYHX6lqjPSM4j/ZS35IvF6dXAJwMffxzgXPAGChQ5e2a 1SEdk09nA6ktDj9MFCrdeJUFbFG838Z7vpGiaDJHKUSAPwiYq+3Jk4swpjpCQv44 gCKpPeWhTdztA42VDDjMEXfihe2HeINBjPIouxJVs9slIdTj93fUfmS7CY5Te780 4jEG0pLnXaja74oOmIALqrnBR9nVyss+F9vPaCHknXwZ/by1obeFgh4O/S0AJ1ZQ kYcxSf6DmDr29DlAttjP0S7zcUwwbZsPut2wUV8grBOfO1fQOvHIVR3i0iA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4btpm41m18-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 21 Jan 2026 09:51:07 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c52ff723c86so3326085a12.0 for ; Wed, 21 Jan 2026 01:51:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768989067; x=1769593867; 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=GiQ/XgYHT/WTkJNrYSdtUPJtPfB1bDJIXOaoB92xpxs=; b=TONm/zr0ndDM+XWpLZSoKEkbCaEpAB5DW8WiZKcV+LN80V/Pg/G7gO+qYzTaLWiU72 3GSXYK1DgFzctXzlUY8wh+msVAoF203cgqude1ErdNzknH04WPw5LgMG+0O2D87GQCz0 TC3MPE+GnXYFl5XugCMNocmdDpGLsd9b48T/0ErcZLyqe/RXD911vVpLXTthMlL/OvPO KHLdyyiU73vwkKzBo2w9kRnFW3DeYiA16zSmggrG9iQuav2n/CiIXAU3nD6E5jj2D0KF MYKI3zl5AQgVoMMXA8lxoHf/+fVXuT1qdSVaPQBPUfl7QpP7Ef9x5QZ6dfSYTcG8XA8x hKpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768989067; x=1769593867; 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=GiQ/XgYHT/WTkJNrYSdtUPJtPfB1bDJIXOaoB92xpxs=; b=Aotgi0zZUAvRbJ9+qWGa+Vy1/zHcEbB6ZM4OmZpfZic7eSTiykN7F3wueZ6K/t8TId JKoyXosGVOZqxb3c5dbZ0ojhxY/HMys6vAYXUqrS2R8FnL3oIrQD8UsBYYiPyMxHq4hC Ij3T3tTz1VpqFeIWJGEPmnGlQRToKxzE5as5EWhwISP3k8zPXp44lZzLBMz40wUF60kO cCEFz6ZQNm0IqyGsUfTnpsI38Ox7+v0S5RwvOzCMN6ZkPGTGbNj970RjmJbMahTJnBAi RAkPdO5nsBdInZrkMicY6SeUQZfCah595O/RKUxAc+3PS0fIQEzCe8EEOVryOR6qteBO GA2w== X-Forwarded-Encrypted: i=1; AJvYcCXVG79PGj6zfaHx8ACV2rbE0o0BtzBd5ekmLqppB8o8QD4LEmI/mKTiNiUxfB0xUVXcHba+EWnWHLFhgPQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yxf85LItLHwtPLLBuDGarlIdS+Pz6QQTDXLbLeopBVoA7zv7C2g cSnEDe2gYMnBD3Ga5PUKv7mTI7yofQXieZlYVRV3koUMShfO9WSKoVkvGAnjIJ4ztVqKzIlQ3ik v+rmHaRZohlYNiHa/b0PC0XB+aHhS5LsAG5A47OXtGDPleC2H4wiN9AtXlibKGYV1FgY= X-Gm-Gg: AZuq6aJtjKsCh90kAqwHT2KRgm7AIKY4UzQWXeb365f9YBlrUcr+G/Ln9XiZonssS3W GjKZSbABEUgIT+dLOyOhXgJd/WFBQgea8SvzQl/yfkvxbUgnvgeUacl2/1scyAVjTeWqXymy3uG bWst5GuZyyeRvdt91IqxgyHoToLE3aaAXzu+OsZmQ5z+6b9/xZRwmECJtd8YtjaKuvJwTwBCE+0 /1UD5PNyMCNhsaoqAuLcnC0LCXHfyxCsxTX1Qv0x2KmGYbvHWPCULMyCrNdM7Nt/OkMzAXpmZjE J6cdXQP7VCB6nvT6B0646Y2nbS1PCqoow/6aum+rg/hFqMhodBxnh2ZMAn6r7K/c18mmwqPjUcy ywXiuimPEdhC1fyD67UE66Ri1EMr8bLYPCyrUupNs62CBr42VwaUh2lkBnGqECvYsJ0q9 X-Received: by 2002:a05:6a21:9994:b0:38d:fa67:e87f with SMTP id adf61e73a8af0-38e00bba20dmr17504851637.12.1768989066728; Wed, 21 Jan 2026 01:51:06 -0800 (PST) X-Received: by 2002:a05:6a21:9994:b0:38d:fa67:e87f with SMTP id adf61e73a8af0-38e00bba20dmr17504826637.12.1768989066234; Wed, 21 Jan 2026 01:51:06 -0800 (PST) Received: from Z2-SFF-G9-MQ.ap.qualcomm.com (i-global052.qualcomm.com. [199.106.103.52]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-352678af047sm16997295a91.10.2026.01.21.01.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jan 2026 01:51:05 -0800 (PST) From: Miaoqing Pan To: jjohnson@kernel.org, johannes@sipsolutions.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: ath11k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, jonas.gorski@gmail.com, krzk@kernel.org, Miaoqing Pan Subject: [PATCH v4 ath-current 1/2] wifi: ath11k: add usecase firmware handling based on device compatible Date: Wed, 21 Jan 2026 17:50:54 +0800 Message-Id: <20260121095055.3683957-2-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260121095055.3683957-1-miaoqing.pan@oss.qualcomm.com> References: <20260121095055.3683957-1-miaoqing.pan@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-Authority-Analysis: v=2.4 cv=Jv38bc4C c=1 sm=1 tr=0 ts=6970a18b cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=JMaiino2ulENCBURCGwA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: edVfvThotuh5A4G9Yz_HO43nP8HJxZdJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIxMDA4MiBTYWx0ZWRfX4n9lScRLXVOF 36CX9PtLL+qFrk0HsZ8S+mQQ/VBOsz/ahyV1Jm7x5ayZNKeI+SS5/a5yvwFdi7JpyNIKup5AJ6C LYskbRrb0rtl9kTHn7Ij15Hf1+NUg//FNskB9pOXmIUJdTbFhjCmnD/UrhQ7lSnKU76gujWTC6L I0VykxMpG64pRIX5XavLky02KSVdJEFAQzXiVDg1pAwGIBl3HQIhF2qU6YOzQ6DNYB/NI9Rm0FX Y5k0VI1LaBW9VG3d1xbhNiFulJRIHDPO7k19dXvgpsOKgOqf6TFFS93D/yhQCAjDiV4trF9mDuJ He6DqypSva6pft9vGTi0WW6jqcVH0AP4SiumGda2GAP0q3/LyqIkO29icpZN4eCfSY/BLERZhg3 6I4u3u+EfKCcnJvK57DUTwZ96HkZYVFpcRHW3kS4IhN6hYygahAnYLSOInU085m4pJilpKzm2zF g1vN8CY7+KHsawTti8w== X-Proofpoint-ORIG-GUID: edVfvThotuh5A4G9Yz_HO43nP8HJxZdJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-21_01,2026-01-20_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601210082 Content-Type: text/plain; charset="utf-8" For M.2 WLAN chips, there is no suitable DTS node to specify the firmware-name property. In addition, assigning firmware for the M.2 PCIe interface causes chips that do not use usecase specific firmware to fail. Therefore, abandoning the approach of specifying firmware in DTS. As an alternative, propose a static lookup table mapping device compatible to firmware names. Currently, only WCN6855 HW2.1 requires this. However, support for the firmware-name property is retained to keep the ABI backwards compatible. For details on usecase specific firmware, see: https://lore.kernel.org/all/20250522013444.1301330-3-miaoqing.pan@oss.qualc= omm.com/. Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-04685-QCAHSPSWPL_V1_V2_SILICONZ_I= OE-1 Fixes: edbbc647c4f3 ("wifi: ath11k: support usercase-specific firmware over= rides") Signed-off-by: Miaoqing Pan Reviewed-by: Baochen Qiang Reviewed-by: Vasanthakumar Thiagarajan --- drivers/net/wireless/ath/ath11k/core.c | 27 ++++++++++++++++++++++++++ drivers/net/wireless/ath/ath11k/core.h | 4 ++++ 2 files changed, 31 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/= ath/ath11k/core.c index de84906d1b27..3f6f4db5b7ee 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -1044,6 +1044,33 @@ static const struct dmi_system_id ath11k_pm_quirk_ta= ble[] =3D { {} }; =20 +static const struct __ath11k_core_usecase_firmware_table { + u32 hw_rev; + const char *compatible; + const char *firmware_name; +} ath11k_core_usecase_firmware_table[] =3D { + { ATH11K_HW_WCN6855_HW21, "qcom,lemans-evk", "nfa765"}, + { ATH11K_HW_WCN6855_HW21, "qcom,monaco-evk", "nfa765"}, + { ATH11K_HW_WCN6855_HW21, "qcom,hamoa-iot-evk", "nfa765"}, + { /* Sentinel */ } +}; + +const char *ath11k_core_get_usecase_firmware(struct ath11k_base *ab) +{ + const struct __ath11k_core_usecase_firmware_table *entry =3D NULL; + + entry =3D ath11k_core_usecase_firmware_table; + while (entry->compatible) { + if (ab->hw_rev =3D=3D entry->hw_rev && + of_machine_is_compatible(entry->compatible)) + return entry->firmware_name; + entry++; + } + + return NULL; +} +EXPORT_SYMBOL(ath11k_core_get_usecase_firmware); + void ath11k_fw_stats_pdevs_free(struct list_head *head) { struct ath11k_fw_stats_pdev *i, *tmp; diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/= ath/ath11k/core.h index 3f41e6569a78..a0d725923ef2 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -1292,6 +1292,7 @@ bool ath11k_core_coldboot_cal_support(struct ath11k_b= ase *ab); =20 const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab, const char *filename); +const char *ath11k_core_get_usecase_firmware(struct ath11k_base *ab); =20 static inline const char *ath11k_scan_state_str(enum ath11k_scan_state sta= te) { @@ -1346,6 +1347,9 @@ static inline void ath11k_core_create_firmware_path(s= truct ath11k_base *ab, =20 of_property_read_string(ab->dev->of_node, "firmware-name", &fw_name); =20 + if (!fw_name) + fw_name =3D ath11k_core_get_usecase_firmware(ab); + if (fw_name && strncmp(filename, "board", 5)) snprintf(buf, buf_len, "%s/%s/%s/%s", ATH11K_FW_DIR, ab->hw_params.fw.dir, fw_name, filename); --=20 2.34.1