* PGP Signed by an unknown keyThen what should be the method? Is it through the macro similar to patch V1 where LOW_POWER mode option come from platform data? The idea is to set the regulator in OFF or low power mode based on external control.
On Wed, Jan 25, 2012 at 04:27:48PM +0530, Laxman Dewangan wrote:
@@ -450,6 +489,29 @@ static int tps65910_set_mode(struct regulator_dev *dev, unsigned int mode)This really isn't what the set_mode() API is for - especially the fact
struct tps65910 *mfd = pmic->mfd;
int reg, value, id = rdev_get_id(dev);
+ /*
+ * If regulator is controlled through external control then
+ * mode can be identified by the input level of EN1/EN2/EN3.
+ * If it is HIGH then regulators is on, full power.
+ * If it is LOW then:
+ * - the regulator is set off if its corresponding Control
+ * bit = 0 in SLEEP_KEEP_XXX_ON.
+ * - the regulator is set in low-power mode if its corresponding
+ * control bit = 1 in SLEEP_KEEP_XXX_ON register.
+ */
that it supports turning the regulator off which really isn't what
set_mode() is supposed to do. A generic driver using this API isn't
going to play too well.
I will take care in next patch once above question is clear.+ if (pmic->board_ext_control[id]) {As a coding style thing this should be a switch statement.
+ u8 regoffs = (pmic->ext_sleep_control[id]>> 8)& 0xFF;
+ u8 bit_pos = (1<< pmic->ext_sleep_control[id]& 0xFF);
+ int ret = 0;
+ if ((mode == REGULATOR_MODE_IDLE) ||
+ (mode == REGULATOR_MODE_STANDBY))
+ ret = tps65910_set_bits(mfd,
+ TPS65910_SLEEP_KEEP_LDO_ON + regoffs, bit_pos);
* Unknown Key
* 0x6E30FDDD