diff options
author | peter fuerst <post@pfrst.de> | 2007-02-12 09:27:17 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-02-16 10:38:12 -0500 |
commit | 8f3334edae93f8b664417f4140d4d9dc9a003fe4 (patch) | |
tree | 4d37601784b78e1f699727c3d8e0e624db6c59f6 /drivers/scsi/sgiwd93.c | |
parent | a5d8421b2f03e46f02cc02066b186fdbc0f590a6 (diff) |
[SCSI] sgiwd93: interfacing to wd33c93
1) sgiwd93 used to switch off asynchronous mode on the wd33c93, discarding
any "nosync"-requests from the commandline.
But we need to allow "nosync"-requests for selected devices, for example
the Pioneer DVD305S.
(For the curious: this device accepts the SDTR from wd33c93 and success-
fully sends inquiry data in sync mode, but after the data phase in the
inquiry command does an unexpected disconnect, seemingly sending no
"status" or "command complete". Forcing async transfers makes it work
together flawlessly with the wd33c93. Of course, preferable would be, to
implement wd33c93's "resume command" stuff, but that probably will not
come soon.)
2) Maximize benefit from the preceding Fast SCSI patch for wd33c93 by passing
the higher input-clock frequency explicitely. To be applied after the
mentioned wd33c93 patch.
Signed-off-by: peter fuerst <post@pfrst.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/sgiwd93.c')
-rw-r--r-- | drivers/scsi/sgiwd93.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c index e81f97a35bc8..a15752b37990 100644 --- a/drivers/scsi/sgiwd93.c +++ b/drivers/scsi/sgiwd93.c | |||
@@ -244,9 +244,10 @@ static struct Scsi_Host * __init sgiwd93_setup_scsi( | |||
244 | regs.SASR = wdregs + 3; | 244 | regs.SASR = wdregs + 3; |
245 | regs.SCMD = wdregs + 7; | 245 | regs.SCMD = wdregs + 7; |
246 | 246 | ||
247 | wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_16_20); | 247 | wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20)); |
248 | 248 | ||
249 | hdata->wh.no_sync = 0; | 249 | if (hdata->wh.no_sync == 0xff) |
250 | hdata->wh.no_sync = 0; | ||
250 | 251 | ||
251 | if (request_irq(irq, sgiwd93_intr, 0, "SGI WD93", (void *) host)) { | 252 | if (request_irq(irq, sgiwd93_intr, 0, "SGI WD93", (void *) host)) { |
252 | printk(KERN_WARNING "sgiwd93: Could not register irq %d " | 253 | printk(KERN_WARNING "sgiwd93: Could not register irq %d " |