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 }, }; -- 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