From patchwork Wed May 17 14:46:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 99993 Delivered-To: patch@linaro.org Received: by 10.182.142.97 with SMTP id rv1csp253785obb; Wed, 17 May 2017 07:53:17 -0700 (PDT) X-Received: by 10.99.110.202 with SMTP id j193mr4209252pgc.141.1495032797334; Wed, 17 May 2017 07:53:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495032797; cv=none; d=google.com; s=arc-20160816; b=Se62Vn6pYWphdEhTg8l3WlynnI7dNniVWEjnXC0TIhk4pPD+PS927EtdscX0fHPomO TqBFEhtqKEEvZhrha8c82av6v60HZoa7xmxUmN8nfGZ10gCR/7cl4u0blp3+ZZrjwHXD ACHIXAp+rcfWZvCN554S5KJ+apir40dyxv28iFwP9rQLchY22dx9qe1p3Kdq81B22o8I W1vUjBaveGJs1rGGyIZo+SadtvI2uiXARTq2Sk6rmxsXBL4bDIi4Er7YfNW5moO0OJPR IcVTn9OItlRrlwv4/omTstbAThD3lPc3O2IXnjJ2dCw9Su4xM8ywA9F/Lbaq5fhxvqJK d/qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=5NVA8TQ68iJVogF3Kz/itggbGWa6YWmhMKlCw9Ur95g=; b=R/0oUTHrWDbOFfhMVniky06paZneOuNPQ04/t9JVRezt2jvTbMvyrN+xJUylhcJjnI mD2TtET+Tdblfl04f7Pt8WYXUS4L3CBSBnhr1SyQbEHhBj5ADVTglguoChbbZZwLZE28 7oHaUnVRe3wLXR51z0WaNjfrct5B3XVKKQJdupAtW/qJIpv4L5gGDuQrUR46cm3I+5Pr JRgYPsV1MaXKS9gV3/6NQr4ddpfr7R963mT48m0wtv5fn1dUJELHKkwK7dxV9hZuJLfc dn88s+XRnQZQCMSdvB8BHZewO01MvrrtDQyDtJTgRv+5VJwcYzi53otrKMNe1yqfv/4G AAmA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p33si2280716pld.9.2017.05.17.07.53.16; Wed, 17 May 2017 07:53:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932254AbdEQOwz (ORCPT + 25 others); Wed, 17 May 2017 10:52:55 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:49877 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754622AbdEQOry (ORCPT ); Wed, 17 May 2017 10:47:54 -0400 Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.145]) with ESMTPA (Nemesis) id 0MhlTv-1dOyRW29sh-00Mvn0; Wed, 17 May 2017 16:47:22 +0200 From: Arnd Bergmann To: linux-wireless Cc: Arnd Bergmann , Stanislaw Gruszka , David Miller , Helmut Schaa , Kalle Valo , Daniel Golle , Mathias Kresin , Johannes Berg , Serge Vasilugin , Roman Yeryomin , Networking , Linux Kernel Mailing List , Jes Sorensen , Tom Psyborg Subject: [PATCH v2 01/10] rt2x00: change function pointers for register accessors Date: Wed, 17 May 2017 16:46:53 +0200 Message-Id: <20170517144702.1381136-2-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170517144702.1381136-1-arnd@arndb.de> References: <20170517144702.1381136-1-arnd@arndb.de> X-Provags-ID: V03:K0:I9DBhze/MqfViyMsunDYMmDNigWCqmTbreXLkXFXJ2+wXWUp5e9 EDsFUiUkV2KanLVFE6UHvlUX3zORqbWSXrv9Wfodu3WN8eQKVnVshl9AbM80M35cuzQ4bS9 Bq6Q0eh2xFOtpk3lSL/k7CxicrP6CQGa+1gnDh3cw/mYD/bkS0oPA68xNdkUc7g4E96eyyv 4cMwD1BoasL9P7TKiWWJw== X-UI-Out-Filterresults: notjunk:1; V01:K0:BFw9urGx9AY=:L5wu8X+zG5VcglXniKtSQw WYe00PuiAT19SE3sza3/6Fb/hF2yhg9JM1B7Xq+MedFy4/WjL2HNb/D4QVNKCFZgWaNtBiMo3 sXnch0MKYrdkXCnmo2KFiPCbBfIVXTDRIGTJrfh8knh84rE8HIiNI/GQZjGW3WXlEm4VI6Xtj iiOuxPbTHJPVxrOmubC5GwOngvbBcd4dyQC2lttS+x++FRy5u+q/0A0RTs294wsw6JLkinmZm aI8ZJ6FhmzNo0cFBufXOX0wS/i4k8C+e/G32X/cyj8ggMwMO3gfNO0HhGc2dHaZF+og6dqZvn aDaLcX8DyMHV2VjgGgyZ9YRU4R8f7yPV7AEhYEVxIhdPUhHvtLGFtuDtkjMlsN5J9JZMU5ajc Crc2zH7XtM+ZoEhVgE3PgHkuCusCcjpl75ucDN4qlJdws+aZurmBiTtUP37DGXmX28sCFsViQ /HRUwoE6yM5pbymEJBBS8Rn4owZwtIpeiYAr4zbSiMRh0PdEqAjm+D5GalZecZCV+z1k3fh37 Qe9GBSl1fImsopGxtoG/xs+pBJYw8zxXLk5uCBqmlko5fFyi4B+WTDBA+G1zcq3wk0NZkg1AB rhN7WiOtn2wSnMugUIBWgtU6II3E8ol+LhU22If3HCzql2bR0vlIEbAFAKH9TBOcc8PAr6L7p ecNb4I8U6M5I+Q56WI+ANz25f6FSsYFhxEfHxOMYqYL5ZmYb6Y3wGVDQBI+5/IDKcy+k= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This prepares the driver for changing all the 'read' register accessors to return the value instead of passing it by reference. Since a lot of them are used in callbacks, this takes care of the callbacks first, adding a couple of helpers that will be removed again one at a time. Signed-off-by: Arnd Bergmann --- drivers/net/wireless/ralink/rt2x00/rt2400pci.c | 18 +++++++++++---- drivers/net/wireless/ralink/rt2x00/rt2500pci.c | 18 +++++++++++---- drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 24 ++++++++++++++------ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 28 +++++++++++++++++++----- drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 20 ++++++++++++----- drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 4 ++-- drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 4 ++-- drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 4 ++-- drivers/net/wireless/ralink/rt2x00/rt2x00.h | 13 +++++++++++ drivers/net/wireless/ralink/rt2x00/rt2x00debug.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt2x00debug.h | 4 ++-- drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h | 6 +++++ drivers/net/wireless/ralink/rt2x00/rt2x00usb.h | 22 ++++++++++++++++++- drivers/net/wireless/ralink/rt2x00/rt61pci.c | 17 ++++++++++---- drivers/net/wireless/ralink/rt2x00/rt73usb.c | 17 ++++++++++---- 15 files changed, 157 insertions(+), 44 deletions(-) -- 2.9.0 diff --git a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c index 19874439ac40..3ba9a1674e1d 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c @@ -164,10 +164,20 @@ static void rt2400pci_eepromregister_write(struct eeprom_93cx6 *eeprom) } #ifdef CONFIG_RT2X00_LIB_DEBUGFS +static u8 _rt2400pci_bbp_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word) +{ + u8 value; + + rt2400pci_bbp_read(rt2x00dev, word, &value); + + return value; +} + static const struct rt2x00debug rt2400pci_rt2x00debug = { .owner = THIS_MODULE, .csr = { - .read = rt2x00mmio_register_read, + .read = _rt2x00mmio_register_read, .write = rt2x00mmio_register_write, .flags = RT2X00DEBUGFS_OFFSET, .word_base = CSR_REG_BASE, @@ -175,21 +185,21 @@ static const struct rt2x00debug rt2400pci_rt2x00debug = { .word_count = CSR_REG_SIZE / sizeof(u32), }, .eeprom = { - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt2400pci_bbp_read, + .read = _rt2400pci_bbp_read, .write = rt2400pci_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt2400pci_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32), diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c index 791434de8052..d9b061b73e83 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c @@ -164,10 +164,20 @@ static void rt2500pci_eepromregister_write(struct eeprom_93cx6 *eeprom) } #ifdef CONFIG_RT2X00_LIB_DEBUGFS +static u8 _rt2500pci_bbp_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word) +{ + u8 value; + + rt2500pci_bbp_read(rt2x00dev, word, &value); + + return value; +} + static const struct rt2x00debug rt2500pci_rt2x00debug = { .owner = THIS_MODULE, .csr = { - .read = rt2x00mmio_register_read, + .read = _rt2x00mmio_register_read, .write = rt2x00mmio_register_write, .flags = RT2X00DEBUGFS_OFFSET, .word_base = CSR_REG_BASE, @@ -175,21 +185,21 @@ static const struct rt2x00debug rt2500pci_rt2x00debug = { .word_count = CSR_REG_SIZE / sizeof(u32), }, .eeprom = { - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt2500pci_bbp_read, + .read = _rt2500pci_bbp_read, .write = rt2500pci_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt2500pci_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32), diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c index 0d2670a56c4c..5bd160f732de 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c @@ -216,14 +216,14 @@ static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev, } #ifdef CONFIG_RT2X00_LIB_DEBUGFS -static void _rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - u32 *value) +static u32 _rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset) { u16 tmp; rt2500usb_register_read(rt2x00dev, offset, &tmp); - *value = tmp; + + return tmp; } static void _rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, @@ -233,6 +233,16 @@ static void _rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, rt2500usb_register_write(rt2x00dev, offset, value); } +static u8 _rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word) +{ + u8 value; + + rt2500usb_bbp_read(rt2x00dev, word, &value); + + return value; +} + static const struct rt2x00debug rt2500usb_rt2x00debug = { .owner = THIS_MODULE, .csr = { @@ -244,21 +254,21 @@ static const struct rt2x00debug rt2500usb_rt2x00debug = { .word_count = CSR_REG_SIZE / sizeof(u16), }, .eeprom = { - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt2500usb_bbp_read, + .read = _rt2500usb_bbp_read, .write = rt2500usb_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt2500usb_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32), diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c index d11c7b210e81..87cfc135e564 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -1225,10 +1225,28 @@ void rt2800_clear_beacon(struct queue_entry *entry) EXPORT_SYMBOL_GPL(rt2800_clear_beacon); #ifdef CONFIG_RT2X00_LIB_DEBUGFS +static u8 _rt2800_bbp_read(struct rt2x00_dev *rt2x00dev, const unsigned int word) +{ + u8 value; + + rt2800_bbp_read(rt2x00dev, word, &value); + + return value; +} + +static u8 _rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, const unsigned int word) +{ + u8 value; + + rt2800_rfcsr_read(rt2x00dev, word, &value); + + return value; +} + const struct rt2x00debug rt2800_rt2x00debug = { .owner = THIS_MODULE, .csr = { - .read = rt2800_register_read, + .read = _rt2800_register_read, .write = rt2800_register_write, .flags = RT2X00DEBUGFS_OFFSET, .word_base = CSR_REG_BASE, @@ -1239,28 +1257,28 @@ const struct rt2x00debug rt2800_rt2x00debug = { /* NOTE: The local EEPROM access functions can't * be used here, use the generic versions instead. */ - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt2800_bbp_read, + .read = _rt2800_bbp_read, .write = rt2800_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt2800_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32), .word_count = RF_SIZE / sizeof(u32), }, .rfcsr = { - .read = rt2800_rfcsr_read, + .read = _rt2800_rfcsr_read, .write = rt2800_rfcsr_write, .word_base = RFCSR_BASE, .word_size = sizeof(u8), diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h index f357531d9488..6bed0d5e930e 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h @@ -49,10 +49,10 @@ struct rt2800_drv_data { }; struct rt2800_ops { - void (*register_read)(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, u32 *value); - void (*register_read_lock)(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, u32 *value); + u32 (*register_read)(struct rt2x00_dev *rt2x00dev, + const unsigned int offset); + u32 (*register_read_lock)(struct rt2x00_dev *rt2x00dev, + const unsigned int offset); void (*register_write)(struct rt2x00_dev *rt2x00dev, const unsigned int offset, u32 value); void (*register_write_lock)(struct rt2x00_dev *rt2x00dev, @@ -84,7 +84,7 @@ static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, { const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; - rt2800ops->register_read(rt2x00dev, offset, value); + *value = rt2800ops->register_read(rt2x00dev, offset); } static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, @@ -93,7 +93,15 @@ static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, { const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; - rt2800ops->register_read_lock(rt2x00dev, offset, value); + *value = rt2800ops->register_read_lock(rt2x00dev, offset); +} + +static inline u32 _rt2800_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset) +{ + const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; + + return rt2800ops->register_read(rt2x00dev, offset); } static inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c index 0af22573a2eb..98f16312e3f1 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c @@ -325,8 +325,8 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = { }; static const struct rt2800_ops rt2800pci_rt2800_ops = { - .register_read = rt2x00mmio_register_read, - .register_read_lock = rt2x00mmio_register_read, /* same for PCI */ + .register_read = _rt2x00mmio_register_read, + .register_read_lock = _rt2x00mmio_register_read, /* same for PCI */ .register_write = rt2x00mmio_register_write, .register_write_lock = rt2x00mmio_register_write, /* same for PCI */ .register_multiread = rt2x00mmio_register_multiread, diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c index a985a5a7945e..c1eda3798b9b 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c @@ -164,8 +164,8 @@ static const struct ieee80211_ops rt2800soc_mac80211_ops = { }; static const struct rt2800_ops rt2800soc_rt2800_ops = { - .register_read = rt2x00mmio_register_read, - .register_read_lock = rt2x00mmio_register_read, /* same for SoCs */ + .register_read = _rt2x00mmio_register_read, + .register_read_lock = _rt2x00mmio_register_read, /* same for SoCs */ .register_write = rt2x00mmio_register_write, .register_write_lock = rt2x00mmio_register_write, /* same for SoCs */ .register_multiread = rt2x00mmio_register_multiread, diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c index f11e3f532a84..7fd7e6114c0c 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c @@ -802,8 +802,8 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = { }; static const struct rt2800_ops rt2800usb_rt2800_ops = { - .register_read = rt2x00usb_register_read, - .register_read_lock = rt2x00usb_register_read_lock, + .register_read = _rt2x00usb_register_read, + .register_read_lock = _rt2x00usb_register_read_lock, .register_write = rt2x00usb_register_write, .register_write_lock = rt2x00usb_register_write_lock, .register_multiread = rt2x00usb_register_multiread, diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h index 1bc353eafe37..f2ae33bf2ef2 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h @@ -1056,6 +1056,13 @@ static inline void rt2x00_rf_read(struct rt2x00_dev *rt2x00dev, *data = rt2x00dev->rf[word - 1]; } +static inline u32 _rt2x00_rf_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word) +{ + BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32)); + return rt2x00dev->rf[word - 1]; +} + static inline void rt2x00_rf_write(struct rt2x00_dev *rt2x00dev, const unsigned int word, u32 data) { @@ -1078,6 +1085,12 @@ static inline void rt2x00_eeprom_read(struct rt2x00_dev *rt2x00dev, *data = le16_to_cpu(rt2x00dev->eeprom[word]); } +static inline u16 _rt2x00_eeprom_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word) +{ + return le16_to_cpu(rt2x00dev->eeprom[word]); +} + static inline void rt2x00_eeprom_write(struct rt2x00_dev *rt2x00dev, const unsigned int word, u16 data) { diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c index 964aefdc11f0..4a1bca1b1e26 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c @@ -460,7 +460,7 @@ static ssize_t rt2x00debug_read_##__name(struct file *file, \ if (debug->__name.flags & RT2X00DEBUGFS_OFFSET) \ index *= debug->__name.word_size; \ \ - debug->__name.read(intf->rt2x00dev, index, &value); \ + value = debug->__name.read(intf->rt2x00dev, index); \ \ size = sprintf(line, __format, value); \ \ diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.h b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.h index e65712c235bd..a357a0727a0b 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.h @@ -38,8 +38,8 @@ enum rt2x00debugfs_entry_flags { #define RT2X00DEBUGFS_REGISTER_ENTRY(__name, __type) \ struct reg##__name { \ - void (*read)(struct rt2x00_dev *rt2x00dev, \ - const unsigned int word, __type *data); \ + __type (*read)(struct rt2x00_dev *rt2x00dev, \ + const unsigned int word); \ void (*write)(struct rt2x00_dev *rt2x00dev, \ const unsigned int word, __type data); \ \ diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h b/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h index 701c3127efb9..6d7a27ee6444 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h @@ -36,6 +36,12 @@ static inline void rt2x00mmio_register_read(struct rt2x00_dev *rt2x00dev, *value = readl(rt2x00dev->csr.base + offset); } +static inline u32 _rt2x00mmio_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset) +{ + return readl(rt2x00dev->csr.base + offset); +} + static inline void rt2x00mmio_register_multiread(struct rt2x00_dev *rt2x00dev, const unsigned int offset, void *value, const u32 length) diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h index 569363da00a2..4cad1beec791 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h @@ -206,6 +206,16 @@ static inline void rt2x00usb_register_read(struct rt2x00_dev *rt2x00dev, *value = le32_to_cpu(reg); } +static inline u32 _rt2x00usb_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset) +{ + __le32 reg = 0; + rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ, + USB_VENDOR_REQUEST_IN, offset, + ®, sizeof(reg)); + return le32_to_cpu(reg); +} + /** * rt2x00usb_register_read_lock - Read 32bit register word * @rt2x00dev: Device pointer, see &struct rt2x00_dev. @@ -216,7 +226,7 @@ static inline void rt2x00usb_register_read(struct rt2x00_dev *rt2x00dev, * through rt2x00usb_vendor_req_buff_lock(). */ static inline void rt2x00usb_register_read_lock(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, + const unsigned int offset, u32 *value) { __le32 reg = 0; @@ -226,6 +236,16 @@ static inline void rt2x00usb_register_read_lock(struct rt2x00_dev *rt2x00dev, *value = le32_to_cpu(reg); } +static inline u32 _rt2x00usb_register_read_lock(struct rt2x00_dev *rt2x00dev, + const unsigned int offset) +{ + __le32 reg = 0; + rt2x00usb_vendor_req_buff_lock(rt2x00dev, USB_MULTI_READ, + USB_VENDOR_REQUEST_IN, offset, + ®, sizeof(reg), REGISTER_TIMEOUT); + return le32_to_cpu(reg); +} + /** * rt2x00usb_register_multiread - Read 32bit register words * @rt2x00dev: Device pointer, see &struct rt2x00_dev. diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c index 973d418b8113..efe8a766b251 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c @@ -202,10 +202,19 @@ static void rt61pci_eepromregister_write(struct eeprom_93cx6 *eeprom) } #ifdef CONFIG_RT2X00_LIB_DEBUGFS +static u8 _rt61pci_bbp_read(struct rt2x00_dev *rt2x00dev, const unsigned int word) +{ + u8 value; + + rt61pci_bbp_read(rt2x00dev, word, &value); + + return value; +} + static const struct rt2x00debug rt61pci_rt2x00debug = { .owner = THIS_MODULE, .csr = { - .read = rt2x00mmio_register_read, + .read = _rt2x00mmio_register_read, .write = rt2x00mmio_register_write, .flags = RT2X00DEBUGFS_OFFSET, .word_base = CSR_REG_BASE, @@ -213,21 +222,21 @@ static const struct rt2x00debug rt61pci_rt2x00debug = { .word_count = CSR_REG_SIZE / sizeof(u32), }, .eeprom = { - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt61pci_bbp_read, + .read = _rt61pci_bbp_read, .write = rt61pci_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt61pci_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32), diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c index bb8d307a789f..5db174922120 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c +++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c @@ -147,10 +147,19 @@ static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev, } #ifdef CONFIG_RT2X00_LIB_DEBUGFS +static u8 _rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, const unsigned int word) +{ + u8 value; + + rt73usb_bbp_read(rt2x00dev, word, &value); + + return value; +} + static const struct rt2x00debug rt73usb_rt2x00debug = { .owner = THIS_MODULE, .csr = { - .read = rt2x00usb_register_read, + .read = _rt2x00usb_register_read, .write = rt2x00usb_register_write, .flags = RT2X00DEBUGFS_OFFSET, .word_base = CSR_REG_BASE, @@ -158,21 +167,21 @@ static const struct rt2x00debug rt73usb_rt2x00debug = { .word_count = CSR_REG_SIZE / sizeof(u32), }, .eeprom = { - .read = rt2x00_eeprom_read, + .read = _rt2x00_eeprom_read, .write = rt2x00_eeprom_write, .word_base = EEPROM_BASE, .word_size = sizeof(u16), .word_count = EEPROM_SIZE / sizeof(u16), }, .bbp = { - .read = rt73usb_bbp_read, + .read = _rt73usb_bbp_read, .write = rt73usb_bbp_write, .word_base = BBP_BASE, .word_size = sizeof(u8), .word_count = BBP_SIZE / sizeof(u8), }, .rf = { - .read = rt2x00_rf_read, + .read = _rt2x00_rf_read, .write = rt73usb_rf_write, .word_base = RF_BASE, .word_size = sizeof(u32),