Hi Thara, some more comments: On Wed, 20 Jan 2010, Thara Gopinath wrote: > This patch adds APIs pwrdm_read_next_logic_pwrst and Shouldn't this be pwrdm_read_logic_retst(), to match the existing code's pwrdm_set_logic_retst() ? > pwrdm_read_next_mem_pwrst and similarly, shouldn't this be pwrdm_read_next_mem_retst() to match the existing code's pwrdm_read_mem_retst() ? > for reading the next programmed logic and memory state a powerdomain is > to hit in event of the next power domain state being retention. > > Signed-off-by: Thara Gopinath <thara@xxxxxx> > --- > arch/arm/mach-omap2/powerdomain.c | 71 +++++++++++++++++++++++++ > arch/arm/plat-omap/include/plat/powerdomain.h | 2 + > 2 files changed, 73 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c > index 26b3f3e..06bf290 100644 > --- a/arch/arm/mach-omap2/powerdomain.c > +++ b/arch/arm/mach-omap2/powerdomain.c > @@ -964,6 +964,29 @@ int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm) > } > > /** > + * pwrdm_read_next_logic_pwrst - get next powerdomain logic power state > + * @pwrdm: struct powerdomain * to get next logic power state > + * > + * Return the powerdomain pwrdm's logic power state. Returns -EINVAL > + * if the powerdomain pointer is null or returns the next logic > + * power state upon success. > + */ > +int pwrdm_read_next_logic_pwrst(struct powerdomain *pwrdm) (see above) > +{ > + if (!pwrdm) > + return -EINVAL; > + > + /* > + * The register bit names below may not correspond to the > + * actual names of the bits in each powerdomain's register, > + * but the type of value returned is the same for each > + * powerdomain. > + */ > + return prm_read_mod_bits_shift(pwrdm->prcm_offs, PM_PWSTCTRL, > + OMAP3430_LOGICSTATEST); > +} > + > +/** > * pwrdm_read_mem_pwrst - get current memory bank power state > * @pwrdm: struct powerdomain * to get current memory bank power state > * @bank: memory bank number (0-3) > @@ -1065,6 +1088,54 @@ int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank) > } > > /** > + * pwrdm_read_next_mem_pwrst - get next memory bank power state > + * @pwrdm: struct powerdomain * to get mext memory bank power state > + * @bank: memory bank number (0-3) > + * > + * Return the powerdomain pwrdm's next memory power state for bank > + * x. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if > + * the target memory bank does not exist or is not controllable, or > + * returns the next memory power state upon success. > + */ > +int pwrdm_read_next_mem_pwrst(struct powerdomain *pwrdm, u8 bank) (see above) > +{ > + u32 m; > + > + if (!pwrdm) > + return -EINVAL; > + > + if (pwrdm->banks < (bank + 1)) > + return -EEXIST; > + > + /* > + * The register bit names below may not correspond to the > + * actual names of the bits in each powerdomain's register, > + * but the type of value returned is the same for each > + * powerdomain. > + */ > + switch (bank) { > + case 0: > + m = OMAP3430_SHAREDL1CACHEFLATRETSTATE; > + break; > + case 1: > + m = OMAP3430_L1FLATMEMRETSTATE; > + break; > + case 2: > + m = OMAP3430_SHAREDL2CACHEFLATRETSTATE; > + break; > + case 3: > + m = OMAP3430_SHAREDL2CACHEFLATRETSTATE; > + break; > + default: > + WARN_ON(1); /* should never happen */ > + return -EEXIST; > + } > + > + return prm_read_mod_bits_shift(pwrdm->prcm_offs, > + PM_PWSTCTRL, m); > +} > + > +/** > * pwrdm_clear_all_prev_pwrst - clear previous powerstate register for a pwrdm > * @pwrdm: struct powerdomain * to clear > * > diff --git a/arch/arm/plat-omap/include/plat/powerdomain.h b/arch/arm/plat-omap/include/plat/powerdomain.h > index 0b96005..7576559 100644 > --- a/arch/arm/plat-omap/include/plat/powerdomain.h > +++ b/arch/arm/plat-omap/include/plat/powerdomain.h > @@ -170,8 +170,10 @@ int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst); > > int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm); > int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm); > +int pwrdm_read_next_logic_pwrst(struct powerdomain *pwrdm); (as above) > int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank); > int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank); > +int pwrdm_read_next_mem_pwrst(struct powerdomain *pwrdm, u8 bank); (as above) > > int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm); > int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm); > -- > 1.5.6.3 > > -- > 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 > - Paul -- 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