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)
