From 6465a37ed910cd2dc635d2d90e4da07941e9bfa8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Thu, 28 Feb 2013 18:19:28 +0800 Subject: [PATCH] tps65910&rk610:Solve communication conflict when rk610 and tps65910 on the same i2c --- drivers/mfd/tps65910.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c index dd67d3110df2..ced0c602c732 100755 --- a/drivers/mfd/tps65910.c +++ b/drivers/mfd/tps65910.c @@ -157,14 +157,30 @@ 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 + int i; //Solve communication conflict when rk610 and 65910 on the same i2c + + mutex_lock(&tps65910->io_mutex); + for(i=0; iio_mutex); + return ret; + }else{ + buf[i] = ret & 0x000000FF; + } + } + mutex_unlock(&tps65910->io_mutex); +#endif + return 0; - return ret; } EXPORT_SYMBOL_GPL(tps65910_bulk_read); @@ -172,14 +188,28 @@ 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 + int i; // //Solve communication conflict when rk610 and 65910 on the same i2c + + mutex_lock(&tps65910->io_mutex); + for(i=0; iio_mutex); + return ret; + } + } + mutex_unlock(&tps65910->io_mutex); +#endif + return 0; - return ret; } EXPORT_SYMBOL_GPL(tps65910_bulk_write); -- 2.34.1