From mboxrd@z Thu Jan 1 00:00:00 1970 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 6F2FC22E3E7 for ; Thu, 11 Dec 2025 01:38:48 +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=1765417131; cv=none; b=qe0S2PRYwBRlHAhRymnhyncdd2LoCKoMJeI2ePS3y9ksvRdPVyD2e3xtq7O6CBajyHhqnSQ2M/aPYWupMrPeR+VTG3UoqRlPYFA5XmJuAUSTkol2VzFBakiApNWoRgVmAZ3NSOyEvfOTcs2W5Z7qg/Ct+tS1gSYwZ+SdhqBlks4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765417131; c=relaxed/simple; bh=Xl6t5Wo/bcg5rQUL8cL5aaf+rzI7yQcRiZs4UFZHr7k=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=W06u2sGEE+Crxn5JuqG1uHuuALKxfwLmyc1iokjc/GFRMctZsYjfFoxxXX+sZs5tjxDPX4OB1GB9HqlnAkeb7YCE+0Jvx/wH9rDsvIahEyHCSwgLrYNiabLkagIQaSzWqEuvyNlCpG4HSwqHLRDFsTBdLrzYbqHGR6VlSlbJ+Xs= 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=PL9mXFQp; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SmO+zji0; 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="PL9mXFQp"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SmO+zji0" 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 5BALP4oh4126319 for ; Thu, 11 Dec 2025 01:38: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= GN++ADGzM627PAx9EVYDzZ1p5toEqhe0ETwpTHidCps=; b=PL9mXFQpWSUJNrgp WmBsV68Ph1mf7McN5yeMpTjJmp0LNEqi+fqIMpoEAenx3+ue6YcfVZbEqzvRpUHq mlFZAqwH23+R0ZnKw8i2YIIUYyRxg0dVYWykkA10z+NRTO5TbUWRd3YPhbeXkr1r jhIDnBLgHKTX9fuT8yIISnPoymO8hjEbUdmRH8zYckWZBopd9GKfwqUpLn+cE0iU aZCD5nk950X1xsGlZm0HY/yclNtM0CBuYQcVbnO86wbXlFJ8HeNAwjp2Z61Csid9 KW+1tR8Sfb3QZbxqNcZyj2EIrvotEzaqajhtOPM/LnvJrjLjLO8oVcFZh3dwNH1n HWeZgQ== 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 4aybhp9rjj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 11 Dec 2025 01:38:47 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7aa9f595688so682091b3a.2 for ; Wed, 10 Dec 2025 17:38:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765417126; x=1766021926; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=GN++ADGzM627PAx9EVYDzZ1p5toEqhe0ETwpTHidCps=; b=SmO+zji0/B9i48IxSpbDTSobyfjMBfA/pGIHJZ2hrORFOy15iskSsEyOes2z1Topcg h6GAVzRy2/rzTcTNYxpXIloFYYt7nZJzKHvw0dIaJ3m1rhClBn8FUOURM+4oSvuSp/T2 ptH76FNLHyM/zxMRYOHkBqBbajLP/Uh5qAvd+TqsrQ4Jc1bNZh97Lzc/MqbGypyp9v6O bSfKxMnm5fXlhyy29aUhMtbYvXjx6JdGLtzXGmN0Wl2JJqPMl6qKUkxrCeYzTgQPLjDN 3OhYQTMphUX0W80My8oyay05fXzupKhGzpzSmzjlK5D8yPEfeHZPuEqzYoK/GswXtk0v 9SVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765417126; x=1766021926; h=content-transfer-encoding:in-reply-to:content-language:from :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=GN++ADGzM627PAx9EVYDzZ1p5toEqhe0ETwpTHidCps=; b=Bw/D11WI4yXwwUkBF040XhgxeHWX2j8b3/DRKeHm6hGj7ePGJiL5joz2BqWPKRNNjG 2uzcf+87iBjBv7NxniXImf+5djT8cpZPKvHYeDgReIefWgAiMFn64nUK4OYna4eZY2L9 2ap3qHAWvAWklg7EEajHIujQGAw0e9BSFUMK/nbdjjkyY4UKx5rOThh3+wMikrHCjkJf pSw3G7dIv8KYTcLTX3Z7zfRUdeVKRfsYoNcswoASv9mKI7Jt8Vs3Fwe223uQFFLBSMRq z08bydLSmzKPeAdDfxd2UMJufAdNL5NtoHPlVPhaCZobVzNExu7tlb+tz1w+bMAYA1E1 JgpA== X-Forwarded-Encrypted: i=1; AJvYcCVfWvsx+PzpIvWjWYtPdGSYx1xcnT6k1eYGyTmIxsAaoDlRf3ePDwLYPUyQzn19yvbJGGQPuy/YmZ40cMk=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe36Mzv8B20Wo0hrfxQlRm8yRRv1nQR7NrUQFmfZOtqrj8bfqV w7L+DeWlY7nyz73ZyB8PeLS74pCY4CvodtsESS3tdFXjCWrBllRpYR9AQQES+XjrpaVPRmva5pi n0tWniuFVxT5PSRR6nFc4VgZAg84p5IvK58wvFuRbhNgbgoLB99kQNTRVNHrELSHmwXM= X-Gm-Gg: AY/fxX4RgTUTaP6uuPopBfLGrK3mnOAB5HDbKNrgE9b1FnY8kUaon/JvrRPIWCUVd3d 6BQaKzKESe6Q3lJX3DZN8tohFgxhHxIAQuBR8a/4vVQWNihhUrjMB67+D4uiMdu2aaxo0hgMV0n O1NkEQGMtYR9muAS/wHAPSFh4YE1P7FxsbcCSJwM7B1RH49lfm7Cfc8lFCFDDK2HiihtjVuNQBS 6XzoYyX21czUNVKaoH6HKQco69E8nQDJ8am4OWeWab3lA0Cr0JfDhWCVCduoT0dSDVkEXj8EmlT wGH+4ZZ1P5LueVhd01CsTVc8z8yB83g6Fe5wro6hgnjx3SinxovQ+TWnC4BTeODIdcR98uHEt8L lsdaSZrcxtM8GrO9/3n+ZfNjrCUWTWkhAjk3fzFzXfSSZGsBTkzIxwUCPCbrxM6ZeqdPgE7JY5P pdthl16AU= X-Received: by 2002:a05:6a00:198d:b0:7e8:4433:8fb2 with SMTP id d2e1a72fcca58-7f2301c1149mr4259208b3a.58.1765417126242; Wed, 10 Dec 2025 17:38:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IENC8HecPgiesBQXDwASJPfBe30YPLdltG2S8NA3lisGTdaJnNZvdAyMo1l59vYSLD75Dcyyw== X-Received: by 2002:a05:6a00:198d:b0:7e8:4433:8fb2 with SMTP id d2e1a72fcca58-7f2301c1149mr4259191b3a.58.1765417125751; Wed, 10 Dec 2025 17:38:45 -0800 (PST) Received: from [10.133.33.160] (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7f4c5093a56sm709545b3a.47.2025.12.10.17.38.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 10 Dec 2025 17:38:45 -0800 (PST) Message-ID: Date: Thu, 11 Dec 2025 09:38:39 +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 ath-current 1/2] wifi: ath11k: add usecase firmware handling based on device compatible To: Miaoqing Pan , 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 References: <20251204071100.970518-1-miaoqing.pan@oss.qualcomm.com> <20251204071100.970518-2-miaoqing.pan@oss.qualcomm.com> From: Baochen Qiang Content-Language: en-US In-Reply-To: <20251204071100.970518-2-miaoqing.pan@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjExMDAwOSBTYWx0ZWRfX76br858SfBc1 HEpKSOevbmY44CGywP62riUcDa+Ibyks4mdIv3I+QQgYBDlI7aj/NchVKFqWfqjZVSuGJr0heAI yljCyHQpwQA9gTDufw+Q64RMq7akI1ZWBn/OvCLZlT8kYJ2GBuKqqnhc7A9ov709zaRadFFszQ8 tVvDe94FNjCx5HWEdZvrTjsm6zFrPTXp1p/PT3nFXmaIa+gVHtkKVUIG4D89+t0XNOEzlLZctJt aDPVSM3PjjNRNsNCiVbpIl+7v20ExIm+CNj8l/198MJXpxE3t6qSnMg0Ny90KUjGGuNValc/cQK AMjKPehAhz+JS3CMi753EEkBzst3zSuwdeYTwZyXZ3vvbtdycG2PCX6i22b5Ll3aSLPPOhLC/vn evhLibcfiQvS/FD/OKi07X+d40o+aw== X-Proofpoint-ORIG-GUID: pFp2HYQ0WHZRL3j-NI_VPGVAk-X9mgaY X-Proofpoint-GUID: pFp2HYQ0WHZRL3j-NI_VPGVAk-X9mgaY X-Authority-Analysis: v=2.4 cv=LJ9rgZW9 c=1 sm=1 tr=0 ts=693a20a7 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=qPzGLdPRDFbHXEUNeP8A:9 a=QEXdDO2ut3YA:10 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-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110009 On 12/4/2025 3:10 PM, Miaoqing Pan wrote: > 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.qualcomm.com/. > > Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-04685-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1 > > Fixes: edbbc647c4f3 ("wifi: ath11k: support usercase-specific firmware overrides") > Signed-off-by: Miaoqing Pan > --- > 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 reserved. > * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. > */ > > @@ -997,6 +996,42 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = { > {} > }; > > +static const struct __ath11k_core_usecase_firmware_table { > + u32 hw_rev; > + const char *compatible; > + const char *firmware_name; > +} ath11k_core_usecase_firmware_table[] = { > + { 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) = of_find_node_by_path("/"); > + const struct __ath11k_core_usecase_firmware_table *entry = NULL; > + int i, count = of_property_count_strings(root, "compatible"); > + const char *compatible = NULL; > + > + for (i = 0; i < count; i++) { > + if (of_property_read_string_index(root, "compatible", i, > + &compatible) < 0) > + continue; > + > + entry = ath11k_core_usecase_firmware_table; > + while (entry->compatible) { > + if (ab->hw_rev == 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 reserved. > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. > */ > > #ifndef ATH11K_CORE_H > @@ -1275,6 +1275,7 @@ bool ath11k_core_coldboot_cal_support(struct ath11k_base *ab); > > 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); > > static inline const char *ath11k_scan_state_str(enum ath11k_scan_state state) > { > @@ -1325,9 +1326,7 @@ static inline void ath11k_core_create_firmware_path(struct ath11k_base *ab, > const char *filename, > void *buf, size_t buf_len) > { > - const char *fw_name = NULL; > - > - of_property_read_string(ab->dev->of_node, "firmware-name", &fw_name); > + const char *fw_name = ath11k_core_get_usecase_firmware(ab); > > if (fw_name && strncmp(filename, "board", 5)) > snprintf(buf, buf_len, "%s/%s/%s/%s", ATH11K_FW_DIR, Reviewed-by: Baochen Qiang