mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 18:11:56 +00:00
OMAP2/3 PM: Adding powerdomain APIs for reading the next logic and mem state
This patch adds APIs pwrdm_read_logic_retst and 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. These are needed for OSWR support. Signed-off-by: Thara Gopinath <thara@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
b024b542c3
commit
1e3d0d2ba9
@ -678,6 +678,29 @@ int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm)
|
|||||||
OMAP3430_LASTLOGICSTATEENTERED);
|
OMAP3430_LASTLOGICSTATEENTERED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pwrdm_read_logic_retst - 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_logic_retst(struct powerdomain *pwrdm)
|
||||||
|
{
|
||||||
|
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, pwrstctrl_reg_offs,
|
||||||
|
OMAP3430_LOGICSTATEST);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pwrdm_read_mem_pwrst - get current memory bank power state
|
* pwrdm_read_mem_pwrst - get current memory bank power state
|
||||||
* @pwrdm: struct powerdomain * to get current memory bank power state
|
* @pwrdm: struct powerdomain * to get current memory bank power state
|
||||||
@ -784,6 +807,56 @@ int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
|
|||||||
OMAP3430_PM_PREPWSTST, m);
|
OMAP3430_PM_PREPWSTST, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pwrdm_read_mem_retst - 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_mem_retst(struct powerdomain *pwrdm, u8 bank)
|
||||||
|
{
|
||||||
|
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 = OMAP_MEM0_RETSTATE_MASK;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
m = OMAP_MEM1_RETSTATE_MASK;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
m = OMAP_MEM2_RETSTATE_MASK;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
m = OMAP_MEM3_RETSTATE_MASK;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
m = OMAP_MEM4_RETSTATE_MASK;
|
||||||
|
default:
|
||||||
|
WARN_ON(1); /* should never happen */
|
||||||
|
return -EEXIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
return prm_read_mod_bits_shift(pwrdm->prcm_offs,
|
||||||
|
pwrstctrl_reg_offs, m);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pwrdm_clear_all_prev_pwrst - clear previous powerstate register for a pwrdm
|
* pwrdm_clear_all_prev_pwrst - clear previous powerstate register for a pwrdm
|
||||||
* @pwrdm: struct powerdomain * to clear
|
* @pwrdm: struct powerdomain * to clear
|
||||||
|
@ -137,8 +137,10 @@ int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
|
|||||||
|
|
||||||
int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm);
|
int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm);
|
||||||
int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm);
|
int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm);
|
||||||
|
int pwrdm_read_logic_retst(struct powerdomain *pwrdm);
|
||||||
int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank);
|
int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank);
|
||||||
int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank);
|
int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank);
|
||||||
|
int pwrdm_read_mem_retst(struct powerdomain *pwrdm, u8 bank);
|
||||||
|
|
||||||
int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm);
|
int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm);
|
||||||
int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm);
|
int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm);
|
||||||
|
Loading…
Reference in New Issue
Block a user