davinci: clock: let clk->set_rate function sleep

When supporting I2C/SPI based on-board PLLs like CDCE949,
it is essential that clk->set_rate be able to sleep.

Currently, this is not possible because clk->set_rate is
called from within spin-lock in clk_set_rate

This patch brings clk->set_rate outside of the spin-lock
and lets the individual set_rate implementations achieve
serialization through appropiate means.

Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
diff --git a/arch/arm/mach-davinci/cdce949.c b/arch/arm/mach-davinci/cdce949.c
index 6af3289..aec3756 100644
--- a/arch/arm/mach-davinci/cdce949.c
+++ b/arch/arm/mach-davinci/cdce949.c
@@ -23,6 +23,7 @@
 #include "clock.h"
 
 static struct i2c_client *cdce_i2c_client;
+static DEFINE_MUTEX(cdce_mutex);
 
 /* CDCE register descriptor */
 struct cdce_reg {
@@ -231,16 +232,19 @@
 	if (!regs)
 		return -EINVAL;
 
+	mutex_lock(&cdce_mutex);
 	for (i = 0; regs[i].addr; i++) {
 		ret = i2c_smbus_write_byte_data(cdce_i2c_client,
 					regs[i].addr | 0x80, regs[i].val);
 		if (ret)
-			return ret;
+			break;
 	}
+	mutex_unlock(&cdce_mutex);
 
-	clk->rate = rate;
+	if (!ret)
+		clk->rate = rate;
 
-	return 0;
+	return ret;
 }
 
 static int cdce_probe(struct i2c_client *client,