ncr5380: Remove PSEUDO_DMA macro
For those wrapper drivers which only implement Programmed IO, have NCR5380_dma_xfer_len() evaluate to zero. That allows PDMA to be easily disabled at run-time and so the PSEUDO_DMA macro is no longer needed. Also remove the spin counters used for debugging pseudo DMA drivers. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Hannes Reinecke <hare@suse.com> Tested-by: Michael Schmitz <schmitzmic@gmail.com> Tested-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
1bb4600245
commit
f825e40b23
|
@ -468,35 +468,10 @@ static void prepare_info(struct Scsi_Host *instance)
|
|||
#endif
|
||||
#ifdef PARITY
|
||||
"PARITY "
|
||||
#endif
|
||||
#ifdef PSEUDO_DMA
|
||||
"PSEUDO_DMA "
|
||||
#endif
|
||||
"");
|
||||
}
|
||||
|
||||
#ifdef PSEUDO_DMA
|
||||
static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance,
|
||||
char *buffer, int length)
|
||||
{
|
||||
struct NCR5380_hostdata *hostdata = shost_priv(instance);
|
||||
|
||||
hostdata->spin_max_r = 0;
|
||||
hostdata->spin_max_w = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||
struct Scsi_Host *instance)
|
||||
{
|
||||
struct NCR5380_hostdata *hostdata = shost_priv(instance);
|
||||
|
||||
seq_printf(m, "Highwater I/O busy spin counts: write %d, read %d\n",
|
||||
hostdata->spin_max_w, hostdata->spin_max_r);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* NCR5380_init - initialise an NCR5380
|
||||
* @instance: adapter to configure
|
||||
|
@ -1436,7 +1411,6 @@ timeout:
|
|||
return -1;
|
||||
}
|
||||
|
||||
#if defined(PSEUDO_DMA)
|
||||
/*
|
||||
* Function : int NCR5380_transfer_dma (struct Scsi_Host *instance,
|
||||
* unsigned char *phase, int *count, unsigned char **data)
|
||||
|
@ -1592,7 +1566,6 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance,
|
|||
*phase = NCR5380_read(STATUS_REG) & PHASE_MASK;
|
||||
return foo;
|
||||
}
|
||||
#endif /* PSEUDO_DMA */
|
||||
|
||||
/*
|
||||
* Function : NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||
|
@ -1683,7 +1656,6 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
|||
* in an unconditional loop.
|
||||
*/
|
||||
|
||||
#if defined(PSEUDO_DMA)
|
||||
transfersize = 0;
|
||||
if (!cmd->device->borken)
|
||||
transfersize = NCR5380_dma_xfer_len(instance, cmd, phase);
|
||||
|
@ -1706,9 +1678,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
|||
/* XXX - need to source or sink data here, as appropriate */
|
||||
} else
|
||||
cmd->SCp.this_residual -= transfersize - len;
|
||||
} else
|
||||
#endif /* PSEUDO_DMA */
|
||||
{
|
||||
} else {
|
||||
/* Break up transfer into 3 ms chunks,
|
||||
* presuming 6 accesses per handshake.
|
||||
*/
|
||||
|
|
|
@ -256,10 +256,6 @@ struct NCR5380_hostdata {
|
|||
struct work_struct main_task;
|
||||
#ifdef SUPPORT_TAGS
|
||||
struct tag_alloc TagAlloc[8][8]; /* 8 targets and 8 LUNs */
|
||||
#endif
|
||||
#ifdef PSEUDO_DMA
|
||||
unsigned spin_max_r;
|
||||
unsigned spin_max_w;
|
||||
#endif
|
||||
struct workqueue_struct *work_q;
|
||||
unsigned long accesses_per_ms; /* chip register accesses per ms */
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
|
||||
#include <scsi/scsi_host.h>
|
||||
|
||||
#define PSEUDO_DMA
|
||||
|
||||
#define priv(host) ((struct NCR5380_hostdata *)(host)->hostdata)
|
||||
#define NCR5380_read(reg) cumanascsi_read(instance, reg)
|
||||
#define NCR5380_write(reg, value) cumanascsi_write(instance, reg, value)
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include <scsi/scsi_host.h>
|
||||
|
||||
/*#define PSEUDO_DMA*/
|
||||
#define DONT_USE_INTR
|
||||
|
||||
#define priv(host) ((struct NCR5380_hostdata *)(host)->hostdata)
|
||||
|
@ -24,7 +23,7 @@
|
|||
#define NCR5380_write(reg, value) \
|
||||
writeb(value, priv(instance)->base + ((reg) << 2))
|
||||
|
||||
#define NCR5380_dma_xfer_len(instance, cmd, phase) (cmd->transfersize)
|
||||
#define NCR5380_dma_xfer_len(instance, cmd, phase) (0)
|
||||
|
||||
#define NCR5380_queue_command oakscsi_queue_command
|
||||
#define NCR5380_info oakscsi_info
|
||||
|
|
|
@ -39,6 +39,10 @@
|
|||
#define NCR5380_read(reg) inb(instance->io_port + reg)
|
||||
#define NCR5380_write(reg, value) outb(value, instance->io_port + reg)
|
||||
|
||||
#define NCR5380_dma_xfer_len(instance, cmd, phase) (0)
|
||||
#define NCR5380_pread(instance, dst, len) (0)
|
||||
#define NCR5380_pwrite(instance, src, len) (0)
|
||||
|
||||
#define NCR5380_implementation_fields /* none */
|
||||
|
||||
#include "NCR5380.h"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#define PSEUDO_DMA
|
||||
#define DONT_USE_INTR
|
||||
|
||||
/*
|
||||
|
@ -352,8 +351,6 @@ static inline int NCR5380_pread(struct Scsi_Host *instance, unsigned char *dst,
|
|||
while (!(NCR5380_read(DTC_CONTROL_REG) & D_CR_ACCESS))
|
||||
++i;
|
||||
rtrc(0);
|
||||
if (i > hostdata->spin_max_r)
|
||||
hostdata->spin_max_r = i;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -400,8 +397,6 @@ static inline int NCR5380_pwrite(struct Scsi_Host *instance, unsigned char *src,
|
|||
rtrc(7);
|
||||
/* Check for parity error here. fixme. */
|
||||
rtrc(0);
|
||||
if (i > hostdata->spin_max_w)
|
||||
hostdata->spin_max_w = i;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -440,8 +435,6 @@ static struct scsi_host_template driver_template = {
|
|||
.detect = dtc_detect,
|
||||
.release = dtc_release,
|
||||
.proc_name = "dtc3x80",
|
||||
.show_info = dtc_show_info,
|
||||
.write_info = dtc_write_info,
|
||||
.info = dtc_info,
|
||||
.queuecommand = dtc_queue_command,
|
||||
.eh_abort_handler = dtc_abort,
|
||||
|
|
|
@ -27,8 +27,6 @@
|
|||
#define NCR5380_abort dtc_abort
|
||||
#define NCR5380_bus_reset dtc_bus_reset
|
||||
#define NCR5380_info dtc_info
|
||||
#define NCR5380_show_info dtc_show_info
|
||||
#define NCR5380_write_info dtc_write_info
|
||||
|
||||
/* 15 12 11 10
|
||||
1001 1100 0000 0000 */
|
||||
|
|
|
@ -57,7 +57,6 @@
|
|||
*/
|
||||
|
||||
#define AUTOPROBE_IRQ
|
||||
#define PSEUDO_DMA
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <linux/blkdev.h>
|
||||
|
|
|
@ -70,7 +70,6 @@
|
|||
#define NCR5380_pread generic_NCR5380_pread
|
||||
#define NCR5380_pwrite generic_NCR5380_pwrite
|
||||
#define NCR5380_info generic_NCR5380_info
|
||||
#define NCR5380_show_info generic_NCR5380_show_info
|
||||
|
||||
#define BOARD_NCR5380 0
|
||||
#define BOARD_NCR53C400 1
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
|
||||
/* Definitions for the core NCR5380 driver. */
|
||||
|
||||
#define PSEUDO_DMA
|
||||
|
||||
#define NCR5380_implementation_fields unsigned char *pdma_base
|
||||
|
||||
#define NCR5380_read(reg) macscsi_read(instance, reg)
|
||||
|
@ -46,8 +44,6 @@
|
|||
#define NCR5380_abort macscsi_abort
|
||||
#define NCR5380_bus_reset macscsi_bus_reset
|
||||
#define NCR5380_info macscsi_info
|
||||
#define NCR5380_show_info macscsi_show_info
|
||||
#define NCR5380_write_info macscsi_write_info
|
||||
|
||||
#include "NCR5380.h"
|
||||
|
||||
|
@ -111,7 +107,6 @@ static int __init mac_scsi_setup(char *str)
|
|||
__setup("mac5380=", mac_scsi_setup);
|
||||
#endif /* !MODULE */
|
||||
|
||||
#ifdef PSEUDO_DMA
|
||||
/*
|
||||
Pseudo-DMA: (Ove Edlund)
|
||||
The code attempts to catch bus errors that occur if one for example
|
||||
|
@ -303,7 +298,6 @@ static int macscsi_pwrite(struct Scsi_Host *instance,
|
|||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int macscsi_dma_xfer_len(struct Scsi_Host *instance,
|
||||
struct scsi_cmnd *cmd)
|
||||
|
@ -324,8 +318,6 @@ static int macscsi_dma_xfer_len(struct Scsi_Host *instance,
|
|||
static struct scsi_host_template mac_scsi_template = {
|
||||
.module = THIS_MODULE,
|
||||
.proc_name = DRV_MODULE_NAME,
|
||||
.show_info = macscsi_show_info,
|
||||
.write_info = macscsi_write_info,
|
||||
.name = "Macintosh NCR5380 SCSI",
|
||||
.info = macscsi_info,
|
||||
.queuecommand = macscsi_queue_command,
|
||||
|
@ -351,9 +343,7 @@ static int __init mac_scsi_probe(struct platform_device *pdev)
|
|||
if (!pio_mem)
|
||||
return -ENODEV;
|
||||
|
||||
#ifdef PSEUDO_DMA
|
||||
pdma_mem = platform_get_resource(pdev, IORESOURCE_MEM, 1);
|
||||
#endif
|
||||
|
||||
irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#define PSEUDO_DMA
|
||||
|
||||
/*
|
||||
* This driver adapted from Drew Eckhardt's Trantor T128 driver
|
||||
*
|
||||
|
@ -479,7 +477,6 @@ static inline int NCR5380_pread (struct Scsi_Host *instance, unsigned char *dst,
|
|||
P_DATA_REG_OFFSET);
|
||||
register int i = len;
|
||||
int ii = 0;
|
||||
struct NCR5380_hostdata *hostdata = shost_priv(instance);
|
||||
|
||||
while ( !(inb(instance->io_port + P_STATUS_REG_OFFSET) & P_ST_RDY) )
|
||||
++ii;
|
||||
|
@ -492,8 +489,6 @@ static inline int NCR5380_pread (struct Scsi_Host *instance, unsigned char *dst,
|
|||
instance->host_no);
|
||||
return -1;
|
||||
}
|
||||
if (ii > hostdata->spin_max_r)
|
||||
hostdata->spin_max_r = ii;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -516,7 +511,6 @@ static inline int NCR5380_pwrite (struct Scsi_Host *instance, unsigned char *src
|
|||
register unsigned short reg = (instance->io_port + P_DATA_REG_OFFSET);
|
||||
register int i = len;
|
||||
int ii = 0;
|
||||
struct NCR5380_hostdata *hostdata = shost_priv(instance);
|
||||
|
||||
while ( !((inb(instance->io_port + P_STATUS_REG_OFFSET)) & P_ST_RDY) )
|
||||
++ii;
|
||||
|
@ -529,8 +523,6 @@ static inline int NCR5380_pwrite (struct Scsi_Host *instance, unsigned char *src
|
|||
instance->host_no);
|
||||
return -1;
|
||||
}
|
||||
if (ii > hostdata->spin_max_w)
|
||||
hostdata->spin_max_w = ii;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -550,8 +542,6 @@ static struct scsi_host_template driver_template = {
|
|||
.detect = pas16_detect,
|
||||
.release = pas16_release,
|
||||
.proc_name = "pas16",
|
||||
.show_info = pas16_show_info,
|
||||
.write_info = pas16_write_info,
|
||||
.info = pas16_info,
|
||||
.queuecommand = pas16_queue_command,
|
||||
.eh_abort_handler = pas16_abort,
|
||||
|
|
|
@ -109,8 +109,6 @@
|
|||
#define NCR5380_abort pas16_abort
|
||||
#define NCR5380_bus_reset pas16_bus_reset
|
||||
#define NCR5380_info pas16_info
|
||||
#define NCR5380_show_info pas16_show_info
|
||||
#define NCR5380_write_info pas16_write_info
|
||||
|
||||
/* 15 14 12 10 7 5 3
|
||||
1101 0100 1010 1000 */
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#define PSEUDO_DMA
|
||||
|
||||
/*
|
||||
* Trantor T128/T128F/T228 driver
|
||||
* Note : architecturally, the T100 and T130 are different and won't
|
||||
|
@ -394,8 +392,6 @@ static struct scsi_host_template driver_template = {
|
|||
.detect = t128_detect,
|
||||
.release = t128_release,
|
||||
.proc_name = "t128",
|
||||
.show_info = t128_show_info,
|
||||
.write_info = t128_write_info,
|
||||
.info = t128_info,
|
||||
.queuecommand = t128_queue_command,
|
||||
.eh_abort_handler = t128_abort,
|
||||
|
|
|
@ -83,8 +83,6 @@
|
|||
#define NCR5380_abort t128_abort
|
||||
#define NCR5380_bus_reset t128_bus_reset
|
||||
#define NCR5380_info t128_info
|
||||
#define NCR5380_show_info t128_show_info
|
||||
#define NCR5380_write_info t128_write_info
|
||||
|
||||
/* 15 14 12 10 7 5 3
|
||||
1101 0100 1010 1000 */
|
||||
|
|
Loading…
Reference in New Issue