aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>2008-03-21 17:25:43 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-04-07 13:19:01 -0400
commitbe3cb3d84bb8dffecb7c5570355866075caa7e95 (patch)
tree2a9278e3d094bbccbf172e07ee2758eca483a400
parent7748369f49d428e558c519ed344d3005d38347b7 (diff)
[SCSI] WD33C93: let platform stub override no_sync/fast/dma_mode
SGI machines with WD33C93 allow usage of burst mode DMA, which increases performance noticable. To make this selectable by the sgiwd93 stub, setting the values for no_sync, fast and dma_mode has been moved to the individual platform stubs. Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Acked-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r--drivers/scsi/a2091.c3
-rw-r--r--drivers/scsi/a3000.c3
-rw-r--r--drivers/scsi/gvp11.c3
-rw-r--r--drivers/scsi/mvme147.c3
-rw-r--r--drivers/scsi/sgiwd93.c7
-rw-r--r--drivers/scsi/wd33c93.c3
6 files changed, 16 insertions, 6 deletions
diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c
index 5ac3a3e8dfaf..1d1bb2516172 100644
--- a/drivers/scsi/a2091.c
+++ b/drivers/scsi/a2091.c
@@ -179,6 +179,9 @@ int __init a2091_detect(struct scsi_host_template *tpnt)
179 DMA(instance)->DAWR = DAWR_A2091; 179 DMA(instance)->DAWR = DAWR_A2091;
180 regs.SASR = &(DMA(instance)->SASR); 180 regs.SASR = &(DMA(instance)->SASR);
181 regs.SCMD = &(DMA(instance)->SCMD); 181 regs.SCMD = &(DMA(instance)->SCMD);
182 HDATA(a3000_host)->no_sync = 0xff;
183 HDATA(a3000_host)->fast = 0;
184 HDATA(a3000_host)->dma_mode = CTRL_DMA;
182 wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10); 185 wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
183 request_irq(IRQ_AMIGA_PORTS, a2091_intr, IRQF_SHARED, "A2091 SCSI", 186 request_irq(IRQ_AMIGA_PORTS, a2091_intr, IRQF_SHARED, "A2091 SCSI",
184 instance); 187 instance);
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c
index 3aeec963940b..8b449d8acacd 100644
--- a/drivers/scsi/a3000.c
+++ b/drivers/scsi/a3000.c
@@ -178,6 +178,9 @@ int __init a3000_detect(struct scsi_host_template *tpnt)
178 DMA(a3000_host)->DAWR = DAWR_A3000; 178 DMA(a3000_host)->DAWR = DAWR_A3000;
179 regs.SASR = &(DMA(a3000_host)->SASR); 179 regs.SASR = &(DMA(a3000_host)->SASR);
180 regs.SCMD = &(DMA(a3000_host)->SCMD); 180 regs.SCMD = &(DMA(a3000_host)->SCMD);
181 HDATA(a3000_host)->no_sync = 0xff;
182 HDATA(a3000_host)->fast = 0;
183 HDATA(a3000_host)->dma_mode = CTRL_DMA;
181 wd33c93_init(a3000_host, regs, dma_setup, dma_stop, WD33C93_FS_12_15); 184 wd33c93_init(a3000_host, regs, dma_setup, dma_stop, WD33C93_FS_12_15);
182 if (request_irq(IRQ_AMIGA_PORTS, a3000_intr, IRQF_SHARED, "A3000 SCSI", 185 if (request_irq(IRQ_AMIGA_PORTS, a3000_intr, IRQF_SHARED, "A3000 SCSI",
183 a3000_intr)) 186 a3000_intr))
diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c
index 91f85226d08f..e75a7ba57a3a 100644
--- a/drivers/scsi/gvp11.c
+++ b/drivers/scsi/gvp11.c
@@ -322,6 +322,9 @@ int __init gvp11_detect(struct scsi_host_template *tpnt)
322 */ 322 */
323 regs.SASR = &(DMA(instance)->SASR); 323 regs.SASR = &(DMA(instance)->SASR);
324 regs.SCMD = &(DMA(instance)->SCMD); 324 regs.SCMD = &(DMA(instance)->SCMD);
325 HDATA(a3000_host)->no_sync = 0xff;
326 HDATA(a3000_host)->fast = 0;
327 HDATA(a3000_host)->dma_mode = CTRL_DMA;
325 wd33c93_init(instance, regs, dma_setup, dma_stop, 328 wd33c93_init(instance, regs, dma_setup, dma_stop,
326 (epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10 329 (epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10
327 : WD33C93_FS_12_15); 330 : WD33C93_FS_12_15);
diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c
index be41aadccae5..6a8cf179a1f1 100644
--- a/drivers/scsi/mvme147.c
+++ b/drivers/scsi/mvme147.c
@@ -82,6 +82,9 @@ int mvme147_detect(struct scsi_host_template *tpnt)
82 mvme147_host->irq = MVME147_IRQ_SCSI_PORT; 82 mvme147_host->irq = MVME147_IRQ_SCSI_PORT;
83 regs.SASR = (volatile unsigned char *)0xfffe4000; 83 regs.SASR = (volatile unsigned char *)0xfffe4000;
84 regs.SCMD = (volatile unsigned char *)0xfffe4001; 84 regs.SCMD = (volatile unsigned char *)0xfffe4001;
85 HDATA(a3000_host)->no_sync = 0xff;
86 HDATA(a3000_host)->fast = 0;
87 HDATA(a3000_host)->dma_mode = CTRL_DMA;
85 wd33c93_init(mvme147_host, regs, dma_setup, dma_stop, WD33C93_FS_8_10); 88 wd33c93_init(mvme147_host, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
86 89
87 if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, "MVME147 SCSI PORT", mvme147_intr)) 90 if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, "MVME147 SCSI PORT", mvme147_intr))
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c
index 26cfc56c7091..03e359670506 100644
--- a/drivers/scsi/sgiwd93.c
+++ b/drivers/scsi/sgiwd93.c
@@ -263,10 +263,11 @@ static int __init sgiwd93_probe(struct platform_device *pdev)
263 regs.SASR = wdregs + 3; 263 regs.SASR = wdregs + 3;
264 regs.SCMD = wdregs + 7; 264 regs.SCMD = wdregs + 7;
265 265
266 wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20)); 266 hdata->wh.no_sync = 0;
267 hdata->wh.fast = 1;
268 hdata->wh.dma_mode = CTRL_BURST;
267 269
268 if (hdata->wh.no_sync == 0xff) 270 wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20));
269 hdata->wh.no_sync = 0;
270 271
271 err = request_irq(irq, sgiwd93_intr, 0, "SGI WD93", host); 272 err = request_irq(irq, sgiwd93_intr, 0, "SGI WD93", host);
272 if (err) { 273 if (err) {
diff --git a/drivers/scsi/wd33c93.c b/drivers/scsi/wd33c93.c
index f286c37da7e0..5fda881c2470 100644
--- a/drivers/scsi/wd33c93.c
+++ b/drivers/scsi/wd33c93.c
@@ -1973,10 +1973,7 @@ wd33c93_init(struct Scsi_Host *instance, const wd33c93_regs regs,
1973 hostdata->incoming_ptr = 0; 1973 hostdata->incoming_ptr = 0;
1974 hostdata->outgoing_len = 0; 1974 hostdata->outgoing_len = 0;
1975 hostdata->default_sx_per = DEFAULT_SX_PER; 1975 hostdata->default_sx_per = DEFAULT_SX_PER;
1976 hostdata->no_sync = 0xff; /* sync defaults to off */
1977 hostdata->no_dma = 0; /* default is DMA enabled */ 1976 hostdata->no_dma = 0; /* default is DMA enabled */
1978 hostdata->fast = 0; /* default is Fast SCSI transfers disabled */
1979 hostdata->dma_mode = CTRL_DMA; /* default is Single Byte DMA */
1980 1977
1981#ifdef PROC_INTERFACE 1978#ifdef PROC_INTERFACE
1982 hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS | 1979 hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS |