diff options
Diffstat (limited to 'drivers/usb/misc/ftdi-elan.c')
-rw-r--r-- | drivers/usb/misc/ftdi-elan.c | 56 |
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 | ||
305 | EXPORT_SYMBOL_GPL(ftdi_elan_gone_away); | 305 | EXPORT_SYMBOL_GPL(ftdi_elan_gone_away); |
306 | void ftdi_release_platform_dev(struct device *dev) | 306 | static 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) { | 1222 | exit: |
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, | 1224 | error_3: |
1241 | urb->transfer_dma); | 1225 | usb_buffer_free(ftdi->udev, count, buf, urb->transfer_dma); |
1242 | error_2:usb_free_urb(urb); | 1226 | error_2: |
1243 | error_1:return retval; | 1227 | usb_free_urb(urb); |
1228 | error_1: | ||
1229 | return retval; | ||
1244 | } | 1230 | } |
1245 | 1231 | ||
1246 | static struct file_operations ftdi_elan_fops = { | 1232 | static 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 | ||
1443 | int 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 | |||
1450 | EXPORT_SYMBOL_GPL(usb_ftdi_elan_read_reg); | ||
1451 | static int ftdi_elan_read_config(struct usb_ftdi *ftdi, int config_offset, | 1429 | static 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 | } |