Here is an optional bonus patch that cleans up most of the checkpatch 
warnings in the common code. I left in the volatiles, since I don't 
understand why they where needed. The memory always seems to be access 
with in_8 and out_8, which are declared volatile. But they could be 
there to fix a very specific bug.

Cheers,
   Sean

Signed-off-by: Sean MacLennan <[EMAIL PROTECTED]>
---
--- for-2.6.25/drivers/i2c/busses/submitted-i2c-ibm_iic.c       2008-02-18 
20:44:06.000000000 -0500
+++ for-2.6.25/drivers/i2c/busses/i2c-ibm_iic.c 2008-02-18 20:53:53.000000000 
-0500
@@ -76,17 +76,17 @@
 #endif
 
 #if DBG_LEVEL > 0
-#  define DBG(f,x...)  printk(KERN_DEBUG "ibm-iic" f, ##x)
+#  define DBG(f, x...) printk(KERN_DEBUG "ibm-iic" f, ##x)
 #else
-#  define DBG(f,x...)  ((void)0)
+#  define DBG(f, x...) ((void)0)
 #endif
 #if DBG_LEVEL > 1
-#  define DBG2(f,x...)         DBG(f, ##x)
+#  define DBG2(f, x...)        DBG(f, ##x)
 #else
-#  define DBG2(f,x...)         ((void)0)
+#  define DBG2(f, x...)        ((void)0)
 #endif
 #if DBG_LEVEL > 2
-static void dump_iic_regs(const char* header, struct ibm_iic_private* dev)
+static void dump_iic_regs(const char *header, struct ibm_iic_private *dev)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
        printk(KERN_DEBUG "ibm-iic%d: %s\n", dev->idx, header);
@@ -98,9 +98,9 @@
                in_8(&iic->extsts), in_8(&iic->clkdiv), in_8(&iic->xfrcnt),
                in_8(&iic->xtcntlss), in_8(&iic->directcntl));
 }
-#  define DUMP_REGS(h,dev)     dump_iic_regs((h),(dev))
+#  define DUMP_REGS(h, dev)    dump_iic_regs((h), (dev))
 #else
-#  define DUMP_REGS(h,dev)     ((void)0)
+#  define DUMP_REGS(h, dev)    ((void)0)
 #endif
 
 /* Bus timings (in ns) for bit-banging */
@@ -111,25 +111,26 @@
        unsigned int high;
        unsigned int buf;
 } timings [] = {
-/* Standard mode (100 KHz) */
-{
-       .hd_sta = 4000,
-       .su_sto = 4000,
-       .low    = 4700,
-       .high   = 4000,
-       .buf    = 4700,
-},
-/* Fast mode (400 KHz) */
-{
-       .hd_sta = 600,
-       .su_sto = 600,
-       .low    = 1300,
-       .high   = 600,
-       .buf    = 1300,
-}};
+       /* Standard mode (100 KHz) */
+       {
+               .hd_sta = 4000,
+               .su_sto = 4000,
+               .low    = 4700,
+               .high   = 4000,
+               .buf    = 4700,
+       },
+       /* Fast mode (400 KHz) */
+       {
+               .hd_sta = 600,
+               .su_sto = 600,
+               .low    = 1300,
+               .high   = 600,
+               .buf    = 1300,
+       }
+};
 
 /* Enable/disable interrupt generation */
-static inline void iic_interrupt_mode(struct ibm_iic_private* dev, int enable)
+static inline void iic_interrupt_mode(struct ibm_iic_private *dev, int enable)
 {
        out_8(&dev->vaddr->intmsk, enable ? INTRMSK_EIMTC : 0);
 }
@@ -137,7 +138,7 @@
 /*
  * Initialize IIC interface.
  */
-static void iic_dev_init(struct ibm_iic_private* dev)
+static void iic_dev_init(struct ibm_iic_private *dev)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
 
@@ -182,7 +183,7 @@
 /*
  * Reset IIC interface
  */
-static void iic_dev_reset(struct ibm_iic_private* dev)
+static void iic_dev_reset(struct ibm_iic_private *dev)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
        int i;
@@ -191,19 +192,19 @@
        DBG("%d: soft reset\n", dev->idx);
        DUMP_REGS("reset", dev);
 
-       /* Place chip in the reset state */
+       /* Place chip in the reset state */
        out_8(&iic->xtcntlss, XTCNTLSS_SRST);
 
        /* Check if bus is free */
        dc = in_8(&iic->directcntl);
