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 },