diff options
author | Rene van Paassen <rene.vanpaassen@gmail.com> | 2007-05-21 00:31:59 -0400 |
---|---|---|
committer | Dmitry Torokhov <dtor@insightbb.com> | 2007-07-10 00:35:16 -0400 |
commit | 6125a400354c4a02b9dad0e5d8128f9dc08cfd51 (patch) | |
tree | 5176691de7cf7655db84bf7ae5e4f4046f43cccd | |
parent | 1a54f49e8989462cfc9cab0c377b2d4e60e5b70a (diff) | |
download | op-kernel-dev-6125a400354c4a02b9dad0e5d8128f9dc08cfd51.zip op-kernel-dev-6125a400354c4a02b9dad0e5d8128f9dc08cfd51.tar.gz |
Input: aiptek - put sensible warnings in probe
Added warnings to the points where the tablet probe may fail
Signed-off-by: Rene van Paassen <rene.vanpaassen@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r-- | drivers/input/tablet/aiptek.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/drivers/input/tablet/aiptek.c b/drivers/input/tablet/aiptek.c index 8c62afe..7fb15af 100644 --- a/drivers/input/tablet/aiptek.c +++ b/drivers/input/tablet/aiptek.c @@ -1670,17 +1670,23 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) aiptek = kzalloc(sizeof(struct aiptek), GFP_KERNEL); inputdev = input_allocate_device(); - if (!aiptek || !inputdev) + if (!aiptek || !inputdev) { + warn("aiptek: cannot allocate memory or input device"); goto fail1; + } aiptek->data = usb_buffer_alloc(usbdev, AIPTEK_PACKET_LENGTH, GFP_ATOMIC, &aiptek->data_dma); - if (!aiptek->data) + if (!aiptek->data) { + warn("aiptek: cannot allocate usb buffer"); goto fail1; + } aiptek->urb = usb_alloc_urb(0, GFP_KERNEL); - if (!aiptek->urb) + if (!aiptek->urb) { + warn("aiptek: cannot allocate urb"); goto fail2; + } aiptek->inputdev = inputdev; aiptek->usbdev = usbdev; @@ -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. */ usb_set_intfdata(intf, aiptek); @@ -1814,15 +1827,18 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) /* Set up the sysfs files */ 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; + } /* Register the tablet as an Input Device */ err = input_register_device(aiptek->inputdev); - if (err) + if (err) { + warn("aiptek: input_register_device returned err: %d", err); goto fail4; - + } return 0; fail4: sysfs_remove_group(&intf->dev.kobj, &aiptek_attribute_group); |