diff -ur linux-source-2.6.15.orig/drivers/ide/ide.c linux-source-2.6.15/drivers/ide/ide.c
--- linux-source-2.6.15.orig/drivers/ide/ide.c	2006-02-21 17:40:50.000000000 +0000
+++ linux-source-2.6.15/drivers/ide/ide.c	2006-03-13 22:35:27.000000000 +0000
@@ -168,7 +168,9 @@
 					IDE2_MAJOR, IDE3_MAJOR,
 					IDE4_MAJOR, IDE5_MAJOR,
 					IDE6_MAJOR, IDE7_MAJOR,
-					IDE8_MAJOR, IDE9_MAJOR };
+					IDE8_MAJOR, IDE9_MAJOR,
+					IDE10_MAJOR, IDE11_MAJOR,
+					IDE12_MAJOR, IDE13_MAJOR };
 
 static int idebus_parameter;	/* holds the "idebus=" parameter */
 static int system_bus_speed;	/* holds what we think is VESA/PCI bus speed */
@@ -213,7 +215,7 @@
 	hwif->name[0]	= 'i';
 	hwif->name[1]	= 'd';
 	hwif->name[2]	= 'e';
-	hwif->name[3]	= '0' + index;
+	hwif->name[3]	= (index < 10) ? ('0' + index) : ('a' + index - 10);
 
 	hwif->bus_state	= BUSSTATE_ON;
 
@@ -239,7 +241,10 @@
 		drive->special.b.set_geometry	= 1;
 		drive->name[0]			= 'h';
 		drive->name[1]			= 'd';
-		drive->name[2]			= 'a' + (index * MAX_DRIVES) + unit;
+		drive->name[2]			= 
+			(((index * MAX_DRIVES) + unit) < 26) ?
+				('a' + (index * MAX_DRIVES) + unit) : 
+				('A' + (index * MAX_DRIVES) + unit - 26);
 		drive->max_failures		= IDE_DEFAULT_MAX_FAILURES;
 		drive->using_dma		= 0;
 		drive->is_flash			= 0;
diff -ur linux-source-2.6.15.orig/drivers/ide/ide-probe.c linux-source-2.6.15/drivers/ide/ide-probe.c
--- linux-source-2.6.15.orig/drivers/ide/ide-probe.c	2006-01-03 03:21:10.000000000 +0000
+++ linux-source-2.6.15/drivers/ide/ide-probe.c	2006-03-13 22:38:22.000000000 +0000
@@ -1277,6 +1277,11 @@
 	disk->major = hwif->major;
 	disk->first_minor = unit << PARTN_BITS;
 	sprintf(disk->disk_name, "hd%c", 'a' + hwif->index * MAX_DRIVES + unit);
+	sprintf(disk->disk_name, "hd%c", 
+                        (hwif->index * MAX_DRIVES + unit) < 26 ?
+                                ('a' + hwif->index * MAX_DRIVES + unit) :
+                                ('A' + hwif->index * MAX_DRIVES + unit - 26)
+                );
 	disk->queue = drive->queue;
 }
 
diff -ur linux-source-2.6.15.orig/include/asm-i386/ide.h linux-source-2.6.15/include/asm-i386/ide.h
--- linux-source-2.6.15.orig/include/asm-i386/ide.h	2006-01-03 03:21:10.000000000 +0000
+++ linux-source-2.6.15/include/asm-i386/ide.h	2006-03-13 22:35:27.000000000 +0000
@@ -17,7 +17,7 @@
 
 #ifndef MAX_HWIFS
 # ifdef CONFIG_BLK_DEV_IDEPCI
-#define MAX_HWIFS	10
+#define MAX_HWIFS	14
 # else
 #define MAX_HWIFS	6
 # endif
diff -ur linux-source-2.6.15.orig/include/linux/major.h linux-source-2.6.15/include/linux/major.h
--- linux-source-2.6.15.orig/include/linux/major.h	2006-01-03 03:21:10.000000000 +0000
+++ linux-source-2.6.15/include/linux/major.h	2006-03-13 22:35:27.000000000 +0000
@@ -107,10 +107,16 @@
 #define IDE8_MAJOR		90
 #define IDE9_MAJOR		91
 
+#define IDE10_MAJOR		92
+#define IDE11_MAJOR		93
+
 #define DASD_MAJOR		94
 
 #define MDISK_MAJOR		95
 
+#define IDE12_MAJOR		96
+#define IDE13_MAJOR		97
+
 #define UBD_MAJOR		98
 
 #define JSFD_MAJOR		99
