Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Thomas Bogendoerfer and committed by
James Bottomley
be3cb3d8 7748369f

+16 -6
+3
drivers/scsi/a2091.c
··· 179 179 DMA(instance)->DAWR = DAWR_A2091; 180 180 regs.SASR = &(DMA(instance)->SASR); 181 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 185 wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10); 183 186 request_irq(IRQ_AMIGA_PORTS, a2091_intr, IRQF_SHARED, "A2091 SCSI", 184 187 instance);
+3
drivers/scsi/a3000.c
··· 178 178 DMA(a3000_host)->DAWR = DAWR_A3000; 179 179 regs.SASR = &(DMA(a3000_host)->SASR); 180 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 184 wd33c93_init(a3000_host, regs, dma_setup, dma_stop, WD33C93_FS_12_15); 182 185 if (request_irq(IRQ_AMIGA_PORTS, a3000_intr, IRQF_SHARED, "A3000 SCSI", 183 186 a3000_intr))
+3
drivers/scsi/gvp11.c
··· 322 322 */ 323 323 regs.SASR = &(DMA(instance)->SASR); 324 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 328 wd33c93_init(instance, regs, dma_setup, dma_stop, 326 329 (epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10 327 330 : WD33C93_FS_12_15);
+3
drivers/scsi/mvme147.c
··· 82 82 mvme147_host->irq = MVME147_IRQ_SCSI_PORT; 83 83 regs.SASR = (volatile unsigned char *)0xfffe4000; 84 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 88 wd33c93_init(mvme147_host, regs, dma_setup, dma_stop, WD33C93_FS_8_10); 86 89 87 90 if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, "MVME147 SCSI PORT", mvme147_intr))
+4 -3
drivers/scsi/sgiwd93.c
··· 263 263 regs.SASR = wdregs + 3; 264 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) 269 - hdata->wh.no_sync = 0; 270 + wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20)); 270 271 271 272 err = request_irq(irq, sgiwd93_intr, 0, "SGI WD93", host); 272 273 if (err) {
-3
drivers/scsi/wd33c93.c
··· 1973 1973 hostdata->incoming_ptr = 0; 1974 1974 hostdata->outgoing_len = 0; 1975 1975 hostdata->default_sx_per = DEFAULT_SX_PER; 1976 - hostdata->no_sync = 0xff; /* sync defaults to off */ 1977 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 1978 #ifdef PROC_INTERFACE 1982 1979 hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS |