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
					
				
			
		
					 4 changed files with 15 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue