Привет,
решил "поигратся" с USB мышкой, для этого пытаюсь написать драйвер для мыши. Я скопировал себе файл usbmous.c и отредактировал. Собственно только поменял имя драйвера при регистрации, добавил идентификаторы производителя и устройста и printk в *probe функции, что бы посмотреть, используется ли мой дорайвер.
Скомпилировал, загрузил модуль. Только вот почему то probe функция не вызвается.
Вот, что я поменял в коде.
static int usb_mscanner_probe(struct usb_interface *intf, const struct usb_device_id *id)
{
struct usb_device *dev = interface_to_usbdev(intf);
struct usb_host_interface *interface;
struct usb_endpoint_descriptor *endpoint;
struct usb_mouse *mouse;
struct input_dev *input_dev;
int pipe, maxp;
printk( KERN_INFO "MSCANNER: Called for probing\n" );
static struct usb_device_id usb_mouse_id_table [] = {
/* { USB_INTERFACE_INFO(3, 1, 2) }, */
{ USB_DEVICE(USB_VENDOR_ID,USB_PRODUCT_ID) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, usb_mouse_id_table);
static struct usb_driver usb_mouse_driver = {
.name = "usbmousescanner",
.probe = usb_mscanner_probe,
.disconnect = usb_mscanner_disconnect,
.id_table = usb_mouse_id_table,
};
static int __init usb_mouse_init(void)
{
int retval = usb_register(&usb_mouse_driver);
printk( KERN_INFO "MSCANNER: Registering [%d]\n", retval );
if (retval == 0)
printk( KERN_INFO "MSCANNER: Registered " DRIVER_VERSION ":" DRIVER_DESC "\n" );
return retval;
}
При загрузке модуля в логе
usbcore: registered new driver usbmousescanner
MSCANNER: Registering [0]
MSCANNER: Registered v0.1:Mouse-scaner
Может быть так, что вкомпилированный драйвер мышки только используется, а до моего дело по этому не доходит? Тоесть в этом случае получается, что только один драйвер на устройство?
Спасибо за любые мысли.