Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 278224
b: refs/heads/master
c: 040a727
h: refs/heads/master
v: v3
  • Loading branch information
George authored and John W. Linville committed Nov 21, 2011
1 parent 7fe4118 commit 6344cc6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4745fc095da0d276b9c149e87b853b78d42d4f32
refs/heads/master: 040a72785cf19fd8032f24d584ee305158c87ac7
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

#define FW_8192C_SIZE 0x3000
#define FW_8192C_START_ADDRESS 0x1000
#define FW_8192C_END_ADDRESS 0x3FFF
#define FW_8192C_END_ADDRESS 0x1FFF
#define FW_8192C_PAGE_SIZE 4096
#define FW_8192C_POLLING_DELAY 5
#define FW_8192C_POLLING_TIMEOUT_COUNT 100
Expand Down
18 changes: 15 additions & 3 deletions trunk/drivers/net/wireless/rtlwifi/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@
#include "usb.h"
#include "base.h"
#include "ps.h"
#include "rtl8192c/fw_common.h"

#define REALTEK_USB_VENQT_READ 0xC0
#define REALTEK_USB_VENQT_WRITE 0x40
#define REALTEK_USB_VENQT_CMD_REQ 0x05
#define REALTEK_USB_VENQT_CMD_IDX 0x00

#define REALTEK_USB_VENQT_MAX_BUF_SIZE 254
#define MAX_USBCTRL_VENDORREQ_TIMES 10

static void usbctrl_async_callback(struct urb *urb)
{
Expand Down Expand Up @@ -99,13 +101,23 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
unsigned int pipe;
int status;
u8 reqtype;
int vendorreq_times = 0;

pipe = usb_rcvctrlpipe(udev, 0); /* read_in */
reqtype = REALTEK_USB_VENQT_READ;

status = usb_control_msg(udev, pipe, request, reqtype, value, index,
pdata, len, 0); /* max. timeout */

while (++vendorreq_times <= MAX_USBCTRL_VENDORREQ_TIMES) {
status = usb_control_msg(udev, pipe, request, reqtype, value,
index, pdata, len, 0); /*max. timeout*/
if (status < 0) {
/* firmware download is checksumed, don't retry */
if ((value >= FW_8192C_START_ADDRESS &&
value <= FW_8192C_END_ADDRESS))
break;
} else {
break;
}
}
if (status < 0)
pr_err("reg 0x%x, usbctrl_vendorreq TimeOut! status:0x%x value=0x%x\n",
value, status, *(u32 *)pdata);
Expand Down

0 comments on commit 6344cc6

Please sign in to comment.