tps65910&rk610:Solve communication conflict when rk610 and tps65910 on the same i2c
author张晴 <zhangqing@rock-chips.com>
Thu, 28 Feb 2013 10:42:37 +0000 (18:42 +0800)
committer张晴 <zhangqing@rock-chips.com>
Thu, 28 Feb 2013 10:42:37 +0000 (18:42 +0800)
drivers/mfd/tps65910.c

index ced0c602c732547ce83f6b46205f0558804b9237..5c279a0a02c368d1701a5fc8804176f5388611f1 100755 (executable)
@@ -157,13 +157,8 @@ int tps65910_bulk_read(struct tps65910 *tps65910, u8 reg,
                     int count, u8 *buf)
 {
        int ret;
-#if 0                    
-       mutex_lock(&tps65910->io_mutex);
-       
-       ret = tps65910->read(tps65910, reg, count, buf);
-
-       mutex_unlock(&tps65910->io_mutex);
-#else    
+                    
+#if defined(CONFIG_MFD_RK610)    
        int i;             //Solve communication conflict when rk610 and 65910 on the same i2c 
 
        mutex_lock(&tps65910->io_mutex);
@@ -177,6 +172,12 @@ int tps65910_bulk_read(struct tps65910 *tps65910, u8 reg,
                        buf[i] = ret & 0x000000FF;
                }
        }
+       mutex_unlock(&tps65910->io_mutex);
+#else
+       mutex_lock(&tps65910->io_mutex);
+       
+       ret = tps65910->read(tps65910, reg, count, buf);
+
        mutex_unlock(&tps65910->io_mutex);
 #endif
        return 0;
@@ -188,13 +189,8 @@ int tps65910_bulk_write(struct tps65910 *tps65910, u8 reg,
                     int count, u8 *buf)
 {
        int ret;
-#if 0
-       mutex_lock(&tps65910->io_mutex);
        
-       ret = tps65910->write(tps65910, reg, count, buf);
-
-       mutex_unlock(&tps65910->io_mutex);
-#else
+#if defined(CONFIG_MFD_RK610)    
        int i;       // //Solve communication conflict when rk610 and 65910 on the same i2c 
 
        mutex_lock(&tps65910->io_mutex);
@@ -206,6 +202,12 @@ int tps65910_bulk_write(struct tps65910 *tps65910, u8 reg,
                        return ret;
                }
        }
+       mutex_unlock(&tps65910->io_mutex);
+#else
+       mutex_lock(&tps65910->io_mutex);
+       
+       ret = tps65910->write(tps65910, reg, count, buf);
+
        mutex_unlock(&tps65910->io_mutex);
 #endif
        return 0;