[PATCH v2 03/22] ncr5380: Remove REAL_DMA and REAL_DMA_POLL macros

2016-03-15 Thread Finn Thain
For the NCR5380.c core driver, these macros are never used.
If REAL_DMA were to be defined, compilation would fail.

For the atari_NCR5380.c core driver, REAL_DMA is always defined.

Hence these macros are pointless.

Signed-off-by: Finn Thain 
Reviewed-by: Hannes Reinecke 

---
 drivers/scsi/NCR5380.c   |  218 +--
 drivers/scsi/NCR5380.h   |  112 --
 drivers/scsi/atari_NCR5380.c |   62 +---
 drivers/scsi/atari_scsi.c|   32 --
 drivers/scsi/sun3_scsi.c |   13 --
 5 files changed, 22 insertions(+), 415 deletions(-)

Index: linux/drivers/scsi/NCR5380.c
===
--- linux.orig/drivers/scsi/NCR5380.c   2016-03-16 14:18:03.0 +1100
+++ linux/drivers/scsi/NCR5380.c2016-03-16 14:18:05.0 +1100
@@ -35,18 +35,10 @@
  * code so that everything does the same thing that's done at the
  * end of a pseudo-DMA read operation.
  *
- * 2.  Fix REAL_DMA (interrupt driven, polled works fine) -
- * basically, transfer size needs to be reduced by one
- * and the last byte read as is done with PSEUDO_DMA.
- *
  * 4.  Test SCSI-II tagged queueing (I have no devices which support
  * tagged queueing)
  */
 
-#ifndef notyet
-#undef REAL_DMA
-#endif
-
 #ifdef BOARD_REQUIRES_NO_DELAY
 #define io_recovery_delay(x)
 #else
@@ -131,12 +123,6 @@
  *
  * PSEUDO_DMA - if defined, PSEUDO DMA is used during the data transfer phases.
  *
- * REAL_DMA - if defined, REAL DMA is used during the data transfer phases.
- *
- * REAL_DMA_POLL - if defined, REAL DMA is used but the driver doesn't
- * rely on phase mismatch and EOP interrupts to determine end
- * of phase.
- *
  * These macros MUST be defined :
  *
  * NCR5380_read(register)  - read from the specified register
@@ -147,15 +133,9 @@
  * specific implementation of the NCR5380
  *
  * Either real DMA *or* pseudo DMA may be implemented
- * REAL functions :
- * NCR5380_REAL_DMA should be defined if real DMA is to be used.
  * Note that the DMA setup functions should return the number of bytes
  * that they were able to program the controller for.
  *
- * Also note that generic i386/PC versions of these macros are
- * available as NCR5380_i386_dma_write_setup,
- * NCR5380_i386_dma_read_setup, and NCR5380_i386_dma_residual.
- *
  * NCR5380_dma_write_setup(instance, src, count) - initialize
  * NCR5380_dma_read_setup(instance, dst, count) - initialize
  * NCR5380_dma_residual(instance); - residual count
