aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeter fuerst <post@pfrst.de>2007-02-12 09:27:17 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2007-02-16 10:38:12 -0500
commit8f3334edae93f8b664417f4140d4d9dc9a003fe4 (patch)
tree4d37601784b78e1f699727c3d8e0e624db6c59f6
parenta5d8421b2f03e46f02cc02066b186fdbc0f590a6 (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>
-rw-r--r--drivers/scsi/sgiwd93.c5
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 "