From nobody Fri Dec 19 20:40:05 2025 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 DE88F27EFEF for ; Thu, 4 Dec 2025 07:11:17 +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=1764832280; cv=none; b=BAap1jJeC3ZlRAdVv+zeAal4i2s2eofrQSXGUUBB20qQzbwQrsTHJl1fYt65AU0Q/SserxVmAvZ3g46RS/x1YYxpS/OksLOe4WmhtX521BHZsJCkJzSefYaLU6sjn+zxvHYmpSsiEYPNzlwzht9phvq0HCVRzEOdFpZwiD3n0g0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764832280; c=relaxed/simple; bh=2wVXeLWe3ZnDp4/vITX1AjAmqZE9UuKve3+vH8//3Gw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ufcw6h/5av0yXBuBPfmNEIgY09LUrAx6ygpimqB5G0g5bb2v1YMiaBPf8ndoSXZlduJAb+/FVWmjOQGm0kDJ4t6k9LK/mjL2d27GYnxsEzNlx2qrW3IwdrfREhqqDcBb4cZmKURL/0iKQuCP1IpU9Aq7FiFk/sZ5UTmf9maUBLY= 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=g699UPge; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LbJOTM16; 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="g699UPge"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LbJOTM16" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B468Ylj598515 for ; Thu, 4 Dec 2025 07:11:17 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=w+Yt+b8q8Vj xvzQ2cWX0SzX2S2I2lHz/ZTVgM/PTf5I=; b=g699UPgee6rpPlKYIFmSLUSMWZI MuQWa8FPTVolJHpm88IBtaYuLFaIQndvzXhA2oHtR0Ahb77VOtkhXUhKu5AzK2TK BO9o4EdY57haEl76uforGRDZt6PiEJtcGgIbG37UdT4yEGstsk0Wo5OoCTkQ7/kH wdE7kWBNZedfzpMF/MpxuUGeXX6GM2NTd3JxJXqoeF+RVpYK0b8zgBBQUbcPVXE/ 44vHWlAXVRC0w1+gcZclZKuIPCtsmHxweIte97ZacXNovp1JdmEfwyNaoEfbKhpy 4eNPkujo2ykPllmhdSgEWEdk1Lg/QGCKAkB90nn25dVzFCZiaRxdNdsoing== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4au1f00q3n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 04 Dec 2025 07:11:16 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7b89c1ce9cfso613033b3a.2 for ; Wed, 03 Dec 2025 23:11:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764832276; x=1765437076; 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=w+Yt+b8q8VjxvzQ2cWX0SzX2S2I2lHz/ZTVgM/PTf5I=; b=LbJOTM16g+ogTMY2Qhkoywq4IKuWitK9/tpoqBBM2Unp8HM2ffN2I9uLrFZ8dkjws7 K5iQJaCv+qlHPuAhv/UHbOe7wEsWpaoAARB6qFiMk3yYN8s/FdFfNPTmtyfdRaEocs1c Cos7t7RbVqe8yTzr6CQsM+WplYLJjaWjvsjgMSs8qJgZpNTzwfB6N7UrZQz95SDC7ObR 7lb6TnQ0eTSBs8Xt3q8qhb/ICZR/rvwDh81iv98nTkoPJMY0GHRpkVNleb55NLrkeFys OToewoJIy7AifsLgYueAjngWyN6It+nzrBnb/XRV1tb8283KNBqREBC6gAdg2WS4EJBW H83w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764832276; x=1765437076; 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=w+Yt+b8q8VjxvzQ2cWX0SzX2S2I2lHz/ZTVgM/PTf5I=; b=dd7p3df8KaWsf8qp2ASmetrC286/O3rF6XNhy9TJkfh/RhNy1wGPJSfXmmwh4Z5OVv KNxhGgJsxQEeZOy0IdipyGPZvzIA2zUyGn9k7X8AqAdj92YD0DtJ0K7yeBCzGmLUvkTH hDZZ8rfnUFaQeIOmRb7EDsfwgYBWLQHXT0jl/HS7yk1Ks2LxJ+eIj+4ZtaE98+PPtBnY 7LaSdn1JANH9f97VMa+WiPVeLJeaVPa/MGrL/2xe0g7F3P18eVxXmUaKc8K7HvIUb7ri vNfnPpkxsUt/ADbm9EHewJBpS7ODGjKNYVH2UuqJxwE9O3K7b8sfJ+5Q2EcGRro+EU66 imTw== X-Forwarded-Encrypted: i=1; AJvYcCViuQc4mKP/c0EJfOwDgVEWGiohK1h/ZOO6UDNBKXc1jDfd2gze83ED+VafYx8cgKCe/Z6My5omkjBr2Ec=@vger.kernel.org X-Gm-Message-State: AOJu0YyqBWH6hYWdDFzKxL5hJ/3PjMl1ZI51l/67I2aSSAv1RvjpGk5y RO2xK2UiKC4CSTJh6P7ID96z8lQSh9uK73YwGc0ylTKOuRyomFx4VX3NYO0Cwx0387pSQTAvjaf wOJ2aRwiTMdujSfjVUJkDku9ZGza6szd62cdQwOEkteJcQ4g61hEVIq8h08OiPfKni7Q= X-Gm-Gg: ASbGncvfxA+6IffSAyOEFoDXOSGUzaGdn6ZiTukRRR+scti/CxTRjYsqBnwM4rEokk2 xzgjNl1++iZjq2PpXQPcZH6ukJrm5jxjtoUTt+GvoopWXxUvyLGVPcnMTHjR2X25vA4LO6mvnRf VAhRYVnmpb6JhCIG+AyT7IrxdNypvcbJgXsChpF/Ufx29D1QkyPoR6sNtDBzwQpjFwZaHTu0itU /cnuVgvjroH5cw+oSMYolIWoQIc1w5koNdCnffUrCaQ1ILt4G0k7j5p3Lo1jvpzXmPp0grBRxAD EPDnHBAiV0h8cEsHm0zAI5MuOclDRoYgqzw+9c5eotWgAnkilTyu4AJGA5AyVbd0PFYJ9C1lrKt rjamerCZ30yI9SXF5+AeEj2jEgt7s8g8hwHom5DVs8uzbwyRjQSQu2TjtS9yFXRIGdDRU X-Received: by 2002:a05:6a00:2e9f:b0:7a5:9cf5:b341 with SMTP id d2e1a72fcca58-7e2259ddfcemr2440414b3a.7.1764832275689; Wed, 03 Dec 2025 23:11:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IHdjjjpA4rf37aA7kTwgkuuiTsJYAC1y4NmUcAkrMaRDWq3DGig0k1Wx+gXs04GDeqg0OKrqg== X-Received: by 2002:a05:6a00:2e9f:b0:7a5:9cf5:b341 with SMTP id d2e1a72fcca58-7e2259ddfcemr2440381b3a.7.1764832275193; Wed, 03 Dec 2025 23:11:15 -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 d2e1a72fcca58-7e29f2ed331sm1117470b3a.4.2025.12.03.23.11.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 23:11:14 -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, Miaoqing Pan Subject: [PATCH ath-current 1/2] wifi: ath11k: add usecase firmware handling based on device compatible Date: Thu, 4 Dec 2025 15:10:59 +0800 Message-Id: <20251204071100.970518-2-miaoqing.pan@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251204071100.970518-1-miaoqing.pan@oss.qualcomm.com> References: <20251204071100.970518-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-Proofpoint-GUID: vcCsapHY5FMBWWwmMl1RuL8VsgEgRfYo X-Proofpoint-ORIG-GUID: vcCsapHY5FMBWWwmMl1RuL8VsgEgRfYo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjA0MDA1NyBTYWx0ZWRfXxc7ib6g0pAOh 9OL74PU70PQUKTz0N/VFqvnC+0JJkcJU2RGKu5lFHK31h5ibXDqWVvKtBgM5/9yIuOsi5d+dTCI 47ICf4NjhSzCeEUpt00W3A3Ybmz6vqepKDpQlQUBKIXlg+4hzWpbEGMNRP1Guv12iJsc3ezoXcK vYTChJHoqkHAlkLpY7tNLMNS14GtdeIdUg4qTcTKg5Zn4WAvGG7FzJGX01CWAgXvtR4L5ZkIGG8 EwaPiuqj2WbQAIvs2NqoC+JyiifjU5Ms6lEzUi+x8VcaMSXs+iZVq1gDJkSzCQeyWnSXVjHjqfL i57Z+cbebnet1w0telo2E5Wsbecr/Q4bPjXGTj11FopqM4YUAw1ut5YoFQMiNDssJaTq4ZjO4W+ 3dZ2f5oaqaPzyymNwKrSSJ3XgoPCrQ== X-Authority-Analysis: v=2.4 cv=Scz6t/Ru c=1 sm=1 tr=0 ts=69313414 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=b9+bayejhc3NMeqCNyeLQQ==:17 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=abYA0IzpRIpkkFLbjSYA:9 a=IoOABgeZipijB_acs4fv:22 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-04_02,2025-12-03_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 impostorscore=0 bulkscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512040057 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. 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 --- drivers/net/wireless/ath/ath11k/core.c | 37 +++++++++++++++++++++++++- drivers/net/wireless/ath/ath11k/core.h | 7 +++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/= ath/ath11k/core.c index 812686173ac8..a4a3a65c7752 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights res= erved. * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 @@ -997,6 +996,42 @@ static const struct dmi_system_id ath11k_pm_quirk_tabl= e[] =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) +{ + struct device_node *root __free(device_node) =3D of_find_node_by_path("/"= ); + const struct __ath11k_core_usecase_firmware_table *entry =3D NULL; + int i, count =3D of_property_count_strings(root, "compatible"); + const char *compatible =3D NULL; + + for (i =3D 0; i < count; i++) { + if (of_property_read_string_index(root, "compatible", i, + &compatible) < 0) + continue; + + entry =3D ath11k_core_usecase_firmware_table; + while (entry->compatible) { + if (ab->hw_rev =3D=3D entry->hw_rev && + !strcmp(entry->compatible, 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 e8780b05ce11..f8fcd897ebd2 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights res= erved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 #ifndef ATH11K_CORE_H @@ -1275,6 +1275,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) { @@ -1325,9 +1326,7 @@ static inline void ath11k_core_create_firmware_path(s= truct ath11k_base *ab, const char *filename, void *buf, size_t buf_len) { - const char *fw_name =3D NULL; - - of_property_read_string(ab->dev->of_node, "firmware-name", &fw_name); + const char *fw_name =3D ath11k_core_get_usecase_firmware(ab); =20 if (fw_name && strncmp(filename, "board", 5)) snprintf(buf, buf_len, "%s/%s/%s/%s", ATH11K_FW_DIR, --=20 2.34.1