Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
[pandora-kernel.git] / arch / arm / mach-omap2 / clockdomain.c
index e9b4f6c..0e7d501 100644 (file)
@@ -74,14 +74,11 @@ static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep)
 
        pwrdm = pwrdm_lookup(autodep->pwrdm.name);
        if (!pwrdm) {
-               pr_debug("clockdomain: _autodep_lookup: powerdomain %s "
-                        "does not exist\n", autodep->pwrdm.name);
-               WARN_ON(1);
+               pr_err("clockdomain: autodeps: powerdomain %s does not exist\n",
+                        autodep->pwrdm.name);
                pwrdm = ERR_PTR(-ENOENT);
        }
        autodep->pwrdm.ptr = pwrdm;
-
-       return;
 }
 
 /*
@@ -100,6 +97,9 @@ static void _clkdm_add_autodeps(struct clockdomain *clkdm)
                if (IS_ERR(autodep->pwrdm.ptr))
                        continue;
 
+               if (!omap_chip_is(autodep->omap_chip))
+                       continue;
+
                pr_debug("clockdomain: adding %s sleepdep/wkdep for "
                         "pwrdm %s\n", autodep->pwrdm.ptr->name,
                         clkdm->pwrdm.ptr->name);
@@ -125,6 +125,9 @@ static void _clkdm_del_autodeps(struct clockdomain *clkdm)
                if (IS_ERR(autodep->pwrdm.ptr))
                        continue;
 
+               if (!omap_chip_is(autodep->omap_chip))
+                       continue;
+
                pr_debug("clockdomain: removing %s sleepdep/wkdep for "
                         "pwrdm %s\n", autodep->pwrdm.ptr->name,
                         clkdm->pwrdm.ptr->name);
@@ -205,8 +208,8 @@ int clkdm_register(struct clockdomain *clkdm)
 
        pwrdm = pwrdm_lookup(clkdm->pwrdm.name);
        if (!pwrdm) {
-               pr_debug("clockdomain: clkdm_register %s: powerdomain %s "
-                        "does not exist\n", clkdm->name, clkdm->pwrdm.name);
+               pr_err("clockdomain: %s: powerdomain %s does not exist\n",
+                       clkdm->name, clkdm->pwrdm.name);
                return -EINVAL;
        }
        clkdm->pwrdm.ptr = pwrdm;
@@ -216,7 +219,7 @@ int clkdm_register(struct clockdomain *clkdm)
        if (_clkdm_lookup(clkdm->name)) {
                ret = -EEXIST;
                goto cr_unlock;
-       };
+       }
 
        list_add(&clkdm->node, &clkdm_list);
 
@@ -568,6 +571,8 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
        else
                omap2_clkdm_wakeup(clkdm);
 
+       pwrdm_wait_transition(clkdm->pwrdm.ptr);
+
        return 0;
 }