I'm trying to write a keyboard driver using serio/input on 2.5.70; more
of a port of the existing 2.4 driver actually, but whatever.
I'm calling serio_register_device thus:
static struct serio_dev arckbd_dev = {
.interrupt = arckbd_interrupt,
.connect = arckbd_connect,
.disconnect = arckbd_disconnect
};
static int __init arckbd_init(void)
{
printk("input: Registering keyboard with serio\n");
serio_register_device(&arckbd_dev);
return 0;
}
And that printk is coming up fine. serio_register_device seems to add
0x021c2af8 to its tail, but then never finds my entry in
list_for_each_entry and thus never calls dev->connect(). I've added some
debugging to serio_register_device thus:
void serio_register_device(struct serio_dev *dev)
{
struct serio *serio;
list_add_tail(&dev->node, &serio_dev_list);
printk("serio: add_tail %08x\n",&dev->node);
list_for_each_entry(serio, &serio_list, node) {
printk("serio: register_device %08x\n",serio->dev);
if (!serio->dev && dev->connect) {
printk("serio: connecting...\n");
dev->connect(serio, dev);
}
}
}
and I get nothing past "add_tail". I'd expect it to recognize my dev and
attempt to connect to it.
Any ideas? I presume I'm being an idiot as per usual.
Thanks,
John
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/