فهرست منبع

zd1211rw: improve ejecting of fake CDROM

The zd1211rw always assumed that the storage device is at endpoint 1,
but there are devices (Spairon Homelink 1202) that are at endpoint 0.
Try both, starting with 1 to make sure to not break existing setups.

Signed-off-by: Stefan Seyfried <seife@sphairon.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Stefan Seyfried 16 سال پیش
والد
کامیت
11466f1342
1فایلهای تغییر یافته به همراه9 افزوده شده و 5 حذف شده
  1. 9 5
      drivers/net/wireless/zd1211rw/zd_usb.c

+ 9 - 5
drivers/net/wireless/zd1211rw/zd_usb.c

@@ -1078,11 +1078,15 @@ static int eject_installer(struct usb_interface *intf)
 	int r;
 	int r;
 
 
 	/* Find bulk out endpoint */
 	/* Find bulk out endpoint */
-	endpoint = &iface_desc->endpoint[1].desc;
-	if (usb_endpoint_dir_out(endpoint) &&
-	    usb_endpoint_xfer_bulk(endpoint)) {
-		bulk_out_ep = endpoint->bEndpointAddress;
-	} else {
+	for (r = 1; r >= 0; r--) {
+		endpoint = &iface_desc->endpoint[r].desc;
+		if (usb_endpoint_dir_out(endpoint) &&
+		    usb_endpoint_xfer_bulk(endpoint)) {
+			bulk_out_ep = endpoint->bEndpointAddress;
+			break;
+		}
+	}
+	if (r == -1) {
 		dev_err(&udev->dev,
 		dev_err(&udev->dev,
 			"zd1211rw: Could not find bulk out endpoint\n");
 			"zd1211rw: Could not find bulk out endpoint\n");
 		return -ENODEV;
 		return -ENODEV;