>-----Original Message----- >From: ext Kevin Hilman [mailto:khilman@xxxxxxxxxxxxxxxxxxx] >Sent: 08 March, 2010 19:16 >To: Kristo Tero (Nokia-D/Tampere) >Cc: linux-omap@xxxxxxxxxxxxxxx >Subject: Re: [PATCHv6 9/9] OMAP3: PM: Added support for >suspending to INACTIVE state > ><Tero.Kristo@xxxxxxxxx> writes: > >[...] > >> True, ancient info there. OFF for example has been supported >for ages already. >> >>> >>> >>>> + if (state != PWRDM_POWER_INACTIVE) >>>> + while (!(pwrdm->pwrsts & (1 << state))) { >>>> + if (state == PWRDM_POWER_OFF) >>>> + return ret; >>>> + state--; >>>> + } >>> >>>I think all powerdomains can be inactive right? >> >> Yes. >> >>>I think it would be cleaner to just have all the pwrdm->pwrsts fields >>>include intactive as a valid option. >>> >>>Something like the patch below. IIRC, you did something like this in >>>one of the earlier versions of the patch. >> >> Yeah, something like this was done previously, however Paul did not >> like the idea of changing the generic powerdomain code too much so I >> dropped it completely. It is now done only via the support functions >> in patch #1, and only done for the powerdomains that actually need >> it for the cpuidle (mpu/core/neon.) It would be possible to add >> support for the rest of the powerdomains also, but I decided to drop >> this in favor of getting the patch set in. > >I'm not proposing changing any of the other powerdomain code. Just >changing the PWRSTS_* defines, essentially so that INACTIVE is >a valid state. > >That will eliminate the need for a special check for inactive in this >patch. This is a chicken-egg problem. If you alter the PWRSTS_* defines, you need to change implementation of pwrdm_set_next_pwrst() as it would accept INACTIVE also, which is not supported by the code right now. > >Kevin > >>> >>>diff --git a/arch/arm/plat-omap/include/plat/powerdomain.h >>>b/arch/arm/plat-omap/include/plat/powerdomain.h >>>index a1ecd47..c692472 100644 >>>--- a/arch/arm/plat-omap/include/plat/powerdomain.h >>>+++ b/arch/arm/plat-omap/include/plat/powerdomain.h >>>@@ -31,17 +31,17 @@ >>> #define PWRDM_MAX_PWRSTS 4 >>> >>> /* Powerdomain allowable state bitfields */ >>>-#define PWRSTS_OFF_ON ((1 << PWRDM_POWER_OFF) | \ >>>+#define PWRSTS_ON ((1 << PWRDM_POWER_INACTIVE) | \ >>> (1 << PWRDM_POWER_ON)) >>> >>>+#define PWRSTS_OFF_ON ((1 << PWRDM_POWER_OFF) >| PWRSTS_ON) >>>+ >>> #define PWRSTS_OFF_RET ((1 << PWRDM_POWER_OFF) | \ >>> (1 << PWRDM_POWER_RET)) >>> >>>-#define PWRSTS_RET_ON ((1 << PWRDM_POWER_RET) | \ >>>- (1 << PWRDM_POWER_ON)) >>>- >>>-#define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | (1 << PWRDM_POWER_ON)) >>>+#define PWRSTS_RET_ON ((1 << PWRDM_POWER_RET) >| PWRSTS_ON) >>> >>>+#define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | PWRSTS_ON) >>> >>> /* Powerdomain flags */ >>> #define PWRDM_HAS_HDWR_SAR (1 << 0) /* hardware >>>save-and-restore support */ >>> >-- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html