diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-04-19 12:17:34 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-04-19 12:17:34 -0400 |
commit | cf816ecb533ab96b883dfdc0db174598b5b5c4d2 (patch) | |
tree | 1b7705db288ae2917105e624b01fdf81e0882bf1 /drivers/net/wireless/zd1211rw/zd_usb.c | |
parent | adf6d34e460387ee3e8f1e1875d52bff51212c7d (diff) | |
parent | 15f7d677ccff6f0f5de8a1ee43a792567e9f9de9 (diff) |
Merge branch 'merge-fixes' into devel
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_usb.c')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index 7942b15acfe7..e34675c2f8fc 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
@@ -97,6 +97,7 @@ MODULE_DEVICE_TABLE(usb, usb_ids); | |||
97 | #define FW_ZD1211B_PREFIX "zd1211/zd1211b_" | 97 | #define FW_ZD1211B_PREFIX "zd1211/zd1211b_" |
98 | 98 | ||
99 | /* USB device initialization */ | 99 | /* USB device initialization */ |
100 | static void int_urb_complete(struct urb *urb); | ||
100 | 101 | ||
101 | static int request_fw_file( | 102 | static int request_fw_file( |
102 | const struct firmware **fw, const char *name, struct device *device) | 103 | const struct firmware **fw, const char *name, struct device *device) |
@@ -336,11 +337,18 @@ static inline void handle_regs_int(struct urb *urb) | |||
336 | struct zd_usb *usb = urb->context; | 337 | struct zd_usb *usb = urb->context; |
337 | struct zd_usb_interrupt *intr = &usb->intr; | 338 | struct zd_usb_interrupt *intr = &usb->intr; |
338 | int len; | 339 | int len; |
340 | u16 int_num; | ||
339 | 341 | ||
340 | ZD_ASSERT(in_interrupt()); | 342 | ZD_ASSERT(in_interrupt()); |
341 | spin_lock(&intr->lock); | 343 | spin_lock(&intr->lock); |
342 | 344 | ||
343 | if (intr->read_regs_enabled) { | 345 | int_num = le16_to_cpu(*(u16 *)(urb->transfer_buffer+2)); |
346 | if (int_num == CR_INTERRUPT) { | ||
347 | struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context)); | ||
348 | memcpy(&mac->intr_buffer, urb->transfer_buffer, | ||
349 | USB_MAX_EP_INT_BUFFER); | ||
350 | schedule_work(&mac->process_intr); | ||
351 | } else if (intr->read_regs_enabled) { | ||
344 | intr->read_regs.length = len = urb->actual_length; | 352 | intr->read_regs.length = len = urb->actual_length; |
345 | 353 | ||
346 | if (len > sizeof(intr->read_regs.buffer)) | 354 | if (len > sizeof(intr->read_regs.buffer)) |
@@ -351,7 +359,6 @@ static inline void handle_regs_int(struct urb *urb) | |||
351 | goto out; | 359 | goto out; |
352 | } | 360 | } |
353 | 361 | ||
354 | dev_dbg_f(urb_dev(urb), "regs interrupt ignored\n"); | ||
355 | out: | 362 | out: |
356 | spin_unlock(&intr->lock); | 363 | spin_unlock(&intr->lock); |
357 | } | 364 | } |