From patchwork Mon Jan 16 02:55:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Golle X-Patchwork-Id: 9518001 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1C78F601B7 for ; Mon, 16 Jan 2017 02:57:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BDA302839B for ; Mon, 16 Jan 2017 02:57:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B0D4D284C9; Mon, 16 Jan 2017 02:57:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2E0752839B for ; Mon, 16 Jan 2017 02:57:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751506AbdAPC50 (ORCPT ); Sun, 15 Jan 2017 21:57:26 -0500 Received: from fudo.makrotopia.org ([185.142.180.71]:52040 "EHLO fudo.makrotopia.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751431AbdAPC5Z (ORCPT ); Sun, 15 Jan 2017 21:57:25 -0500 Received: from local by fudo.makrotopia.org with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.88) (envelope-from ) id 1cSxU1-0007xU-M6; Mon, 16 Jan 2017 03:57:24 +0100 Date: Mon, 16 Jan 2017 03:55:56 +0100 From: Daniel Golle To: linux-wireless@vger.kernel.org Cc: Johannes Berg , Stanislaw Gruszka , roman@advem.lv, michel.stempin@wanadoo.fr, c.mignanti@gmail.com, evaxige@qq.com, Kalle Valo , Felix Fietkau , John Crispin , Gabor Juhos Subject: [PATCH v2 02/14] rt2x00: rt2800lib: introduce RT2800_HAS_HIGH_SHARED_MEM flag Message-ID: <20170116025544.GA32165@makrotopia.org> References: <874m114lwq.fsf@codeaurora.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <874m114lwq.fsf@codeaurora.org> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Gabor Juhos Some chipsets have more than 16KB of shared memory. Introduce a new rt2800 specific flag to indicate that and add a helper function which helps to check the presence of the new flag. Also enable the new flag for the RT3593 chipset which has 24KB of shared memory. The flag can also be used for other chipsets, but none of those has been tested yet. Signed-off-by: Gabor Juhos Signed-off-by: Daniel Golle --- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 ++++ drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c index 5436cdb07937..5045af1b0dc9 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -7770,6 +7770,7 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev) int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) { + struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; int retval; u32 reg; @@ -7777,6 +7778,9 @@ int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) if (retval) return retval; + if (rt2x00_rt(rt2x00dev, RT3593)) + __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + /* * Allocate eeprom data. */ diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h index 256928f0ea6a..4ee424dfe23f 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h @@ -22,6 +22,10 @@ #include "rt2800.h" +enum rt2800_flag { + RT2800_HAS_HIGH_SHARED_MEM, +}; + /* RT2800 driver data structure */ struct rt2800_drv_data { u8 calibration_bw20; @@ -34,6 +38,8 @@ struct rt2800_drv_data { unsigned int tbtt_tick; unsigned int ampdu_factor_cnt[4]; DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); + + unsigned long rt2800_flags; }; struct rt2800_ops { @@ -66,6 +72,13 @@ struct rt2800_ops { __le32 *(*drv_get_txwi)(struct queue_entry *entry); }; +static inline bool rt2800_has_high_shared_mem(struct rt2x00_dev *rt2x00dev) +{ + struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; + + return test_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); +} + static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, const unsigned int offset, u32 *value)