mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mfd: twl4030-power: Add a configuration to turn off oscillator during off-idle
Some oscillators can be turned off during off-idle saving few a little bit power at the cost of the oscillator start up latency. If you board can do this, you can now enable it by using the ti,twl4030-power-idle-osc-off compatible flag. Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
		
							parent
							
								
									482e7db160
								
							
						
					
					
						commit
						43fef47f94
					
				
					 2 changed files with 23 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -9,6 +9,7 @@ Required properties:
 | 
			
		|||
	"ti,twl4030-power"
 | 
			
		||||
	"ti,twl4030-power-reset"
 | 
			
		||||
	"ti,twl4030-power-idle"
 | 
			
		||||
	"ti,twl4030-power-idle-osc-off"
 | 
			
		||||
 | 
			
		||||
The use of ti,twl4030-power-reset is recommended at least on
 | 
			
		||||
3530 that needs a special configuration for warm reset to work.
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +17,11 @@ The use of ti,twl4030-power-reset is recommended at least on
 | 
			
		|||
When using ti,twl4030-power-idle, the TI recommended configuration
 | 
			
		||||
for idle modes is loaded to the tlw4030 PMIC.
 | 
			
		||||
 | 
			
		||||
When using ti,twl4030-power-idle-osc-off, the TI recommended
 | 
			
		||||
configuration is used with the external oscillator being shut
 | 
			
		||||
down during off-idle. Note that this does not work on all boards
 | 
			
		||||
depending on how the external oscillator is wired.
 | 
			
		||||
 | 
			
		||||
Optional properties:
 | 
			
		||||
- ti,use_poweroff: With this flag, the chip will initiates an ACTIVE-to-OFF or
 | 
			
		||||
		   SLEEP-to-OFF transition when the system poweroffs.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -761,6 +761,19 @@ static struct twl4030_power_data omap3_idle = {
 | 
			
		|||
	.resource_config	= omap3_idle_rconfig,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Disable 32 KiHz oscillator during idle */
 | 
			
		||||
static struct twl4030_resconfig osc_off_rconfig[] = {
 | 
			
		||||
	TWL_REMAP_OFF(RES_CLKEN, DEV_GRP_P1 | DEV_GRP_P3, 3, 2),
 | 
			
		||||
	{ /* Terminator */ },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct twl4030_power_data osc_off_idle = {
 | 
			
		||||
	.scripts		= omap3_idle_scripts,
 | 
			
		||||
	.num			= ARRAY_SIZE(omap3_idle_scripts),
 | 
			
		||||
	.resource_config	= omap3_idle_rconfig,
 | 
			
		||||
	.board_config		= osc_off_rconfig,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct of_device_id twl4030_power_of_match[] = {
 | 
			
		||||
	{
 | 
			
		||||
		.compatible = "ti,twl4030-power-reset",
 | 
			
		||||
| 
						 | 
				
			
			@ -770,6 +783,10 @@ static struct of_device_id twl4030_power_of_match[] = {
 | 
			
		|||
		.compatible = "ti,twl4030-power-idle",
 | 
			
		||||
		.data = &omap3_idle,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.compatible = "ti,twl4030-power-idle-osc-off",
 | 
			
		||||
		.data = &osc_off_idle,
 | 
			
		||||
	},
 | 
			
		||||
	{ },
 | 
			
		||||
};
 | 
			
		||||
MODULE_DEVICE_TABLE(of, twl4030_power_of_match);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue