This driver hasn't seen any recent bug fixing and is one of the last drivers using the scsi_module.c infrastruture that has been deprecated 15 years ago. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- drivers/scsi/Kconfig | 8 --- drivers/scsi/Makefile | 1 - drivers/scsi/mvme147.c | 151 ------------------------------------------------- drivers/scsi/mvme147.h | 25 -------- drivers/scsi/wd33c93.c | 5 -- 5 files changed, 190 deletions(-) delete mode 100644 drivers/scsi/mvme147.c delete mode 100644 drivers/scsi/mvme147.h diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 11e89e56b865..a95084008fe0 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -1390,14 +1390,6 @@ config SCSI_MAC_ESP To compile this driver as a module, choose M here: the module will be called mac_esp. -config MVME147_SCSI - bool "WD33C93 SCSI driver for MVME147" - depends on MVME147 && SCSI=y - select SCSI_SPI_ATTRS - help - Support for the on-board SCSI controller on the Motorola MVME147 - single-board computer. - config MVME16x_SCSI tristate "NCR53C710 SCSI driver for MVME16x" depends on MVME16x && SCSI diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index d5135efbf9cd..9575f291acda 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile @@ -51,7 +51,6 @@ obj-$(CONFIG_SCSI_ZORRO7XX) += 53c700.o zorro7xx.o obj-$(CONFIG_A3000_SCSI) += a3000.o wd33c93.o obj-$(CONFIG_A2091_SCSI) += a2091.o wd33c93.o obj-$(CONFIG_GVP11_SCSI) += gvp11.o wd33c93.o -obj-$(CONFIG_MVME147_SCSI) += mvme147.o wd33c93.o obj-$(CONFIG_SGIWD93_SCSI) += sgiwd93.o wd33c93.o obj-$(CONFIG_ATARI_SCSI) += atari_scsi.o obj-$(CONFIG_MAC_SCSI) += mac_scsi.o diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c deleted file mode 100644 index e6b2b681fda3..000000000000 --- a/drivers/scsi/mvme147.c +++ /dev/null @@ -1,151 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/types.h> -#include <linux/mm.h> -#include <linux/blkdev.h> -#include <linux/interrupt.h> - -#include <asm/page.h> -#include <asm/pgtable.h> -#include <asm/mvme147hw.h> -#include <asm/irq.h> - -#include "scsi.h" -#include <scsi/scsi_host.h> -#include "wd33c93.h" -#include "mvme147.h" - -#include <linux/stat.h> - - -static irqreturn_t mvme147_intr(int irq, void *data) -{ - struct Scsi_Host *instance = data; - - if (irq == MVME147_IRQ_SCSI_PORT) - wd33c93_intr(instance); - else - m147_pcc->dma_intr = 0x89; /* Ack and enable ints */ - return IRQ_HANDLED; -} - -static int dma_setup(struct scsi_cmnd *cmd, int dir_in) -{ - struct Scsi_Host *instance = cmd->device->host; - struct WD33C93_hostdata *hdata = shost_priv(instance); - unsigned char flags = 0x01; - unsigned long addr = virt_to_bus(cmd->SCp.ptr); - - /* setup dma direction */ - if (!dir_in) - flags |= 0x04; - - /* remember direction */ - hdata->dma_dir = dir_in; - - if (dir_in) { - /* invalidate any cache */ - cache_clear(addr, cmd->SCp.this_residual); - } else { - /* push any dirty cache */ - cache_push(addr, cmd->SCp.this_residual); - } - - /* start DMA */ - m147_pcc->dma_bcr = cmd->SCp.this_residual | (1 << 24); - m147_pcc->dma_dadr = addr; - m147_pcc->dma_cntrl = flags; - - /* return success */ - return 0; -} - -static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, - int status) -{ - m147_pcc->dma_cntrl = 0; -} - -int mvme147_detect(struct scsi_host_template *tpnt) -{ - static unsigned char called = 0; - struct Scsi_Host *instance; - wd33c93_regs regs; - struct WD33C93_hostdata *hdata; - - if (!MACH_IS_MVME147 || called) - return 0; - called++; - - tpnt->proc_name = "MVME147"; - tpnt->show_info = wd33c93_show_info, - tpnt->write_info = wd33c93_write_info, - - instance = scsi_register(tpnt, sizeof(struct WD33C93_hostdata)); - if (!instance) - goto err_out; - - instance->base = 0xfffe4000; - instance->irq = MVME147_IRQ_SCSI_PORT; - regs.SASR = (volatile unsigned char *)0xfffe4000; - regs.SCMD = (volatile unsigned char *)0xfffe4001; - hdata = shost_priv(instance); - hdata->no_sync = 0xff; - hdata->fast = 0; - hdata->dma_mode = CTRL_DMA; - wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10); - - if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, - "MVME147 SCSI PORT", instance)) - goto err_unregister; - if (request_irq(MVME147_IRQ_SCSI_DMA, mvme147_intr, 0, - "MVME147 SCSI DMA", instance)) - goto err_free_irq; -#if 0 /* Disabled; causes problems booting */ - m147_pcc->scsi_interrupt = 0x10; /* Assert SCSI bus reset */ - udelay(100); - m147_pcc->scsi_interrupt = 0x00; /* Negate SCSI bus reset */ - udelay(2000); - m147_pcc->scsi_interrupt = 0x40; /* Clear bus reset interrupt */ -#endif - m147_pcc->scsi_interrupt = 0x09; /* Enable interrupt */ - - m147_pcc->dma_cntrl = 0x00; /* ensure DMA is stopped */ - m147_pcc->dma_intr = 0x89; /* Ack and enable ints */ - - return 1; - -err_free_irq: - free_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr); -err_unregister: - scsi_unregister(instance); -err_out: - return 0; -} - -static struct scsi_host_template driver_template = { - .proc_name = "MVME147", - .name = "MVME147 built-in SCSI", - .detect = mvme147_detect, - .release = mvme147_release, - .queuecommand = wd33c93_queuecommand, - .eh_abort_handler = wd33c93_abort, - .eh_host_reset_handler = wd33c93_host_reset, - .can_queue = CAN_QUEUE, - .this_id = 7, - .sg_tablesize = SG_ALL, - .cmd_per_lun = CMD_PER_LUN, - .use_clustering = ENABLE_CLUSTERING -}; - - -#include "scsi_module.c" - -int mvme147_release(struct Scsi_Host *instance) -{ -#ifdef MODULE - /* XXX Make sure DMA is stopped! */ - free_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr); - free_irq(MVME147_IRQ_SCSI_DMA, mvme147_intr); -#endif - return 1; -} diff --git a/drivers/scsi/mvme147.h b/drivers/scsi/mvme147.h deleted file mode 100644 index f75ff58ddcd0..000000000000 --- a/drivers/scsi/mvme147.h +++ /dev/null @@ -1,25 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef MVME147_H - -/* $Id: mvme147.h,v 1.4 1997/01/19 23:07:10 davem Exp $ - * - * Header file for the MVME147 built-in SCSI controller for Linux - * - * Written and (C) 1993, Hamish Macdonald, see mvme147.c for more info - * - */ - -#include <linux/types.h> - -int mvme147_detect(struct scsi_host_template *); -int mvme147_release(struct Scsi_Host *); - -#ifndef CMD_PER_LUN -#define CMD_PER_LUN 2 -#endif - -#ifndef CAN_QUEUE -#define CAN_QUEUE 16 -#endif - -#endif /* MVME147_H */ diff --git a/drivers/scsi/wd33c93.c b/drivers/scsi/wd33c93.c index 74be04f2357c..00a53cf138d1 100644 --- a/drivers/scsi/wd33c93.c +++ b/drivers/scsi/wd33c93.c @@ -1540,11 +1540,6 @@ reset_wd33c93(struct Scsi_Host *instance) DEFAULT_SX_OFF, 0, hostdata->sx_table)); write_wd33c93(regs, WD_COMMAND, WD_CMD_RESET); - -#ifdef CONFIG_MVME147_SCSI - udelay(25); /* The old wd33c93 on MVME147 needs this, at least */ -#endif - while (!(read_aux_stat(regs) & ASR_INT)) ; sr = read_wd33c93(regs, WD_SCSI_STATUS); -- 2.14.2