diff options
author | Stefan Seyfried <seife@sphairon.com> | 2009-12-08 15:21:35 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-12-22 13:56:05 -0500 |
commit | 11466f1342a3400dd5e03da3d8c45aa4149c62d4 (patch) | |
tree | c15b9b9c3ae4329493a02b350d22498f686fd258 /drivers/net/wireless/zd1211rw | |
parent | 5b6e2f12edd6c46e87a2775321f1912d19be4b35 (diff) | |
download | kernel_samsung_tuna-11466f1342a3400dd5e03da3d8c45aa4149c62d4.zip kernel_samsung_tuna-11466f1342a3400dd5e03da3d8c45aa4149c62d4.tar.gz kernel_samsung_tuna-11466f1342a3400dd5e03da3d8c45aa4149c62d4.tar.bz2 |
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>
Diffstat (limited to 'drivers/net/wireless/zd1211rw')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index ac19ecd..4daf1c9 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c @@ -1078,11 +1078,15 @@ static int eject_installer(struct usb_interface *intf) int r; /* 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, "zd1211rw: Could not find bulk out endpoint\n"); return -ENODEV; |