diff options
author | Thomas Bogendoerfer <tsbogend@alpha.franken.de> | 2008-03-21 17:25:43 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-04-07 13:19:01 -0400 |
commit | be3cb3d84bb8dffecb7c5570355866075caa7e95 (patch) | |
tree | 2a9278e3d094bbccbf172e07ee2758eca483a400 | |
parent | 7748369f49d428e558c519ed344d3005d38347b7 (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.c | 3 | ||||
-rw-r--r-- | drivers/scsi/a3000.c | 3 | ||||
-rw-r--r-- | drivers/scsi/gvp11.c | 3 | ||||
-rw-r--r-- | drivers/scsi/mvme147.c | 3 | ||||
-rw-r--r-- | drivers/scsi/sgiwd93.c | 7 | ||||
-rw-r--r-- | drivers/scsi/wd33c93.c | 3 |
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 | |