Index: linux/drivers/char/fusion/fusiondev.c
===================================================================
--- linux/drivers/char/fusion/fusiondev.c	(revision 72324)
+++ linux/drivers/char/fusion/fusiondev.c	(working copy)
@@ -1,6 +1,7 @@
 /*
  *	Fusion Kernel Module
  *
+ *  (c) Copyright 2009  Intel Corporation.
  *	(c) Copyright 2002-2003  Convergence GmbH
  *
  *      Written by Denis Oliver Kropp <dok@directfb.org>
@@ -56,9 +57,16 @@
 #define DEBUG(x...)  do {} while (0)
 #endif
 
-#ifndef FUSION_MAJOR
-#define FUSION_MAJOR 250
+#if defined(INTELCE_CHANGES)
+    // Holds the dynamically allocated Major Device number 
+    // assigned by the kernel. Reusing FUSION_MAJOR as the
+    // variable name to minimize the number of places to change.
+    int FUSION_MAJOR = 0;
+#else
+    #ifndef FUSION_MAJOR
+    #define FUSION_MAJOR 250
 #endif
+#endif
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Denis Oliver Kropp <dok@directfb.org>");
@@ -1117,11 +1125,21 @@
 {
 	int i;
 
+    #if defined(INTELCE_CHANGES)
+	// Modifying the register to get a dynamically generated device number
+	FUSION_MAJOR = register_chrdev (0, "fusion", &fusion_fops);
+	if(FUSION_MAJOR <= 0) {
+		printk (KERN_ERR "fusion: unable to get dynamic major\n");
+		return -EIO;
+	}
+    #else
 	if (register_chrdev(FUSION_MAJOR, "fusion", &fusion_fops)) {
 		printk(KERN_ERR "fusion: unable to get major %d\n",
 		       FUSION_MAJOR);
 		return -EIO;
 	}
+    #endif
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 2)
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
 	fusion_class = class_create(THIS_MODULE, "fusion");
