[SCSI] sym53c8xx: Work around 53c896 erratum
authorKai Makisara <Kai.Makisara@kolumbus.fi>
Fri, 5 Oct 2007 19:54:58 +0000 (15:54 -0400)
committerJames Bottomley <jejb@mulgrave.localdomain>
Tue, 23 Oct 2007 19:07:45 +0000 (15:07 -0400)
Prevent DMA transfers from crossing the 16MB limit for early 53c896 chips.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/sym53c8xx_2/sym_glue.c

index db03c4c8ec1e55fe21fb9dc31db910ea69d80767..44169390c467af6a7167fc9e537961f515e0c9cb 100644 (file)
@@ -1531,6 +1531,10 @@ static struct Scsi_Host * __devinit sym_attach(struct scsi_host_template *tpnt,
        BUG_ON(sym2_transport_template == NULL);
        instance->transportt    = sym2_transport_template;
 
+       /* 53c896 rev 1 errata: DMA may not cross 16MB boundary */
+       if (pdev->device == PCI_DEVICE_ID_NCR_53C896 && np->revision_id < 2)
+               instance->dma_boundary = 0xFFFFFF;
+
        spin_unlock_irqrestore(instance->host_lock, flags);
 
        return instance;