Merge tag 'usb-serial-5.13-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / scsi / advansys.c
index ec56278..800052f 100644 (file)
@@ -84,8 +84,6 @@ typedef unsigned char uchar;
 
 #define ASC_CS_TYPE  unsigned short
 
-#define ASC_IS_ISA          (0x0001)
-#define ASC_IS_ISAPNP       (0x0081)
 #define ASC_IS_EISA         (0x0002)
 #define ASC_IS_PCI          (0x0004)
 #define ASC_IS_PCI_ULTRA    (0x0104)
@@ -101,11 +99,6 @@ typedef unsigned char uchar;
 #define ASC_CHIP_MIN_VER_PCI     (0x09)
 #define ASC_CHIP_MAX_VER_PCI     (0x0F)
 #define ASC_CHIP_VER_PCI_BIT     (0x08)
-#define ASC_CHIP_MIN_VER_ISA     (0x11)
-#define ASC_CHIP_MIN_VER_ISA_PNP (0x21)
-#define ASC_CHIP_MAX_VER_ISA     (0x27)
-#define ASC_CHIP_VER_ISA_BIT     (0x30)
-#define ASC_CHIP_VER_ISAPNP_BIT  (0x20)
 #define ASC_CHIP_VER_ASYN_BUG    (0x21)
 #define ASC_CHIP_VER_PCI             0x08
 #define ASC_CHIP_VER_PCI_ULTRA_3150  (ASC_CHIP_VER_PCI | 0x02)
@@ -116,7 +109,6 @@ typedef unsigned char uchar;
 #define ASC_CHIP_LATEST_VER_EISA   ((ASC_CHIP_MIN_VER_EISA - 1) + 3)
 #define ASC_MAX_VL_DMA_COUNT    (0x07FFFFFFL)
 #define ASC_MAX_PCI_DMA_COUNT   (0xFFFFFFFFL)
-#define ASC_MAX_ISA_DMA_COUNT   (0x00FFFFFFL)
 
 #define ASC_SCSI_ID_BITS  3
 #define ASC_SCSI_TIX_TYPE     uchar
@@ -194,7 +186,6 @@ typedef unsigned char uchar;
 #define ASC_FLAG_SRB_LINEAR_ADDR  0x08
 #define ASC_FLAG_WIN16            0x10
 #define ASC_FLAG_WIN32            0x20
-#define ASC_FLAG_ISA_OVER_16MB    0x40
 #define ASC_FLAG_DOS_VM_CALLBACK  0x80
 #define ASC_TAG_FLAG_EXTRA_BYTES               0x10
 #define ASC_TAG_FLAG_DISABLE_DISCONNECT        0x04
