Skip to contentSkip to conversation

rt2x00: Move rt2x00usb_vendor_request out of header

PATCH In review Ivo van Doorn 1 participant 1 message Dec 3, 2006

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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
diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500usb.c wireless-dev-vendor/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
@@ -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, &reg, 2);
+		offset, 0x00, &reg, 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, &reg, 2);
+		offset, 0x00, &reg, 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
diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2x00usb.h wireless-dev-vendor/drivers/net/wireless/d80211/rt2x00/rt2x00usb.h
@@ -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