Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / scsi / 53c700.h
index e86012c..a8c83bb 100644 (file)
 
 #ifdef NCR_700_DEBUG
 #define DEBUG(x)       printk x
+#define DDEBUG(prefix, sdev, fmt, a...) \
+       sdev_printk(prefix, sdev, fmt, ##a)
+#define CDEBUG(prefix, scmd, fmt, a...) \
+       scmd_printk(prefix, scmd, fmt, ##a)
 #else
-#define DEBUG(x)
+#define DEBUG(x)       do {} while (0)
+#define DDEBUG(prefix, scmd, fmt, a...) do {} while (0)
+#define CDEBUG(prefix, scmd, fmt, a...) do {} while (0)
 #endif
 
 /* The number of available command slots */
@@ -232,21 +238,23 @@ struct NCR_700_Host_Parameters {
 #ifdef CONFIG_53C700_LE_ON_BE
 #define bE     (hostdata->force_le_on_be ? 0 : 3)
 #define        bSWAP   (hostdata->force_le_on_be)
-/* This is terrible, but there's no raw version of ioread32.  That means
- * that on a be board we swap twice (once in ioread32 and once again to 
- * get the value correct) */
-#define bS_to_io(x)    ((hostdata->force_le_on_be) ? (x) : cpu_to_le32(x))
+#define bEBus  (!hostdata->force_le_on_be)
 #elif defined(__BIG_ENDIAN)
 #define bE     3
 #define bSWAP  0
-#define bS_to_io(x)    (x)
 #elif defined(__LITTLE_ENDIAN)
 #define bE     0
 #define bSWAP  0
-#define bS_to_io(x)    (x)
 #else
 #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?"
 #endif
+#ifndef bEBus
+#ifdef CONFIG_53C700_BE_BUS
+#define bEBus  1
+#else
+#define bEBus  0
+#endif
+#endif
 #define bS_to_cpu(x)   (bSWAP ? le32_to_cpu(x) : (x))
 #define bS_to_host(x)  (bSWAP ? cpu_to_le32(x) : (x))
 
@@ -460,14 +468,15 @@ NCR_700_readl(struct Scsi_Host *host, __u32 reg)
 {
        const struct NCR_700_Host_Parameters *hostdata
                = (struct NCR_700_Host_Parameters *)host->hostdata[0];
-       __u32 value = ioread32(hostdata->base + reg);
+       __u32 value = bEBus ? ioread32be(hostdata->base + reg) :
+               ioread32(hostdata->base + reg);
 #if 1
        /* sanity check the register */
        if((reg & 0x3) != 0)
                BUG();
 #endif
 
-       return bS_to_io(value);
+       return value;
 }
 
 static inline void
@@ -491,7 +500,8 @@ NCR_700_writel(__u32 value, struct Scsi_Host *host, __u32 reg)
                BUG();
 #endif
 
-       iowrite32(bS_to_io(value), hostdata->base + reg);
+       bEBus ? iowrite32be(value, hostdata->base + reg): 
+               iowrite32(value, hostdata->base + reg);
 }
 
 #endif