diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 8444313eabe2..6ec2466b52b6 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
@@ -233,6 +233,7 @@ static int rt2800usb_autorun_detect(struct rt2x00_dev *rt2x00dev) | |||
233 | { | 233 | { |
234 | __le32 *reg; | 234 | __le32 *reg; |
235 | u32 fw_mode; | 235 | u32 fw_mode; |
236 | int ret; | ||
236 | 237 | ||
237 | reg = kmalloc(sizeof(*reg), GFP_KERNEL); | 238 | reg = kmalloc(sizeof(*reg), GFP_KERNEL); |
238 | if (reg == NULL) | 239 | if (reg == NULL) |
@@ -242,11 +243,14 @@ static int rt2800usb_autorun_detect(struct rt2x00_dev *rt2x00dev) | |||
242 | * magic value USB_MODE_AUTORUN (0x11) to the device, thus the | 243 | * magic value USB_MODE_AUTORUN (0x11) to the device, thus the |
243 | * returned value would be invalid. | 244 | * returned value would be invalid. |
244 | */ | 245 | */ |
245 | rt2x00usb_vendor_request(rt2x00dev, USB_DEVICE_MODE, | 246 | ret = rt2x00usb_vendor_request(rt2x00dev, USB_DEVICE_MODE, |
246 | USB_VENDOR_REQUEST_IN, 0, USB_MODE_AUTORUN, | 247 | USB_VENDOR_REQUEST_IN, 0, |
247 | reg, sizeof(*reg), REGISTER_TIMEOUT_FIRMWARE); | 248 | USB_MODE_AUTORUN, reg, sizeof(*reg), |
249 | REGISTER_TIMEOUT_FIRMWARE); | ||
248 | fw_mode = le32_to_cpu(*reg); | 250 | fw_mode = le32_to_cpu(*reg); |
249 | kfree(reg); | 251 | kfree(reg); |
252 | if (ret < 0) | ||
253 | return ret; | ||
250 | 254 | ||
251 | if ((fw_mode & 0x00000003) == 2) | 255 | if ((fw_mode & 0x00000003) == 2) |
252 | return 1; | 256 | return 1; |
@@ -289,6 +293,7 @@ static int rt2800usb_write_firmware(struct rt2x00_dev *rt2x00dev, | |||
289 | if (retval) { | 293 | if (retval) { |
290 | rt2x00_info(rt2x00dev, | 294 | rt2x00_info(rt2x00dev, |
291 | "Firmware loading not required - NIC in AutoRun mode\n"); | 295 | "Firmware loading not required - NIC in AutoRun mode\n"); |
296 | __clear_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); | ||
292 | } else { | 297 | } else { |
293 | rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, | 298 | rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, |
294 | data + offset, length); | 299 | data + offset, length); |
@@ -374,7 +379,6 @@ static int rt2800usb_enable_radio(struct rt2x00_dev *rt2x00dev) | |||
374 | static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev) | 379 | static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev) |
375 | { | 380 | { |
376 | rt2800_disable_radio(rt2x00dev); | 381 | rt2800_disable_radio(rt2x00dev); |
377 | rt2x00usb_disable_radio(rt2x00dev); | ||
378 | } | 382 | } |
379 | 383 | ||
380 | static int rt2800usb_set_state(struct rt2x00_dev *rt2x00dev, | 384 | static int rt2800usb_set_state(struct rt2x00_dev *rt2x00dev, |
@@ -1040,6 +1044,7 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
1040 | { USB_DEVICE(0x07d1, 0x3c17) }, | 1044 | { USB_DEVICE(0x07d1, 0x3c17) }, |
1041 | { USB_DEVICE(0x2001, 0x3317) }, | 1045 | { USB_DEVICE(0x2001, 0x3317) }, |
1042 | { USB_DEVICE(0x2001, 0x3c1b) }, | 1046 | { USB_DEVICE(0x2001, 0x3c1b) }, |
1047 | { USB_DEVICE(0x2001, 0x3c25) }, | ||
1043 | /* Draytek */ | 1048 | /* Draytek */ |
1044 | { USB_DEVICE(0x07fa, 0x7712) }, | 1049 | { USB_DEVICE(0x07fa, 0x7712) }, |
1045 | /* DVICO */ | 1050 | /* DVICO */ |