Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f67a9c1592b3a0292376bdcbdcc34cbe353967a8
Commit:     f67a9c1592b3a0292376bdcbdcc34cbe353967a8
Parent:     a8b3485287731978899ced11f24628c927890e78
Author:     Thomas Bogendoerfer <[EMAIL PROTECTED]>
AuthorDate: Mon Dec 25 21:30:08 2006 +0100
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Sat Jan 13 13:44:30 2007 -0600

    [SCSI] 53c700: Allow setting burst length
    
    This is a patch, which allows not only disabling bursting but to specify
    different burst lenghts. This feature is needed to get the 53c700 driver
    working for the onboard SCSI controller of SNI RM machines, which only
    work reliably with a 4 word burst length.
    
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/53c700.c  |   24 +++++++++++++++++++++---
 drivers/scsi/53c700.h  |    2 +-
 drivers/scsi/lasi700.c |    1 +
 drivers/scsi/sim710.c  |    1 +
 4 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c
index 68103e5..88e061d 100644
--- a/drivers/scsi/53c700.c
+++ b/drivers/scsi/53c700.c
@@ -667,12 +667,30 @@ NCR_700_chip_setup(struct Scsi_Host *host)
        __u8 min_xferp = (hostdata->chip710 ? NCR_710_MIN_XFERP : 
NCR_700_MIN_XFERP);
 
        if(hostdata->chip710) {
-               __u8 burst_disable = hostdata->burst_disable
-                       ? BURST_DISABLE : 0;
+               __u8 burst_disable = 0;
+               __u8 burst_length = 0;
+
+               switch (hostdata->burst_length) {
+                       case 1:
+                               burst_length = BURST_LENGTH_1;
+                               break;
+                       case 2:
+                               burst_length = BURST_LENGTH_2;
+                               break;
+                       case 4:
+                               burst_length = BURST_LENGTH_4;
+                               break;
+                       case 8:
+                               burst_length = BURST_LENGTH_8;
+                               break;
+                       default:
+                               burst_disable = BURST_DISABLE;
+                               break;
+               }
                dcntl_extra = COMPAT_700_MODE;
 
                NCR_700_writeb(dcntl_extra, host, DCNTL_REG);
-               NCR_700_writeb(BURST_LENGTH_8  | hostdata->dmode_extra,
+               NCR_700_writeb(burst_length | hostdata->dmode_extra,
                               host, DMODE_710_REG);
                NCR_700_writeb(burst_disable | (hostdata->differential ? 
                                                DIFF : 0), host, CTEST7_REG);
diff --git a/drivers/scsi/53c700.h b/drivers/scsi/53c700.h
index f38822d..841e1bb 100644
--- a/drivers/scsi/53c700.h
+++ b/drivers/scsi/53c700.h
@@ -203,7 +203,7 @@ struct NCR_700_Host_Parameters {
        __u32   force_le_on_be:1;
 #endif
        __u32   chip710:1;      /* set if really a 710 not 700 */
-       __u32   burst_disable:1;        /* set to 1 to disable 710 bursting */
+       __u32   burst_length:4; /* set to 0 to disable 710 bursting */
 
        /* NOTHING BELOW HERE NEEDS ALTERING */
        __u32   fast:1;         /* if we can alter the SCSI bus clock
diff --git a/drivers/scsi/lasi700.c b/drivers/scsi/lasi700.c
index f0871c3..2aae1b0 100644
--- a/drivers/scsi/lasi700.c
+++ b/drivers/scsi/lasi700.c
@@ -123,6 +123,7 @@ lasi700_probe(struct parisc_device *dev)
                hostdata->force_le_on_be = 0;
                hostdata->chip710 = 1;
                hostdata->dmode_extra = DMODE_FC2;
+               hostdata->burst_length = 8;
        }
 
        host = NCR_700_detect(&lasi700_template, hostdata, &dev->dev);
diff --git a/drivers/scsi/sim710.c b/drivers/scsi/sim710.c
index 551bacc..018c65f 100644
--- a/drivers/scsi/sim710.c
+++ b/drivers/scsi/sim710.c
@@ -123,6 +123,7 @@ sim710_probe_common(struct device *dev, unsigned long 
base_addr,
        hostdata->differential = differential;
        hostdata->clock = clock;
        hostdata->chip710 = 1;
+       hostdata->burst_length = 8;
 
        /* and register the chip */
        if((host = NCR_700_detect(&sim710_driver_template, hostdata, dev))
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to