Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp1098183pxx; Fri, 30 Oct 2020 01:49:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygbA3S+icJVQk9oSht6yTDeHGeEteAQtczvQnOoH6obWwlQuwra17ctlrM3fWVKnvASrBB X-Received: by 2002:a05:6402:156:: with SMTP id s22mr1148258edu.178.1604047776861; Fri, 30 Oct 2020 01:49:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1604047776; cv=none; d=google.com; s=arc-20160816; b=AqDsbEMxjQCvQy2WOmEMZUBTZl54MkXx5O+6ioKGwqL2qV44/sfwDr/+hg66LCu/B+ tPo4HBnRW2gY2QM1AESda1XWIBZITdbp9bDd5JWPdUlsTYpEF7hUVNECbmqlllyWEQA5 REci6Ax+9LmOZxQgLy875+ehDdNzojnSg2n2X1T91L9q5m7vSPNgt7GjT4jGGiXjIB+K uJkrHa/WJF8O1l3CVB9F7muPdKIOFhjDLUBzudStHIKUsBZlb3ywXrt5nYufd0D3W3UH OIHmd41CEd9+mm8AGgRgNa5V7slF/e2+YurxXmYL5EfmOpBIKfH5BuC66t6grpvl8QDN bPDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:authenticated-by; bh=7Yd6FTF+PLZrUeiXw56k4hvM9p1M3DbFQDYyTkNdPcU=; b=FI7CQEPULN+GHhvBhZs0qd5hhUBwlE0oel2vc3xyEW3Yh/GuTXLFyI61m07cYAXq2C Ayc5ifrwjghLxPTgIKh8MRHI2HfAY2vB/YZYqeJgpxp4fvUEsHIMXXqmJ5RIwmshe9Oz uFeupTGVMjUOchxeJJuYHQzzlFhMJZHvKxhOJib4eYGsyVrHa5HAqkKy6xyXefot3TKC eOdjmw9BSxJyKclvLq067goI8MTf9r/I7aIW6i+KOdib1xk/zp45QSHV/WAfYxG5amRI v4widyKUvQfv3BYKbMjMT5F8TsJ7B7fozw9OO3PMBjiQlXnkpV5O3XIuMUH1Yr3+zyCb Z+lA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g4si3973331edj.168.2020.10.30.01.49.13; Fri, 30 Oct 2020 01:49:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726052AbgJ3Is4 (ORCPT + 99 others); Fri, 30 Oct 2020 04:48:56 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:50441 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725948AbgJ3Isz (ORCPT ); Fri, 30 Oct 2020 04:48:55 -0400 Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.73 with qID 09U8mlfA7013488, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexmb04.realtek.com.tw[172.21.6.97]) by rtits2.realtek.com.tw (8.15.2/2.70/5.88) with ESMTPS id 09U8mlfA7013488 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Fri, 30 Oct 2020 16:48:47 +0800 Received: from localhost.localdomain (172.21.69.222) by RTEXMB04.realtek.com.tw (172.21.6.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2044.4; Fri, 30 Oct 2020 16:48:46 +0800 From: To: , CC: , Subject: [PATCH v2 2/4] rtw88: store firmware feature in firmware header Date: Fri, 30 Oct 2020 16:48:24 +0800 Message-ID: <20201030084826.9034-3-tehuang@realtek.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201030084826.9034-1-tehuang@realtek.com> References: <20201030084826.9034-1-tehuang@realtek.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.21.69.222] X-ClientProxiedBy: RTEXMB03.realtek.com.tw (172.21.6.96) To RTEXMB04.realtek.com.tw (172.21.6.97) Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Chin-Yen Lee Some functions need the support of firmware with special version. In order to get the feature of current firmware, we store the information in firmware header and parse after firmware is loaded. The current feature list in firmware header includes checking leave lps via C2H and supported lps deep mode. Signed-off-by: Chin-Yen Lee Signed-off-by: Tzu-En Huang --- drivers/net/wireless/realtek/rtw88/fw.h | 10 +++++++++- drivers/net/wireless/realtek/rtw88/main.c | 13 +++++++++++++ drivers/net/wireless/realtek/rtw88/main.h | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/fw.h b/drivers/net/wireless/realtek/rtw88/fw.h index 08644540d259..5b74830c4d2c 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.h +++ b/drivers/net/wireless/realtek/rtw88/fw.h @@ -72,6 +72,14 @@ enum rtw_fw_rf_type { FW_RF_MAX_TYPE = 0xF, }; +enum rtw_fw_feature { + FW_FEATURE_SIG = BIT(0), + FW_FEATURE_LPS_C2H = BIT(1), + FW_FEATURE_LCLK = BIT(2), + FW_FEATURE_PG = BIT(3), + FW_FEATURE_MAX = BIT(31), +}; + struct rtw_coex_info_req { u8 seq; u8 op_code; @@ -177,7 +185,7 @@ struct rtw_fw_hdr { u8 subversion; u8 subindex; __le32 rsvd; /* 0x08 */ - __le32 rsvd2; /* 0x0C */ + __le32 feature; /* 0x0C */ u8 month; /* 0x10 */ u8 day; u8 hour; diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index 565efd880624..259ad849af93 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -1259,6 +1259,17 @@ static void rtw_unset_supported_band(struct ieee80211_hw *hw, kfree(hw->wiphy->bands[NL80211_BAND_5GHZ]); } +static void __update_firmware_feature(struct rtw_dev *rtwdev, + struct rtw_fw_state *fw) +{ + u32 feature; + const struct rtw_fw_hdr *fw_hdr = + (const struct rtw_fw_hdr *)fw->firmware->data; + + feature = le32_to_cpu(fw_hdr->feature); + fw->feature = feature & FW_FEATURE_SIG ? feature : 0; +} + static void __update_firmware_info(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) { @@ -1269,6 +1280,8 @@ static void __update_firmware_info(struct rtw_dev *rtwdev, fw->version = le16_to_cpu(fw_hdr->version); fw->sub_version = fw_hdr->subversion; fw->sub_index = fw_hdr->subindex; + + __update_firmware_feature(rtwdev, fw); } static void __update_firmware_info_legacy(struct rtw_dev *rtwdev, diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index ffb02e614217..b00235573a13 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -1633,6 +1633,7 @@ struct rtw_fw_state { u8 sub_index; u16 h2c_version; u8 prev_dump_seq; + u32 feature; }; struct rtw_hal { -- 2.17.1