Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3624570pxb; Mon, 24 Jan 2022 13:47:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJzV3M4lTcd8yACmsiT4vgHmkl5UPHtYsWlwCEqWKm+WXWnTvnTnFKtbudJp1OAfWLV1u7jx X-Received: by 2002:a62:ea05:0:b0:4c6:50eb:71d1 with SMTP id t5-20020a62ea05000000b004c650eb71d1mr15773450pfh.30.1643060786142; Mon, 24 Jan 2022 13:46:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643060786; cv=none; d=google.com; s=arc-20160816; b=ec0V5vdcX9W+hWBpMardZ5XzfvGoY9ecJdvuWkAatglsbz39wrGUsX9PqNKkk64RD3 pCI49DxbYYclCzUPwjTAPVOtcW40cMstthIk3zvnfXig6zTOKwk0ioXBjIHrp5KOs+hy NYZFsp/XVwLrJ+mnBCUnAMEXUdh2Kc0JitwdZOk3gMR+jkRlxKZ//tginRlFERSw9/ya ppIuGAocDOoSvcT1yyf3F8QbBlcc6VTT6b3sjZlvr4V6nN/tX/bQqAdyzt5xs9rka4MU WlrKWvrWzy7ZjMXDfso1MDkNeHIA2iYM626Az3nPsNoKrgGnek7Z9lXYAiGV52UOrM7W 2aUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yr37IpxM3V2QDuu16NQh6wodEv8LEs/QbGiDINVo8wc=; b=rBaOMix5UwxCcGk+lw0JMLpjZ7x5mRrSjqCgmCihP0u3Z7mXcZFQqwFV2xMSvIa+XQ eWzl+PWSywXHvYWPnQC+1W7oMRSTDPZzr/nnjTNQFjVehICzPbkdLTLwyWfijyh1ItXb qHRPCg3Zs7qDkNSjAexdBqL91E7/+QuPfuWZXBtvuQCDaKxi96eaDdw8GoKyVDnL/X5I c1iasuiu6wGwNQchn5MFzueYSbjZ9ARUxOeog22kWSSv+8aTLm3UQobfx6+ZNDNS3iT9 ljNv+cb/3kwSL1tShNqiHgvv+o4UBH2dO0pofQRf4DII+UZ/QJiQG8hXMNu4gJQm2YTS vs+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=xuGeAlHb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e15si15947135plh.547.2022.01.24.13.46.13; Mon, 24 Jan 2022 13:46:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=xuGeAlHb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1452507AbiAXVZp (ORCPT + 99 others); Mon, 24 Jan 2022 16:25:45 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:52044 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1443200AbiAXU4a (ORCPT ); Mon, 24 Jan 2022 15:56:30 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 7740DB8123D; Mon, 24 Jan 2022 20:56:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7B7E2C340E5; Mon, 24 Jan 2022 20:56:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643057788; bh=y68xxu8iMAtxJro7Nolt3iQzbp/6pcihsIFLmjlaUH0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xuGeAlHbaWzLmhJeZt9zLtxIfOFYzY8NBMNXnbWnw/Rp7PjTJjdfuLOuyvduuvWtB 4gOQkoJOPC/KjaMHkUyRZVIo5wJrq2hkIA3Vi5rRJyg4or1lElAXBxBu3UuC2CpSt3 b6ruZ3RJyS23jcv7gdzSMYASweliDmOYmgTLTV90= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Wen Gong , Jouni Malinen , Kalle Valo , "Limonciello, Mario" Subject: [PATCH 5.16 0078/1039] ath11k: add string type to search board data in board-2.bin for WCN6855 Date: Mon, 24 Jan 2022 19:31:07 +0100 Message-Id: <20220124184127.793504812@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wen Gong commit fc95d10ac41d75c14a81afcc8722333d8b2cf80f upstream. Currently ath11k only support string type with bus, chip id and board id such as "bus=ahb,qmi-chip-id=1,qmi-board-id=4" for ahb bus chip and "bus=pci,qmi-chip-id=0,qmi-board-id=255" for PCIe bus chip in board-2.bin. For WCN6855, it is not enough to distinguish all different chips. This is to add a new string type which include bus, chip id, board id, vendor, device, subsystem-vendor and subsystem-device for WCN6855. ath11k will first load board-2.bin and search in it for the board data with the above parameters, if matched one board data, then download it to firmware, if not matched any one, then ath11k will download the file board.bin to firmware. Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1 Signed-off-by: Wen Gong Signed-off-by: Jouni Malinen Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20211111065340.20187-1-quic_wgong@quicinc.com Cc: "Limonciello, Mario" Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/ath/ath11k/core.c | 27 +++++++++++++++++++++------ drivers/net/wireless/ath/ath11k/core.h | 13 +++++++++++++ drivers/net/wireless/ath/ath11k/pci.c | 10 ++++++++++ 3 files changed, 44 insertions(+), 6 deletions(-) --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -392,11 +392,26 @@ static int ath11k_core_create_board_name scnprintf(variant, sizeof(variant), ",variant=%s", ab->qmi.target.bdf_ext); - scnprintf(name, name_len, - "bus=%s,qmi-chip-id=%d,qmi-board-id=%d%s", - ath11k_bus_str(ab->hif.bus), - ab->qmi.target.chip_id, - ab->qmi.target.board_id, variant); + switch (ab->id.bdf_search) { + case ATH11K_BDF_SEARCH_BUS_AND_BOARD: + scnprintf(name, name_len, + "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x,qmi-chip-id=%d,qmi-board-id=%d%s", + ath11k_bus_str(ab->hif.bus), + ab->id.vendor, ab->id.device, + ab->id.subsystem_vendor, + ab->id.subsystem_device, + ab->qmi.target.chip_id, + ab->qmi.target.board_id, + variant); + break; + default: + scnprintf(name, name_len, + "bus=%s,qmi-chip-id=%d,qmi-board-id=%d%s", + ath11k_bus_str(ab->hif.bus), + ab->qmi.target.chip_id, + ab->qmi.target.board_id, variant); + break; + } ath11k_dbg(ab, ATH11K_DBG_BOOT, "boot using board name '%s'\n", name); @@ -633,7 +648,7 @@ static int ath11k_core_fetch_board_data_ return 0; } -#define BOARD_NAME_SIZE 100 +#define BOARD_NAME_SIZE 200 int ath11k_core_fetch_bdf(struct ath11k_base *ab, struct ath11k_board_data *bd) { char boardname[BOARD_NAME_SIZE]; --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -47,6 +47,11 @@ enum ath11k_supported_bw { ATH11K_BW_160 = 3, }; +enum ath11k_bdf_search { + ATH11K_BDF_SEARCH_DEFAULT, + ATH11K_BDF_SEARCH_BUS_AND_BOARD, +}; + enum wme_ac { WME_AC_BE, WME_AC_BK, @@ -759,6 +764,14 @@ struct ath11k_base { struct completion htc_suspend; + struct { + enum ath11k_bdf_search bdf_search; + u32 vendor; + u32 device; + u32 subsystem_vendor; + u32 subsystem_device; + } id; + /* must be last */ u8 drv_priv[0] __aligned(sizeof(void *)); }; --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c @@ -1251,6 +1251,15 @@ static int ath11k_pci_probe(struct pci_d goto err_free_core; } + ath11k_dbg(ab, ATH11K_DBG_BOOT, "pci probe %04x:%04x %04x:%04x\n", + pdev->vendor, pdev->device, + pdev->subsystem_vendor, pdev->subsystem_device); + + ab->id.vendor = pdev->vendor; + ab->id.device = pdev->device; + ab->id.subsystem_vendor = pdev->subsystem_vendor; + ab->id.subsystem_device = pdev->subsystem_device; + switch (pci_dev->device) { case QCA6390_DEVICE_ID: ath11k_pci_read_hw_version(ab, &soc_hw_version_major, @@ -1273,6 +1282,7 @@ static int ath11k_pci_probe(struct pci_d ab->hw_rev = ATH11K_HW_QCN9074_HW10; break; case WCN6855_DEVICE_ID: + ab->id.bdf_search = ATH11K_BDF_SEARCH_BUS_AND_BOARD; ath11k_pci_read_hw_version(ab, &soc_hw_version_major, &soc_hw_version_minor); switch (soc_hw_version_major) {