aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/ftdi-elan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/misc/ftdi-elan.c')
-rw-r--r--drivers/usb/misc/ftdi-elan.c56
1 files changed, 14 insertions, 42 deletions
diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c
index 0eb26a26115b..cb0ba3107d7f 100644
--- a/drivers/usb/misc/ftdi-elan.c
+++ b/drivers/usb/misc/ftdi-elan.c
@@ -303,7 +303,7 @@ void ftdi_elan_gone_away(struct platform_device *pdev)
303 303
304 304
305EXPORT_SYMBOL_GPL(ftdi_elan_gone_away); 305EXPORT_SYMBOL_GPL(ftdi_elan_gone_away);
306void ftdi_release_platform_dev(struct device *dev) 306static void ftdi_release_platform_dev(struct device *dev)
307{ 307{
308 dev->parent = NULL; 308 dev->parent = NULL;
309} 309}
@@ -513,8 +513,6 @@ static void ftdi_elan_respond_work(void *data)
513 ftdi->disconnected += 1; 513 ftdi->disconnected += 1;
514 } else if (retval == -ENODEV) { 514 } else if (retval == -ENODEV) {
515 ftdi->disconnected += 1; 515 ftdi->disconnected += 1;
516 } else if (retval == -ENODEV) {
517 ftdi->disconnected += 1;
518 } else if (retval == -EILSEQ) { 516 } else if (retval == -EILSEQ) {
519 ftdi->disconnected += 1; 517 ftdi->disconnected += 1;
520 } else { 518 } else {
@@ -1186,11 +1184,8 @@ static ssize_t ftdi_elan_write(struct file *file,
1186 int retval = 0; 1184 int retval = 0;
1187 struct urb *urb; 1185 struct urb *urb;
1188 char *buf; 1186 char *buf;
1189 char data[30 *3 + 4]; 1187 struct usb_ftdi *ftdi = file->private_data;
1190 char *d = data; 1188
1191 const char __user *s = user_buffer;
1192 int m = (sizeof(data) - 1) / 3;
1193 struct usb_ftdi *ftdi = (struct usb_ftdi *)file->private_data;
1194 if (ftdi->disconnected > 0) { 1189 if (ftdi->disconnected > 0) {
1195 return -ENODEV; 1190 return -ENODEV;
1196 } 1191 }
@@ -1220,27 +1215,18 @@ static ssize_t ftdi_elan_write(struct file *file,
1220 if (retval) { 1215 if (retval) {
1221 dev_err(&ftdi->udev->dev, "failed submitting write urb, error %" 1216 dev_err(&ftdi->udev->dev, "failed submitting write urb, error %"
1222 "d\n", retval); 1217 "d\n", retval);
1223 goto error_4; 1218 goto error_3;
1224 } 1219 }
1225 usb_free_urb(urb); 1220 usb_free_urb(urb);
1226 exit:; 1221
1227 if (count > m) { 1222exit:
1228 int I = m - 1;
1229 while (I-- > 0) {
1230 d += sprintf(d, " %02X", 0x000000FF & *s++);
1231 }
1232 d += sprintf(d, " ..");
1233 } else {
1234 int I = count;
1235 while (I-- > 0) {
1236 d += sprintf(d, " %02X", 0x000000FF & *s++);
1237 }
1238 }
1239 return count; 1223 return count;
1240 error_4: error_3:usb_buffer_free(ftdi->udev, count, buf, 1224error_3:
1241 urb->transfer_dma); 1225 usb_buffer_free(ftdi->udev, count, buf, urb->transfer_dma);
1242 error_2:usb_free_urb(urb); 1226error_2:
1243 error_1:return retval; 1227 usb_free_urb(urb);
1228error_1:
1229 return retval;
1244} 1230}
1245 1231
1246static struct file_operations ftdi_elan_fops = { 1232static struct file_operations ftdi_elan_fops = {
@@ -1440,14 +1426,6 @@ static int ftdi_elan_read_reg(struct usb_ftdi *ftdi, u32 *data)
1440 } 1426 }
1441} 1427}
1442 1428
1443int usb_ftdi_elan_read_reg(struct platform_device *pdev, u32 *data)
1444{
1445 struct usb_ftdi *ftdi = platform_device_to_usb_ftdi(pdev);
1446 return ftdi_elan_read_reg(ftdi, data);
1447}
1448
1449
1450EXPORT_SYMBOL_GPL(usb_ftdi_elan_read_reg);
1451static int ftdi_elan_read_config(struct usb_ftdi *ftdi, int config_offset, 1429static int ftdi_elan_read_config(struct usb_ftdi *ftdi, int config_offset,
1452 u8 width, u32 *data) 1430 u8 width, u32 *data)
1453{ 1431{
@@ -2647,10 +2625,7 @@ static int ftdi_elan_probe(struct usb_interface *interface,
2647 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { 2625 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
2648 endpoint = &iface_desc->endpoint[i].desc; 2626 endpoint = &iface_desc->endpoint[i].desc;
2649 if (!ftdi->bulk_in_endpointAddr && 2627 if (!ftdi->bulk_in_endpointAddr &&
2650 ((endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK) 2628 usb_endpoint_is_bulk_in(endpoint)) {
2651 == USB_DIR_IN) && ((endpoint->bmAttributes &
2652 USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK))
2653 {
2654 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize); 2629 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
2655 ftdi->bulk_in_size = buffer_size; 2630 ftdi->bulk_in_size = buffer_size;
2656 ftdi->bulk_in_endpointAddr = endpoint->bEndpointAddress; 2631 ftdi->bulk_in_endpointAddr = endpoint->bEndpointAddress;
@@ -2663,10 +2638,7 @@ static int ftdi_elan_probe(struct usb_interface *interface,
2663 } 2638 }
2664 } 2639 }
2665 if (!ftdi->bulk_out_endpointAddr && 2640 if (!ftdi->bulk_out_endpointAddr &&
2666 ((endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK) 2641 usb_endpoint_is_bulk_out(endpoint)) {
2667 == USB_DIR_OUT) && ((endpoint->bmAttributes &
2668 USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK))
2669 {
2670 ftdi->bulk_out_endpointAddr = 2642 ftdi->bulk_out_endpointAddr =
2671 endpoint->bEndpointAddress; 2643 endpoint->bEndpointAddress;
2672 } 2644 }