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 4C29A50276 for ; Tue, 20 Jan 2026 01:31:49 +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=1768872710; cv=none; b=MwDV0zC6+Y54HysROpQ8JhMe/WYWqYTroNs+taZR9ZQnjQ54SZM6ovP3LxklVR3/xzVF8DpahodTXnpTVI0u8maSaJuEK3wweXznf0fAGobalJiMXIOyDOddH/tnuxT2rqWmySxueICeG2hZFw/wKvoSD/zdKsknL9g2zz8n/F0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768872710; c=relaxed/simple; bh=oMT0iX9wMvcvgzMWAqGs81I4Qs27mZgztxOv3yCd0b0=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=K6luuM514YYOwyTA1LYWvN4M7ov3BUP4iMUEHva/jlqzMU3/rYjg3sWjmjIJ58zJmyg/95X3YpctFdV/ZTnt/Q73PhRPq1glH8TGjhpgdR5e/VrF0cYdYa7k6d68gm+IvahCc8d05YnHir2xL7/KZRaVsGMGsbsFY+ejmx+cct8= 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=RjGECdWY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BkWBW1Eq; 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="RjGECdWY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BkWBW1Eq" 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 60JHRwx22965047 for ; Tue, 20 Jan 2026 01:31:48 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= EurZDX4j1u1daRQ8YIKhVg9OpQ24kYt1o7VNKtuF/UI=; b=RjGECdWYlwyTkN2g 6tCN/iGciBQ9Qg5Fw/3jCruvszhgWBc1AWKXtPUc/Cit7FVvnrxiySNf6mzZ6M3v v+B78M17RSSq3iyf8Yc7hec9u6Im/OF742sk4TaE7TuyfxtNooOP7rW1EJNbP1Ub 7jA7JKpCyhMyluDVsA0KBTqZa1owkEyAwXqkgSoqdWxYmUMuBYEjzt1dPOjmJC7A B6cdKAs7UOSRGJ3Z7ym51kV8refnS4AIakBsVzCWGH/Gh/ujfD9gN8EzCdsrKZnv fj4qID0njP6GdU/Q3FkZ63gxeqP151Bk0VNU8kVmodTntjEA+BfYS5UdtXXXsYr0 H21OrQ== 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 4bsjaaa6a7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 20 Jan 2026 01:31:48 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-81e6ec1da28so3708004b3a.0 for ; Mon, 19 Jan 2026 17:31:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768872708; x=1769477508; 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=EurZDX4j1u1daRQ8YIKhVg9OpQ24kYt1o7VNKtuF/UI=; b=BkWBW1EqXuqxvK+opbuzw5xNUJXnwZ0DbZB2VsciSARfF8m8fE0+rlP9HT03c6nVXD 2F7RyWHgydxYxYDu/w1Qvw2dXK3GJlToCRbIQR8lz/LhAhpyIYtr1XPgpPmhNY5Jr4/k WjviBTzXwnw2Vgq4uaqAat1InzFtWijLNbZjtshlNUSmMVAYDnyrGPGQM5IrvgoGK5fM xEt50m6Usv8vAp8cklIBOQYRiriDZsF4949nunBQK30UDKNscWC0zuty0P34KvT+cG7e dfJ7OfPvt8sY1PsRdYilP1JbnMBQwjLgcjqwFJxrROvWwGG3etZrflFHrM1nnp+I0zdy IoNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768872708; x=1769477508; 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=EurZDX4j1u1daRQ8YIKhVg9OpQ24kYt1o7VNKtuF/UI=; b=Hl4zcNNK7XPR7zVk5gYgfF6vG0IjDVxObbDr+fnkANrK3BcC4kw9pwWNPJ0750KkuL 38JDBEd3+XyEt6nLOd3e8wR15ATHCsGiC7NQG5aKjSo9vBjmvWwr3FhJubNHggTlGd9s 8t+0cfEXh539J2lmXWIxl5GwoCm0TfjAPpDNV6NWxOm8LDZP+n1YartHry2BXqtv3khp rQ8vM4USIKCpG8bQVzpsvFHByQSPTTajH2iMyHwP+gXwqZre3I+HXhrBpZf+tx4Ua+/L p3KX50VT8TfIy8G1zX0VwYnQHXz8vJXBh1PD7rYO05muiaJRC/K1KxZMCAaGYxVIntwH GPbw== X-Forwarded-Encrypted: i=1; AJvYcCWcTI6/TZ/55Ha6b588Fpd2TG5WipRtl7W5r/b2TSUFovcpUv63zoRPUTRffswvTwWqkbpqdMPbsm3vcjA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/kX9sWmZHIerHdkbfa02blgn6tmdu3nTfiEfEFCjUBgScQeIT AeEBIznq2xTPA/+y1Fk/39ix0Yv6k67yGJUZ3hUiyPem70WDLBsYuEKmxM/28iu1DT40a0zZDWD 9LKq3VS6rgKdKNXcECl/gHcuWO3YbojUAGL8icJTp+HAFcjoc3GQJ62zy0oEh8adOjh8= X-Gm-Gg: AY/fxX4kSkMca6Nu6nVIOSzi/CaJcLkN9qPxTfrgVC2XkVxSTdZZk/UjcJivtS0KazZ wUcU/wCqwlE25tJnteN7VnZ0oyPte/4TQFqaV4VpCjrvGSzG7nPka/645VlDwabSOyz60m3FymG oXd4yxP3DEyrgb4WcoWe0QPhz0Y5GfNM2zKDjLOPu+3z2GmLlsJTWof7vQExF6TfDACCi0wyGLj ZfLjqEG7cuDpZfycS34SesMNtE7FWf0Z4mmZde/nOqi9lfDrX0nszjvoW4sl6TV1lAmeMCPR94m brtlz1NAU8/YqIB2yb1bPd1lmkAGGfzSDRhlOQCiljquValbN5Onsa48PIaSaSo5Gc6qnZI9dwr xGTN+51flctwjwAxhBn7G3ellrQTcBzKaBkLmwlUEaLa32miIGADgS6cx6+sM86yJ0T1tur2So1 CW00cn X-Received: by 2002:a05:6a00:ac4:b0:81f:7db2:89db with SMTP id d2e1a72fcca58-81fa188208fmr10973296b3a.68.1768872707681; Mon, 19 Jan 2026 17:31:47 -0800 (PST) X-Received: by 2002:a05:6a00:ac4:b0:81f:7db2:89db with SMTP id d2e1a72fcca58-81fa188208fmr10973265b3a.68.1768872707155; Mon, 19 Jan 2026 17:31:47 -0800 (PST) Received: from [10.133.33.36] (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa129199dsm10227896b3a.51.2026.01.19.17.31.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 17:31:46 -0800 (PST) Message-ID: <1e19474c-4b0f-4e68-84af-4ffe9c8c0f8b@oss.qualcomm.com> Date: Tue, 20 Jan 2026 09:31:43 +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 ath-current 1/2] wifi: ath11k: add usecase firmware handling based on device compatible To: Jonas Gorski Cc: jjohnson@kernel.org, johannes@sipsolutions.net, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, ath11k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, krzk@kernel.org References: <20260119140238.3360658-1-miaoqing.pan@oss.qualcomm.com> <20260119140238.3360658-2-miaoqing.pan@oss.qualcomm.com> Content-Language: en-US From: Miaoqing Pan In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIwMDAxMSBTYWx0ZWRfX8YGqCzZDliJu PkEzVZIyJsJgwrsq0823uvQ7ZL08HFNuiwSR2JiDNBK7EM/IdFfPqM32zqfhtmj4hHQCkuUGbw8 HJfNwPl0B02cyiuEVU6yE+fSDiB82/5Gk8o94SaM6177hzzX8VRjejjTIjp7A/Lzyqgo87izGrn C3IBeRZt7d0BfqL9K34/IIKjnPxR4oepH/MrA4FWJpa5xIVt7hXMguYes5rQ/UyJbPHrYRdI4HY rKJyn/XBFhZeDSwxmmmy/J49D4+LIBEXXodJquyViwemAVlGW0G+uCMGq+SLvd3b+BgLS/MapqC tzrpJpX6UbkSRmnRZuUl31rRCiysVSgsDssL05+fK5fQLafaOOWR0D9Osl3zKHmMin8H776JLYu 2n0ZxCVEkD8VjoVx6by6WlcNfZPGc6q2VHX+r2aHyrcekvxDPxBKiKQJudNfEH6WOIt5iCQc2Nl O4Au0SQ74wTYrgV2dDg== X-Proofpoint-ORIG-GUID: -d_g-7i4IGrpXuab1Tb7Cm-zpmspsCtE X-Proofpoint-GUID: -d_g-7i4IGrpXuab1Tb7Cm-zpmspsCtE X-Authority-Analysis: v=2.4 cv=L8gQguT8 c=1 sm=1 tr=0 ts=696edb04 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=D84e7DIKQFjpkovS06oA:9 a=3ZKOabzyN94A:10 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=2026-01-20_01,2026-01-19_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601200011 On 1/19/2026 11:56 PM, Jonas Gorski wrote: > Hi, > > On Mon, Jan 19, 2026 at 3:04 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. >> >> 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.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 | 36 ++++++++++++++++++++++++++ >> drivers/net/wireless/ath/ath11k/core.h | 4 +++ >> 2 files changed, 40 insertions(+) >> >> diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c >> index de84906d1b27..1cf7f4e601c3 100644 >> --- a/drivers/net/wireless/ath/ath11k/core.c >> +++ b/drivers/net/wireless/ath/ath11k/core.c >> @@ -1044,6 +1044,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)) > > You should be able to replace most of this code by using > of_machine_is_compatible(entry->compatible) instead. > Thanks, will update. >> + return entry->firmware_name; >> + entry++; >> + } >> + } >> + >> + return NULL; >> +} >> +EXPORT_SYMBOL(ath11k_core_get_usecase_firmware); >> + >> void ath11k_fw_stats_pdevs_free(struct list_head *head) >> { > > Best regards, > Jonas