mirror of
https://github.com/torvalds/linux.git
synced 2024-12-08 03:52:16 +00:00
OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
Add some infrastructure to easily iterate over clock and power domains. Signed-off-by: Peter 'p2' De Schrijver <peter.de-schrijver@nokia.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
parent
fe617af716
commit
a23456e9b0
@ -299,7 +299,8 @@ struct clockdomain *clkdm_lookup(const char *name)
|
||||
* anything else to indicate failure; or -EINVAL if the function pointer
|
||||
* is null.
|
||||
*/
|
||||
int clkdm_for_each(int (*fn)(struct clockdomain *clkdm))
|
||||
int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user),
|
||||
void *user)
|
||||
{
|
||||
struct clockdomain *clkdm;
|
||||
int ret = 0;
|
||||
@ -309,7 +310,7 @@ int clkdm_for_each(int (*fn)(struct clockdomain *clkdm))
|
||||
|
||||
mutex_lock(&clkdm_mutex);
|
||||
list_for_each_entry(clkdm, &clkdm_list, node) {
|
||||
ret = (*fn)(clkdm);
|
||||
ret = (*fn)(clkdm, user);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
|
@ -333,7 +333,7 @@ static struct platform_suspend_ops omap_pm_ops = {
|
||||
.valid = suspend_valid_only_mem,
|
||||
};
|
||||
|
||||
static int _pm_clkdm_enable_hwsup(struct clockdomain *clkdm)
|
||||
static int _pm_clkdm_enable_hwsup(struct clockdomain *clkdm, void *unused)
|
||||
{
|
||||
omap2_clkdm_allow_idle(clkdm);
|
||||
return 0;
|
||||
@ -385,7 +385,7 @@ static void __init prcm_setup_regs(void)
|
||||
omap2_clkdm_sleep(gfx_clkdm);
|
||||
|
||||
/* Enable clockdomain hardware-supervised control for all clkdms */
|
||||
clkdm_for_each(_pm_clkdm_enable_hwsup);
|
||||
clkdm_for_each(_pm_clkdm_enable_hwsup, NULL);
|
||||
|
||||
/* Enable clock autoidle for all domains */
|
||||
cm_write_mod_reg(OMAP24XX_AUTO_CAM |
|
||||
|
@ -664,7 +664,7 @@ static void __init prcm_setup_regs(void)
|
||||
omap3_d2d_idle();
|
||||
}
|
||||
|
||||
static int __init pwrdms_setup(struct powerdomain *pwrdm)
|
||||
static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
|
||||
{
|
||||
struct power_state *pwrst;
|
||||
|
||||
@ -689,7 +689,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm)
|
||||
* supported. Initiate sleep transition for other clockdomains, if
|
||||
* they are not used
|
||||
*/
|
||||
static int __init clkdms_setup(struct clockdomain *clkdm)
|
||||
static int __init clkdms_setup(struct clockdomain *clkdm, void *unused)
|
||||
{
|
||||
if (clkdm->flags & CLKDM_CAN_ENABLE_AUTO)
|
||||
omap2_clkdm_allow_idle(clkdm);
|
||||
@ -722,13 +722,13 @@ static int __init omap3_pm_init(void)
|
||||
goto err1;
|
||||
}
|
||||
|
||||
ret = pwrdm_for_each(pwrdms_setup);
|
||||
ret = pwrdm_for_each(pwrdms_setup, NULL);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "Failed to setup powerdomains\n");
|
||||
goto err2;
|
||||
}
|
||||
|
||||
(void) clkdm_for_each(clkdms_setup);
|
||||
(void) clkdm_for_each(clkdms_setup, NULL);
|
||||
|
||||
mpu_pwrdm = pwrdm_lookup("mpu_pwrdm");
|
||||
if (mpu_pwrdm == NULL) {
|
||||
|
@ -95,7 +95,8 @@ int clkdm_register(struct clockdomain *clkdm);
|
||||
int clkdm_unregister(struct clockdomain *clkdm);
|
||||
struct clockdomain *clkdm_lookup(const char *name);
|
||||
|
||||
int clkdm_for_each(int (*fn)(struct clockdomain *clkdm));
|
||||
int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, void *user),
|
||||
void *user);
|
||||
struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm);
|
||||
|
||||
void omap2_clkdm_allow_idle(struct clockdomain *clkdm);
|
||||
|
@ -128,7 +128,8 @@ int pwrdm_register(struct powerdomain *pwrdm);
|
||||
int pwrdm_unregister(struct powerdomain *pwrdm);
|
||||
struct powerdomain *pwrdm_lookup(const char *name);
|
||||
|
||||
int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm));
|
||||
int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
|
||||
void *user);
|
||||
|
||||
int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm);
|
||||
int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm);
|
||||
|
Loading…
Reference in New Issue
Block a user