-       if (!DIRCTNL_FREE(dc)){
+       if (!DIRCTNL_FREE(dc)) {
                DBG("%d: trying to regain bus control\n", dev->idx);
 
                /* Try to set bus free state */
                out_8(&iic->directcntl, DIRCNTL_SDAC | DIRCNTL_SCC);
 
                /* Wait until we regain bus control */
-               for (i = 0; i < 100; ++i){
+               for (i = 0; i < 100; ++i) {
                        dc = in_8(&iic->directcntl);
                        if (DIRCTNL_FREE(dc))
                                break;
@@ -235,7 +236,7 @@
 static int iic_dc_wait(volatile struct iic_regs __iomem *iic, u8 mask)
 {
        unsigned long x = jiffies + HZ / 28 + 2;
-       while ((in_8(&iic->directcntl) & mask) != mask){
+       while ((in_8(&iic->directcntl) & mask) != mask) {
                if (unlikely(time_after(jiffies, x)))
                        return -1;
                cond_resched();
@@ -243,15 +244,15 @@
        return 0;
 }
 
-static int iic_smbus_quick(struct ibm_iic_private* dev, const struct i2c_msg* 
p)
+static int iic_smbus_quick(struct ibm_iic_private *dev, const struct i2c_msg 
*p)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
-       const struct i2c_timings* t = &timings[dev->fast_mode ? 1 : 0];
+       const struct i2c_timings *t = &timings[dev->fast_mode ? 1 : 0];
        u8 mask, v, sda;
        int i, res;
 
        /* Only 7-bit addresses are supported */
-       if (unlikely(p->flags & I2C_M_TEN)){
+       if (unlikely(p->flags & I2C_M_TEN)) {
                DBG("%d: smbus_quick - 10 bit addresses are not supported\n",
                        dev->idx);
                return -EINVAL;
@@ -275,7 +276,7 @@
 
        /* Send address */
        v = (u8)((p->addr << 1) | ((p->flags & I2C_M_RD) ? 1 : 0));
-       for (i = 0, mask = 0x80; i < 8; ++i, mask >>= 1){
+       for (i = 0, mask = 0x80; i < 8; ++i, mask >>= 1) {
                out_8(&iic->directcntl, sda);
                ndelay(t->low / 2);
                sda = (v & mask) ? DIRCNTL_SDAC : 0;
@@ -330,7 +331,7 @@
  */
 static irqreturn_t iic_handler(int irq, void *dev_id)
 {
-       struct ibm_iic_private* dev = (struct ibm_iic_private*)dev_id;
+       struct ibm_iic_private *dev = (struct ibm_iic_private *)dev_id;
        volatile struct iic_regs __iomem *iic = dev->vaddr;
 
        DBG2("%d: irq handler, STS = 0x%02x, EXTSTS = 0x%02x\n",
@@ -347,11 +348,11 @@
  * Get master transfer result and clear errors if any.
  * Returns the number of actually transferred bytes or error (<0)
  */
-static int iic_xfer_result(struct ibm_iic_private* dev)
+static int iic_xfer_result(struct ibm_iic_private *dev)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
 
-       if (unlikely(in_8(&iic->sts) & STS_ERR)){
+       if (unlikely(in_8(&iic->sts) & STS_ERR)) {
                DBG("%d: xfer error, EXTSTS = 0x%02x\n", dev->idx,
                        in_8(&iic->extsts));
 
@@ -367,20 +368,19 @@
                 * IIC interface is usually stuck in some strange
                 * state, the only way out - soft reset.
                 */
-               if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
+               if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE) {
                        DBG("%d: bus is stuck, resetting\n", dev->idx);
                        iic_dev_reset(dev);
                }
                return -EREMOTEIO;
-       }
-       else
+       } else
                return in_8(&iic->xfrcnt) & XFRCNT_MTC_MASK;
 }
 
 /*
  * Try to abort active transfer.
  */
-static void iic_abort_xfer(struct ibm_iic_private* dev)
+static void iic_abort_xfer(struct ibm_iic_private *dev)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
        unsigned long x;
@@ -394,8 +394,8 @@
         * It's not worth to be optimized, just poll (timeout >= 1 tick)
         */
        x = jiffies + 2;
-       while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
-               if (time_after(jiffies, x)){
+       while ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE) {
+               if (time_after(jiffies, x)) {
                        DBG("%d: abort timeout, resetting...\n", dev->idx);
                        iic_dev_reset(dev);
                        return;
@@ -412,19 +412,19 @@
  * It puts current process to sleep until we get interrupt or timeout expires.
  * Returns the number of transferred bytes or error (<0)
  */
-static int iic_wait_for_tc(struct ibm_iic_private* dev){
-
+static int iic_wait_for_tc(struct ibm_iic_private *dev)
+{
        volatile struct iic_regs __iomem *iic = dev->vaddr;
        int ret = 0;
 
-       if (dev->irq >= 0){
+       if (dev->irq >= 0) {
                /* Interrupt mode */
                ret = wait_event_interruptible_timeout(dev->wq,
                        !(in_8(&iic->sts) & STS_PT), dev->adap.timeout * HZ);
 
                if (unlikely(ret < 0))
                        DBG("%d: wait interrupted\n", dev->idx);
-               else if (unlikely(in_8(&iic->sts) & STS_PT)){
+               else if (unlikely(in_8(&iic->sts) & STS_PT)) {
                        DBG("%d: wait timeout\n", dev->idx);
                        ret = -ETIMEDOUT;
                }
@@ -433,14 +433,14 @@
                /* Polling mode */
                unsigned long x = jiffies + dev->adap.timeout * HZ;
 
-               while (in_8(&iic->sts) & STS_PT){
-                       if (unlikely(time_after(jiffies, x))){
+               while (in_8(&iic->sts) & STS_PT) {
+                       if (unlikely(time_after(jiffies, x))) {
                                DBG("%d: poll timeout\n", dev->idx);
                                ret = -ETIMEDOUT;
                                break;
                        }
 
-                       if (unlikely(signal_pending(current))){
+                       if (unlikely(signal_pending(current))) {
                                DBG("%d: poll interrupted\n", dev->idx);
                                ret = -ERESTARTSYS;
                                break;
@@ -462,11 +462,11 @@
 /*
  * Low level master transfer routine
  */
-static int iic_xfer_bytes(struct ibm_iic_private* dev, struct i2c_msg* pm,
+static int iic_xfer_bytes(struct ibm_iic_private *dev, struct i2c_msg *pm,
                          int combined_xfer)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
-       char* buf = pm->buf;
+       char *buf = pm->buf;
        int i, j, loops, ret = 0;
        int len = pm->len;
 
@@ -475,7 +475,7 @@
                cntl |= CNTL_RW;
 
        loops = (len + 3) / 4;
-       for (i = 0; i < loops; ++i, len -= 4){
+       for (i = 0; i < loops; ++i, len -= 4) {
                int count = len > 4 ? 4 : len;
                u8 cmd = cntl | ((count - 1) << CNTL_TCT_SHIFT);
 
@@ -498,7 +498,7 @@
 
                if (unlikely(ret < 0))
                        break;
-               else if (unlikely(ret != count)){
+               else if (unlikely(ret != count)) {
                        DBG("%d: xfer_bytes, requested %d, transfered %d\n",
                                dev->idx, count, ret);
 
@@ -521,7 +521,7 @@
 /*
  * Set target slave address for master transfer
  */
-static inline void iic_address(struct ibm_iic_private* dev, struct i2c_msg* 
msg)
+static inline void iic_address(struct ibm_iic_private *dev, struct i2c_msg 
*msg)
 {
        volatile struct iic_regs __iomem *iic = dev->vaddr;
        u16 addr = msg->addr;
@@ -529,24 +529,24 @@
        DBG2("%d: iic_address, 0x%03x (%d-bit)\n", dev->idx,
                addr, msg->flags & I2C_M_TEN ? 10 : 7);
 
-       if (msg->flags & I2C_M_TEN){
+       if (msg->flags & I2C_M_TEN) {
            out_8(&iic->cntl, CNTL_AMD);
            out_8(&iic->lmadr, addr);
            out_8(&iic->hmadr, 0xf0 | ((addr >> 7) & 0x06));
-       }
-       else {
+       } else {
            out_8(&iic->cntl, 0);
            out_8(&iic->lmadr, addr << 1);
        }
 }
 
-static inline int iic_invalid_address(const struct i2c_msg* p)
+static inline int iic_invalid_address(const struct i2c_msg *p)
 {
-       return (p->addr > 0x3ff) || (!(p->flags & I2C_M_TEN) && (p->addr > 
0x7f));
+       return (p->addr > 0x3ff) ||
+               (!(p->flags & I2C_M_TEN) && (p->addr > 0x7f));
 }
 
-static inline int iic_address_neq(const struct i2c_msg* p1,
-                                 const struct i2c_msg* p2)
+static inline int iic_address_neq(const struct i2c_msg *p1,
+                                 const struct i2c_msg *p2)
 {
        return (p1->addr != p2->addr)
                || ((p1->flags & I2C_M_TEN) != (p2->flags & I2C_M_TEN));
@@ -558,9 +558,13 @@
  */
 static int iic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
 {
-       struct ibm_iic_private* dev = (struct 
ibm_iic_private*)(i2c_get_adapdata(adap));
-       volatile struct iic_regs __iomem *iic = dev->vaddr;
+       struct ibm_iic_private *dev;
+       volatile struct iic_regs __iomem *iic;
        int i, ret = 0;
+       u8 extsts;
+
+       dev = (struct ibm_iic_private *)(i2c_get_adapdata(adap));
+       iic = dev->vaddr;
 
        DBG2("%d: iic_xfer, %d msg(s)\n", dev->idx, num);
 
@@ -570,14 +574,14 @@
        /* Check the sanity of the passed messages.
         * Uhh, generic i2c layer is more suitable place for such code...
         */
-       if (unlikely(iic_invalid_address(&msgs[0]))){
+       if (unlikely(iic_invalid_address(&msgs[0]))) {
                DBG("%d: invalid address 0x%03x (%d-bit)\n", dev->idx,
                        msgs[0].addr, msgs[0].flags & I2C_M_TEN ? 10 : 7);
                return -EINVAL;
        }
-       for (i = 0; i < num; ++i){
-               if (unlikely(msgs[i].len <= 0)){
-                       if (num == 1 && !msgs[0].len){
+       for (i = 0; i < num; ++i) {
+               if (unlikely(msgs[i].len <= 0)) {
+                       if (num == 1 && !msgs[0].len) {
                                /* Special case for I2C_SMBUS_QUICK emulation.
                                 * IBM IIC doesn't support 0-length transactions
                                 * so we have to emulate them using bit-banging.
@@ -588,14 +592,15 @@
                                msgs[i].len, i);
                        return -EINVAL;
                }
-               if (unlikely(iic_address_neq(&msgs[0], &msgs[i]))){
+               if (unlikely(iic_address_neq(&msgs[0], &msgs[i]))) {
                        DBG("%d: invalid addr in msg[%d]\n", dev->idx, i);
                        return -EINVAL;
                }
        }
 
        /* Check bus state */
-       if (unlikely((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != 
EXTSTS_BCS_FREE)){
+       extsts = in_8(&iic->extsts);
+       if (unlikely((extsts & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE)) {
                DBG("%d: iic_xfer, bus is not free\n", dev->idx);
 
                /* Usually it means something serious has happend.
@@ -608,12 +613,11 @@
                 */
                iic_dev_reset(dev);
 
-               if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE){
+               if ((in_8(&iic->extsts) & EXTSTS_BCS_MASK) != EXTSTS_BCS_FREE) {
                        DBG("%d: iic_xfer, bus is still not free\n", dev->idx);
                        return -EREMOTEIO;
                }
-       }
-       else {
+       } else {
                /* Flush master data buffer (just in case) */
                out_8(&iic->mdcntl, in_8(&iic->mdcntl) | MDCNTL_FMDB);
        }
@@ -622,7 +626,7 @@
        iic_address(dev, &msgs[0]);
 
        /* Do real transfer */
-       for (i = 0; i < num && !ret; ++i)
+       for (i = 0; i < num && !ret; ++i)
                ret = iic_xfer_bytes(dev, &msgs[i], i < num - 1);
 
        return ret < 0 ? ret : num;
@@ -648,7 +652,7 @@
         * Previous driver version used hardcoded divider value 4,
         * it corresponds to OPB frequency from the range (40, 50] MHz
         */
-       if (!opb){
+       if (!opb) {
                printk(KERN_WARNING "ibm-iic: using compatibility value for OPB 
freq,"
                        " fix your board specific setup\n");
                opb = 50000000;
@@ -657,9 +661,9 @@
        /* Convert to MHz */
        opb /= 1000000;
 
-       if (opb < 20 || opb > 150){
-               printk(KERN_WARNING "ibm-iic: invalid OPB clock frequency %u 
MHz\n",
-                       opb);
+       if (opb < 20 || opb > 150) {
+               printk(KERN_WARNING "ibm-iic: "
+                      "invalid OPB clock frequency %u MHz\n", opb);
                opb = opb < 20 ? 20 : 150;
        }
        return (u8)((opb + 9) / 10 - 1);


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to