Commit 43fef47f authored by Tony Lindgren's avatar Tony Lindgren Committed by Lee Jones

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: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 482e7db1
...@@ -9,6 +9,7 @@ Required properties: ...@@ -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 ...@@ -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 = { ...@@ -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[] = { ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment