aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/pm-sh7372.c
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2011-07-10 04:38:53 -0400
committerRafael J. Wysocki <rjw@sisk.pl>2011-07-10 04:38:53 -0400
commitb9416f03fd9f809225a90f63b2fbc86f90010eab (patch)
treef0f43787b09fa3d52f8b78bd3aa73b3c7b54e7b1 /arch/arm/mach-shmobile/pm-sh7372.c
parent999a4d2a4da0527567e4b17d4da0782509358a83 (diff)
ARM: mach-shmobile: sh7372 late pm domain off
Add sh7372 specific code to power down unused pm domains. This should really be replaced by some generic PM core code IMO, but until that happens this patch makes sure we don't waste power by leaving unused power domains on. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'arch/arm/mach-shmobile/pm-sh7372.c')
-rw-r--r--arch/arm/mach-shmobile/pm-sh7372.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c
index a8e0de1277dc..9ad3b610f0fe 100644
--- a/arch/arm/mach-shmobile/pm-sh7372.c
+++ b/arch/arm/mach-shmobile/pm-sh7372.c
@@ -96,6 +96,17 @@ static bool pd_active_wakeup(struct device *dev)
96 return true; 96 return true;
97} 97}
98 98
99static void sh7372_late_pm_domain_off(void)
100{
101 /* request power down of unused pm domains */
102 queue_work(pm_wq, &sh7372_a4lc.genpd.power_off_work);
103 queue_work(pm_wq, &sh7372_a4mp.genpd.power_off_work);
104 queue_work(pm_wq, &sh7372_d4.genpd.power_off_work);
105 queue_work(pm_wq, &sh7372_a3rv.genpd.power_off_work);
106 queue_work(pm_wq, &sh7372_a3ri.genpd.power_off_work);
107 queue_work(pm_wq, &sh7372_a3sg.genpd.power_off_work);
108}
109
99void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd) 110void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd)
100{ 111{
101 struct generic_pm_domain *genpd = &sh7372_pd->genpd; 112 struct generic_pm_domain *genpd = &sh7372_pd->genpd;
@@ -107,6 +118,8 @@ void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd)
107 genpd->power_off = pd_power_down; 118 genpd->power_off = pd_power_down;
108 genpd->power_on = pd_power_up; 119 genpd->power_on = pd_power_up;
109 pd_power_up(&sh7372_pd->genpd); 120 pd_power_up(&sh7372_pd->genpd);
121
122 shmobile_runtime_pm_late_init = sh7372_late_pm_domain_off;
110} 123}
111 124
112void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd, 125void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd,