aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2012-03-08 08:01:46 -0500
committerSamuel Ortiz <sameo@linux.intel.com>2012-03-16 14:43:36 -0400
commit392cbd1e608ba79bd2da652eb3a28d841e51eaee (patch)
tree2c6b20c16188fd1b4ecf25ebf7df02b2c61ed488 /drivers/mfd
parentbd155d2c3c8b04d66f7890dbd9539c37e9dea02b (diff)
mfd: Don't use mutex_lock_interruptible in ab8500-core
This disadvantage of having it interruptible is that it would appear to work OK in most situations, but in the rare case that this call does fail, it can lead to misconfiguration of the AB, such as a regulator not being turned off and leading to a platform power consumption increase. There's no real benefit to having this interruptible. Make it a plain mutex_lock. The non-interruptability matches other low-level I/O functions such as SPI and I2C. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/ab8500-core.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c
index 15a18fee9713..f134a6cd4b8a 100644
--- a/drivers/mfd/ab8500-core.c
+++ b/drivers/mfd/ab8500-core.c
@@ -147,9 +147,7 @@ static int set_register_interruptible(struct ab8500 *ab8500, u8 bank,
147 147
148 dev_vdbg(ab8500->dev, "wr: addr %#x <= %#x\n", addr, data); 148 dev_vdbg(ab8500->dev, "wr: addr %#x <= %#x\n", addr, data);
149 149
150 ret = mutex_lock_interruptible(&ab8500->lock); 150 mutex_lock(&ab8500->lock);
151 if (ret)
152 return ret;
153 151
154 ret = ab8500->write(ab8500, addr, data); 152 ret = ab8500->write(ab8500, addr, data);
155 if (ret < 0) 153 if (ret < 0)
@@ -176,9 +174,7 @@ static int get_register_interruptible(struct ab8500 *ab8500, u8 bank,
176 * bank on higher 8 bits and reg in lower */ 174 * bank on higher 8 bits and reg in lower */
177 u16 addr = ((u16)bank) << 8 | reg; 175 u16 addr = ((u16)bank) << 8 | reg;
178 176
179 ret = mutex_lock_interruptible(&ab8500->lock); 177 mutex_lock(&ab8500->lock);
180 if (ret)
181 return ret;
182 178
183 ret = ab8500->read(ab8500, addr); 179 ret = ab8500->read(ab8500, addr);
184 if (ret < 0) 180 if (ret < 0)
@@ -210,9 +206,7 @@ static int mask_and_set_register_interruptible(struct ab8500 *ab8500, u8 bank,
210 * bank on higher 8 bits and reg in lower */ 206 * bank on higher 8 bits and reg in lower */
211 u16 addr = ((u16)bank) << 8 | reg; 207 u16 addr = ((u16)bank) << 8 | reg;
212 208
213 ret = mutex_lock_interruptible(&ab8500->lock); 209 mutex_lock(&ab8500->lock);
214 if (ret)
215 return ret;
216 210
217 ret = ab8500->read(ab8500, addr); 211 ret = ab8500->read(ab8500, addr);
218 if (ret < 0) { 212 if (ret < 0) {