Commit 6125a400 authored by Rene van Paassen's avatar Rene van Paassen Committed by Dmitry Torokhov

Input: aiptek - put sensible warnings in probe

Added warnings to the points where the tablet probe may fail
Signed-off-by: default avatarRene van Paassen <rene.vanpaassen@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 1a54f49e
...@@ -1670,17 +1670,23 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) ...@@ -1670,17 +1670,23 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
aiptek = kzalloc(sizeof(struct aiptek), GFP_KERNEL); aiptek = kzalloc(sizeof(struct aiptek), GFP_KERNEL);
inputdev = input_allocate_device(); inputdev = input_allocate_device();
if (!aiptek || !inputdev) if (!aiptek || !inputdev) {
warn("aiptek: cannot allocate memory or input device");
goto fail1; goto fail1;
}
aiptek->data = usb_buffer_alloc(usbdev, AIPTEK_PACKET_LENGTH, aiptek->data = usb_buffer_alloc(usbdev, AIPTEK_PACKET_LENGTH,
GFP_ATOMIC, &aiptek->data_dma); GFP_ATOMIC, &aiptek->data_dma);
if (!aiptek->data) if (!aiptek->data) {
warn("aiptek: cannot allocate usb buffer");
goto fail1; goto fail1;
}
aiptek->urb = usb_alloc_urb(0, GFP_KERNEL); aiptek->urb = usb_alloc_urb(0, GFP_KERNEL);
if (!aiptek->urb) if (!aiptek->urb) {
warn("aiptek: cannot allocate urb");
goto fail2; goto fail2;
}
aiptek->inputdev = inputdev; aiptek->inputdev = inputdev;
aiptek->usbdev = usbdev; aiptek->usbdev = usbdev;
...@@ -1807,6 +1813,13 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) ...@@ -1807,6 +1813,13 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
} }
} }
/* Murphy says that some day someone will have a tablet that fails the
above test. That's you, Frederic Rodrigo */
if (i == ARRAY_SIZE(speeds)) {
info("input: Aiptek tried all speeds, no sane response");
goto fail2;
}
/* Associate this driver's struct with the usb interface. /* Associate this driver's struct with the usb interface.
*/ */
usb_set_intfdata(intf, aiptek); usb_set_intfdata(intf, aiptek);
...@@ -1814,15 +1827,18 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) ...@@ -1814,15 +1827,18 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
/* Set up the sysfs files /* Set up the sysfs files
*/ */
err = sysfs_create_group(&intf->dev.kobj, &aiptek_attribute_group); err = sysfs_create_group(&intf->dev.kobj, &aiptek_attribute_group);
if (err) if (err) {
warn("aiptek: cannot create sysfs group err: %d", err);
goto fail3; goto fail3;
}
/* Register the tablet as an Input Device /* Register the tablet as an Input Device
*/ */
err = input_register_device(aiptek->inputdev); err = input_register_device(aiptek->inputdev);
if (err) if (err) {
warn("aiptek: input_register_device returned err: %d", err);
goto fail4; goto fail4;
}
return 0; return 0;
fail4: sysfs_remove_group(&intf->dev.kobj, &aiptek_attribute_group); fail4: sysfs_remove_group(&intf->dev.kobj, &aiptek_attribute_group);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment