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:
parent
272b98c645
commit
00c877c69b
|
@ -14,6 +14,11 @@ Optional properties:
|
||||||
- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
|
- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
|
||||||
For hardwares which support disabling ramp rate, it should be explicitly
|
For hardwares which support disabling ramp rate, it should be explicitly
|
||||||
intialised to zero (regulator-ramp-delay = <0>) for disabling ramp delay.
|
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:
|
Deprecated properties:
|
||||||
- regulator-compatible: If a regulator chip contains multiple
|
- regulator-compatible: If a regulator chip contains multiple
|
||||||
|
|
|
@ -1186,6 +1186,8 @@ overflow_err:
|
||||||
|
|
||||||
static int _regulator_get_enable_time(struct regulator_dev *rdev)
|
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)
|
if (!rdev->desc->ops->enable_time)
|
||||||
return rdev->desc->enable_time;
|
return rdev->desc->enable_time;
|
||||||
return rdev->desc->ops->enable_time(rdev);
|
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;
|
const __be32 *min_uA, *max_uA, *ramp_delay;
|
||||||
struct property *prop;
|
struct property *prop;
|
||||||
struct regulation_constraints *constraints = &(*init_data)->constraints;
|
struct regulation_constraints *constraints = &(*init_data)->constraints;
|
||||||
|
int ret;
|
||||||
|
u32 pval;
|
||||||
|
|
||||||
constraints->name = of_get_property(np, "regulator-name", NULL);
|
constraints->name = of_get_property(np, "regulator-name", NULL);
|
||||||
|
|
||||||
|
@ -73,6 +75,10 @@ static void of_get_regulation_constraints(struct device_node *np,
|
||||||
else
|
else
|
||||||
constraints->ramp_disable = true;
|
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_state: Suspend state to set by default.
|
||||||
* @initial_mode: Mode to set at startup.
|
* @initial_mode: Mode to set at startup.
|
||||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
* @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 {
|
struct regulation_constraints {
|
||||||
|
|
||||||
|
@ -129,6 +130,7 @@ struct regulation_constraints {
|
||||||
unsigned int initial_mode;
|
unsigned int initial_mode;
|
||||||
|
|
||||||
unsigned int ramp_delay;
|
unsigned int ramp_delay;
|
||||||
|
unsigned int enable_time;
|
||||||
|
|
||||||
/* constraint flags */
|
/* constraint flags */
|
||||||
unsigned always_on:1; /* regulator never off when system is on */
|
unsigned always_on:1; /* regulator never off when system is on */
|
||||||
|
|
Loading…
Reference in New Issue