From: Ivo van Doorn <ivdoorn@gmail.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, rt2400-devel@lists.sourceforge.net
Subject: [PATCH 18/24] rt2x00: Merge allocation/free register components
Date: Sun, 16 Sep 2007 14:19:18 +0200 [thread overview]
Message-ID: <200709161419.19810.IvDoorn@gmail.com> (raw)
In-Reply-To: <200709161403.11332.IvDoorn@gmail.com>
The csr, eeprom and rf register components are always
allocated and freed at the same locations.
It will be easier if the 3 allocation and the 3 free functions
are merged into a single allocation and single free function
which can be used everywhere.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
drivers/net/wireless/rt2x00/rt2x00pci.c | 105 +++++++++----------------------
drivers/net/wireless/rt2x00/rt2x00usb.c | 97 ++++++++--------------------
2 files changed, 59 insertions(+), 143 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
index f61cc7f..85629f1 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
@@ -286,56 +286,45 @@ EXPORT_SYMBOL_GPL(rt2x00pci_uninitialize);
/*
* PCI driver handlers.
*/
-static int rt2x00pci_alloc_csr(struct rt2x00_dev *rt2x00dev)
+static void rt2x00pci_free_reg(struct rt2x00_dev *rt2x00dev)
{
- struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev);
-
- rt2x00dev->csr_addr = ioremap(pci_resource_start(pci_dev, 0),
- pci_resource_len(pci_dev, 0));
- if (!rt2x00dev->csr_addr) {
- ERROR(rt2x00dev, "Ioremap failed.\n");
- return -ENOMEM;
- }
+ kfree(rt2x00dev->rf);
+ rt2x00dev->rf = NULL;
- return 0;
-}
+ kfree(rt2x00dev->eeprom);
+ rt2x00dev->eeprom = NULL;
-static void rt2x00pci_free_csr(struct rt2x00_dev *rt2x00dev)
-{
if (rt2x00dev->csr_addr) {
iounmap(rt2x00dev->csr_addr);
rt2x00dev->csr_addr = NULL;
}
}
-static int rt2x00pci_alloc_eeprom(struct rt2x00_dev *rt2x00dev)
+static int rt2x00pci_alloc_reg(struct rt2x00_dev *rt2x00dev)
{
- rt2x00dev->eeprom = kzalloc(rt2x00dev->ops->eeprom_size, GFP_KERNEL);
- if (!rt2x00dev->eeprom)
- return -ENOMEM;
+ struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev);
- return 0;
-}
+ rt2x00dev->csr_addr = ioremap(pci_resource_start(pci_dev, 0),
+ pci_resource_len(pci_dev, 0));
+ if (!rt2x00dev->csr_addr)
+ goto exit;
-static void rt2x00pci_free_eeprom(struct rt2x00_dev *rt2x00dev)
-{
- kfree(rt2x00dev->eeprom);
- rt2x00dev->eeprom = NULL;
-}
+ rt2x00dev->eeprom = kzalloc(rt2x00dev->ops->eeprom_size, GFP_KERNEL);
+ if (!rt2x00dev->eeprom)
+ goto exit;
-static int rt2x00pci_alloc_rf(struct rt2x00_dev *rt2x00dev)
-{
rt2x00dev->rf = kzalloc(rt2x00dev->ops->rf_size, GFP_KERNEL);
if (!rt2x00dev->rf)
- return -ENOMEM;
+ goto exit;
return 0;
-}
-static void rt2x00pci_free_rf(struct rt2x00_dev *rt2x00dev)
-{
- kfree(rt2x00dev->rf);
- rt2x00dev->rf = NULL;
+exit:
+ ERROR_PROBE("Failed to allocate registers.\n");
+
+ rt2x00pci_free_reg(rt2x00dev);
+
+ return -ENOMEM;
}
int rt2x00pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
@@ -383,32 +372,18 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
rt2x00dev->ops = ops;
rt2x00dev->hw = hw;
- retval = rt2x00pci_alloc_csr(rt2x00dev);
+ retval = rt2x00pci_alloc_reg(rt2x00dev);
if (retval)
goto exit_free_device;
- retval = rt2x00pci_alloc_eeprom(rt2x00dev);
- if (retval)
- goto exit_free_csr;
-
- retval = rt2x00pci_alloc_rf(rt2x00dev);
- if (retval)
- goto exit_free_eeprom;
-
retval = rt2x00lib_probe_dev(rt2x00dev);
if (retval)
- goto exit_free_rf;
+ goto exit_free_reg;
return 0;
-exit_free_rf:
- rt2x00pci_free_rf(rt2x00dev);
-
-exit_free_eeprom:
- rt2x00pci_free_eeprom(rt2x00dev);
-
-exit_free_csr:
- rt2x00pci_free_csr(rt2x00dev);
+exit_free_reg:
+ rt2x00pci_free_reg(rt2x00dev);
exit_free_device:
ieee80211_free_hw(hw);
@@ -435,9 +410,7 @@ void rt2x00pci_remove(struct pci_dev *pci_dev)
* Free all allocated data.
*/
rt2x00lib_remove_dev(rt2x00dev);
- rt2x00pci_free_rf(rt2x00dev);
- rt2x00pci_free_eeprom(rt2x00dev);
- rt2x00pci_free_csr(rt2x00dev);
+ rt2x00pci_free_reg(rt2x00dev);
ieee80211_free_hw(hw);
/*
@@ -460,9 +433,7 @@ int rt2x00pci_suspend(struct pci_dev *pci_dev, pm_message_t state)
if (retval)
return retval;
- rt2x00pci_free_rf(rt2x00dev);
- rt2x00pci_free_eeprom(rt2x00dev);
- rt2x00pci_free_csr(rt2x00dev);
+ rt2x00pci_free_reg(rt2x00dev);
pci_save_state(pci_dev);
pci_disable_device(pci_dev);
@@ -483,32 +454,18 @@ int rt2x00pci_resume(struct pci_dev *pci_dev)
return -EIO;
}
- retval = rt2x00pci_alloc_csr(rt2x00dev);
+ retval = rt2x00pci_alloc_reg(rt2x00dev);
if (retval)
return retval;
- retval = rt2x00pci_alloc_eeprom(rt2x00dev);
- if (retval)
- goto exit_free_csr;
-
- retval = rt2x00pci_alloc_rf(rt2x00dev);
- if (retval)
- goto exit_free_eeprom;
-
retval = rt2x00lib_resume(rt2x00dev);
if (retval)
- goto exit_free_rf;
+ goto exit_free_reg;
return 0;
-exit_free_rf:
- rt2x00pci_free_rf(rt2x00dev);
-
-exit_free_eeprom:
- rt2x00pci_free_eeprom(rt2x00dev);
-
-exit_free_csr:
- rt2x00pci_free_csr(rt2x00dev);
+exit_free_reg:
+ rt2x00pci_free_reg(rt2x00dev);
return retval;
}
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index ede3766..a0f05ca 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -432,49 +432,40 @@ EXPORT_SYMBOL_GPL(rt2x00usb_uninitialize);
/*
* USB driver handlers.
*/
-static int rt2x00usb_alloc_csr(struct rt2x00_dev *rt2x00dev)
+static void rt2x00usb_free_reg(struct rt2x00_dev *rt2x00dev)
{
- rt2x00dev->csr_cache = kzalloc(CSR_CACHE_SIZE, GFP_KERNEL);
- if (!rt2x00dev->csr_cache)
- return -ENOMEM;
+ kfree(rt2x00dev->rf);
+ rt2x00dev->rf = NULL;
- return 0;
-}
+ kfree(rt2x00dev->eeprom);
+ rt2x00dev->eeprom = NULL;
-static void rt2x00usb_free_csr(struct rt2x00_dev *rt2x00dev)
-{
kfree(rt2x00dev->csr_cache);
rt2x00dev->csr_cache = NULL;
}
-static int rt2x00usb_alloc_eeprom(struct rt2x00_dev *rt2x00dev)
+static int rt2x00usb_alloc_reg(struct rt2x00_dev *rt2x00dev)
{
+ rt2x00dev->csr_cache = kzalloc(CSR_CACHE_SIZE, GFP_KERNEL);
+ if (!rt2x00dev->csr_cache)
+ goto exit;
+
rt2x00dev->eeprom = kzalloc(rt2x00dev->ops->eeprom_size, GFP_KERNEL);
if (!rt2x00dev->eeprom)
- return -ENOMEM;
-
- return 0;
-}
-
-static void rt2x00usb_free_eeprom(struct rt2x00_dev *rt2x00dev)
-{
- kfree(rt2x00dev->eeprom);
- rt2x00dev->eeprom = NULL;
-}
+ goto exit;
-static int rt2x00usb_alloc_rf(struct rt2x00_dev *rt2x00dev)
-{
rt2x00dev->rf = kzalloc(rt2x00dev->ops->rf_size, GFP_KERNEL);
if (!rt2x00dev->rf)
- return -ENOMEM;
+ goto exit;
return 0;
-}
-static void rt2x00usb_free_rf(struct rt2x00_dev *rt2x00dev)
-{
- kfree(rt2x00dev->rf);
- rt2x00dev->rf = NULL;
+exit:
+ ERROR_PROBE("Failed to allocate registers.\n");
+
+ rt2x00usb_free_reg(rt2x00dev);
+
+ return -ENOMEM;
}
int rt2x00usb_probe(struct usb_interface *usb_intf,
@@ -502,32 +493,18 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
rt2x00dev->ops = ops;
rt2x00dev->hw = hw;
- retval = rt2x00usb_alloc_csr(rt2x00dev);
+ retval = rt2x00usb_alloc_reg(rt2x00dev);
if (retval)
goto exit_free_device;
- retval = rt2x00usb_alloc_eeprom(rt2x00dev);
- if (retval)
- goto exit_free_cr;
-
- retval = rt2x00usb_alloc_rf(rt2x00dev);
- if (retval)
- goto exit_free_eeprom;
-
retval = rt2x00lib_probe_dev(rt2x00dev);
if (retval)
- goto exit_free_rf;
+ goto exit_free_reg;
return 0;
-exit_free_rf:
- rt2x00usb_free_rf(rt2x00dev);
-
-exit_free_eeprom:
- rt2x00usb_free_eeprom(rt2x00dev);
-
-exit_free_cr:
- rt2x00usb_free_csr(rt2x00dev);
+exit_free_reg:
+ rt2x00usb_free_reg(rt2x00dev);
exit_free_device:
ieee80211_free_hw(hw);
@@ -550,9 +527,7 @@ void rt2x00usb_disconnect(struct usb_interface *usb_intf)
* Free all allocated data.
*/
rt2x00lib_remove_dev(rt2x00dev);
- rt2x00usb_free_rf(rt2x00dev);
- rt2x00usb_free_eeprom(rt2x00dev);
- rt2x00usb_free_csr(rt2x00dev);
+ rt2x00usb_free_reg(rt2x00dev);
ieee80211_free_hw(hw);
/*
@@ -574,9 +549,7 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state)
if (retval)
return retval;
- rt2x00usb_free_rf(rt2x00dev);
- rt2x00usb_free_eeprom(rt2x00dev);
- rt2x00usb_free_csr(rt2x00dev);
+ rt2x00usb_free_reg(rt2x00dev);
/*
* Decrease usbdev refcount.
@@ -595,32 +568,18 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
usb_get_dev(interface_to_usbdev(usb_intf));
- retval = rt2x00usb_alloc_csr(rt2x00dev);
+ retval = rt2x00usb_alloc_reg(rt2x00dev);
if (retval)
return retval;
- retval = rt2x00usb_alloc_eeprom(rt2x00dev);
- if (retval)
- goto exit_free_csr;
-
- retval = rt2x00usb_alloc_rf(rt2x00dev);
- if (retval)
- goto exit_free_eeprom;
-
retval = rt2x00lib_resume(rt2x00dev);
if (retval)
- goto exit_free_rf;
+ goto exit_free_reg;
return 0;
-exit_free_rf:
- rt2x00usb_free_rf(rt2x00dev);
-
-exit_free_eeprom:
- rt2x00usb_free_eeprom(rt2x00dev);
-
-exit_free_csr:
- rt2x00usb_free_csr(rt2x00dev);
+exit_free_reg:
+ rt2x00usb_free_reg(rt2x00dev);
return retval;
}
--
1.5.3
next prev parent reply other threads:[~2007-09-16 12:08 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200709161403.11332.IvDoorn@gmail.com>
2007-09-16 12:17 ` [PATCH 1/24] rt2x00: Remove firmware not-NULL check Ivo van Doorn
2007-09-16 12:17 ` [PATCH 2/24] rt2x00: Don't check for IEEE80211_TXCTL_REQ_TX_STATUS Ivo van Doorn
2007-09-16 12:18 ` [PATCH 3/24] rt2x00: Cleanup rxdone Ivo van Doorn
2007-09-16 12:18 ` [PATCH 4/24] rt2x00: Don't allow configuration calls when uninitialized Ivo van Doorn
2007-09-16 12:18 ` [PATCH 5/24] rt2x00: Fix rt61pci and rt73usb beacon handling Ivo van Doorn
2007-09-16 12:18 ` [PATCH 6/24] rt2x00: Recalculate link quality Ivo van Doorn
2007-09-16 12:18 ` [PATCH 7/24] rt2x00: Cleanup entry->flags Ivo van Doorn
2007-09-16 12:18 ` [PATCH 8/24] rt2x00: Reduce LNA flags Ivo van Doorn
2007-09-16 12:18 ` [PATCH 9/24] rt2x00: Rework RT61 and RT73 Antenna handling Ivo van Doorn
2007-09-16 12:18 ` [PATCH 10/24] rt2x00: Rename DEVICE_SUPPORT_ATIM to REQUIRE_BEACON_RING Ivo van Doorn
2007-09-16 12:18 ` [PATCH 11/24] rt2x00: Remove rt2x00mac_reset() Ivo van Doorn
2007-09-16 12:18 ` [PATCH 12/24] rt2x00: Fix system freeze on device removal Ivo van Doorn
2007-09-16 12:18 ` [PATCH 13/24] rt2x00: Reduce magic value writing to device Ivo van Doorn
2007-09-16 12:19 ` [PATCH 14/24] rt2x00: New USB ID's for rt73usb and rt2500usb Ivo van Doorn
2007-09-16 12:19 ` [PATCH 15/24] rt2x00: Beacon ring entries should have QID_MGMT Ivo van Doorn
2007-09-16 12:19 ` [PATCH 16/24] rt2x00: Fix DEV_RATEBIT_ definitions Ivo van Doorn
2007-09-16 12:19 ` [PATCH 17/24] rt2x00: Fix rfkill handling Ivo van Doorn
2007-09-16 12:19 ` Ivo van Doorn [this message]
2007-09-16 12:19 ` [PATCH 19/24] rt2x00: macro's shouldn't use hidden arguments Ivo van Doorn
2007-09-16 12:19 ` [PATCH 20/24] rt2x00: Fix channel initialization Ivo van Doorn
2007-09-16 12:19 ` [PATCH 21/24] rt2x00: Add better CONFIG_PM checks Ivo van Doorn
2007-09-16 12:19 ` [PATCH 22/24] rt2x00: Add start/stop handlers Ivo van Doorn
2007-09-16 12:19 ` [PATCH 23/24] rt2x00: Add additional bit to MAX_FRAME_UNIT Ivo van Doorn
2007-09-16 12:19 ` [PATCH 24/24] rt2x00: Release rt2x00 2.0.8 Ivo van Doorn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200709161419.19810.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=rt2400-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.