diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2008-11-10 13:41:40 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-11-25 16:32:53 -0500 |
commit | c9c3b1a5deac4297503145840fffcd122b253db5 (patch) | |
tree | 7d5e0cf6510c1687ef6b18d32ba9009a5692fbfd /drivers/net/wireless/rt2x00/rt2x00pci.c | |
parent | 9764f3f9c3700620f9f8a1f9af57f58758e835da (diff) |
rt2x00: Cleanup indirect register access
All code which accessed indirect registers was similar
in respect to the for-loop, the given timeout, etc.
Move it into a seperate function, which for PCI drivers
can be moved into rt2x00pci.
This allows us to cleanup the cleanup the code further
by removing the goto statementsand making the codepath
look a bit nicer.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index e33bd0f150c5..d52b22b82d1f 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c | |||
@@ -32,6 +32,31 @@ | |||
32 | #include "rt2x00pci.h" | 32 | #include "rt2x00pci.h" |
33 | 33 | ||
34 | /* | 34 | /* |
35 | * Register access. | ||
36 | */ | ||
37 | int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev, | ||
38 | const unsigned int offset, | ||
39 | const struct rt2x00_field32 field, | ||
40 | u32 *reg) | ||
41 | { | ||
42 | unsigned int i; | ||
43 | |||
44 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | ||
45 | rt2x00pci_register_read(rt2x00dev, offset, reg); | ||
46 | if (!rt2x00_get_field32(*reg, field)) | ||
47 | return 1; | ||
48 | udelay(REGISTER_BUSY_DELAY); | ||
49 | } | ||
50 | |||
51 | ERROR(rt2x00dev, "Indirect register access failed: " | ||
52 | "offset=0x%.08x, value=0x%.08x\n", offset, *reg); | ||
53 | *reg = ~0; | ||
54 | |||
55 | return 0; | ||
56 | } | ||
57 | EXPORT_SYMBOL_GPL(rt2x00pci_regbusy_read); | ||
58 | |||
59 | /* | ||
35 | * TX data handlers. | 60 | * TX data handlers. |
36 | */ | 61 | */ |
37 | int rt2x00pci_write_tx_data(struct queue_entry *entry) | 62 | int rt2x00pci_write_tx_data(struct queue_entry *entry) |