@@ -486,12 +466,6 @@ static void prepare_info(struct Scsi_Hos
 #ifdef DIFFERENTIAL
 "DIFFERENTIAL "
 #endif
-#ifdef REAL_DMA
-"REAL_DMA "
-#endif
-#ifdef REAL_DMA_POLL
-"REAL_DMA_POLL "
-#endif
 #ifdef PARITY
 "PARITY "
 #endif
@@ -551,9 +525,8 @@ static int NCR5380_init(struct Scsi_Host
hostdata->id_higher_mask |= i;
for (i = 0; i < 8; ++i)
hostdata->busy[i] = 0;
-#ifdef REAL_DMA
-   hostdata->dmalen = 0;
-#endif
+   hostdata->dma_len = 0;
+
spin_lock_init(>lock);
hostdata->connected = NULL;
hostdata->sensing = NULL;
@@ -850,11 +823,7 @@ static void NCR5380_main(struct work_str
requeue_cmd(instance, cmd);
}
}
-   if (hostdata->connected
-#ifdef REAL_DMA
-   && !hostdata->dmalen
-#endif
-   ) {
+   if (hostdata->connected && !hostdata->dma_len) {
dsprintk(NDEBUG_MAIN, instance, "main: performing 
information transfer\n");
NCR5380_information_transfer(instance);
done = 0;
@@ -919,34 +888,6 @@ static irqreturn_t NCR5380_intr(int irq,
dsprintk(NDEBUG_INTR, instance, "IRQ %d, BASR 0x%02x, SR 
0x%02x, MR 0x%02x\n",
 irq, basr, sr, mr);
 
-#if defined(REAL_DMA)
-   if ((mr & MR_DMA_MODE) || (mr & MR_MONITOR_BSY)) {
-   /* Probably End of DMA, Phase Mismatch or Loss of BSY.
-* We ack IRQ after clearing Mode Register. Workarounds
-* for End of DMA errata need to happen in DMA Mode.
-*/
-
-   dsprintk(NDEBUG_INTR, instance, "interrupt in DMA 
mode\n");
-
-   int transferred;
-
-   if (!hostdata->connected)
-   panic("scsi%d : DMA interrupt with no connected 
cmd\n",
- instance->hostno);
-
-   transferred = hostdata->dmalen - 
NCR5380_dma_residual(instance);
-   hostdata->connected->SCp.this_residual -= transferred;
-   hostdata->connected->SCp.ptr += transferred;
-   hostdata->dmalen = 0;
-
-   /* 

[PATCH v2 03/22] ncr5380: Remove REAL_DMA and REAL_DMA_POLL macros

2016-03-15 Thread Finn Thain
For the NCR5380.c core driver, these macros are never used.
If REAL_DMA were to be defined, compilation would fail.

For the atari_NCR5380.c core driver, REAL_DMA is always defined.

Hence these macros are pointless.

Signed-off-by: Finn Thain 
Reviewed-by: Hannes Reinecke 

---
 drivers/scsi/NCR5380.c   |  218 +--
 drivers/scsi/NCR5380.h   |  112 --
 drivers/scsi/atari_NCR5380.c |   62 +---
 drivers/scsi/atari_scsi.c|   32 --
 drivers/scsi/sun3_scsi.c |   13 --
 5 files changed, 22 insertions(+), 415 deletions(-)

Index: linux/drivers/scsi/NCR5380.c
===
--- linux.orig/drivers/scsi/NCR5380.c   2016-03-16 14:18:03.0 +1100
+++ linux/drivers/scsi/NCR5380.c2016-03-16 14:18:05.0 +1100
@@ -35,18 +35,10 @@
  * code so that everything does the same thing that's done at the
  * end of a pseudo-DMA read operation.
  *
- * 2.  Fix REAL_DMA (interrupt driven, polled works fine) -
- * basically, transfer size needs to be reduced by one
- * and the last byte read as is done with PSEUDO_DMA.
- *
  * 4.  Test SCSI-II tagged queueing (I have no devices which support
  * tagged queueing)
  */
 
-#ifndef notyet
-#undef REAL_DMA
-#endif
-
 #ifdef BOARD_REQUIRES_NO_DELAY
 #define io_recovery_delay(x)
 #else
@@ -131,12 +123,6 @@
  *
  * PSEUDO_DMA - if defined, PSEUDO DMA is used during the data transfer phases.
  *
- * REAL_DMA - if defined, REAL DMA is used during the data transfer phases.
- *
- * REAL_DMA_POLL - if defined, REAL DMA is used but the driver doesn't
- * rely on phase mismatch and EOP interrupts to determine end
- * of phase.
- *
  * These macros MUST be defined :
  *
  * NCR5380_read(register)  - read from the specified register
@@ -147,15 +133,9 @@
  * specific implementation of the NCR5380
  *
  * Either real DMA *or* pseudo DMA may be implemented
- * REAL functions :
- * NCR5380_REAL_DMA should be defined if real DMA is to be used.
  * Note that the DMA setup functions should return the number of bytes
  * that they were able to program the controller for.
  *
- * Also note that generic i386/PC versions of these macros are
- * available as NCR5380_i386_dma_write_setup,
- * NCR5380_i386_dma_read_setup, and NCR5380_i386_dma_residual.
- *
  * NCR5380_dma_write_setup(instance, src, count) - initialize
  * NCR5380_dma_read_setup(instance, dst, count) - initialize
  * NCR5380_dma_residual(instance); - residual count
@@ -486,12 +466,6 @@ static void prepare_info(struct Scsi_Hos
 #ifdef DIFFERENTIAL
 "DIFFERENTIAL "
 #endif
-#ifdef REAL_DMA
-"REAL_DMA "
-#endif
-#ifdef REAL_DMA_POLL
-"REAL_DMA_POLL "
-#endif
 #ifdef PARITY
 "PARITY "
 #endif
@@ -551,9 +525,8 @@ static int NCR5380_init(struct Scsi_Host
hostdata->id_higher_mask |= i;
for (i = 0; i < 8; ++i)
hostdata->busy[i] = 0;
-#ifdef REAL_DMA
-   hostdata->dmalen = 0;
-#endif
+   hostdata->dma_len = 0;
+
spin_lock_init(>lock);
hostdata->connected = NULL;
hostdata->sensing = NULL;
@@ -850,11 +823,7 @@ static void NCR5380_main(struct work_str
requeue_cmd(instance, cmd);
}
}
-   if (hostdata->connected
-#ifdef REAL_DMA
-   && !hostdata->dmalen
-#endif
-   ) {
+   if (hostdata->connected && !hostdata->dma_len) {
dsprintk(NDEBUG_MAIN, instance, "main: performing 
information transfer\n");
NCR5380_information_transfer(instance);
done = 0;
@@ -919,34 +888,6 @@ static irqreturn_t NCR5380_intr(int irq,
dsprintk(NDEBUG_INTR, instance, "IRQ %d, BASR 0x%02x, SR 
0x%02x, MR 0x%02x\n",
 irq, basr, sr, mr);
 
-#if defined(REAL_DMA)
-   if ((mr & MR_DMA_MODE) || (mr & MR_MONITOR_BSY)) {
-   /* Probably End of DMA, Phase Mismatch or Loss of BSY.
-* We ack IRQ after clearing Mode Register. Workarounds
-* for End of DMA errata need to happen in DMA Mode.
-*/
-
-   dsprintk(NDEBUG_INTR, instance, "interrupt in DMA 
mode\n");
-
-   int transferred;
-
-   if (!hostdata->connected)
-   panic("scsi%d : DMA interrupt with no connected 
cmd\n",
- instance->hostno);
-
-   transferred = hostdata->dmalen - 
NCR5380_dma_residual(instance);
-   hostdata->connected->SCp.this_residual -= transferred;
-   hostdata->connected->SCp.ptr += transferred;
-   hostdata->dmalen = 0;
-
-   /* FIXME: we need to poll briefly then defer