Merge git://github.com/rustyrussell/linux
[pandora-kernel.git] / arch / arm / mach-omap2 / powerdomain.c
index 896cb4c..5164d58 100644 (file)
@@ -77,6 +77,7 @@ static struct powerdomain *_pwrdm_lookup(const char *name)
 static int _pwrdm_register(struct powerdomain *pwrdm)
 {
        int i;
+       struct voltagedomain *voltdm;
 
        if (!pwrdm || !pwrdm->name)
                return -EINVAL;
@@ -91,6 +92,16 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
        if (_pwrdm_lookup(pwrdm->name))
                return -EEXIST;
 
+       voltdm = voltdm_lookup(pwrdm->voltdm.name);
+       if (!voltdm) {
+               pr_err("powerdomain: %s: voltagedomain %s does not exist\n",
+                      pwrdm->name, pwrdm->voltdm.name);
+               return -EINVAL;
+       }
+       pwrdm->voltdm.ptr = voltdm;
+       INIT_LIST_HEAD(&pwrdm->voltdm_node);
+       voltdm_add_pwrdm(voltdm, pwrdm);
+
        list_add(&pwrdm->node, &pwrdm_list);
 
        /* Initialize the powerdomain's state counter */
@@ -426,6 +437,18 @@ int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
        return ret;
 }
 
+/**
+ * pwrdm_get_voltdm - return a ptr to the voltdm that this pwrdm resides in
+ * @pwrdm: struct powerdomain *
+ *
+ * Return a pointer to the struct voltageomain that the specified powerdomain
+ * @pwrdm exists in.
+ */
+struct voltagedomain *pwrdm_get_voltdm(struct powerdomain *pwrdm)
+{
+       return pwrdm->voltdm.ptr;
+}
+
 /**
  * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain
  * @pwrdm: struct powerdomain *