[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4F1FF9EF.9000004@nvidia.com>
Date: Wed, 25 Jan 2012 18:17:43 +0530
From: Laxman Dewangan <ldewangan@...dia.com>
To: Mark Brown <broonie@...nsource.wolfsonmicro.com>
CC: "lrg@...com" <lrg@...com>,
"jedu@...mlogic.co.uk" <jedu@...mlogic.co.uk>,
"sameo@...ux.intel.com" <sameo@...ux.intel.com>,
"gg@...mlogic.co.uk" <gg@...mlogic.co.uk>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-tegra@...r.kernel.org" <linux-tegra@...r.kernel.org>
Subject: Re: [PATCH V2] regulator: tps65910: Sleep control through external
inputs
On Wednesday 25 January 2012 06:12 PM, Mark Brown wrote:
> * PGP Signed by an unknown key
>
> 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)
>> 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.
>> + */
> This really isn't what the set_mode() API is for - especially the fact
> 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.
Then 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.
>> + if (pmic->board_ext_control[id]) {
>> + 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);
> As a coding style thing this should be a switch statement.
I will take care in next patch once above question is clear.
> * Unknown Key
> * 0x6E30FDDD
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists