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
@ -9,6 +9,7 @@ Required properties:
|
|||||||
"ti,twl4030-power"
|
"ti,twl4030-power"
|
||||||
"ti,twl4030-power-reset"
|
"ti,twl4030-power-reset"
|
||||||
"ti,twl4030-power-idle"
|
"ti,twl4030-power-idle"
|
||||||
|
"ti,twl4030-power-idle-osc-off"
|
||||||
|
|
||||||
The use of ti,twl4030-power-reset is recommended at least on
|
The use of ti,twl4030-power-reset is recommended at least on
|
||||||
3530 that needs a special configuration for warm reset to work.
|
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
|
When using ti,twl4030-power-idle, the TI recommended configuration
|
||||||
for idle modes is loaded to the tlw4030 PMIC.
|
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:
|
Optional properties:
|
||||||
- ti,use_poweroff: With this flag, the chip will initiates an ACTIVE-to-OFF or
|
- ti,use_poweroff: With this flag, the chip will initiates an ACTIVE-to-OFF or
|
||||||
SLEEP-to-OFF transition when the system poweroffs.
|
SLEEP-to-OFF transition when the system poweroffs.
|
||||||
|
@ -761,6 +761,19 @@ static struct twl4030_power_data omap3_idle = {
|
|||||||
.resource_config = omap3_idle_rconfig,
|
.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[] = {
|
static struct of_device_id twl4030_power_of_match[] = {
|
||||||
{
|
{
|
||||||
.compatible = "ti,twl4030-power-reset",
|
.compatible = "ti,twl4030-power-reset",
|
||||||
@ -770,6 +783,10 @@ static struct of_device_id twl4030_power_of_match[] = {
|
|||||||
.compatible = "ti,twl4030-power-idle",
|
.compatible = "ti,twl4030-power-idle",
|
||||||
.data = &omap3_idle,
|
.data = &omap3_idle,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "ti,twl4030-power-idle-osc-off",
|
||||||
|
.data = &osc_off_idle,
|
||||||
|
},
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, twl4030_power_of_match);
|
MODULE_DEVICE_TABLE(of, twl4030_power_of_match);
|
||||||
|
Loading…
Reference in New Issue
Block a user