aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ips.c
diff options
context:
space:
mode:
authorJack Hammer <jack_hammer@adaptec.com>2005-11-03 09:46:00 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2005-11-06 13:33:12 -0500
commita60768e2d43eb30a1adb8a119aeac35dc0d03ef6 (patch)
treee0864714d02523700878cadcca263a19ad57667d /drivers/scsi/ips.c
parentb1081ea6f000dee6dba288f9fab9df902802b25b (diff)
[SCSI] ips: remove "Version Matching"
IBM has finally agreed that the "Version Matching" between firmware and drivers ( and the resulting warning messages ) is no longer necessary. This patch will remove those functions from the ServeRAID driver. Signed-off-by: Jack Hammer <jack_hammer@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ips.c')
-rw-r--r--drivers/scsi/ips.c138
1 files changed, 3 insertions, 135 deletions
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
index 68e5b2ab27c4..d0c51a2d40ba 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -139,6 +139,7 @@
139/* - Remove 3 unused "inline" functions */ 139/* - Remove 3 unused "inline" functions */
140/* 7.12.xx - Use STATIC functions whereever possible */ 140/* 7.12.xx - Use STATIC functions whereever possible */
141/* - Clean up deprecated MODULE_PARM calls */ 141/* - Clean up deprecated MODULE_PARM calls */
142/* 7.12.05 - Remove Version Matching per IBM request */
142/*****************************************************************************/ 143/*****************************************************************************/
143 144
144/* 145/*
@@ -210,7 +211,7 @@ module_param(ips, charp, 0);
210 * DRIVER_VER 211 * DRIVER_VER
211 */ 212 */
212#define IPS_VERSION_HIGH "7.12" 213#define IPS_VERSION_HIGH "7.12"
213#define IPS_VERSION_LOW ".02 " 214#define IPS_VERSION_LOW ".05 "
214 215
215#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__) 216#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
216#warning "This driver has only been tested on the x86/ia64/x86_64 platforms" 217#warning "This driver has only been tested on the x86/ia64/x86_64 platforms"
@@ -347,8 +348,6 @@ static int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
347static int ips_host_info(ips_ha_t *, char *, off_t, int); 348static int ips_host_info(ips_ha_t *, char *, off_t, int);
348static void copy_mem_info(IPS_INFOSTR *, char *, int); 349static void copy_mem_info(IPS_INFOSTR *, char *, int);
349static int copy_info(IPS_INFOSTR *, char *, ...); 350static int copy_info(IPS_INFOSTR *, char *, ...);
350static int ips_get_version_info(ips_ha_t * ha, dma_addr_t, int intr);
351static void ips_version_check(ips_ha_t * ha, int intr);
352static int ips_abort_init(ips_ha_t * ha, int index); 351static int ips_abort_init(ips_ha_t * ha, int index);
353static int ips_init_phase2(int index); 352static int ips_init_phase2(int index);
354 353
@@ -406,8 +405,6 @@ static Scsi_Host_Template ips_driver_template = {
406#endif 405#endif
407}; 406};
408 407
409static IPS_DEFINE_COMPAT_TABLE( Compatable ); /* Version Compatability Table */
410
411 408
412/* This table describes all ServeRAID Adapters */ 409/* This table describes all ServeRAID Adapters */
413static struct pci_device_id ips_pci_table[] = { 410static struct pci_device_id ips_pci_table[] = {
@@ -5936,7 +5933,7 @@ ips_write_driver_status(ips_ha_t * ha, int intr)
5936 strncpy((char *) ha->nvram->bios_high, ha->bios_version, 4); 5933 strncpy((char *) ha->nvram->bios_high, ha->bios_version, 4);
5937 strncpy((char *) ha->nvram->bios_low, ha->bios_version + 4, 4); 5934 strncpy((char *) ha->nvram->bios_low, ha->bios_version + 4, 4);
5938 5935
5939 ips_version_check(ha, intr); /* Check BIOS/FW/Driver Versions */ 5936 ha->nvram->versioning = 0; /* Indicate the Driver Does Not Support Versioning */
5940 5937
5941 /* now update the page */ 5938 /* now update the page */
5942 if (!ips_readwrite_page5(ha, TRUE, intr)) { 5939 if (!ips_readwrite_page5(ha, TRUE, intr)) {
@@ -6853,135 +6850,6 @@ ips_verify_bios_memio(ips_ha_t * ha, char *buffer, uint32_t buffersize,
6853 return (0); 6850 return (0);
6854} 6851}
6855 6852
6856/*---------------------------------------------------------------------------*/
6857/* Routine Name: ips_version_check */
6858/* */
6859/* Dependencies: */
6860/* Assumes that ips_read_adapter_status() is called first filling in */
6861/* the data for SubSystem Parameters. */
6862/* Called from ips_write_driver_status() so it also assumes NVRAM Page 5 */
6863/* Data is available. */
6864/* */
6865/*---------------------------------------------------------------------------*/
6866static void
6867ips_version_check(ips_ha_t * ha, int intr)
6868{
6869 IPS_VERSION_DATA *VersionInfo;
6870 uint8_t FirmwareVersion[IPS_COMPAT_ID_LENGTH + 1];
6871 uint8_t BiosVersion[IPS_COMPAT_ID_LENGTH + 1];
6872 int MatchError;
6873 int rc;
6874 char BiosString[10];
6875 char FirmwareString[10];
6876
6877 METHOD_TRACE("ips_version_check", 1);
6878
6879 VersionInfo = ( IPS_VERSION_DATA * ) ha->ioctl_data;
6880
6881 memset(FirmwareVersion, 0, IPS_COMPAT_ID_LENGTH + 1);
6882 memset(BiosVersion, 0, IPS_COMPAT_ID_LENGTH + 1);
6883
6884 /* Get the Compatible BIOS Version from NVRAM Page 5 */
6885 memcpy(BiosVersion, ha->nvram->BiosCompatibilityID,
6886 IPS_COMPAT_ID_LENGTH);
6887
6888 rc = IPS_FAILURE;
6889 if (ha->subsys->param[4] & IPS_GET_VERSION_SUPPORT) { /* If Versioning is Supported */
6890 /* Get the Version Info with a Get Version Command */
6891 memset( VersionInfo, 0, sizeof (IPS_VERSION_DATA));
6892 rc = ips_get_version_info(ha, ha->ioctl_busaddr, intr);
6893 if (rc == IPS_SUCCESS)
6894 memcpy(FirmwareVersion, VersionInfo->compatibilityId,
6895 IPS_COMPAT_ID_LENGTH);
6896 }
6897
6898 if (rc != IPS_SUCCESS) { /* If Data Not Obtainable from a GetVersion Command */
6899 /* Get the Firmware Version from Enquiry Data */
6900 memcpy(FirmwareVersion, ha->enq->CodeBlkVersion,
6901 IPS_COMPAT_ID_LENGTH);
6902 }
6903
6904 /* printk(KERN_WARNING "Adapter's BIOS Version = %s\n", BiosVersion); */
6905 /* printk(KERN_WARNING "BIOS Compatible Version = %s\n", IPS_COMPAT_BIOS); */
6906 /* printk(KERN_WARNING "Adapter's Firmware Version = %s\n", FirmwareVersion); */
6907 /* printk(KERN_WARNING "Firmware Compatible Version = %s \n", Compatable[ ha->nvram->adapter_type ]); */
6908
6909 MatchError = 0;
6910
6911 if (strncmp
6912 (FirmwareVersion, Compatable[ha->nvram->adapter_type],
6913 IPS_COMPAT_ID_LENGTH) != 0)
6914 MatchError = 1;
6915
6916 if (strncmp(BiosVersion, IPS_COMPAT_BIOS, IPS_COMPAT_ID_LENGTH) != 0)
6917 MatchError = 1;
6918
6919 ha->nvram->versioning = 1; /* Indicate the Driver Supports Versioning */
6920
6921 if (MatchError) {
6922 ha->nvram->version_mismatch = 1;
6923 if (ips_cd_boot == 0) {
6924 strncpy(&BiosString[0], ha->nvram->bios_high, 4);
6925 strncpy(&BiosString[4], ha->nvram->bios_low, 4);
6926 BiosString[8] = 0;
6927
6928 strncpy(&FirmwareString[0], ha->enq->CodeBlkVersion, 8);
6929 FirmwareString[8] = 0;
6930
6931 IPS_PRINTK(KERN_WARNING, ha->pcidev,
6932 "Warning ! ! ! ServeRAID Version Mismatch\n");
6933 IPS_PRINTK(KERN_WARNING, ha->pcidev,
6934 "Bios = %s, Firmware = %s, Device Driver = %s%s\n",
6935 BiosString, FirmwareString, IPS_VERSION_HIGH,
6936 IPS_VERSION_LOW);
6937 IPS_PRINTK(KERN_WARNING, ha->pcidev,
6938 "These levels should match to avoid possible compatibility problems.\n");
6939 }
6940 } else {
6941 ha->nvram->version_mismatch = 0;
6942 }
6943
6944 return;
6945}
6946
6947/*---------------------------------------------------------------------------*/
6948/* Routine Name: ips_get_version_info */
6949/* */
6950/* Routine Description: */
6951/* Issue an internal GETVERSION Command */
6952/* */
6953/* Return Value: */
6954/* 0 if Successful, else non-zero */
6955/*---------------------------------------------------------------------------*/
6956static int
6957ips_get_version_info(ips_ha_t * ha, dma_addr_t Buffer, int intr)
6958{
6959 ips_scb_t *scb;
6960 int rc;
6961
6962 METHOD_TRACE("ips_get_version_info", 1);
6963
6964 scb = &ha->scbs[ha->max_cmds - 1];
6965
6966 ips_init_scb(ha, scb);
6967
6968 scb->timeout = ips_cmd_timeout;
6969 scb->cdb[0] = IPS_CMD_GET_VERSION_INFO;
6970 scb->cmd.version_info.op_code = IPS_CMD_GET_VERSION_INFO;
6971 scb->cmd.version_info.command_id = IPS_COMMAND_ID(ha, scb);
6972 scb->cmd.version_info.reserved = 0;
6973 scb->cmd.version_info.count = sizeof (IPS_VERSION_DATA);
6974 scb->cmd.version_info.reserved2 = 0;
6975 scb->data_len = sizeof (IPS_VERSION_DATA);
6976 scb->data_busaddr = Buffer;
6977 scb->cmd.version_info.buffer_addr = Buffer;
6978 scb->flags = 0;
6979
6980 /* issue command */
6981 rc = ips_send_wait(ha, scb, ips_cmd_timeout, intr);
6982 return (rc);
6983}
6984
6985/****************************************************************************/ 6853/****************************************************************************/
6986/* */ 6854/* */
6987/* Routine Name: ips_abort_init */ 6855/* Routine Name: ips_abort_init */