regulator: core: add support for configuring turn-on time through constraints
The turn-on time of the regulator depends on the regulator device's electrical characteristics. Sometimes regulator turn-on time also depends on the capacitive load on the given platform and it can be more than the datasheet value. The driver provides the enable-time as per datasheet. Add support for configure the enable ramp time through regulator constraints so that regulator core can take this value for enable time for that regulator. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Родитель
272b98c645
Коммит
00c877c69b
|
@ -14,6 +14,11 @@ Optional properties:
|
|||
- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
|
||||
For hardwares which support disabling ramp rate, it should be explicitly
|
||||
intialised to zero (regulator-ramp-delay = <0>) for disabling ramp delay.
|
||||
- regulator-enable-ramp-delay: The time taken, in microseconds, for the supply
|
||||
rail to reach the target voltage, plus/minus whatever tolerance the board
|
||||
design requires. This property describes the total system ramp time
|
||||
required due to the combination of internal ramping of the regulator itself,
|
||||
and board design issues such as trace capacitance and load on the supply.
|
||||
|
||||
Deprecated properties:
|
||||
- regulator-compatible: If a regulator chip contains multiple
|
||||
|
|
|
@ -1186,6 +1186,8 @@ overflow_err:
|
|||
|
||||
static int _regulator_get_enable_time(struct regulator_dev *rdev)
|
||||
{
|
||||
if (rdev->constraints && rdev->constraints->enable_time)
|
||||
return rdev->constraints->enable_time;
|
||||
if (!rdev->desc->ops->enable_time)
|
||||
return rdev->desc->enable_time;
|
||||
return rdev->desc->ops->enable_time(rdev);
|
||||
|
|
|
@ -23,6 +23,8 @@ static void of_get_regulation_constraints(struct device_node *np,
|
|||
const __be32 *min_uA, *max_uA, *ramp_delay;
|
||||
struct property *prop;
|
||||
struct regulation_constraints *constraints = &(*init_data)->constraints;
|
||||
int ret;
|
||||
u32 pval;
|
||||
|
||||
constraints->name = of_get_property(np, "regulator-name", NULL);
|
||||
|
||||
|
@ -73,6 +75,10 @@ static void of_get_regulation_constraints(struct device_node *np,
|
|||
else
|
||||
constraints->ramp_disable = true;
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(np, "regulator-enable-ramp-delay", &pval);
|
||||
if (!ret)
|
||||
constraints->enable_time = pval;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -95,6 +95,7 @@ struct regulator_state {
|
|||
* @initial_state: Suspend state to set by default.
|
||||
* @initial_mode: Mode to set at startup.
|
||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||
* @enable_time: Turn-on time of the rails (unit: microseconds)
|
||||
*/
|
||||
struct regulation_constraints {
|
||||
|
||||
|
@ -129,6 +130,7 @@ struct regulation_constraints {
|
|||
unsigned int initial_mode;
|
||||
|
||||
unsigned int ramp_delay;
|
||||
unsigned int enable_time;
|
||||
|
||||
/* constraint flags */
|
||||
unsigned always_on:1; /* regulator never off when system is on */
|
||||
|
|
Загрузка…
Ссылка в новой задаче