[QUESTION] How to set static/dynamic dependency between clock domains
Ming Lei
tom.leiming at gmail.com
Fri Dec 16 08:24:25 EST 2011
Hi,
I found that face detection module(fdif) can't be enabled successfully
without the
change in [1].
Looks like it is not a good way to do it because the dynamic dependency of
CD_CAM on l3_2 is disabled at default, not like other ones, so I guess that
it may work if the dynamic dependency is enabled by setting bit L3_2_DYNDEP
to CM_CAM_DYNAMICDEP. After greping over arch/arm/mach-omap2 and
arch/arm/plat-omap, I did not find any operations on CM_*_DYNAMICDEP
register, so I am wondering if dynamic dependency is not used on omap4 at all
now.
Also I have tried to add 'l3_2_clkdm' into dependency table of iss_clkdm in [2],
and it doesn't work.
How could I cope with the clock domain dependency so that fdif can be
enabled successfully?
thanks,-- Ming Lei
[1], add static dependency
diff --git a/arch/arm/mach-omap2/pm44xx.c
b/arch/arm/mach-omap2/pm44xx.cindex c264ef7..23e1f8c 100644---
a/arch/arm/mach-omap2/pm44xx.c+++ b/arch/arm/mach-omap2/pm44xx.c@@
-198,6 +198,7 @@ static int __init omap4_pm_init(void) int ret;
struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm; struct
clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm;+ struct
clockdomain *iss_clkdm; if (!cpu_is_omap44xx()) return -ENODEV;@@
-227,8 +228,10 @@ static int __init omap4_pm_init(void) l3_2_clkdm =
clkdm_lookup("l3_2_clkdm"); l4_per_clkdm =
clkdm_lookup("l4_per_clkdm"); ducati_clkdm =
clkdm_lookup("ducati_clkdm");+ iss_clkdm = clkdm_lookup("iss_clkdm");
if ((!mpuss_clkdm) || (!emif_clkdm) || (!l3_1_clkdm)
||- (!l3_2_clkdm) || (!ducati_clkdm) ||
(!l4_per_clkdm))+ (!l3_2_clkdm) || (!ducati_clkdm) || (!l4_per_clkdm)
||+ (!iss_clkdm)) goto err2; ret = clkdm_add_wkdep(mpuss_clkdm,
emif_clkdm);@@ -237,6 +240,7 @@ static int __init omap4_pm_init(void)
ret |= clkdm_add_wkdep(mpuss_clkdm, l4_per_clkdm); ret |=
clkdm_add_wkdep(ducati_clkdm, l3_1_clkdm); ret |=
clkdm_add_wkdep(ducati_clkdm, l3_2_clkdm);+ ret |=
clkdm_add_wkdep(iss_clkdm, l3_2_clkdm); if (ret) { pr_err("Failed
to add MPUSS -> L3/EMIF/L4PER, DUCATI -> L3 " "wakeup
dependency\n");
[2],
diff --git a/arch/arm/mach-omap2/clockdomains44xx_data.c
b/arch/arm/mach-omap2/clockdomains44xx_data.c
index 9299ac2..3f8f6a9 100644
--- a/arch/arm/mach-omap2/clockdomains44xx_data.c
+++ b/arch/arm/mach-omap2/clockdomains44xx_data.c
@@ -65,6 +65,7 @@ static struct clkdm_dep ducati_wkup_sleep_deps[] = {
static struct clkdm_dep iss_wkup_sleep_deps[] = {
{ .clkdm_name = "ivahd_clkdm" },
{ .clkdm_name = "l3_1_clkdm" },
+ { .clkdm_name = "l3_2_clkdm" },
{ .clkdm_name = "l3_emif_clkdm" },
{ NULL },
};
More information about the linux-arm-kernel
mailing list