regulator: core: support of supply name through desc
Laxman Dewangan [Fri, 3 Aug 2012 11:11:18 +0000 (16:11 +0530)]
Add support of providing the supply name through
regualtor descriptor. This help to fill the supply name
in device based on datasheet.
This patch help to develop driver which is align with
mainline.
This change is small set of change in mainline
---------------
commit 69511a452e6dc6b74fe4f3671a51b1b44b9c57e3
Author: Rajendra Nayak <rnayak@ti.com>

    regulator: map consumer regulator based on device tree
---------------

Change-Id: Ia3112f29efe4f0e0c9e98f2b7943255b2eae4c49
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/120883

drivers/regulator/core.c
include/linux/regulator/driver.h

index cbe36b9..26f8776 100644 (file)
@@ -2654,6 +2654,7 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
        static atomic_t regulator_no = ATOMIC_INIT(0);
        struct regulator_dev *rdev;
        int ret, i;
+       const char *supply = NULL;
 
        if (regulator_desc == NULL)
                return ERR_PTR(-EINVAL);
@@ -2728,21 +2729,24 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
        if (ret < 0)
                goto scrub;
 
-       if (init_data->supply_regulator) {
+       if (init_data->supply_regulator)
+               supply = init_data->supply_regulator;
+       else if (regulator_desc->supply_name)
+               supply = regulator_desc->supply_name;
+
+       if (supply) {
                struct regulator_dev *r;
                int found = 0;
 
                list_for_each_entry(r, &regulator_list, list) {
-                       if (strcmp(rdev_get_name(r),
-                                  init_data->supply_regulator) == 0) {
+                       if (strcmp(rdev_get_name(r), supply) == 0) {
                                found = 1;
                                break;
                        }
                }
 
                if (!found) {
-                       dev_err(dev, "Failed to find supply %s\n",
-                               init_data->supply_regulator);
+                       dev_err(dev, "Failed to find supply %s\n", supply);
                        ret = -ENODEV;
                        goto scrub;
                }
index 1a80bc7..65ca5ff 100644 (file)
@@ -153,6 +153,7 @@ enum regulator_type {
  * this type.
  *
  * @name: Identifying name for the regulator.
+ * @supply_name: Identifying the regulator supply
  * @id: Numerical identifier for the regulator.
  * @n_voltages: Number of selectors available for ops.list_voltage().
  * @ops: Regulator operations table.
@@ -162,6 +163,7 @@ enum regulator_type {
  */
 struct regulator_desc {
        const char *name;
+       const char *supply_name;
        int id;
        unsigned n_voltages;
        struct regulator_ops *ops;