diff -urN linux-2.2.13orig/Documentation/cpqarray.txt linux/Documentation/cpqarray.txt
--- linux-2.2.13orig/Documentation/cpqarray.txt	Mon Aug  9 14:04:38 1999
+++ linux/Documentation/cpqarray.txt	Tue Nov  9 09:23:09 1999
@@ -1,11 +1,5 @@
 This driver is for Compaq's SMART2 Intellegent Disk Array Controllers.
 
-WARNING:
---------
-
-This driver comes with NO WARRANTY.  It is not officially supported by
-Compaq.  Do not call technical support.  Use at your own risk.
-
 Supported Cards:
 ----------------
 
@@ -22,6 +16,7 @@
 	* Integrated Smart Array Controller
 	* SA 4200
 	* SA 4250ES
+	* SA 431
 
 It should also work with some really old Disk array adapters, but I am
 unable to test against these cards:
diff -urN linux-2.2.13orig/drivers/block/cpqarray.c linux/drivers/block/cpqarray.c
--- linux-2.2.13orig/drivers/block/cpqarray.c	Mon Aug  9 14:04:38 1999
+++ linux/drivers/block/cpqarray.c	Wed Nov 10 12:06:50 1999
@@ -41,8 +41,8 @@
 
 #define SMART2_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin))
 
-#define DRIVER_NAME "Compaq SMART2 Driver (v 1.0.5)"
-#define DRIVER_VERSION SMART2_DRIVER_VERSION(1,0,5)
+#define DRIVER_NAME "Compaq SMART2 Driver (v 1.0.6)"
+#define DRIVER_VERSION SMART2_DRIVER_VERSION(1,0,6)
 #define MAJOR_NR COMPAQ_SMART2_MAJOR
 #include <linux/blk.h>
 #include <linux/blkdev.h>
@@ -84,6 +84,7 @@
 	{ 0x40400E11, "Integrated Array",	&smart4_access },
 	{ 0x40500E11, "Smart Array 4200",	&smart4_access },
 	{ 0x40510E11, "Smart Array 4250ES",	&smart4_access },
+	{ 0x40580E11, "Smart Array 431",	&smart4_access },
 };
 
 static struct hd_struct * ida;
@@ -1223,7 +1224,7 @@
 			return(error);
 		}
 		copy_from_user(p, (void*)io->sg[0].addr, io->sg[0].size);
-		c->req.bp = virt_to_bus(&(io->c));
+		c->req.hdr.blk = virt_to_bus(&(io->c));
 		c->req.sg[0].size = io->sg[0].size;
 		c->req.sg[0].addr = virt_to_bus(p);
 		c->req.hdr.sg_cnt = 1;
diff -urN linux-2.2.13orig/drivers/block/cpqarray.h linux/drivers/block/cpqarray.h
--- linux-2.2.13orig/drivers/block/cpqarray.h	Mon Aug  9 14:04:38 1999
+++ linux/drivers/block/cpqarray.h	Wed Nov 10 08:29:43 1999
@@ -30,7 +30,6 @@
 #include <linux/locks.h>
 #include <linux/malloc.h>
 #include <linux/proc_fs.h>
-#include <linux/raid/md.h>
 #include <linux/timer.h>
 #endif
 
diff -urN linux-2.2.13orig/drivers/block/ida_cmd.h linux/drivers/block/ida_cmd.h
--- linux-2.2.13orig/drivers/block/ida_cmd.h	Mon Aug  9 14:04:38 1999
+++ linux/drivers/block/ida_cmd.h	Wed Nov 10 08:29:43 1999
@@ -191,7 +191,7 @@
 	__u8	expn_fail;
 	__u8	unit_flags;
 	__u16	big_fail_map[8];
-	__u16	big_remap_map[8];
+	__u16	big_remap_map[128];
 	__u16	big_repl_map[8];
 	__u16	big_act_spare_map[8];
 	__u8	big_spar_repl_map[128];
@@ -336,7 +336,7 @@
 	__u32	sense_info;
 	__u8	sense_code;
 	__u8	sense_qual;
-	__u8	residual;
+	__u32	residual;
 	__u8	reserved[4];
 	__u8	cdb[12];	
 } scsi_param_t;
diff -urN linux-2.2.13orig/init/main.c linux/init/main.c
--- linux-2.2.13orig/init/main.c	Tue Oct 19 19:14:02 1999
+++ linux/init/main.c	Tue Nov  9 10:35:46 1999
@@ -461,6 +461,24 @@
 	{ "rd/c0d14p",0x3070 },
 	{ "rd/c0d15p",0x3078 },
 #endif
+#if defined(CONFIG_BLK_CPQ_DA) || defined(CONFIG_BLK_CPQ_DA_MODULE)
+	{ "ida/c0d0p",0x4800 },
+	{ "ida/c0d1p",0x4810 },
+	{ "ida/c0d2p",0x4820 },
+	{ "ida/c0d3p",0x4830 },
+	{ "ida/c0d4p",0x4840 },
+	{ "ida/c0d5p",0x4850 },
+	{ "ida/c0d6p",0x4860 },
+	{ "ida/c0d7p",0x4870 },
+	{ "ida/c0d8p",0x4880 },
+	{ "ida/c0d9p",0x4890 },
+	{ "ida/c0d10p",0x48A0 },
+	{ "ida/c0d11p",0x48B0 },
+	{ "ida/c0d12p",0x48C0 },
+	{ "ida/c0d13p",0x48D0 },
+	{ "ida/c0d14p",0x48E0 },
+	{ "ida/c0d15p",0x48F0 },
+#endif
 #ifdef CONFIG_ATARI_ACSI
 	{ "ada",     0x1c00 },
 	{ "adb",     0x1c10 },
