ARM: mach-shmobile: sh7372 late pm domain off
authorMagnus Damm <damm@opensource.se>
Sun, 10 Jul 2011 08:38:53 +0000 (10:38 +0200)
committerRafael J. Wysocki <rjw@sisk.pl>
Sun, 10 Jul 2011 08:38:53 +0000 (10:38 +0200)
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>
arch/arm/mach-shmobile/pm-sh7372.c

index a8e0de1277dc0279d148ff8d18609fb7d767aef1..9ad3b610f0fedfc0425c87193ca4a70f958c47c9 100644 (file)
@@ -96,6 +96,17 @@ static bool pd_active_wakeup(struct device *dev)
        return true;
 }
 
+static void sh7372_late_pm_domain_off(void)
+{
+       /* request power down of unused pm domains */
+       queue_work(pm_wq, &sh7372_a4lc.genpd.power_off_work);
+       queue_work(pm_wq, &sh7372_a4mp.genpd.power_off_work);
+       queue_work(pm_wq, &sh7372_d4.genpd.power_off_work);
+       queue_work(pm_wq, &sh7372_a3rv.genpd.power_off_work);
+       queue_work(pm_wq, &sh7372_a3ri.genpd.power_off_work);
+       queue_work(pm_wq, &sh7372_a3sg.genpd.power_off_work);
+}
+
 void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd)
 {
        struct generic_pm_domain *genpd = &sh7372_pd->genpd;
@@ -107,6 +118,8 @@ void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd)
        genpd->power_off = pd_power_down;
        genpd->power_on = pd_power_up;
        pd_power_up(&sh7372_pd->genpd);
+
+       shmobile_runtime_pm_late_init = sh7372_late_pm_domain_off;
 }
 
 void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd,