diff -urN oldtree/drivers/input/joydev.c newtree/drivers/input/joydev.c --- oldtree/drivers/input/joydev.c 2006-08-08 17:53:40.000000000 -0400 +++ newtree/drivers/input/joydev.c 2006-08-08 17:52:59.000000000 -0400 @@ -451,6 +451,7 @@ default: return; } +#ifdef CONFIG_INPUT_JOYDEV_ANALOGTODIGITAL if(!omitanalog) { event.time = jiffies_to_msecs(jiffies); @@ -465,6 +466,23 @@ } } wake_up_interruptible(&joydev->wait); +#endif +#ifndef CONFIG_INPUT_JOYDEV_ANALOGTODIGITAL + event.time = jiffies_to_msecs(jiffies); + + list_for_each_entry(list, &joydev->list, node) { + + memcpy(list->buffer + list->head, &event, sizeof(struct js_event)); + + if (list->startup == joydev->nabs + joydev->nkey) + if (list->tail == (list->head = (list->head + 1) & (JOYDEV_BUFFER_SIZE - 1))) + list->startup = 0; + + kill_fasync(&list->fasync, SIGIO, POLL_IN); + } + + wake_up_interruptible(&joydev->wait); +#endif } static int joydev_fasync(int fd, struct file *file, int on)