@@ -464,8 +455,6 @@ typedef struct asc_dvc_cfg {
        ASC_SCSI_BIT_ID_TYPE disc_enable;
        ASC_SCSI_BIT_ID_TYPE sdtr_enable;
        uchar chip_scsi_id;
-       uchar isa_dma_speed;
-       uchar isa_dma_channel;
        uchar chip_version;
        ushort mcode_date;
        ushort mcode_version;
@@ -572,10 +561,8 @@ typedef struct asc_cap_info_array {
 #define ASC_EEP_MAX_RETRY        20
 
 /*
- * These macros keep the chip SCSI id and ISA DMA speed
- * bitfields in board order. C bitfields aren't portable
- * between big and little-endian platforms so they are
- * not used.
+ * These macros keep the chip SCSI id  bitfields in board order. C bitfields
+ * aren't portable between big and little-endian platforms so they are not used.
  */
 
 #define ASC_EEP_GET_CHIP_ID(cfg)    ((cfg)->id_speed & 0x0f)
@@ -1812,7 +1799,7 @@ typedef struct adv_req {
  * Field naming convention:
  *
  *  *_able indicates both whether a feature should be enabled or disabled
- *  and whether a device isi capable of the feature. At initialization
+ *  and whether a device is capable of the feature. At initialization
  *  this field may be set, but later if a device is found to be incapable
  *  of the feature, the field is cleared.
  */
@@ -2340,9 +2327,8 @@ static void asc_prt_asc_dvc_cfg(ASC_DVC_CFG *h)
        printk(" disc_enable 0x%x, sdtr_enable 0x%x,\n",
               h->disc_enable, h->sdtr_enable);
 
-       printk(" chip_scsi_id %d, isa_dma_speed %d, isa_dma_channel %d, "
-               "chip_version %d,\n", h->chip_scsi_id, h->isa_dma_speed,
-               h->isa_dma_channel, h->chip_version);
+       printk(" chip_scsi_id %d, chip_version %d,\n",
+              h->chip_scsi_id, h->chip_version);
 
        printk(" mcode_date 0x%x, mcode_version %d\n",
                h->mcode_date, h->mcode_version);
@@ -2415,8 +2401,8 @@ static void asc_prt_scsi_host(struct Scsi_Host *s)
        printk(" dma_channel %d, this_id %d, can_queue %d,\n",
               s->dma_channel, s->this_id, s->can_queue);
 
-       printk(" cmd_per_lun %d, sg_tablesize %d, unchecked_isa_dma %d\n",
-              s->cmd_per_lun, s->sg_tablesize, s->unchecked_isa_dma);
+       printk(" cmd_per_lun %d, sg_tablesize %d\n",
+              s->cmd_per_lun, s->sg_tablesize);
 
        if (ASC_NARROW_BOARD(boardp)) {
                asc_prt_asc_dvc_var(&boardp->dvc_var.asc_dvc_var);
@@ -2632,42 +2618,28 @@ static const char *advansys_info(struct Scsi_Host *shost)
        if (ASC_NARROW_BOARD(boardp)) {
                asc_dvc_varp = &boardp->dvc_var.asc_dvc_var;
                ASC_DBG(1, "begin\n");
-               if (asc_dvc_varp->bus_type & ASC_IS_ISA) {
-                       if ((asc_dvc_varp->bus_type & ASC_IS_ISAPNP) ==
-                           ASC_IS_ISAPNP) {
-                               busname = "ISA PnP";
+
+               if (asc_dvc_varp->bus_type & ASC_IS_VL) {
+                       busname = "VL";
+               } else if (asc_dvc_varp->bus_type & ASC_IS_EISA) {
+                       busname = "EISA";
+               } else if (asc_dvc_varp->bus_type & ASC_IS_PCI) {
+                       if ((asc_dvc_varp->bus_type & ASC_IS_PCI_ULTRA)
+                           == ASC_IS_PCI_ULTRA) {
+                               busname = "PCI Ultra";
                        } else {
-                               busname = "ISA";
+                               busname = "PCI";
                        }
-                       sprintf(info,
-                               "AdvanSys SCSI %s: %s: IO 0x%lX-0x%lX, IRQ 0x%X, DMA 0x%X",
-                               ASC_VERSION, busname,
-                               (ulong)shost->io_port,
-                               (ulong)shost->io_port + ASC_IOADR_GAP - 1,
-                               boardp->irq, shost->dma_channel);
                } else {
-                       if (asc_dvc_varp->bus_type & ASC_IS_VL) {
-                               busname = "VL";
-                       } else if (asc_dvc_varp->bus_type & ASC_IS_EISA) {
-                               busname = "EISA";
-                       } else if (asc_dvc_varp->bus_type & ASC_IS_PCI) {
-                               if ((asc_dvc_varp->bus_type & ASC_IS_PCI_ULTRA)
-                                   == ASC_IS_PCI_ULTRA) {
-                                       busname = "PCI Ultra";
-                               } else {
-                                       busname = "PCI";
-                               }
-                       } else {
-                               busname = "?";
-                               shost_printk(KERN_ERR, shost, "unknown bus "
-                                       "type %d\n", asc_dvc_varp->bus_type);
-                       }
-                       sprintf(info,
-                               "AdvanSys SCSI %s: %s: IO 0x%lX-0x%lX, IRQ 0x%X",
-                               ASC_VERSION, busname, (ulong)shost->io_port,
-                               (ulong)shost->io_port + ASC_IOADR_GAP - 1,
-                               boardp->irq);
+                       busname = "?";
+                       shost_printk(KERN_ERR, shost, "unknown bus "
+                               "type %d\n", asc_dvc_varp->bus_type);
                }
+               sprintf(info,
+                       "AdvanSys SCSI %s: %s: IO 0x%lX-0x%lX, IRQ 0x%X",
+                       ASC_VERSION, busname, (ulong)shost->io_port,
+                       (ulong)shost->io_port + ASC_IOADR_GAP - 1,
+                       boardp->irq);
        } else {
                /*
                 * Wide Adapter Information
@@ -2873,12 +2845,7 @@ static void asc_prt_asc_board_eeprom(struct seq_file *m, struct Scsi_Host *shost
        ASCEEP_CONFIG *ep;
        int i;
        uchar serialstr[13];
-#ifdef CONFIG_ISA
-       ASC_DVC_VAR *asc_dvc_varp;
-       int isa_dma_speed[] = { 10, 8, 7, 6, 5, 4, 3, 2 };
 
-       asc_dvc_varp = &boardp->dvc_var.asc_dvc_var;
-#endif /* CONFIG_ISA */
        ep = &boardp->eep_config.asc_eep;
 
        seq_printf(m,
@@ -2926,14 +2893,6 @@ static void asc_prt_asc_board_eeprom(struct seq_file *m, struct Scsi_Host *shost
                seq_printf(m, " %c",
                           (ep->init_sdtr & ADV_TID_TO_TIDMASK(i)) ? 'Y' : 'N');
        seq_putc(m, '\n');
-
-#ifdef CONFIG_ISA
-       if (asc_dvc_varp->bus_type & ASC_IS_ISA) {
-               seq_printf(m,
-                          " Host ISA DMA speed:   %d MB/S\n",
-                          isa_dma_speed[ASC_EEP_GET_DMA_SPD(ep)]);
-       }
-#endif /* CONFIG_ISA */
 }
 
 /*
@@ -3180,10 +3139,6 @@ static void asc_prt_driver_conf(struct seq_file *m, struct Scsi_Host *shost)
                   shost->unique_id, shost->can_queue, shost->this_id,
                   shost->sg_tablesize, shost->cmd_per_lun);
 
-       seq_printf(m,
-                  " unchecked_isa_dma %d\n",
-                  shost->unchecked_isa_dma);
-
        seq_printf(m,
                   " flags 0x%x, last_reset 0x%lx, jiffies 0x%lx, asc_n_io_port 0x%x\n",
                   boardp->flags, shost->last_reset, jiffies,
@@ -8563,12 +8518,6 @@ static unsigned short AscGetChipBiosAddress(PortAddr iop_base,
        }
 
        cfg_lsw = AscGetChipCfgLsw(iop_base);
-
-       /*
-        *  ISA PnP uses the top bit as the 32K BIOS flag
-        */
-       if (bus_type == ASC_IS_ISAPNP)
-               cfg_lsw &= 0x7FFF;
        bios_addr = ASC_BIOS_MIN_ADDR + (cfg_lsw >> 12) * ASC_BIOS_BANK_SIZE;
        return bios_addr;
 }
@@ -8611,19 +8560,6 @@ static unsigned char AscGetChipVersion(PortAddr iop_base,
        return AscGetChipVerNo(iop_base);
 }
 
-#ifdef CONFIG_ISA
-static void AscEnableIsaDma(uchar dma_channel)
-{
-       if (dma_channel < 4) {
-               outp(0x000B, (ushort)(0xC0 | dma_channel));
-               outp(0x000A, dma_channel);
-       } else if (dma_channel < 8) {
-               outp(0x00D6, (ushort)(0xC0 | (dma_channel - 4)));
-               outp(0x00D4, (ushort)(dma_channel - 4));
-       }
-}
-#endif /* CONFIG_ISA */
-
 static int AscStopQueueExe(PortAddr iop_base)
 {
        int count = 0;
@@ -8644,65 +8580,11 @@ static int AscStopQueueExe(PortAddr iop_base)
 
 static unsigned int AscGetMaxDmaCount(ushort bus_type)
 {
-       if (bus_type & ASC_IS_ISA)
-               return ASC_MAX_ISA_DMA_COUNT;
-       else if (bus_type & (ASC_IS_EISA | ASC_IS_VL))
+       if (bus_type & (ASC_IS_EISA | ASC_IS_VL))
                return ASC_MAX_VL_DMA_COUNT;
        return ASC_MAX_PCI_DMA_COUNT;
 }
 
-#ifdef CONFIG_ISA
-static ushort AscGetIsaDmaChannel(PortAddr iop_base)
-{
-       ushort channel;
-
-       channel = AscGetChipCfgLsw(iop_base) & 0x0003;
-       if (channel == 0x03)
-               return (0);
-       else if (channel == 0x00)
-               return (7);
-       return (channel + 4);
-}
-
-static ushort AscSetIsaDmaChannel(PortAddr iop_base, ushort dma_channel)
-{
-       ushort cfg_lsw;
-       uchar value;
-
-       if ((dma_channel >= 5) && (dma_channel <= 7)) {
-               if (dma_channel == 7)
-                       value = 0x00;
-               else
-                       value = dma_channel - 4;
-               cfg_lsw = AscGetChipCfgLsw(iop_base) & 0xFFFC;
-               cfg_lsw |= value;
-               AscSetChipCfgLsw(iop_base, cfg_lsw);
-               return (AscGetIsaDmaChannel(iop_base));
-       }
-       return 0;
-}
-
-static uchar AscGetIsaDmaSpeed(PortAddr iop_base)
-{
-       uchar speed_value;
-
-       AscSetBank(iop_base, 1);
-       speed_value = AscReadChipDmaSpeed(iop_base);
-       speed_value &= 0x07;
-       AscSetBank(iop_base, 0);
-       return speed_value;
-}
-
-static uchar AscSetIsaDmaSpeed(PortAddr iop_base, uchar speed_value)
-{
-       speed_value &= 0x07;
-       AscSetBank(iop_base, 1);
-       AscWriteChipDmaSpeed(iop_base, speed_value);
-       AscSetBank(iop_base, 0);
-       return AscGetIsaDmaSpeed(iop_base);
-}
-#endif /* CONFIG_ISA */
-
 static void AscInitAscDvcVar(ASC_DVC_VAR *asc_dvc)
 {
        int i;
@@ -8712,7 +8594,7 @@ static void AscInitAscDvcVar(ASC_DVC_VAR *asc_dvc)
        iop_base = asc_dvc->iop_base;
        asc_dvc->err_code = 0;
        if ((asc_dvc->bus_type &
-            (ASC_IS_ISA | ASC_IS_PCI | ASC_IS_EISA | ASC_IS_VL)) == 0) {
+            (ASC_IS_PCI | ASC_IS_EISA | ASC_IS_VL)) == 0) {
                asc_dvc->err_code |= ASC_IERR_NO_BUS_TYPE;
        }
        AscSetChipControl(iop_base, CC_HALT);
@@ -8767,17 +8649,6 @@ static void AscInitAscDvcVar(ASC_DVC_VAR *asc_dvc)
                                   (SEC_ACTIVE_NEGATE | SEC_SLEW_RATE));
        }
 
-       asc_dvc->cfg->isa_dma_speed = ASC_DEF_ISA_DMA_SPEED;
-#ifdef CONFIG_ISA
-       if ((asc_dvc->bus_type & ASC_IS_ISA) != 0) {
-               if (chip_version >= ASC_CHIP_MIN_VER_ISA_PNP) {
-                       AscSetChipIFC(iop_base, IFC_INIT_DEFAULT);
-                       asc_dvc->bus_type = ASC_IS_ISAPNP;
-               }
-               asc_dvc->cfg->isa_dma_channel =
-                   (uchar)AscGetIsaDmaChannel(iop_base);
-       }
-#endif /* CONFIG_ISA */
        for (i = 0; i <= ASC_MAX_TID; i++) {
                asc_dvc->cur_dvc_qng[i] = 0;
                asc_dvc->max_dvc_qng[i] = ASC_MAX_SCSI1_QNG;
@@ -9141,7 +9012,6 @@ static int AscInitFromEEP(ASC_DVC_VAR *asc_dvc)
        asc_dvc->cfg->sdtr_enable = eep_config->init_sdtr;
        asc_dvc->cfg->disc_enable = eep_config->disc_enable;
        asc_dvc->cfg->cmd_qng_enabled = eep_config->use_cmd_qng;
-       asc_dvc->cfg->isa_dma_speed = ASC_EEP_GET_DMA_SPD(eep_config);
        asc_dvc->start_motor = eep_config->start_motor;
        asc_dvc->dvc_cntl = eep_config->cntl;
        asc_dvc->no_scam = eep_config->no_scam;
@@ -9314,22 +9184,10 @@ static int AscInitSetConfig(struct pci_dev *pdev, struct Scsi_Host *shost)
                }
        } else
 #endif /* CONFIG_PCI */
-       if (asc_dvc->bus_type == ASC_IS_ISAPNP) {
-               if (AscGetChipVersion(iop_base, asc_dvc->bus_type)
-                   == ASC_CHIP_VER_ASYN_BUG) {
-                       asc_dvc->bug_fix_cntl |= ASC_BUG_FIX_ASYN_USE_SYN;
-               }
-       }
        if (AscSetChipScsiID(iop_base, asc_dvc->cfg->chip_scsi_id) !=
            asc_dvc->cfg->chip_scsi_id) {
                asc_dvc->err_code |= ASC_IERR_SET_SCSI_ID;
        }
-#ifdef CONFIG_ISA
-       if (asc_dvc->bus_type & ASC_IS_ISA) {
-               AscSetIsaDmaChannel(iop_base, asc_dvc->cfg->isa_dma_channel);
-               AscSetIsaDmaSpeed(iop_base, asc_dvc->cfg->isa_dma_speed);
-       }
-#endif /* CONFIG_ISA */
 
        asc_dvc->init_state |= ASC_INIT_STATE_END_SET_CFG;
 
@@ -10752,12 +10610,6 @@ static struct scsi_host_template advansys_template = {
        .eh_host_reset_handler = advansys_reset,
        .bios_param = advansys_biosparam,
        .slave_configure = advansys_slave_configure,
-       /*
-        * Because the driver may control an ISA adapter 'unchecked_isa_dma'
-        * must be set. The flag will be cleared in advansys_board_found
-        * for non-ISA adapters.
-        */
-       .unchecked_isa_dma = true,
 };
 
 static int advansys_wide_init_chip(struct Scsi_Host *shost)
@@ -10923,29 +10775,21 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
                 */
                switch (asc_dvc_varp->bus_type) {
 #ifdef CONFIG_ISA
-               case ASC_IS_ISA:
-                       shost->unchecked_isa_dma = true;
-                       share_irq = 0;
-                       break;
                case ASC_IS_VL:
-                       shost->unchecked_isa_dma = false;
                        share_irq = 0;
                        break;
                case ASC_IS_EISA:
-                       shost->unchecked_isa_dma = false;
                        share_irq = IRQF_SHARED;
                        break;
 #endif /* CONFIG_ISA */
 #ifdef CONFIG_PCI
                case ASC_IS_PCI:
-                       shost->unchecked_isa_dma = false;
                        share_irq = IRQF_SHARED;
                        break;
 #endif /* CONFIG_PCI */
                default:
                        shost_printk(KERN_ERR, shost, "unknown adapter type: "
                                        "%d\n", asc_dvc_varp->bus_type);
-                       shost->unchecked_isa_dma = false;
                        share_irq = 0;
                        break;
                }
@@ -10964,7 +10808,6 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
                 * For Wide boards set PCI information before calling
                 * AdvInitGetConfig().
                 */
-               shost->unchecked_isa_dma = false;
                share_irq = IRQF_SHARED;
                ASC_DBG(2, "AdvInitGetConfig()\n");
 
@@ -11000,7 +10843,7 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
                ep->init_sdtr = asc_dvc_varp->cfg->sdtr_enable;
                ep->disc_enable = asc_dvc_varp->cfg->disc_enable;
                ep->use_cmd_qng = asc_dvc_varp->cfg->cmd_qng_enabled;
-               ASC_EEP_SET_DMA_SPD(ep, asc_dvc_varp->cfg->isa_dma_speed);
+               ASC_EEP_SET_DMA_SPD(ep, ASC_DEF_ISA_DMA_SPEED);
                ep->start_motor = asc_dvc_varp->start_motor;
                ep->cntl = asc_dvc_varp->dvc_cntl;
                ep->no_scam = asc_dvc_varp->no_scam;
@@ -11228,22 +11071,6 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
 
        /* Register DMA Channel for Narrow boards. */
        shost->dma_channel = NO_ISA_DMA;        /* Default to no ISA DMA. */
-#ifdef CONFIG_ISA
-       if (ASC_NARROW_BOARD(boardp)) {
-               /* Register DMA channel for ISA bus. */
-               if (asc_dvc_varp->bus_type & ASC_IS_ISA) {
-                       shost->dma_channel = asc_dvc_varp->cfg->isa_dma_channel;
-                       ret = request_dma(shost->dma_channel, DRV_NAME);
-                       if (ret) {
-                               shost_printk(KERN_ERR, shost, "request_dma() "
-                                               "%d failed %d\n",
-                                               shost->dma_channel, ret);
-                               goto err_unmap;
-                       }
-                       AscEnableIsaDma(shost->dma_channel);
-               }
-       }
-#endif /* CONFIG_ISA */
 
        /* Register IRQ Number. */
        ASC_DBG(2, "request_irq(%d, %p)\n", boardp->irq, shost);
@@ -11262,7 +11089,7 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
                        shost_printk(KERN_ERR, shost, "request_irq(): IRQ 0x%x "
                                        "failed with %d\n", boardp->irq, ret);
                }
-               goto err_free_dma;
+               goto err_unmap;
        }
 
        /*
@@ -11314,11 +11141,6 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
                advansys_wide_free_mem(boardp);
  err_free_irq:
        free_irq(boardp->irq, shost);
- err_free_dma:
-#ifdef CONFIG_ISA
-       if (shost->dma_channel != NO_ISA_DMA)
-               free_dma(shost->dma_channel);
-#endif
  err_unmap:
        if (boardp->ioremap_addr)
                iounmap(boardp->ioremap_addr);
@@ -11339,12 +11161,7 @@ static int advansys_release(struct Scsi_Host *shost)
        ASC_DBG(1, "begin\n");
        scsi_remove_host(shost);
        free_irq(board->irq, shost);
-#ifdef CONFIG_ISA
-       if (shost->dma_channel != NO_ISA_DMA) {
-               ASC_DBG(1, "free_dma()\n");
-               free_dma(shost->dma_channel);
-       }
-#endif
+
        if (ASC_NARROW_BOARD(board)) {
                dma_unmap_single(board->dev,
                                        board->dvc_var.asc_dvc_var.overrun_dma,
@@ -11366,79 +11183,13 @@ static PortAddr _asc_def_iop_base[ASC_IOADR_TABLE_MAX_IX] = {
        0x0210, 0x0230, 0x0250, 0x0330
 };
 
-/*
- * The ISA IRQ number is found in bits 2 and 3 of the CfgLsw.  It decodes as:
- * 00: 10
- * 01: 11
- * 10: 12
- * 11: 15
- */
-static unsigned int advansys_isa_irq_no(PortAddr iop_base)
-{
-       unsigned short cfg_lsw = AscGetChipCfgLsw(iop_base);
-       unsigned int chip_irq = ((cfg_lsw >> 2) & 0x03) + 10;
-       if (chip_irq == 13)
-               chip_irq = 15;
-       return chip_irq;
-}
-
-static int advansys_isa_probe(struct device *dev, unsigned int id)
-{
-       int err = -ENODEV;
-       PortAddr iop_base = _asc_def_iop_base[id];
-       struct Scsi_Host *shost;
-       struct asc_board *board;
-
-       if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) {
-               ASC_DBG(1, "I/O port 0x%x busy\n", iop_base);
-               return -ENODEV;
-       }
-       ASC_DBG(1, "probing I/O port 0x%x\n", iop_base);
-       if (!AscFindSignature(iop_base))
-               goto release_region;
-       if (!(AscGetChipVersion(iop_base, ASC_IS_ISA) & ASC_CHIP_VER_ISA_BIT))
-               goto release_region;
-
-       err = -ENOMEM;
-       shost = scsi_host_alloc(&advansys_template, sizeof(*board));
-       if (!shost)
-               goto release_region;
-
-       board = shost_priv(shost);
-       board->irq = advansys_isa_irq_no(iop_base);
-       board->dev = dev;
-       board->shost = shost;
-
-       err = advansys_board_found(shost, iop_base, ASC_IS_ISA);
-       if (err)
-               goto free_host;
-
-       dev_set_drvdata(dev, shost);
-       return 0;
-
- free_host:
-       scsi_host_put(shost);
- release_region:
-       release_region(iop_base, ASC_IOADR_GAP);
-       return err;
-}
-
-static void advansys_isa_remove(struct device *dev, unsigned int id)
+static void advansys_vlb_remove(struct device *dev, unsigned int id)
 {
        int ioport = _asc_def_iop_base[id];
        advansys_release(dev_get_drvdata(dev));
        release_region(ioport, ASC_IOADR_GAP);
 }
 
-static struct isa_driver advansys_isa_driver = {
-       .probe          = advansys_isa_probe,
-       .remove         = advansys_isa_remove,
-       .driver = {
-               .owner  = THIS_MODULE,
-               .name   = DRV_NAME,
-       },
-};
-
 /*
  * The VLB IRQ number is found in bits 2 to 4 of the CfgLsw.  It decodes as:
  * 000: invalid
@@ -11507,7 +11258,7 @@ static int advansys_vlb_probe(struct device *dev, unsigned int id)
 
 static struct isa_driver advansys_vlb_driver = {
        .probe          = advansys_vlb_probe,
-       .remove         = advansys_isa_remove,
+       .remove         = advansys_vlb_remove,
        .driver = {
                .owner  = THIS_MODULE,
                .name   = "advansys_vlb",
@@ -11757,15 +11508,10 @@ static int __init advansys_init(void)
 {
        int error;
 
-       error = isa_register_driver(&advansys_isa_driver,
-                                   ASC_IOADR_TABLE_MAX_IX);
-       if (error)
-               goto fail;
-
        error = isa_register_driver(&advansys_vlb_driver,
                                    ASC_IOADR_TABLE_MAX_IX);
        if (error)
-               goto unregister_isa;
+               goto fail;
 
        error = eisa_driver_register(&advansys_eisa_driver);
        if (error)
@@ -11781,8 +11527,6 @@ static int __init advansys_init(void)
        eisa_driver_unregister(&advansys_eisa_driver);
  unregister_vlb:
        isa_unregister_driver(&advansys_vlb_driver);
- unregister_isa:
-       isa_unregister_driver(&advansys_isa_driver);
  fail:
        return error;
 }
@@ -11792,7 +11536,6 @@ static void __exit advansys_exit(void)
        pci_unregister_driver(&advansys_pci_driver);
        eisa_driver_unregister(&advansys_eisa_driver);
        isa_unregister_driver(&advansys_vlb_driver);
-       isa_unregister_driver(&advansys_isa_driver);
 }
 
 module_init(advansys_init);