开发者

Linux USB device driver not getting probed

开发者 https://www.devze.com 2023-03-31 10:02 出处:网络
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:

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:

generic-usb: probe of 0003:099A:2620.000F failed with error -22

and i never get to connect to the device. It seems like the systems drivers are overriding my driver in some way?

My code is registering & unregistering correctly using insmod / rmmod:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/usb.h>
#include <linux/slab.h>

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开发者_Go百科
    int error = usb_register(&dt_driver);
    if(error)
        printk("dt_init failed\n");

    return 0;
}

static void __exit dt_exit(void)
{
    //void
    usb_deregister(&dt_driver);
}

module_init(dt_init);
module_exit(dt_exit);

MODULE_LICENSE("GPL");

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?


Yes, usbhid driver overrides your driver. You need to remove the usbhid driver from the running kernel. First deattach your device from the system and use "modprobe -r usbhid" to remove the usbhid module. Now insert your module and attach the device, then your driver will be taken.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号