title: Linux USB device driver not getting probed
body: <p>I'm working on a device driver for Linux. It's a USB pen tablet. The problem is that the driver's probe callback never gets called. dmesg just shows:</p>
  
  <pre><code>generic-usb: probe of 0003:099A:2620.000F failed with error -22
  </code></pre>
  
  <p>and i never get to connect to the device. It seems like the systems drivers are overriding my driver in some way?</p>
  
  <p>My code is registering &amp; unregistering correctly using insmod / rmmod:</p>
  
  <pre><code>#include &lt;linux/module.h&gt;
  #include &lt;linux/kernel.h&gt;
  #include &lt;linux/init.h&gt;
  #include &lt;linux/usb.h&gt;
  #include &lt;linux/slab.h&gt;
  
  MODULE_DEVICE_TABLE (usb, id_table);
  struct usb_device_id id_table[] =
  {
      {USB_DEVICE(0x099a, 0x2620)}, //Zippy Technology Corp. Digi Tablet
      {0}
  };
  
  void dt_disconnect(struct usb_interface *interface)
  {
      printk("dt_disconnect called\n");
  }
  
  int dt_probe(struct usb_interface *interface, const struct usb_device_id *id)
  {
      printk("dt_probe called\n");
      return 0;
  }
  
  static struct usb_driver dt_driver =
  {
      .name = "Zippy Technology Corp. Digi Tablet",
      .probe = dt_probe,
      .disconnect = dt_disconnect,
      .id_table = id_table
  };
  
  static int __init dt_init(void)
  {
      //0 means success
      int error = usb_register(&amp;dt_driver);
      if(error)
          printk("dt_init failed\n");
  
      return 0;
  }
  
  static void __exit dt_exit(void)
  {
      //void
      usb_deregister(&amp;dt_driver);
  }
  
  module_init(dt_init);
  module_exit(dt_exit);
  
  MODULE_LICENSE("GPL");
  </code></pre>
  
  <p>dt_probe is never called. I'm using Linux 2.6.40 (Fedora 15's version of 3.0) and most documentation about this stuff is very old so I thought I'd ask here. Any thoughts?</p>