mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
[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>
This commit is contained in:
parent
7748369f49
commit
be3cb3d84b
6 changed files with 16 additions and 6 deletions
|
@ -179,6 +179,9 @@ int __init a2091_detect(struct scsi_host_template *tpnt)
|
||||||
DMA(instance)->DAWR = DAWR_A2091;
|
DMA(instance)->DAWR = DAWR_A2091;
|
||||||
regs.SASR = &(DMA(instance)->SASR);
|
regs.SASR = &(DMA(instance)->SASR);
|
||||||
regs.SCMD = &(DMA(instance)->SCMD);
|
regs.SCMD = &(DMA(instance)->SCMD);
|
||||||
|
HDATA(a3000_host)->no_sync = 0xff;
|
||||||
|
HDATA(a3000_host)->fast = 0;
|
||||||
|
HDATA(a3000_host)->dma_mode = CTRL_DMA;
|
||||||
wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
|
wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
|
||||||
request_irq(IRQ_AMIGA_PORTS, a2091_intr, IRQF_SHARED, "A2091 SCSI",
|
request_irq(IRQ_AMIGA_PORTS, a2091_intr, IRQF_SHARED, "A2091 SCSI",
|
||||||
instance);
|
instance);
|
||||||
|
|
|
@ -178,6 +178,9 @@ int __init a3000_detect(struct scsi_host_template *tpnt)
|
||||||
DMA(a3000_host)->DAWR = DAWR_A3000;
|
DMA(a3000_host)->DAWR = DAWR_A3000;
|
||||||
regs.SASR = &(DMA(a3000_host)->SASR);
|
regs.SASR = &(DMA(a3000_host)->SASR);
|
||||||
regs.SCMD = &(DMA(a3000_host)->SCMD);
|
regs.SCMD = &(DMA(a3000_host)->SCMD);
|
||||||
|
HDATA(a3000_host)->no_sync = 0xff;
|
||||||
|
HDATA(a3000_host)->fast = 0;
|
||||||
|
HDATA(a3000_host)->dma_mode = CTRL_DMA;
|
||||||
wd33c93_init(a3000_host, regs, dma_setup, dma_stop, WD33C93_FS_12_15);
|
wd33c93_init(a3000_host, regs, dma_setup, dma_stop, WD33C93_FS_12_15);
|
||||||
if (request_irq(IRQ_AMIGA_PORTS, a3000_intr, IRQF_SHARED, "A3000 SCSI",
|
if (request_irq(IRQ_AMIGA_PORTS, a3000_intr, IRQF_SHARED, "A3000 SCSI",
|
||||||
a3000_intr))
|
a3000_intr))
|
||||||
|
|
|
@ -322,6 +322,9 @@ int __init gvp11_detect(struct scsi_host_template *tpnt)
|
||||||
*/
|
*/
|
||||||
regs.SASR = &(DMA(instance)->SASR);
|
regs.SASR = &(DMA(instance)->SASR);
|
||||||
regs.SCMD = &(DMA(instance)->SCMD);
|
regs.SCMD = &(DMA(instance)->SCMD);
|
||||||
|
HDATA(a3000_host)->no_sync = 0xff;
|
||||||
|
HDATA(a3000_host)->fast = 0;
|
||||||
|
HDATA(a3000_host)->dma_mode = CTRL_DMA;
|
||||||
wd33c93_init(instance, regs, dma_setup, dma_stop,
|
wd33c93_init(instance, regs, dma_setup, dma_stop,
|
||||||
(epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10
|
(epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10
|
||||||
: WD33C93_FS_12_15);
|
: WD33C93_FS_12_15);
|
||||||
|
|
|
@ -82,6 +82,9 @@ int mvme147_detect(struct scsi_host_template *tpnt)
|
||||||
mvme147_host->irq = MVME147_IRQ_SCSI_PORT;
|
mvme147_host->irq = MVME147_IRQ_SCSI_PORT;
|
||||||
regs.SASR = (volatile unsigned char *)0xfffe4000;
|
regs.SASR = (volatile unsigned char *)0xfffe4000;
|
||||||
regs.SCMD = (volatile unsigned char *)0xfffe4001;
|
regs.SCMD = (volatile unsigned char *)0xfffe4001;
|
||||||
|
HDATA(a3000_host)->no_sync = 0xff;
|
||||||
|
HDATA(a3000_host)->fast = 0;
|
||||||
|
HDATA(a3000_host)->dma_mode = CTRL_DMA;
|
||||||
wd33c93_init(mvme147_host, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
|
wd33c93_init(mvme147_host, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
|
||||||
|
|
||||||
if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, "MVME147 SCSI PORT", mvme147_intr))
|
if (request_irq(MVME147_IRQ_SCSI_PORT, mvme147_intr, 0, "MVME147 SCSI PORT", mvme147_intr))
|
||||||
|
|
|
@ -263,10 +263,11 @@ static int __init sgiwd93_probe(struct platform_device *pdev)
|
||||||
regs.SASR = wdregs + 3;
|
regs.SASR = wdregs + 3;
|
||||||
regs.SCMD = wdregs + 7;
|
regs.SCMD = wdregs + 7;
|
||||||
|
|
||||||
wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20));
|
hdata->wh.no_sync = 0;
|
||||||
|
hdata->wh.fast = 1;
|
||||||
|
hdata->wh.dma_mode = CTRL_BURST;
|
||||||
|
|
||||||
if (hdata->wh.no_sync == 0xff)
|
wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20));
|
||||||
hdata->wh.no_sync = 0;
|
|
||||||
|
|
||||||
err = request_irq(irq, sgiwd93_intr, 0, "SGI WD93", host);
|
err = request_irq(irq, sgiwd93_intr, 0, "SGI WD93", host);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
|
@ -1973,10 +1973,7 @@ wd33c93_init(struct Scsi_Host *instance, const wd33c93_regs regs,
|
||||||
hostdata->incoming_ptr = 0;
|
hostdata->incoming_ptr = 0;
|
||||||
hostdata->outgoing_len = 0;
|
hostdata->outgoing_len = 0;
|
||||||
hostdata->default_sx_per = DEFAULT_SX_PER;
|
hostdata->default_sx_per = DEFAULT_SX_PER;
|
||||||
hostdata->no_sync = 0xff; /* sync defaults to off */
|
|
||||||
hostdata->no_dma = 0; /* default is DMA enabled */
|
hostdata->no_dma = 0; /* default is DMA enabled */
|
||||||
hostdata->fast = 0; /* default is Fast SCSI transfers disabled */
|
|
||||||
hostdata->dma_mode = CTRL_DMA; /* default is Single Byte DMA */
|
|
||||||
|
|
||||||
#ifdef PROC_INTERFACE
|
#ifdef PROC_INTERFACE
|
||||||
hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS |
|
hostdata->proc = PR_VERSION | PR_INFO | PR_STATISTICS |
|
||||||
|
|
Loading…
Reference in a new issue