[SCSI] qla2xxx: Consolidate ISP63xx handling.
authorandrew.vasquez@qlogic.com <andrew.vasquez@qlogic.com>
Thu, 9 Mar 2006 22:27:18 +0000 (14:27 -0800)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Sun, 12 Mar 2006 15:38:22 +0000 (09:38 -0600)
As new 23xx firmware will accomidate ISP63xx types.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/qla2xxx/Kconfig
drivers/scsi/qla2xxx/Makefile
drivers/scsi/qla2xxx/ql2300.c
drivers/scsi/qla2xxx/ql2322.c
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_os.c

index 5758b2566d7f55e779040a5c89167af8c96a43bd..ff40906c66f9e3c9ed96a55c828d09181a359805 100644 (file)
@@ -10,14 +10,13 @@ config SCSI_QLA_FC
        By default, firmware for the ISP parts will be loaded
        via the Firmware Loader interface.
 
-       ISP             Firmware Filename
-       ----------      -----------------
-       21xx            ql2100_fw.bin
-       22xx            ql2200_fw.bin
-       2300, 2312      ql2300_fw.bin
-       2322            ql2322_fw.bin
-       6312, 6322      ql6312_fw.bin
-       24xx            ql2400_fw.bin
+       ISP               Firmware Filename
+       ----------        -----------------
+       21xx              ql2100_fw.bin
+       22xx              ql2200_fw.bin
+       2300, 2312, 6312  ql2300_fw.bin
+       2322, 6322        ql2322_fw.bin
+       24xx              ql2400_fw.bin
 
        Upon request, the driver caches the firmware image until
        the driver is unloaded.
@@ -51,23 +50,17 @@ config SCSI_QLA22XX
        This driver supports the QLogic 22xx (ISP2200) host adapter family.
 
 config SCSI_QLA2300
-       tristate "  Build QLogic ISP2300 firmware-module"
+       tristate "  Build QLogic ISP2300/ISP6312 firmware-module"
        depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
-       This driver supports the QLogic 2300 (ISP2300 and ISP2312) host
-       adapter family.
+       This driver supports the QLogic 2300 (ISP2300, ISP2312 and
+       ISP6312) host adapter family.
 
 config SCSI_QLA2322
-       tristate "  Build QLogic ISP2322 firmware-module"
-       depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE
-       ---help---
-       This driver supports the QLogic 2322 (ISP2322) host adapter family.
-
-config SCSI_QLA6312
-       tristate "  Build QLogic ISP63xx firmware-module"
+       tristate "  Build QLogic ISP2322/ISP6322 firmware-module"
        depends on SCSI_QLA_FC && SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
-       This driver supports the QLogic 63xx (ISP6312 and ISP6322) host
+       This driver supports the QLogic 2322 (ISP2322 and ISP6322) host
        adapter family.
 
 config SCSI_QLA24XX
index d028bc50ccf770664a3eb40df6cd9e28a8927674..c8f670ee60b40ee42c2a3bc4d9d5244401511351 100644 (file)
@@ -9,12 +9,10 @@ qla2100-y := ql2100.o ql2100_fw.o
 qla2200-y := ql2200.o ql2200_fw.o
 qla2300-y := ql2300.o ql2300_fw.o
 qla2322-y := ql2322.o ql2322_fw.o
-qla6312-y := ql6312.o ql6312_fw.o
 qla2400-y := ql2400.o ql2400_fw.o
 
 obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o
 obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
 obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
 obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
-obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
 obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o
index fd2f4b795a8a6cb71fcb88abfdd17987fad652a3..e7a93ddda79a6b051e69fcd14b8ece7f2a764206 100644 (file)
@@ -40,6 +40,11 @@ static struct qla_board_info qla_board_tbl[] = {
                .isp_name       = "ISP2312",
                .fw_info        = qla_fw_tbl,
        },
+       {
+               .drv_name       = qla_driver_name,
+               .isp_name       = "ISP6312",
+               .fw_info        = qla_fw_tbl,
+       },
 };
 
 static struct pci_device_id qla2300_pci_tbl[] = {
@@ -57,6 +62,13 @@ static struct pci_device_id qla2300_pci_tbl[] = {
                .subdevice      = PCI_ANY_ID,
                .driver_data    = (unsigned long)&qla_board_tbl[1],
        },
+       {
+               .vendor         = PCI_VENDOR_ID_QLOGIC,
+               .device         = PCI_DEVICE_ID_QLOGIC_ISP6312,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (unsigned long)&qla_board_tbl[2],
+       },
        {0, 0},
 };
 MODULE_DEVICE_TABLE(pci, qla2300_pci_tbl);
index c88a22c0d93ade82416d0bb66c8a48d1f2897fe2..3c8cafc12eee4a20533db0eb41bba4e261ec8a46 100644 (file)
@@ -52,6 +52,11 @@ static struct qla_board_info qla_board_tbl[] = {
                .isp_name       = "ISP2322",
                .fw_info        = qla_fw_tbl,
        },
+       {
+               .drv_name       = qla_driver_name,
+               .isp_name       = "ISP6322",
+               .fw_info        = qla_fw_tbl,
+       },
 };
 
 static struct pci_device_id qla2322_pci_tbl[] = {
@@ -62,6 +67,13 @@ static struct pci_device_id qla2322_pci_tbl[] = {
                .subdevice      = PCI_ANY_ID,
                .driver_data    = (unsigned long)&qla_board_tbl[0],
        },
+       {
+               .vendor         = PCI_VENDOR_ID_QLOGIC,
+               .device         = PCI_DEVICE_ID_QLOGIC_ISP6322,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (unsigned long)&qla_board_tbl[1],
+       },
        {0, 0},
 };
 MODULE_DEVICE_TABLE(pci, qla2322_pci_tbl);
index e6a2292a28922d2198dfc9f385293edd1c6000de..d4389095b4bcf0c5c3c05db68a0afef74e083031 100644 (file)
@@ -1003,6 +1003,10 @@ qla2x00_update_fw_options(scsi_qla_host_t *ha)
        if (ha->flags.enable_led_scheme)
                ha->fw_options[2] |= BIT_12;
 
+       /* Detect ISP6312. */
+       if (IS_QLA6312(ha))
+               ha->fw_options[2] |= BIT_13;
+
        /* Update firmware options. */
        qla2x00_set_fw_options(ha, ha->fw_options);
 }
index 131614751196c3966eededb5292dac5ad29f6932..4dc08d94ebec58ce5813b0f99b5c642d37e127cc 100644 (file)
@@ -2596,13 +2596,12 @@ qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout)
 
 /* Firmware interface routines. */
 
-#define FW_BLOBS       6
+#define FW_BLOBS       5
 #define FW_ISP21XX     0
 #define FW_ISP22XX     1
 #define FW_ISP2300     2
 #define FW_ISP2322     3
-#define FW_ISP63XX     4
-#define FW_ISP24XX     5
+#define FW_ISP24XX     4
 
 static DECLARE_MUTEX(qla_fw_lock);
 
@@ -2611,7 +2610,6 @@ static struct fw_blob qla_fw_blobs[FW_BLOBS] = {
        { .name = "ql2200_fw.bin", .segs = { 0x1000, 0 }, },
        { .name = "ql2300_fw.bin", .segs = { 0x800, 0 }, },
        { .name = "ql2322_fw.bin", .segs = { 0x800, 0x1c000, 0x1e000, 0 }, },
-       { .name = "ql6312_fw.bin", .segs = { 0x800, 0 }, },
        { .name = "ql2400_fw.bin", },
 };
 
@@ -2625,12 +2623,10 @@ qla2x00_request_firmware(scsi_qla_host_t *ha)
                blob = &qla_fw_blobs[FW_ISP21XX];
        } else if (IS_QLA2200(ha)) {
                blob = &qla_fw_blobs[FW_ISP22XX];
-       } else if (IS_QLA2300(ha) || IS_QLA2312(ha)) {
+       } else if (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA6312(ha)) {
                blob = &qla_fw_blobs[FW_ISP2300];
-       } else if (IS_QLA2322(ha)) {
+       } else if (IS_QLA2322(ha) || IS_QLA6322(ha)) {
                blob = &qla_fw_blobs[FW_ISP2322];
-       } else if (IS_QLA6312(ha) || IS_QLA6322(ha)) {
-               blob = &qla_fw_blobs[FW_ISP63XX];
        } else if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) {
                blob = &qla_fw_blobs[FW_ISP24XX];
        }