rt2x00: Move rt2x00usb_vendor_request out of header
Subsystems (3)
PATCH 17/26 rt2x00: Move rt2x00usb_vendor_request out of header
Remove the rt2x00usb_vendor_request from the rt2x00usb.h header, and place it into the rt2x00_vendor_request. This means that the rt2x00_vendor_request function needs a timeout value especially for commands that require a lot of time (i.e. Firmware writing).
Signed-off-by Ivo van Doorn <[email protected]>
---
drivers/net/wireless/d80211/rt2x00/rt2500usb.c +32 -17
@@ -64,18 +64,31 @@* the access attempt is considered to have failed, * and we will print an error. */ -static void rt2x00_vendor_request (const struct rt2x00_dev *rt2x00dev, +static int rt2x00_vendor_request (const struct rt2x00_dev *rt2x00dev,const u8 request,const u8 type,const u16 offset, -u32 value,void *buffer,const u16 buffer_length) +u32 value,void *buffer,const u16 buffer_length,const u16 timeout) { -int status =rt2x00usb_vendor_request ( - rt2x00dev, request, type, offset, - value, buffer, buffer_length,REGISTER_TIMEOUT ); - -if (status <0 ) -ERROR ("vendor request error. Request 0x%02x failed " -"for offset 0x%04x with error %d.\n" , - request, offset, status); +struct usb_device *usb_dev =interface_to_usbdev ( +rt2x00dev_usb (rt2x00dev)); +int status; +unsigned int i; + +for (i =0 ; i <REGISTER_BUSY_COUNT ; i++) { + status =usb_control_msg ( + usb_dev, + (type ==USB_VENDOR_REQUEST_IN ) ? +usb_rcvctrlpipe (usb_dev,0 ) : +usb_sndctrlpipe (usb_dev,0 ), + request, type, value, offset, buffer, buffer_length, + timeout); +if (status >=0 ) +return 0 ; + } + +ERROR ("vendor request error. Request 0x%02x failed " +"for offset 0x%04x with error %d.\n" , request, offset, status); + +return status; } static inline void rt2x00_register_read(
@@ -85,7 +98,7 @@__le16 reg;rt2x00_vendor_request ( rt2x00dev,USB_MULTI_READ ,USB_VENDOR_REQUEST_IN , - offset,0x00 , ®,2 ); + offset,0x00 , ®,2 ,REGISTER_TIMEOUT ); *value =le16_to_cpu (reg); }
@@ -95,7 +108,7 @@ {rt2x00_vendor_request ( rt2x00dev,USB_MULTI_READ ,USB_VENDOR_REQUEST_IN , - offset,0x00 , value, length); + offset,0x00 , value, length,REGISTER_TIMEOUT ); } static inline void rt2x00_register_write(
@@ -105,7 +118,7 @@__le16 reg =cpu_to_le16 (value);rt2x00_vendor_request ( rt2x00dev,USB_MULTI_WRITE ,USB_VENDOR_REQUEST_OUT , - offset,0x00 , ®,2 ); + offset,0x00 , ®,2 ,REGISTER_TIMEOUT ); } static inline void rt2x00_register_multiwrite(
@@ -114,7 +127,7 @@ {rt2x00_vendor_request ( rt2x00dev,USB_MULTI_WRITE ,USB_VENDOR_REQUEST_OUT , - offset,0x00 , value, length); + offset,0x00 , value, length,REGISTER_TIMEOUT ); }static u16 rt2x00_bbp_check (const struct rt2x00_dev *rt2x00dev)
@@ -1071,9 +1084,11 @@return -EBUSY ;rt2x00_vendor_request (rt2x00dev,USB_DEVICE_MODE , -USB_VENDOR_REQUEST_OUT ,0x00 ,USB_MODE_TEST ,NULL ,0 ); +USB_VENDOR_REQUEST_OUT ,0x0000 ,USB_MODE_TEST ,NULL ,0 , +REGISTER_TIMEOUT );rt2x00_vendor_request (rt2x00dev,USB_SINGLE_WRITE , -USB_VENDOR_REQUEST_OUT ,0x0308 ,0xf0 ,NULL ,0 ); +USB_VENDOR_REQUEST_OUT ,0x0308 ,0xf0 ,NULL ,0 , +REGISTER_TIMEOUT );rt2x00_register_write (rt2x00dev,MAC_CSR13 ,0x1111 );rt2x00_register_write (rt2x00dev,MAC_CSR14 ,0x1e11 );
@@ -1392,7 +1407,7 @@rt2x00_register_write (rt2x00dev,TXRX_CSR2 , reg);rt2x00_vendor_request (rt2x00dev,USB_RX_CONTROL , -USB_VENDOR_REQUEST_OUT ,0x00 ,0x00 ,NULL ,0 ); +USB_VENDOR_REQUEST_OUT ,0x00 ,0x00 ,NULL ,0 ,REGISTER_TIMEOUT ); ring = &rt2x00dev->ring[RING_RX ];for (i =0 ; i < ring->stats.limit; i++)
drivers/net/wireless/d80211/rt2x00/rt2x00usb.h +0 -28
@@ -73,32 +73,4 @@#define USB_MODE_FIRMWARE 0x08/* RT73USB */ #define USB_MODE_WAKEUP 0x09/* RT73USB */ -/* -* Vendor request command for sending -* vendor specific instructions to the device. -*/ -static inline int rt2x00usb_vendor_request (const struct rt2x00_dev *rt2x00dev, -const u8 request,const u8 type,const u16 offset, -u32 value,void *buffer,const u16 buffer_length,const u16 timeout) -{ -struct usb_device *usb_dev =interface_to_usbdev ( -rt2x00dev_usb (rt2x00dev)); -int status; -unsigned int i; - -for (i =0 ; i <REGISTER_BUSY_COUNT ; i++) { - status =usb_control_msg ( - usb_dev, - (type ==USB_VENDOR_REQUEST_IN ) ? -usb_rcvctrlpipe (usb_dev,0 ) : -usb_sndctrlpipe (usb_dev,0 ), - request, type, value, offset, buffer, buffer_length, - timeout); -if (status >=0 ) -return 0 ; - } - -return status; -} -#endif /* RT2X00USB_H */
drivers/net/wireless/d80211/rt2x00/rt73usb.c +37 -25
137 lines not on this page · raw message