X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=arch%2Farm%2Fmach-omap2%2Fpm34xx.c;fp=arch%2Farm%2Fmach-omap2%2Fpm34xx.c;h=43aac5f6031983f6129064caca3cc32f774feecd;hb=0ec95b96fd77036a13398c66901e11cd301190d0;hp=1d54e96f16daf4367433915c47a3501f4f7b16b3;hpb=5d4d399c729d071670fd17760eae634fec539b78;p=linux-2.6-omap-h63xx.git diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 1d54e96f16d..43aac5f6031 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -605,9 +605,18 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm) return set_pwrdm_state(pwrst->pwrdm, pwrst->next_state); } +/* + * Enable hw supervised mode for all clockdomains if it's + * supported. Initiate sleep transition for other clockdomains, if + * they are not used + */ static int __init clkdms_setup(struct clockdomain *clkdm) { - omap2_clkdm_allow_idle(clkdm); + if (clkdm->flags & CLKDM_CAN_ENABLE_AUTO) + omap2_clkdm_allow_idle(clkdm); + else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP && + atomic_read(&clkdm->usecount) == 0) + omap2_clkdm_sleep(clkdm); return 0; }