Input: aiptek - put sensible warnings in probe
authorRene van Paassen <rene.vanpaassen@gmail.com>
Mon, 21 May 2007 04:31:59 +0000 (00:31 -0400)
committerDmitry Torokhov <dtor@insightbb.com>
Tue, 10 Jul 2007 04:35:16 +0000 (00:35 -0400)
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>
drivers/input/tablet/aiptek.c

index 8c62afe..7fb15af 100644 (file)
@@ -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);