linux/drivers/regulator/core.c
<<
>>
Prefs
   1/*
   2 * core.c  --  Voltage/Current Regulator framework.
   3 *
   4 * Copyright 2007, 2008 Wolfson Microelectronics PLC.
   5 * Copyright 2008 SlimLogic Ltd.
   6 *
   7 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
   8 *
   9 *  This program is free software; you can redistribute  it and/or modify it
  10 *  under  the terms of  the GNU General  Public License as published by the
  11 *  Free Software Foundation;  either version 2 of the  License, or (at your
  12 *  option) any later version.
  13 *
  14 */
  15
  16#include <linux/kernel.h>
  17#include <linux/init.h>
  18#include <linux/debugfs.h>
  19#include <linux/device.h>
  20#include <linux/slab.h>
  21#include <linux/async.h>
  22#include <linux/err.h>
  23#include <linux/mutex.h>
  24#include <linux/suspend.h>
  25#include <linux/delay.h>
  26#include <linux/of.h>
  27#include <linux/regulator/of_regulator.h>
  28#include <linux/regulator/consumer.h>
  29#include <linux/regulator/driver.h>
  30#include <linux/regulator/machine.h>
  31#include <linux/module.h>
  32
  33#define CREATE_TRACE_POINTS
  34#include <trace/events/regulator.h>
  35
  36#include "dummy.h"
  37
  38#define rdev_crit(rdev, fmt, ...)                                       \
  39        pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
  40#define rdev_err(rdev, fmt, ...)                                        \
  41        pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
  42#define rdev_warn(rdev, fmt, ...)                                       \
  43        pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
  44#define rdev_info(rdev, fmt, ...)                                       \
  45        pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
  46#define rdev_dbg(rdev, fmt, ...)                                        \
  47        pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
  48
  49static DEFINE_MUTEX(regulator_list_mutex);
  50static LIST_HEAD(regulator_list);
  51static LIST_HEAD(regulator_map_list);
  52static bool has_full_constraints;
  53static bool board_wants_dummy_regulator;
  54
  55static struct dentry *debugfs_root;
  56
  57/*
  58 * struct regulator_map
  59 *
  60 * Used to provide symbolic supply names to devices.
  61 */
  62struct regulator_map {
  63        struct list_head list;
  64        const char *dev_name;   /* The dev_name() for the consumer */
  65        const char *supply;
  66        struct regulator_dev *regulator;
  67};
  68
  69/*
  70 * struct regulator
  71 *
  72 * One for each consumer device.
  73 */
  74struct regulator {
  75        struct device *dev;
  76        struct list_head list;
  77        int uA_load;
  78        int min_uV;
  79        int max_uV;
  80        char *supply_name;
  81        struct device_attribute dev_attr;
  82        struct regulator_dev *rdev;
  83        struct dentry *debugfs;
  84};
  85
  86static int _regulator_is_enabled(struct regulator_dev *rdev);
  87static int _regulator_disable(struct regulator_dev *rdev);
  88static int _regulator_get_voltage(struct regulator_dev *rdev);
  89static int _regulator_get_current_limit(struct regulator_dev *rdev);
  90static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
  91static void _notifier_call_chain(struct regulator_dev *rdev,
  92                                  unsigned long event, void *data);
  93static int _regulator_do_set_voltage(struct regulator_dev *rdev,
  94                                     int min_uV, int max_uV);
  95static struct regulator *create_regulator(struct regulator_dev *rdev,
  96                                          struct device *dev,
  97                                          const char *supply_name);
  98
  99static const char *rdev_get_name(struct regulator_dev *rdev)
 100{
 101        if (rdev->constraints && rdev->constraints->name)
 102                return rdev->constraints->name;
 103        else if (rdev->desc->name)
 104                return rdev->desc->name;
 105        else
 106                return "";
 107}
 108
 109/* gets the regulator for a given consumer device */
 110static struct regulator *get_device_regulator(struct device *dev)
 111{
 112        struct regulator *regulator = NULL;
 113        struct regulator_dev *rdev;
 114
 115        mutex_lock(&regulator_list_mutex);
 116        list_for_each_entry(rdev, &regulator_list, list) {
 117                mutex_lock(&rdev->mutex);
 118                list_for_each_entry(regulator, &rdev->consumer_list, list) {
 119                        if (regulator->dev == dev) {
 120                                mutex_unlock(&rdev->mutex);
 121                                mutex_unlock(&regulator_list_mutex);
 122                                return regulator;
 123                        }
 124                }
 125                mutex_unlock(&rdev->mutex);
 126        }
 127        mutex_unlock(&regulator_list_mutex);
 128        return NULL;
 129}
 130
 131/**
 132 * of_get_regulator - get a regulator device node based on supply name
 133 * @dev: Device pointer for the consumer (of regulator) device
 134 * @supply: regulator supply name
 135 *
 136 * Extract the regulator device node corresponding to the supply name.
 137 * retruns the device node corresponding to the regulator if found, else
 138 * returns NULL.
 139 */
 140static struct device_node *of_get_regulator(struct device *dev, const char *supply)
 141{
 142        struct device_node *regnode = NULL;
 143        char prop_name[32]; /* 32 is max size of property name */
 144
 145        dev_dbg(dev, "Looking up %s-supply from device tree\n", supply);
 146
 147        snprintf(prop_name, 32, "%s-supply", supply);
 148        regnode = of_parse_phandle(dev->of_node, prop_name, 0);
 149
 150        if (!regnode) {
 151                dev_dbg(dev, "Looking up %s property in node %s failed",
 152                                prop_name, dev->of_node->full_name);
 153                return NULL;
 154        }
 155        return regnode;
 156}
 157
 158/* Platform voltage constraint check */
 159static int regulator_check_voltage(struct regulator_dev *rdev,
 160                                   int *min_uV, int *max_uV)
 161{
 162        BUG_ON(*min_uV > *max_uV);
 163
 164        if (!rdev->constraints) {
 165                rdev_err(rdev, "no constraints\n");
 166                return -ENODEV;
 167        }
 168        if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
 169                rdev_err(rdev, "operation not allowed\n");
 170                return -EPERM;
 171        }
 172
 173        if (*max_uV > rdev->constraints->max_uV)
 174                *max_uV = rdev->constraints->max_uV;
 175        if (*min_uV < rdev->constraints->min_uV)
 176                *min_uV = rdev->constraints->min_uV;
 177
 178        if (*min_uV > *max_uV) {
 179                rdev_err(rdev, "unsupportable voltage range: %d-%duV\n",
 180                         *min_uV, *max_uV);
 181                return -EINVAL;
 182        }
 183
 184        return 0;
 185}
 186
 187/* Make sure we select a voltage that suits the needs of all
 188 * regulator consumers
 189 */
 190static int regulator_check_consumers(struct regulator_dev *rdev,
 191                                     int *min_uV, int *max_uV)
 192{
 193        struct regulator *regulator;
 194
 195        list_for_each_entry(regulator, &rdev->consumer_list, list) {
 196                /*
 197                 * Assume consumers that didn't say anything are OK
 198                 * with anything in the constraint range.
 199                 */
 200                if (!regulator->min_uV && !regulator->max_uV)
 201                        continue;
 202
 203                if (*max_uV > regulator->max_uV)
 204                        *max_uV = regulator->max_uV;
 205                if (*min_uV < regulator->min_uV)
 206                        *min_uV = regulator->min_uV;
 207        }
 208
 209        if (*min_uV > *max_uV)
 210                return -EINVAL;
 211
 212        return 0;
 213}
 214
 215/* current constraint check */
 216static int regulator_check_current_limit(struct regulator_dev *rdev,
 217                                        int *min_uA, int *max_uA)
 218{
 219        BUG_ON(*min_uA > *max_uA);
 220
 221        if (!rdev->constraints) {
 222                rdev_err(rdev, "no constraints\n");
 223                return -ENODEV;
 224        }
 225        if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) {
 226                rdev_err(rdev, "operation not allowed\n");
 227                return -EPERM;
 228        }
 229
 230        if (*max_uA > rdev->constraints->max_uA)
 231                *max_uA = rdev->constraints->max_uA;
 232        if (*min_uA < rdev->constraints->min_uA)
 233                *min_uA = rdev->constraints->min_uA;
 234
 235        if (*min_uA > *max_uA) {
 236                rdev_err(rdev, "unsupportable current range: %d-%duA\n",
 237                         *min_uA, *max_uA);
 238                return -EINVAL;
 239        }
 240
 241        return 0;
 242}
 243
 244/* operating mode constraint check */
 245static int regulator_mode_constrain(struct regulator_dev *rdev, int *mode)
 246{
 247        switch (*mode) {
 248        case REGULATOR_MODE_FAST:
 249        case REGULATOR_MODE_NORMAL:
 250        case REGULATOR_MODE_IDLE:
 251        case REGULATOR_MODE_STANDBY:
 252                break;
 253        default:
 254                rdev_err(rdev, "invalid mode %x specified\n", *mode);
 255                return -EINVAL;
 256        }
 257
 258        if (!rdev->constraints) {
 259                rdev_err(rdev, "no constraints\n");
 260                return -ENODEV;
 261        }
 262        if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) {
 263                rdev_err(rdev, "operation not allowed\n");
 264                return -EPERM;
 265        }
 266
 267        /* The modes are bitmasks, the most power hungry modes having
 268         * the lowest values. If the requested mode isn't supported
 269         * try higher modes. */
 270        while (*mode) {
 271                if (rdev->constraints->valid_modes_mask & *mode)
 272                        return 0;
 273                *mode /= 2;
 274        }
 275
 276        return -EINVAL;
 277}
 278
 279/* dynamic regulator mode switching constraint check */
 280static int regulator_check_drms(struct regulator_dev *rdev)
 281{
 282        if (!rdev->constraints) {
 283                rdev_err(rdev, "no constraints\n");
 284                return -ENODEV;
 285        }
 286        if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) {
 287                rdev_err(rdev, "operation not allowed\n");
 288                return -EPERM;
 289        }
 290        return 0;
 291}
 292
 293static ssize_t device_requested_uA_show(struct device *dev,
 294                             struct device_attribute *attr, char *buf)
 295{
 296        struct regulator *regulator;
 297
 298        regulator = get_device_regulator(dev);
 299        if (regulator == NULL)
 300                return 0;
 301
 302        return sprintf(buf, "%d\n", regulator->uA_load);
 303}
 304
 305static ssize_t regulator_uV_show(struct device *dev,
 306                                struct device_attribute *attr, char *buf)
 307{
 308        struct regulator_dev *rdev = dev_get_drvdata(dev);
 309        ssize_t ret;
 310
 311        mutex_lock(&rdev->mutex);
 312        ret = sprintf(buf, "%d\n", _regulator_get_voltage(rdev));
 313        mutex_unlock(&rdev->mutex);
 314
 315        return ret;
 316}
 317static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL);
 318
 319static ssize_t regulator_uA_show(struct device *dev,
 320                                struct device_attribute *attr, char *buf)
 321{
 322        struct regulator_dev *rdev = dev_get_drvdata(dev);
 323
 324        return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev));
 325}
 326static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL);
 327
 328static ssize_t regulator_name_show(struct device *dev,
 329                             struct device_attribute *attr, char *buf)
 330{
 331        struct regulator_dev *rdev = dev_get_drvdata(dev);
 332
 333        return sprintf(buf, "%s\n", rdev_get_name(rdev));
 334}
 335
 336static ssize_t regulator_print_opmode(char *buf, int mode)
 337{
 338        switch (mode) {
 339        case REGULATOR_MODE_FAST:
 340                return sprintf(buf, "fast\n");
 341        case REGULATOR_MODE_NORMAL:
 342                return sprintf(buf, "normal\n");
 343        case REGULATOR_MODE_IDLE:
 344                return sprintf(buf, "idle\n");
 345        case REGULATOR_MODE_STANDBY:
 346                return sprintf(buf, "standby\n");
 347        }
 348        return sprintf(buf, "unknown\n");
 349}
 350
 351static ssize_t regulator_opmode_show(struct device *dev,
 352                                    struct device_attribute *attr, char *buf)
 353{
 354        struct regulator_dev *rdev = dev_get_drvdata(dev);
 355
 356        return regulator_print_opmode(buf, _regulator_get_mode(rdev));
 357}
 358static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL);
 359
 360static ssize_t regulator_print_state(char *buf, int state)
 361{
 362        if (state > 0)
 363                return sprintf(buf, "enabled\n");
 364        else if (state == 0)
 365                return sprintf(buf, "disabled\n");
 366        else
 367                return sprintf(buf, "unknown\n");
 368}
 369
 370static ssize_t regulator_state_show(struct device *dev,
 371                                   struct device_attribute *attr, char *buf)
 372{
 373        struct regulator_dev *rdev = dev_get_drvdata(dev);
 374        ssize_t ret;
 375
 376        mutex_lock(&rdev->mutex);
 377        ret = regulator_print_state(buf, _regulator_is_enabled(rdev));
 378        mutex_unlock(&rdev->mutex);
 379
 380        return ret;
 381}
 382static DEVICE_ATTR(state, 0444, regulator_state_show, NULL);
 383
 384static ssize_t regulator_status_show(struct device *dev,
 385                                   struct device_attribute *attr, char *buf)
 386{
 387        struct regulator_dev *rdev = dev_get_drvdata(dev);
 388        int status;
 389        char *label;
 390
 391        status = rdev->desc->ops->get_status(rdev);
 392        if (status < 0)
 393                return status;
 394
 395        switch (status) {
 396        case REGULATOR_STATUS_OFF:
 397                label = "off";
 398                break;
 399        case REGULATOR_STATUS_ON:
 400                label = "on";
 401                break;
 402        case REGULATOR_STATUS_ERROR:
 403                label = "error";
 404                break;
 405        case REGULATOR_STATUS_FAST:
 406                label = "fast";
 407                break;
 408        case REGULATOR_STATUS_NORMAL:
 409                label = "normal";
 410                break;
 411        case REGULATOR_STATUS_IDLE:
 412                label = "idle";
 413                break;
 414        case REGULATOR_STATUS_STANDBY:
 415                label = "standby";
 416                break;
 417        default:
 418                return -ERANGE;
 419        }
 420
 421        return sprintf(buf, "%s\n", label);
 422}
 423static DEVICE_ATTR(status, 0444, regulator_status_show, NULL);
 424
 425static ssize_t regulator_min_uA_show(struct device *dev,
 426                                    struct device_attribute *attr, char *buf)
 427{
 428        struct regulator_dev *rdev = dev_get_drvdata(dev);
 429
 430        if (!rdev->constraints)
 431                return sprintf(buf, "constraint not defined\n");
 432
 433        return sprintf(buf, "%d\n", rdev->constraints->min_uA);
 434}
 435static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL);
 436
 437static ssize_t regulator_max_uA_show(struct device *dev,
 438                                    struct device_attribute *attr, char *buf)
 439{
 440        struct regulator_dev *rdev = dev_get_drvdata(dev);
 441
 442        if (!rdev->constraints)
 443                return sprintf(buf, "constraint not defined\n");
 444
 445        return sprintf(buf, "%d\n", rdev->constraints->max_uA);
 446}
 447static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL);
 448
 449static ssize_t regulator_min_uV_show(struct device *dev,
 450                                    struct device_attribute *attr, char *buf)
 451{
 452        struct regulator_dev *rdev = dev_get_drvdata(dev);
 453
 454        if (!rdev->constraints)
 455                return sprintf(buf, "constraint not defined\n");
 456
 457        return sprintf(buf, "%d\n", rdev->constraints->min_uV);
 458}
 459static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL);
 460
 461static ssize_t regulator_max_uV_show(struct device *dev,
 462                                    struct device_attribute *attr, char *buf)
 463{
 464        struct regulator_dev *rdev = dev_get_drvdata(dev);
 465
 466        if (!rdev->constraints)
 467                return sprintf(buf, "constraint not defined\n");
 468
 469        return sprintf(buf, "%d\n", rdev->constraints->max_uV);
 470}
 471static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL);
 472
 473static ssize_t regulator_total_uA_show(struct device *dev,
 474                                      struct device_attribute *attr, char *buf)
 475{
 476        struct regulator_dev *rdev = dev_get_drvdata(dev);
 477        struct regulator *regulator;
 478        int uA = 0;
 479
 480        mutex_lock(&rdev->mutex);
 481        list_for_each_entry(regulator, &rdev->consumer_list, list)
 482                uA += regulator->uA_load;
 483        mutex_unlock(&rdev->mutex);
 484        return sprintf(buf, "%d\n", uA);
 485}
 486static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL);
 487
 488static ssize_t regulator_num_users_show(struct device *dev,
 489                                      struct device_attribute *attr, char *buf)
 490{
 491        struct regulator_dev *rdev = dev_get_drvdata(dev);
 492        return sprintf(buf, "%d\n", rdev->use_count);
 493}
 494
 495static ssize_t regulator_type_show(struct device *dev,
 496                                  struct device_attribute *attr, char *buf)
 497{
 498        struct regulator_dev *rdev = dev_get_drvdata(dev);
 499
 500        switch (rdev->desc->type) {
 501        case REGULATOR_VOLTAGE:
 502                return sprintf(buf, "voltage\n");
 503        case REGULATOR_CURRENT:
 504                return sprintf(buf, "current\n");
 505        }
 506        return sprintf(buf, "unknown\n");
 507}
 508
 509static ssize_t regulator_suspend_mem_uV_show(struct device *dev,
 510                                struct device_attribute *attr, char *buf)
 511{
 512        struct regulator_dev *rdev = dev_get_drvdata(dev);
 513
 514        return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV);
 515}
 516static DEVICE_ATTR(suspend_mem_microvolts, 0444,
 517                regulator_suspend_mem_uV_show, NULL);
 518
 519static ssize_t regulator_suspend_disk_uV_show(struct device *dev,
 520                                struct device_attribute *attr, char *buf)
 521{
 522        struct regulator_dev *rdev = dev_get_drvdata(dev);
 523
 524        return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV);
 525}
 526static DEVICE_ATTR(suspend_disk_microvolts, 0444,
 527                regulator_suspend_disk_uV_show, NULL);
 528
 529static ssize_t regulator_suspend_standby_uV_show(struct device *dev,
 530                                struct device_attribute *attr, char *buf)
 531{
 532        struct regulator_dev *rdev = dev_get_drvdata(dev);
 533
 534        return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV);
 535}
 536static DEVICE_ATTR(suspend_standby_microvolts, 0444,
 537                regulator_suspend_standby_uV_show, NULL);
 538
 539static ssize_t regulator_suspend_mem_mode_show(struct device *dev,
 540                                struct device_attribute *attr, char *buf)
 541{
 542        struct regulator_dev *rdev = dev_get_drvdata(dev);
 543
 544        return regulator_print_opmode(buf,
 545                rdev->constraints->state_mem.mode);
 546}
 547static DEVICE_ATTR(suspend_mem_mode, 0444,
 548                regulator_suspend_mem_mode_show, NULL);
 549
 550static ssize_t regulator_suspend_disk_mode_show(struct device *dev,
 551                                struct device_attribute *attr, char *buf)
 552{
 553        struct regulator_dev *rdev = dev_get_drvdata(dev);
 554
 555        return regulator_print_opmode(buf,
 556                rdev->constraints->state_disk.mode);
 557}
 558static DEVICE_ATTR(suspend_disk_mode, 0444,
 559                regulator_suspend_disk_mode_show, NULL);
 560
 561static ssize_t regulator_suspend_standby_mode_show(struct device *dev,
 562                                struct device_attribute *attr, char *buf)
 563{
 564        struct regulator_dev *rdev = dev_get_drvdata(dev);
 565
 566        return regulator_print_opmode(buf,
 567                rdev->constraints->state_standby.mode);
 568}
 569static DEVICE_ATTR(suspend_standby_mode, 0444,
 570                regulator_suspend_standby_mode_show, NULL);
 571
 572static ssize_t regulator_suspend_mem_state_show(struct device *dev,
 573                                   struct device_attribute *attr, char *buf)
 574{
 575        struct regulator_dev *rdev = dev_get_drvdata(dev);
 576
 577        return regulator_print_state(buf,
 578                        rdev->constraints->state_mem.enabled);
 579}
 580static DEVICE_ATTR(suspend_mem_state, 0444,
 581                regulator_suspend_mem_state_show, NULL);
 582
 583static ssize_t regulator_suspend_disk_state_show(struct device *dev,
 584                                   struct device_attribute *attr, char *buf)
 585{
 586        struct regulator_dev *rdev = dev_get_drvdata(dev);
 587
 588        return regulator_print_state(buf,
 589                        rdev->constraints->state_disk.enabled);
 590}
 591static DEVICE_ATTR(suspend_disk_state, 0444,
 592                regulator_suspend_disk_state_show, NULL);
 593
 594static ssize_t regulator_suspend_standby_state_show(struct device *dev,
 595                                   struct device_attribute *attr, char *buf)
 596{
 597        struct regulator_dev *rdev = dev_get_drvdata(dev);
 598
 599        return regulator_print_state(buf,
 600                        rdev->constraints->state_standby.enabled);
 601}
 602static DEVICE_ATTR(suspend_standby_state, 0444,
 603                regulator_suspend_standby_state_show, NULL);
 604
 605
 606/*
 607 * These are the only attributes are present for all regulators.
 608 * Other attributes are a function of regulator functionality.
 609 */
 610static struct device_attribute regulator_dev_attrs[] = {
 611        __ATTR(name, 0444, regulator_name_show, NULL),
 612        __ATTR(num_users, 0444, regulator_num_users_show, NULL),
 613        __ATTR(type, 0444, regulator_type_show, NULL),
 614        __ATTR_NULL,
 615};
 616
 617static void regulator_dev_release(struct device *dev)
 618{
 619        struct regulator_dev *rdev = dev_get_drvdata(dev);
 620        kfree(rdev);
 621}
 622
 623static struct class regulator_class = {
 624        .name = "regulator",
 625        .dev_release = regulator_dev_release,
 626        .dev_attrs = regulator_dev_attrs,
 627};
 628
 629/* Calculate the new optimum regulator operating mode based on the new total
 630 * consumer load. All locks held by caller */
 631static void drms_uA_update(struct regulator_dev *rdev)
 632{
 633        struct regulator *sibling;
 634        int current_uA = 0, output_uV, input_uV, err;
 635        unsigned int mode;
 636
 637        err = regulator_check_drms(rdev);
 638        if (err < 0 || !rdev->desc->ops->get_optimum_mode ||
 639            (!rdev->desc->ops->get_voltage &&
 640             !rdev->desc->ops->get_voltage_sel) ||
 641            !rdev->desc->ops->set_mode)
 642                return;
 643
 644        /* get output voltage */
 645        output_uV = _regulator_get_voltage(rdev);
 646        if (output_uV <= 0)
 647                return;
 648
 649        /* get input voltage */
 650        input_uV = 0;
 651        if (rdev->supply)
 652                input_uV = _regulator_get_voltage(rdev);
 653        if (input_uV <= 0)
 654                input_uV = rdev->constraints->input_uV;
 655        if (input_uV <= 0)
 656                return;
 657
 658        /* calc total requested load */
 659        list_for_each_entry(sibling, &rdev->consumer_list, list)
 660                current_uA += sibling->uA_load;
 661
 662        /* now get the optimum mode for our new total regulator load */
 663        mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
 664                                                  output_uV, current_uA);
 665
 666        /* check the new mode is allowed */
 667        err = regulator_mode_constrain(rdev, &mode);
 668        if (err == 0)
 669                rdev->desc->ops->set_mode(rdev, mode);
 670}
 671
 672static int suspend_set_state(struct regulator_dev *rdev,
 673        struct regulator_state *rstate)
 674{
 675        int ret = 0;
 676        bool can_set_state;
 677
 678        can_set_state = rdev->desc->ops->set_suspend_enable &&
 679                rdev->desc->ops->set_suspend_disable;
 680
 681        /* If we have no suspend mode configration don't set anything;
 682         * only warn if the driver actually makes the suspend mode
 683         * configurable.
 684         */
 685        if (!rstate->enabled && !rstate->disabled) {
 686                if (can_set_state)
 687                        rdev_warn(rdev, "No configuration\n");
 688                return 0;
 689        }
 690
 691        if (rstate->enabled && rstate->disabled) {
 692                rdev_err(rdev, "invalid configuration\n");
 693                return -EINVAL;
 694        }
 695
 696        if (!can_set_state) {
 697                rdev_err(rdev, "no way to set suspend state\n");
 698                return -EINVAL;
 699        }
 700
 701        if (rstate->enabled)
 702                ret = rdev->desc->ops->set_suspend_enable(rdev);
 703        else
 704                ret = rdev->desc->ops->set_suspend_disable(rdev);
 705        if (ret < 0) {
 706                rdev_err(rdev, "failed to enabled/disable\n");
 707                return ret;
 708        }
 709
 710        if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) {
 711                ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV);
 712                if (ret < 0) {
 713                        rdev_err(rdev, "failed to set voltage\n");
 714                        return ret;
 715                }
 716        }
 717
 718        if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) {
 719                ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode);
 720                if (ret < 0) {
 721                        rdev_err(rdev, "failed to set mode\n");
 722                        return ret;
 723                }
 724        }
 725        return ret;
 726}
 727
 728/* locks held by caller */
 729static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)
 730{
 731        if (!rdev->constraints)
 732                return -EINVAL;
 733
 734        switch (state) {
 735        case PM_SUSPEND_STANDBY:
 736                return suspend_set_state(rdev,
 737                        &rdev->constraints->state_standby);
 738        case PM_SUSPEND_MEM:
 739                return suspend_set_state(rdev,
 740                        &rdev->constraints->state_mem);
 741        case PM_SUSPEND_MAX:
 742                return suspend_set_state(rdev,
 743                        &rdev->constraints->state_disk);
 744        default:
 745                return -EINVAL;
 746        }
 747}
 748
 749static void print_constraints(struct regulator_dev *rdev)
 750{
 751        struct regulation_constraints *constraints = rdev->constraints;
 752        char buf[80] = "";
 753        int count = 0;
 754        int ret;
 755
 756        if (constraints->min_uV && constraints->max_uV) {
 757                if (constraints->min_uV == constraints->max_uV)
 758                        count += sprintf(buf + count, "%d mV ",
 759                                         constraints->min_uV / 1000);
 760                else
 761                        count += sprintf(buf + count, "%d <--> %d mV ",
 762                                         constraints->min_uV / 1000,
 763                                         constraints->max_uV / 1000);
 764        }
 765
 766        if (!constraints->min_uV ||
 767            constraints->min_uV != constraints->max_uV) {
 768                ret = _regulator_get_voltage(rdev);
 769                if (ret > 0)
 770                        count += sprintf(buf + count, "at %d mV ", ret / 1000);
 771        }
 772
 773        if (constraints->uV_offset)
 774                count += sprintf(buf, "%dmV offset ",
 775                                 constraints->uV_offset / 1000);
 776
 777        if (constraints->min_uA && constraints->max_uA) {
 778                if (constraints->min_uA == constraints->max_uA)
 779                        count += sprintf(buf + count, "%d mA ",
 780                                         constraints->min_uA / 1000);
 781                else
 782                        count += sprintf(buf + count, "%d <--> %d mA ",
 783                                         constraints->min_uA / 1000,
 784                                         constraints->max_uA / 1000);
 785        }
 786
 787        if (!constraints->min_uA ||
 788            constraints->min_uA != constraints->max_uA) {
 789                ret = _regulator_get_current_limit(rdev);
 790                if (ret > 0)
 791                        count += sprintf(buf + count, "at %d mA ", ret / 1000);
 792        }
 793
 794        if (constraints->valid_modes_mask & REGULATOR_MODE_FAST)
 795                count += sprintf(buf + count, "fast ");
 796        if (constraints->valid_modes_mask & REGULATOR_MODE_NORMAL)
 797                count += sprintf(buf + count, "normal ");
 798        if (constraints->valid_modes_mask & REGULATOR_MODE_IDLE)
 799                count += sprintf(buf + count, "idle ");
 800        if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY)
 801                count += sprintf(buf + count, "standby");
 802
 803        rdev_info(rdev, "%s\n", buf);
 804
 805        if ((constraints->min_uV != constraints->max_uV) &&
 806            !(constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE))
 807                rdev_warn(rdev,
 808                          "Voltage range but no REGULATOR_CHANGE_VOLTAGE\n");
 809}
 810
 811static int machine_constraints_voltage(struct regulator_dev *rdev,
 812        struct regulation_constraints *constraints)
 813{
 814        struct regulator_ops *ops = rdev->desc->ops;
 815        int ret;
 816
 817        /* do we need to apply the constraint voltage */
 818        if (rdev->constraints->apply_uV &&
 819            rdev->constraints->min_uV == rdev->constraints->max_uV) {
 820                ret = _regulator_do_set_voltage(rdev,
 821                                                rdev->constraints->min_uV,
 822                                                rdev->constraints->max_uV);
 823                if (ret < 0) {
 824                        rdev_err(rdev, "failed to apply %duV constraint\n",
 825                                 rdev->constraints->min_uV);
 826                        return ret;
 827                }
 828        }
 829
 830        /* constrain machine-level voltage specs to fit
 831         * the actual range supported by this regulator.
 832         */
 833        if (ops->list_voltage && rdev->desc->n_voltages) {
 834                int     count = rdev->desc->n_voltages;
 835                int     i;
 836                int     min_uV = INT_MAX;
 837                int     max_uV = INT_MIN;
 838                int     cmin = constraints->min_uV;
 839                int     cmax = constraints->max_uV;
 840
 841                /* it's safe to autoconfigure fixed-voltage supplies
 842                   and the constraints are used by list_voltage. */
 843                if (count == 1 && !cmin) {
 844                        cmin = 1;
 845                        cmax = INT_MAX;
 846                        constraints->min_uV = cmin;
 847                        constraints->max_uV = cmax;
 848                }
 849
 850                /* voltage constraints are optional */
 851                if ((cmin == 0) && (cmax == 0))
 852                        return 0;
 853
 854                /* else require explicit machine-level constraints */
 855                if (cmin <= 0 || cmax <= 0 || cmax < cmin) {
 856                        rdev_err(rdev, "invalid voltage constraints\n");
 857                        return -EINVAL;
 858                }
 859
 860                /* initial: [cmin..cmax] valid, [min_uV..max_uV] not */
 861                for (i = 0; i < count; i++) {
 862                        int     value;
 863
 864                        value = ops->list_voltage(rdev, i);
 865                        if (value <= 0)
 866                                continue;
 867
 868                        /* maybe adjust [min_uV..max_uV] */
 869                        if (value >= cmin && value < min_uV)
 870                                min_uV = value;
 871                        if (value <= cmax && value > max_uV)
 872                                max_uV = value;
 873                }
 874
 875                /* final: [min_uV..max_uV] valid iff constraints valid */
 876                if (max_uV < min_uV) {
 877                        rdev_err(rdev, "unsupportable voltage constraints\n");
 878                        return -EINVAL;
 879                }
 880
 881                /* use regulator's subset of machine constraints */
 882                if (constraints->min_uV < min_uV) {
 883                        rdev_dbg(rdev, "override min_uV, %d -> %d\n",
 884                                 constraints->min_uV, min_uV);
 885                        constraints->min_uV = min_uV;
 886                }
 887                if (constraints->max_uV > max_uV) {
 888                        rdev_dbg(rdev, "override max_uV, %d -> %d\n",
 889                                 constraints->max_uV, max_uV);
 890                        constraints->max_uV = max_uV;
 891                }
 892        }
 893
 894        return 0;
 895}
 896
 897/**
 898 * set_machine_constraints - sets regulator constraints
 899 * @rdev: regulator source
 900 * @constraints: constraints to apply
 901 *
 902 * Allows platform initialisation code to define and constrain
 903 * regulator circuits e.g. valid voltage/current ranges, etc.  NOTE:
 904 * Constraints *must* be set by platform code in order for some
 905 * regulator operations to proceed i.e. set_voltage, set_current_limit,
 906 * set_mode.
 907 */
 908static int set_machine_constraints(struct regulator_dev *rdev,
 909        const struct regulation_constraints *constraints)
 910{
 911        int ret = 0;
 912        struct regulator_ops *ops = rdev->desc->ops;
 913
 914        if (constraints)
 915                rdev->constraints = kmemdup(constraints, sizeof(*constraints),
 916                                            GFP_KERNEL);
 917        else
 918                rdev->constraints = kzalloc(sizeof(*constraints),
 919                                            GFP_KERNEL);
 920        if (!rdev->constraints)
 921                return -ENOMEM;
 922
 923        ret = machine_constraints_voltage(rdev, rdev->constraints);
 924        if (ret != 0)
 925                goto out;
 926
 927        /* do we need to setup our suspend state */
 928        if (rdev->constraints->initial_state) {
 929                ret = suspend_prepare(rdev, rdev->constraints->initial_state);
 930                if (ret < 0) {
 931                        rdev_err(rdev, "failed to set suspend state\n");
 932                        goto out;
 933                }
 934        }
 935
 936        if (rdev->constraints->initial_mode) {
 937                if (!ops->set_mode) {
 938                        rdev_err(rdev, "no set_mode operation\n");
 939                        ret = -EINVAL;
 940                        goto out;
 941                }
 942
 943                ret = ops->set_mode(rdev, rdev->constraints->initial_mode);
 944                if (ret < 0) {
 945                        rdev_err(rdev, "failed to set initial mode: %d\n", ret);
 946                        goto out;
 947                }
 948        }
 949
 950        /* If the constraints say the regulator should be on at this point
 951         * and we have control then make sure it is enabled.
 952         */
 953        if ((rdev->constraints->always_on || rdev->constraints->boot_on) &&
 954            ops->enable) {
 955                ret = ops->enable(rdev);
 956                if (ret < 0) {
 957                        rdev_err(rdev, "failed to enable\n");
 958                        goto out;
 959                }
 960        }
 961
 962        print_constraints(rdev);
 963        return 0;
 964out:
 965        kfree(rdev->constraints);
 966        rdev->constraints = NULL;
 967        return ret;
 968}
 969
 970/**
 971 * set_supply - set regulator supply regulator
 972 * @rdev: regulator name
 973 * @supply_rdev: supply regulator name
 974 *
 975 * Called by platform initialisation code to set the supply regulator for this
 976 * regulator. This ensures that a regulators supply will also be enabled by the
 977 * core if it's child is enabled.
 978 */
 979static int set_supply(struct regulator_dev *rdev,
 980                      struct regulator_dev *supply_rdev)
 981{
 982        int err;
 983
 984        rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev));
 985
 986        rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY");
 987        if (rdev->supply == NULL) {
 988                err = -ENOMEM;
 989                return err;
 990        }
 991
 992        return 0;
 993}
 994
 995/**
 996 * set_consumer_device_supply - Bind a regulator to a symbolic supply
 997 * @rdev:         regulator source
 998 * @consumer_dev_name: dev_name() string for device supply applies to
 999 * @supply:       symbolic name for supply
1000 *
1001 * Allows platform initialisation code to map physical regulator
1002 * sources to symbolic names for supplies for use by devices.  Devices
1003 * should use these symbolic names to request regulators, avoiding the
1004 * need to provide board-specific regulator names as platform data.
1005 */
1006static int set_consumer_device_supply(struct regulator_dev *rdev,
1007                                      const char *consumer_dev_name,
1008                                      const char *supply)
1009{
1010        struct regulator_map *node;
1011        int has_dev;
1012
1013        if (supply == NULL)
1014                return -EINVAL;
1015
1016        if (consumer_dev_name != NULL)
1017                has_dev = 1;
1018        else
1019                has_dev = 0;
1020
1021        list_for_each_entry(node, &regulator_map_list, list) {
1022                if (node->dev_name && consumer_dev_name) {
1023                        if (strcmp(node->dev_name, consumer_dev_name) != 0)
1024                                continue;
1025                } else if (node->dev_name || consumer_dev_name) {
1026                        continue;
1027                }
1028
1029                if (strcmp(node->supply, supply) != 0)
1030                        continue;
1031
1032                pr_debug("%s: %s/%s is '%s' supply; fail %s/%s\n",
1033                         consumer_dev_name,
1034                         dev_name(&node->regulator->dev),
1035                         node->regulator->desc->name,
1036                         supply,
1037                         dev_name(&rdev->dev), rdev_get_name(rdev));
1038                return -EBUSY;
1039        }
1040
1041        node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL);
1042        if (node == NULL)
1043                return -ENOMEM;
1044
1045        node->regulator = rdev;
1046        node->supply = supply;
1047
1048        if (has_dev) {
1049                node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL);
1050                if (node->dev_name == NULL) {
1051                        kfree(node);
1052                        return -ENOMEM;
1053                }
1054        }
1055
1056        list_add(&node->list, &regulator_map_list);
1057        return 0;
1058}
1059
1060static void unset_regulator_supplies(struct regulator_dev *rdev)
1061{
1062        struct regulator_map *node, *n;
1063
1064        list_for_each_entry_safe(node, n, &regulator_map_list, list) {
1065                if (rdev == node->regulator) {
1066                        list_del(&node->list);
1067                        kfree(node->dev_name);
1068                        kfree(node);
1069                }
1070        }
1071}
1072
1073#define REG_STR_SIZE    64
1074
1075static struct regulator *create_regulator(struct regulator_dev *rdev,
1076                                          struct device *dev,
1077                                          const char *supply_name)
1078{
1079        struct regulator *regulator;
1080        char buf[REG_STR_SIZE];
1081        int err, size;
1082
1083        regulator = kzalloc(sizeof(*regulator), GFP_KERNEL);
1084        if (regulator == NULL)
1085                return NULL;
1086
1087        mutex_lock(&rdev->mutex);
1088        regulator->rdev = rdev;
1089        list_add(&regulator->list, &rdev->consumer_list);
1090
1091        if (dev) {
1092                /* create a 'requested_microamps_name' sysfs entry */
1093                size = scnprintf(buf, REG_STR_SIZE,
1094                                 "microamps_requested_%s-%s",
1095                                 dev_name(dev), supply_name);
1096                if (size >= REG_STR_SIZE)
1097                        goto overflow_err;
1098
1099                regulator->dev = dev;
1100                sysfs_attr_init(&regulator->dev_attr.attr);
1101                regulator->dev_attr.attr.name = kstrdup(buf, GFP_KERNEL);
1102                if (regulator->dev_attr.attr.name == NULL)
1103                        goto attr_name_err;
1104
1105                regulator->dev_attr.attr.mode = 0444;
1106                regulator->dev_attr.show = device_requested_uA_show;
1107                err = device_create_file(dev, &regulator->dev_attr);
1108                if (err < 0) {
1109                        rdev_warn(rdev, "could not add regulator_dev requested microamps sysfs entry\n");
1110                        goto attr_name_err;
1111                }
1112
1113                /* also add a link to the device sysfs entry */
1114                size = scnprintf(buf, REG_STR_SIZE, "%s-%s",
1115                                 dev->kobj.name, supply_name);
1116                if (size >= REG_STR_SIZE)
1117                        goto attr_err;
1118
1119                regulator->supply_name = kstrdup(buf, GFP_KERNEL);
1120                if (regulator->supply_name == NULL)
1121                        goto attr_err;
1122
1123                err = sysfs_create_link(&rdev->dev.kobj, &dev->kobj,
1124                                        buf);
1125                if (err) {
1126                        rdev_warn(rdev, "could not add device link %s err %d\n",
1127                                  dev->kobj.name, err);
1128                        goto link_name_err;
1129                }
1130        } else {
1131                regulator->supply_name = kstrdup(supply_name, GFP_KERNEL);
1132                if (regulator->supply_name == NULL)
1133                        goto attr_err;
1134        }
1135
1136        regulator->debugfs = debugfs_create_dir(regulator->supply_name,
1137                                                rdev->debugfs);
1138        if (!regulator->debugfs) {
1139                rdev_warn(rdev, "Failed to create debugfs directory\n");
1140        } else {
1141                debugfs_create_u32("uA_load", 0444, regulator->debugfs,
1142                                   &regulator->uA_load);
1143                debugfs_create_u32("min_uV", 0444, regulator->debugfs,
1144                                   &regulator->min_uV);
1145                debugfs_create_u32("max_uV", 0444, regulator->debugfs,
1146                                   &regulator->max_uV);
1147        }
1148
1149        mutex_unlock(&rdev->mutex);
1150        return regulator;
1151link_name_err:
1152        kfree(regulator->supply_name);
1153attr_err:
1154        device_remove_file(regulator->dev, &regulator->dev_attr);
1155attr_name_err:
1156        kfree(regulator->dev_attr.attr.name);
1157overflow_err:
1158        list_del(&regulator->list);
1159        kfree(regulator);
1160        mutex_unlock(&rdev->mutex);
1161        return NULL;
1162}
1163
1164static int _regulator_get_enable_time(struct regulator_dev *rdev)
1165{
1166        if (!rdev->desc->ops->enable_time)
1167                return 0;
1168        return rdev->desc->ops->enable_time(rdev);
1169}
1170
1171static struct regulator_dev *regulator_dev_lookup(struct device *dev,
1172                                                         const char *supply)
1173{
1174        struct regulator_dev *r;
1175        struct device_node *node;
1176
1177        /* first do a dt based lookup */
1178        if (dev && dev->of_node) {
1179                node = of_get_regulator(dev, supply);
1180                if (node)
1181                        list_for_each_entry(r, &regulator_list, list)
1182                                if (r->dev.parent &&
1183                                        node == r->dev.of_node)
1184                                        return r;
1185        }
1186
1187        /* if not found, try doing it non-dt way */
1188        list_for_each_entry(r, &regulator_list, list)
1189                if (strcmp(rdev_get_name(r), supply) == 0)
1190                        return r;
1191
1192        return NULL;
1193}
1194
1195/* Internal regulator request function */
1196static struct regulator *_regulator_get(struct device *dev, const char *id,
1197                                        int exclusive)
1198{
1199        struct regulator_dev *rdev;
1200        struct regulator_map *map;
1201        struct regulator *regulator = ERR_PTR(-EPROBE_DEFER);
1202        const char *devname = NULL;
1203        int ret;
1204
1205        if (id == NULL) {
1206                pr_err("get() with no identifier\n");
1207                return regulator;
1208        }
1209
1210        if (dev)
1211                devname = dev_name(dev);
1212
1213        mutex_lock(&regulator_list_mutex);
1214
1215        rdev = regulator_dev_lookup(dev, id);
1216        if (rdev)
1217                goto found;
1218
1219        list_for_each_entry(map, &regulator_map_list, list) {
1220                /* If the mapping has a device set up it must match */
1221                if (map->dev_name &&
1222                    (!devname || strcmp(map->dev_name, devname)))
1223                        continue;
1224
1225                if (strcmp(map->supply, id) == 0) {
1226                        rdev = map->regulator;
1227                        goto found;
1228                }
1229        }
1230
1231        if (board_wants_dummy_regulator) {
1232                rdev = dummy_regulator_rdev;
1233                goto found;
1234        }
1235
1236#ifdef CONFIG_REGULATOR_DUMMY
1237        if (!devname)
1238                devname = "deviceless";
1239
1240        /* If the board didn't flag that it was fully constrained then
1241         * substitute in a dummy regulator so consumers can continue.
1242         */
1243        if (!has_full_constraints) {
1244                pr_warn("%s supply %s not found, using dummy regulator\n",
1245                        devname, id);
1246                rdev = dummy_regulator_rdev;
1247                goto found;
1248        }
1249#endif
1250
1251        mutex_unlock(&regulator_list_mutex);
1252        return regulator;
1253
1254found:
1255        if (rdev->exclusive) {
1256                regulator = ERR_PTR(-EPERM);
1257                goto out;
1258        }
1259
1260        if (exclusive && rdev->open_count) {
1261                regulator = ERR_PTR(-EBUSY);
1262                goto out;
1263        }
1264
1265        if (!try_module_get(rdev->owner))
1266                goto out;
1267
1268        regulator = create_regulator(rdev, dev, id);
1269        if (regulator == NULL) {
1270                regulator = ERR_PTR(-ENOMEM);
1271                module_put(rdev->owner);
1272                goto out;
1273        }
1274
1275        rdev->open_count++;
1276        if (exclusive) {
1277                rdev->exclusive = 1;
1278
1279                ret = _regulator_is_enabled(rdev);
1280                if (ret > 0)
1281                        rdev->use_count = 1;
1282                else
1283                        rdev->use_count = 0;
1284        }
1285
1286out:
1287        mutex_unlock(&regulator_list_mutex);
1288
1289        return regulator;
1290}
1291
1292/**
1293 * regulator_get - lookup and obtain a reference to a regulator.
1294 * @dev: device for regulator "consumer"
1295 * @id: Supply name or regulator ID.
1296 *
1297 * Returns a struct regulator corresponding to the regulator producer,
1298 * or IS_ERR() condition containing errno.
1299 *
1300 * Use of supply names configured via regulator_set_device_supply() is
1301 * strongly encouraged.  It is recommended that the supply name used
1302 * should match the name used for the supply and/or the relevant
1303 * device pins in the datasheet.
1304 */
1305struct regulator *regulator_get(struct device *dev, const char *id)
1306{
1307        return _regulator_get(dev, id, 0);
1308}
1309EXPORT_SYMBOL_GPL(regulator_get);
1310
1311static void devm_regulator_release(struct device *dev, void *res)
1312{
1313        regulator_put(*(struct regulator **)res);
1314}
1315
1316/**
1317 * devm_regulator_get - Resource managed regulator_get()
1318 * @dev: device for regulator "consumer"
1319 * @id: Supply name or regulator ID.
1320 *
1321 * Managed regulator_get(). Regulators returned from this function are
1322 * automatically regulator_put() on driver detach. See regulator_get() for more
1323 * information.
1324 */
1325struct regulator *devm_regulator_get(struct device *dev, const char *id)
1326{
1327        struct regulator **ptr, *regulator;
1328
1329        ptr = devres_alloc(devm_regulator_release, sizeof(*ptr), GFP_KERNEL);
1330        if (!ptr)
1331                return ERR_PTR(-ENOMEM);
1332
1333        regulator = regulator_get(dev, id);
1334        if (!IS_ERR(regulator)) {
1335                *ptr = regulator;
1336                devres_add(dev, ptr);
1337        } else {
1338                devres_free(ptr);
1339        }
1340
1341        return regulator;
1342}
1343EXPORT_SYMBOL_GPL(devm_regulator_get);
1344
1345/**
1346 * regulator_get_exclusive - obtain exclusive access to a regulator.
1347 * @dev: device for regulator "consumer"
1348 * @id: Supply name or regulator ID.
1349 *
1350 * Returns a struct regulator corresponding to the regulator producer,
1351 * or IS_ERR() condition containing errno.  Other consumers will be
1352 * unable to obtain this reference is held and the use count for the
1353 * regulator will be initialised to reflect the current state of the
1354 * regulator.
1355 *
1356 * This is intended for use by consumers which cannot tolerate shared
1357 * use of the regulator such as those which need to force the
1358 * regulator off for correct operation of the hardware they are
1359 * controlling.
1360 *
1361 * Use of supply names configured via regulator_set_device_supply() is
1362 * strongly encouraged.  It is recommended that the supply name used
1363 * should match the name used for the supply and/or the relevant
1364 * device pins in the datasheet.
1365 */
1366struct regulator *regulator_get_exclusive(struct device *dev, const char *id)
1367{
1368        return _regulator_get(dev, id, 1);
1369}
1370EXPORT_SYMBOL_GPL(regulator_get_exclusive);
1371
1372/**
1373 * regulator_put - "free" the regulator source
1374 * @regulator: regulator source
1375 *
1376 * Note: drivers must ensure that all regulator_enable calls made on this
1377 * regulator source are balanced by regulator_disable calls prior to calling
1378 * this function.
1379 */
1380void regulator_put(struct regulator *regulator)
1381{
1382        struct regulator_dev *rdev;
1383
1384        if (regulator == NULL || IS_ERR(regulator))
1385                return;
1386
1387        mutex_lock(&regulator_list_mutex);
1388        rdev = regulator->rdev;
1389
1390        debugfs_remove_recursive(regulator->debugfs);
1391
1392        /* remove any sysfs entries */
1393        if (regulator->dev) {
1394                sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name);
1395                device_remove_file(regulator->dev, &regulator->dev_attr);
1396                kfree(regulator->dev_attr.attr.name);
1397        }
1398        kfree(regulator->supply_name);
1399        list_del(&regulator->list);
1400        kfree(regulator);
1401
1402        rdev->open_count--;
1403        rdev->exclusive = 0;
1404
1405        module_put(rdev->owner);
1406        mutex_unlock(&regulator_list_mutex);
1407}
1408EXPORT_SYMBOL_GPL(regulator_put);
1409
1410static int devm_regulator_match(struct device *dev, void *res, void *data)
1411{
1412        struct regulator **r = res;
1413        if (!r || !*r) {
1414                WARN_ON(!r || !*r);
1415                return 0;
1416        }
1417        return *r == data;
1418}
1419
1420/**
1421 * devm_regulator_put - Resource managed regulator_put()
1422 * @regulator: regulator to free
1423 *
1424 * Deallocate a regulator allocated with devm_regulator_get(). Normally
1425 * this function will not need to be called and the resource management
1426 * code will ensure that the resource is freed.
1427 */
1428void devm_regulator_put(struct regulator *regulator)
1429{
1430        int rc;
1431
1432        rc = devres_destroy(regulator->dev, devm_regulator_release,
1433                            devm_regulator_match, regulator);
1434        if (rc == 0)
1435                regulator_put(regulator);
1436        else
1437                WARN_ON(rc);
1438}
1439EXPORT_SYMBOL_GPL(devm_regulator_put);
1440
1441static int _regulator_can_change_status(struct regulator_dev *rdev)
1442{
1443        if (!rdev->constraints)
1444                return 0;
1445
1446        if (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_STATUS)
1447                return 1;
1448        else
1449                return 0;
1450}
1451
1452/* locks held by regulator_enable() */
1453static int _regulator_enable(struct regulator_dev *rdev)
1454{
1455        int ret, delay;
1456
1457        /* check voltage and requested load before enabling */
1458        if (rdev->constraints &&
1459            (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS))
1460                drms_uA_update(rdev);
1461
1462        if (rdev->use_count == 0) {
1463                /* The regulator may on if it's not switchable or left on */
1464                ret = _regulator_is_enabled(rdev);
1465                if (ret == -EINVAL || ret == 0) {
1466                        if (!_regulator_can_change_status(rdev))
1467                                return -EPERM;
1468
1469                        if (!rdev->desc->ops->enable)
1470                                return -EINVAL;
1471
1472                        /* Query before enabling in case configuration
1473                         * dependent.  */
1474                        ret = _regulator_get_enable_time(rdev);
1475                        if (ret >= 0) {
1476                                delay = ret;
1477                        } else {
1478                                rdev_warn(rdev, "enable_time() failed: %d\n",
1479                                           ret);
1480                                delay = 0;
1481                        }
1482
1483                        trace_regulator_enable(rdev_get_name(rdev));
1484
1485                        /* Allow the regulator to ramp; it would be useful
1486                         * to extend this for bulk operations so that the
1487                         * regulators can ramp together.  */
1488                        ret = rdev->desc->ops->enable(rdev);
1489                        if (ret < 0)
1490                                return ret;
1491
1492                        trace_regulator_enable_delay(rdev_get_name(rdev));
1493
1494                        if (delay >= 1000) {
1495                                mdelay(delay / 1000);
1496                                udelay(delay % 1000);
1497                        } else if (delay) {
1498                                udelay(delay);
1499                        }
1500
1501                        trace_regulator_enable_complete(rdev_get_name(rdev));
1502
1503                } else if (ret < 0) {
1504                        rdev_err(rdev, "is_enabled() failed: %d\n", ret);
1505                        return ret;
1506                }
1507                /* Fallthrough on positive return values - already enabled */
1508        }
1509
1510        rdev->use_count++;
1511
1512        return 0;
1513}
1514
1515/**
1516 * regulator_enable - enable regulator output
1517 * @regulator: regulator source
1518 *
1519 * Request that the regulator be enabled with the regulator output at
1520 * the predefined voltage or current value.  Calls to regulator_enable()
1521 * must be balanced with calls to regulator_disable().
1522 *
1523 * NOTE: the output value can be set by other drivers, boot loader or may be
1524 * hardwired in the regulator.
1525 */
1526int regulator_enable(struct regulator *regulator)
1527{
1528        struct regulator_dev *rdev = regulator->rdev;
1529        int ret = 0;
1530
1531        if (rdev->supply) {
1532                ret = regulator_enable(rdev->supply);
1533                if (ret != 0)
1534                        return ret;
1535        }
1536
1537        mutex_lock(&rdev->mutex);
1538        ret = _regulator_enable(rdev);
1539        mutex_unlock(&rdev->mutex);
1540
1541        if (ret != 0 && rdev->supply)
1542                regulator_disable(rdev->supply);
1543
1544        return ret;
1545}
1546EXPORT_SYMBOL_GPL(regulator_enable);
1547
1548/* locks held by regulator_disable() */
1549static int _regulator_disable(struct regulator_dev *rdev)
1550{
1551        int ret = 0;
1552
1553        if (WARN(rdev->use_count <= 0,
1554                 "unbalanced disables for %s\n", rdev_get_name(rdev)))
1555                return -EIO;
1556
1557        /* are we the last user and permitted to disable ? */
1558        if (rdev->use_count == 1 &&
1559            (rdev->constraints && !rdev->constraints->always_on)) {
1560
1561                /* we are last user */
1562                if (_regulator_can_change_status(rdev) &&
1563                    rdev->desc->ops->disable) {
1564                        trace_regulator_disable(rdev_get_name(rdev));
1565
1566                        ret = rdev->desc->ops->disable(rdev);
1567                        if (ret < 0) {
1568                                rdev_err(rdev, "failed to disable\n");
1569                                return ret;
1570                        }
1571
1572                        trace_regulator_disable_complete(rdev_get_name(rdev));
1573
1574                        _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE,
1575                                             NULL);
1576                }
1577
1578                rdev->use_count = 0;
1579        } else if (rdev->use_count > 1) {
1580
1581                if (rdev->constraints &&
1582                        (rdev->constraints->valid_ops_mask &
1583                        REGULATOR_CHANGE_DRMS))
1584                        drms_uA_update(rdev);
1585
1586                rdev->use_count--;
1587        }
1588
1589        return ret;
1590}
1591
1592/**
1593 * regulator_disable - disable regulator output
1594 * @regulator: regulator source
1595 *
1596 * Disable the regulator output voltage or current.  Calls to
1597 * regulator_enable() must be balanced with calls to
1598 * regulator_disable().
1599 *
1600 * NOTE: this will only disable the regulator output if no other consumer
1601 * devices have it enabled, the regulator device supports disabling and
1602 * machine constraints permit this operation.
1603 */
1604int regulator_disable(struct regulator *regulator)
1605{
1606        struct regulator_dev *rdev = regulator->rdev;
1607        int ret = 0;
1608
1609        mutex_lock(&rdev->mutex);
1610        ret = _regulator_disable(rdev);
1611        mutex_unlock(&rdev->mutex);
1612
1613        if (ret == 0 && rdev->supply)
1614                regulator_disable(rdev->supply);
1615
1616        return ret;
1617}
1618EXPORT_SYMBOL_GPL(regulator_disable);
1619
1620/* locks held by regulator_force_disable() */
1621static int _regulator_force_disable(struct regulator_dev *rdev)
1622{
1623        int ret = 0;
1624
1625        /* force disable */
1626        if (rdev->desc->ops->disable) {
1627                /* ah well, who wants to live forever... */
1628                ret = rdev->desc->ops->disable(rdev);
1629                if (ret < 0) {
1630                        rdev_err(rdev, "failed to force disable\n");
1631                        return ret;
1632                }
1633                /* notify other consumers that power has been forced off */
1634                _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE |
1635                        REGULATOR_EVENT_DISABLE, NULL);
1636        }
1637
1638        return ret;
1639}
1640
1641/**
1642 * regulator_force_disable - force disable regulator output
1643 * @regulator: regulator source
1644 *
1645 * Forcibly disable the regulator output voltage or current.
1646 * NOTE: this *will* disable the regulator output even if other consumer
1647 * devices have it enabled. This should be used for situations when device
1648 * damage will likely occur if the regulator is not disabled (e.g. over temp).
1649 */
1650int regulator_force_disable(struct regulator *regulator)
1651{
1652        struct regulator_dev *rdev = regulator->rdev;
1653        int ret;
1654
1655        mutex_lock(&rdev->mutex);
1656        regulator->uA_load = 0;
1657        ret = _regulator_force_disable(regulator->rdev);
1658        mutex_unlock(&rdev->mutex);
1659
1660        if (rdev->supply)
1661                while (rdev->open_count--)
1662                        regulator_disable(rdev->supply);
1663
1664        return ret;
1665}
1666EXPORT_SYMBOL_GPL(regulator_force_disable);
1667
1668static void regulator_disable_work(struct work_struct *work)
1669{
1670        struct regulator_dev *rdev = container_of(work, struct regulator_dev,
1671                                                  disable_work.work);
1672        int count, i, ret;
1673
1674        mutex_lock(&rdev->mutex);
1675
1676        BUG_ON(!rdev->deferred_disables);
1677
1678        count = rdev->deferred_disables;
1679        rdev->deferred_disables = 0;
1680
1681        for (i = 0; i < count; i++) {
1682                ret = _regulator_disable(rdev);
1683                if (ret != 0)
1684                        rdev_err(rdev, "Deferred disable failed: %d\n", ret);
1685        }
1686
1687        mutex_unlock(&rdev->mutex);
1688
1689        if (rdev->supply) {
1690                for (i = 0; i < count; i++) {
1691                        ret = regulator_disable(rdev->supply);
1692                        if (ret != 0) {
1693                                rdev_err(rdev,
1694                                         "Supply disable failed: %d\n", ret);
1695                        }
1696                }
1697        }
1698}
1699
1700/**
1701 * regulator_disable_deferred - disable regulator output with delay
1702 * @regulator: regulator source
1703 * @ms: miliseconds until the regulator is disabled
1704 *
1705 * Execute regulator_disable() on the regulator after a delay.  This
1706 * is intended for use with devices that require some time to quiesce.
1707 *
1708 * NOTE: this will only disable the regulator output if no other consumer
1709 * devices have it enabled, the regulator device supports disabling and
1710 * machine constraints permit this operation.
1711 */
1712int regulator_disable_deferred(struct regulator *regulator, int ms)
1713{
1714        struct regulator_dev *rdev = regulator->rdev;
1715        int ret;
1716
1717        mutex_lock(&rdev->mutex);
1718        rdev->deferred_disables++;
1719        mutex_unlock(&rdev->mutex);
1720
1721        ret = schedule_delayed_work(&rdev->disable_work,
1722                                    msecs_to_jiffies(ms));
1723        if (ret < 0)
1724                return ret;
1725        else
1726                return 0;
1727}
1728EXPORT_SYMBOL_GPL(regulator_disable_deferred);
1729
1730static int _regulator_is_enabled(struct regulator_dev *rdev)
1731{
1732        /* If we don't know then assume that the regulator is always on */
1733        if (!rdev->desc->ops->is_enabled)
1734                return 1;
1735
1736        return rdev->desc->ops->is_enabled(rdev);
1737}
1738
1739/**
1740 * regulator_is_enabled - is the regulator output enabled
1741 * @regulator: regulator source
1742 *
1743 * Returns positive if the regulator driver backing the source/client
1744 * has requested that the device be enabled, zero if it hasn't, else a
1745 * negative errno code.
1746 *
1747 * Note that the device backing this regulator handle can have multiple
1748 * users, so it might be enabled even if regulator_enable() was never
1749 * called for this particular source.
1750 */
1751int regulator_is_enabled(struct regulator *regulator)
1752{
1753        int ret;
1754
1755        mutex_lock(&regulator->rdev->mutex);
1756        ret = _regulator_is_enabled(regulator->rdev);
1757        mutex_unlock(&regulator->rdev->mutex);
1758
1759        return ret;
1760}
1761EXPORT_SYMBOL_GPL(regulator_is_enabled);
1762
1763/**
1764 * regulator_count_voltages - count regulator_list_voltage() selectors
1765 * @regulator: regulator source
1766 *
1767 * Returns number of selectors, or negative errno.  Selectors are
1768 * numbered starting at zero, and typically correspond to bitfields
1769 * in hardware registers.
1770 */
1771int regulator_count_voltages(struct regulator *regulator)
1772{
1773        struct regulator_dev    *rdev = regulator->rdev;
1774
1775        return rdev->desc->n_voltages ? : -EINVAL;
1776}
1777EXPORT_SYMBOL_GPL(regulator_count_voltages);
1778
1779/**
1780 * regulator_list_voltage - enumerate supported voltages
1781 * @regulator: regulator source
1782 * @selector: identify voltage to list
1783 * Context: can sleep
1784 *
1785 * Returns a voltage that can be passed to @regulator_set_voltage(),
1786 * zero if this selector code can't be used on this system, or a
1787 * negative errno.
1788 */
1789int regulator_list_voltage(struct regulator *regulator, unsigned selector)
1790{
1791        struct regulator_dev    *rdev = regulator->rdev;
1792        struct regulator_ops    *ops = rdev->desc->ops;
1793        int                     ret;
1794
1795        if (!ops->list_voltage || selector >= rdev->desc->n_voltages)
1796                return -EINVAL;
1797
1798        mutex_lock(&rdev->mutex);
1799        ret = ops->list_voltage(rdev, selector);
1800        mutex_unlock(&rdev->mutex);
1801
1802        if (ret > 0) {
1803                if (ret < rdev->constraints->min_uV)
1804                        ret = 0;
1805                else if (ret > rdev->constraints->max_uV)
1806                        ret = 0;
1807        }
1808
1809        return ret;
1810}
1811EXPORT_SYMBOL_GPL(regulator_list_voltage);
1812
1813/**
1814 * regulator_is_supported_voltage - check if a voltage range can be supported
1815 *
1816 * @regulator: Regulator to check.
1817 * @min_uV: Minimum required voltage in uV.
1818 * @max_uV: Maximum required voltage in uV.
1819 *
1820 * Returns a boolean or a negative error code.
1821 */
1822int regulator_is_supported_voltage(struct regulator *regulator,
1823                                   int min_uV, int max_uV)
1824{
1825        int i, voltages, ret;
1826
1827        ret = regulator_count_voltages(regulator);
1828        if (ret < 0)
1829                return ret;
1830        voltages = ret;
1831
1832        for (i = 0; i < voltages; i++) {
1833                ret = regulator_list_voltage(regulator, i);
1834
1835                if (ret >= min_uV && ret <= max_uV)
1836                        return 1;
1837        }
1838
1839        return 0;
1840}
1841EXPORT_SYMBOL_GPL(regulator_is_supported_voltage);
1842
1843static int _regulator_do_set_voltage(struct regulator_dev *rdev,
1844                                     int min_uV, int max_uV)
1845{
1846        int ret;
1847        int delay = 0;
1848        unsigned int selector;
1849
1850        trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV);
1851
1852        min_uV += rdev->constraints->uV_offset;
1853        max_uV += rdev->constraints->uV_offset;
1854
1855        if (rdev->desc->ops->set_voltage) {
1856                ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV,
1857                                                   &selector);
1858
1859                if (rdev->desc->ops->list_voltage)
1860                        selector = rdev->desc->ops->list_voltage(rdev,
1861                                                                 selector);
1862                else
1863                        selector = -1;
1864        } else if (rdev->desc->ops->set_voltage_sel) {
1865                int best_val = INT_MAX;
1866                int i;
1867
1868                selector = 0;
1869
1870                /* Find the smallest voltage that falls within the specified
1871                 * range.
1872                 */
1873                for (i = 0; i < rdev->desc->n_voltages; i++) {
1874                        ret = rdev->desc->ops->list_voltage(rdev, i);
1875                        if (ret < 0)
1876                                continue;
1877
1878                        if (ret < best_val && ret >= min_uV && ret <= max_uV) {
1879                                best_val = ret;
1880                                selector = i;
1881                        }
1882                }
1883
1884                /*
1885                 * If we can't obtain the old selector there is not enough
1886                 * info to call set_voltage_time_sel().
1887                 */
1888                if (rdev->desc->ops->set_voltage_time_sel &&
1889                    rdev->desc->ops->get_voltage_sel) {
1890                        unsigned int old_selector = 0;
1891
1892                        ret = rdev->desc->ops->get_voltage_sel(rdev);
1893                        if (ret < 0)
1894                                return ret;
1895                        old_selector = ret;
1896                        ret = rdev->desc->ops->set_voltage_time_sel(rdev,
1897                                                old_selector, selector);
1898                        if (ret < 0)
1899                                rdev_warn(rdev, "set_voltage_time_sel() failed: %d\n", ret);
1900                        else
1901                                delay = ret;
1902                }
1903
1904                if (best_val != INT_MAX) {
1905                        ret = rdev->desc->ops->set_voltage_sel(rdev, selector);
1906                        selector = best_val;
1907                } else {
1908                        ret = -EINVAL;
1909                }
1910        } else {
1911                ret = -EINVAL;
1912        }
1913
1914        /* Insert any necessary delays */
1915        if (delay >= 1000) {
1916                mdelay(delay / 1000);
1917                udelay(delay % 1000);
1918        } else if (delay) {
1919                udelay(delay);
1920        }
1921
1922        if (ret == 0)
1923                _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE,
1924                                     NULL);
1925
1926        trace_regulator_set_voltage_complete(rdev_get_name(rdev), selector);
1927
1928        return ret;
1929}
1930
1931/**
1932 * regulator_set_voltage - set regulator output voltage
1933 * @regulator: regulator source
1934 * @min_uV: Minimum required voltage in uV
1935 * @max_uV: Maximum acceptable voltage in uV
1936 *
1937 * Sets a voltage regulator to the desired output voltage. This can be set
1938 * during any regulator state. IOW, regulator can be disabled or enabled.
1939 *
1940 * If the regulator is enabled then the voltage will change to the new value
1941 * immediately otherwise if the regulator is disabled the regulator will
1942 * output at the new voltage when enabled.
1943 *
1944 * NOTE: If the regulator is shared between several devices then the lowest
1945 * request voltage that meets the system constraints will be used.
1946 * Regulator system constraints must be set for this regulator before
1947 * calling this function otherwise this call will fail.
1948 */
1949int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
1950{
1951        struct regulator_dev *rdev = regulator->rdev;
1952        int ret = 0;
1953
1954        mutex_lock(&rdev->mutex);
1955
1956        /* If we're setting the same range as last time the change
1957         * should be a noop (some cpufreq implementations use the same
1958         * voltage for multiple frequencies, for example).
1959         */
1960        if (regulator->min_uV == min_uV && regulator->max_uV == max_uV)
1961                goto out;
1962
1963        /* sanity check */
1964        if (!rdev->desc->ops->set_voltage &&
1965            !rdev->desc->ops->set_voltage_sel) {
1966                ret = -EINVAL;
1967                goto out;
1968        }
1969
1970        /* constraints check */
1971        ret = regulator_check_voltage(rdev, &min_uV, &max_uV);
1972        if (ret < 0)
1973                goto out;
1974        regulator->min_uV = min_uV;
1975        regulator->max_uV = max_uV;
1976
1977        ret = regulator_check_consumers(rdev, &min_uV, &max_uV);
1978        if (ret < 0)
1979                goto out;
1980
1981        ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
1982
1983out:
1984        mutex_unlock(&rdev->mutex);
1985        return ret;
1986}
1987EXPORT_SYMBOL_GPL(regulator_set_voltage);
1988
1989/**
1990 * regulator_set_voltage_time - get raise/fall time
1991 * @regulator: regulator source
1992 * @old_uV: starting voltage in microvolts
1993 * @new_uV: target voltage in microvolts
1994 *
1995 * Provided with the starting and ending voltage, this function attempts to
1996 * calculate the time in microseconds required to rise or fall to this new
1997 * voltage.
1998 */
1999int regulator_set_voltage_time(struct regulator *regulator,
2000                               int old_uV, int new_uV)
2001{
2002        struct regulator_dev    *rdev = regulator->rdev;
2003        struct regulator_ops    *ops = rdev->desc->ops;
2004        int old_sel = -1;
2005        int new_sel = -1;
2006        int voltage;
2007        int i;
2008
2009        /* Currently requires operations to do this */
2010        if (!ops->list_voltage || !ops->set_voltage_time_sel
2011            || !rdev->desc->n_voltages)
2012                return -EINVAL;
2013
2014        for (i = 0; i < rdev->desc->n_voltages; i++) {
2015                /* We only look for exact voltage matches here */
2016                voltage = regulator_list_voltage(regulator, i);
2017                if (voltage < 0)
2018                        return -EINVAL;
2019                if (voltage == 0)
2020                        continue;
2021                if (voltage == old_uV)
2022                        old_sel = i;
2023                if (voltage == new_uV)
2024                        new_sel = i;
2025        }
2026
2027        if (old_sel < 0 || new_sel < 0)
2028                return -EINVAL;
2029
2030        return ops->set_voltage_time_sel(rdev, old_sel, new_sel);
2031}
2032EXPORT_SYMBOL_GPL(regulator_set_voltage_time);
2033
2034/**
2035 * regulator_sync_voltage - re-apply last regulator output voltage
2036 * @regulator: regulator source
2037 *
2038 * Re-apply the last configured voltage.  This is intended to be used
2039 * where some external control source the consumer is cooperating with
2040 * has caused the configured voltage to change.
2041 */
2042int regulator_sync_voltage(struct regulator *regulator)
2043{
2044        struct regulator_dev *rdev = regulator->rdev;
2045        int ret, min_uV, max_uV;
2046
2047        mutex_lock(&rdev->mutex);
2048
2049        if (!rdev->desc->ops->set_voltage &&
2050            !rdev->desc->ops->set_voltage_sel) {
2051                ret = -EINVAL;
2052                goto out;
2053        }
2054
2055        /* This is only going to work if we've had a voltage configured. */
2056        if (!regulator->min_uV && !regulator->max_uV) {
2057                ret = -EINVAL;
2058                goto out;
2059        }
2060
2061        min_uV = regulator->min_uV;
2062        max_uV = regulator->max_uV;
2063
2064        /* This should be a paranoia check... */
2065        ret = regulator_check_voltage(rdev, &min_uV, &max_uV);
2066        if (ret < 0)
2067                goto out;
2068
2069        ret = regulator_check_consumers(rdev, &min_uV, &max_uV);
2070        if (ret < 0)
2071                goto out;
2072
2073        ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
2074
2075out:
2076        mutex_unlock(&rdev->mutex);
2077        return ret;
2078}
2079EXPORT_SYMBOL_GPL(regulator_sync_voltage);
2080
2081static int _regulator_get_voltage(struct regulator_dev *rdev)
2082{
2083        int sel, ret;
2084
2085        if (rdev->desc->ops->get_voltage_sel) {
2086                sel = rdev->desc->ops->get_voltage_sel(rdev);
2087                if (sel < 0)
2088                        return sel;
2089                ret = rdev->desc->ops->list_voltage(rdev, sel);
2090        } else if (rdev->desc->ops->get_voltage) {
2091                ret = rdev->desc->ops->get_voltage(rdev);
2092        } else {
2093                return -EINVAL;
2094        }
2095
2096        if (ret < 0)
2097                return ret;
2098        return ret - rdev->constraints->uV_offset;
2099}
2100
2101/**
2102 * regulator_get_voltage - get regulator output voltage
2103 * @regulator: regulator source
2104 *
2105 * This returns the current regulator voltage in uV.
2106 *
2107 * NOTE: If the regulator is disabled it will return the voltage value. This
2108 * function should not be used to determine regulator state.
2109 */
2110int regulator_get_voltage(struct regulator *regulator)
2111{
2112        int ret;
2113
2114        mutex_lock(&regulator->rdev->mutex);
2115
2116        ret = _regulator_get_voltage(regulator->rdev);
2117
2118        mutex_unlock(&regulator->rdev->mutex);
2119
2120        return ret;
2121}
2122EXPORT_SYMBOL_GPL(regulator_get_voltage);
2123
2124/**
2125 * regulator_set_current_limit - set regulator output current limit
2126 * @regulator: regulator source
2127 * @min_uA: Minimuum supported current in uA
2128 * @max_uA: Maximum supported current in uA
2129 *
2130 * Sets current sink to the desired output current. This can be set during
2131 * any regulator state. IOW, regulator can be disabled or enabled.
2132 *
2133 * If the regulator is enabled then the current will change to the new value
2134 * immediately otherwise if the regulator is disabled the regulator will
2135 * output at the new current when enabled.
2136 *
2137 * NOTE: Regulator system constraints must be set for this regulator before
2138 * calling this function otherwise this call will fail.
2139 */
2140int regulator_set_current_limit(struct regulator *regulator,
2141                               int min_uA, int max_uA)
2142{
2143        struct regulator_dev *rdev = regulator->rdev;
2144        int ret;
2145
2146        mutex_lock(&rdev->mutex);
2147
2148        /* sanity check */
2149        if (!rdev->desc->ops->set_current_limit) {
2150                ret = -EINVAL;
2151                goto out;
2152        }
2153
2154        /* constraints check */
2155        ret = regulator_check_current_limit(rdev, &min_uA, &max_uA);
2156        if (ret < 0)
2157                goto out;
2158
2159        ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA);
2160out:
2161        mutex_unlock(&rdev->mutex);
2162        return ret;
2163}
2164EXPORT_SYMBOL_GPL(regulator_set_current_limit);
2165
2166static int _regulator_get_current_limit(struct regulator_dev *rdev)
2167{
2168        int ret;
2169
2170        mutex_lock(&rdev->mutex);
2171
2172        /* sanity check */
2173        if (!rdev->desc->ops->get_current_limit) {
2174                ret = -EINVAL;
2175                goto out;
2176        }
2177
2178        ret = rdev->desc->ops->get_current_limit(rdev);
2179out:
2180        mutex_unlock(&rdev->mutex);
2181        return ret;
2182}
2183
2184/**
2185 * regulator_get_current_limit - get regulator output current
2186 * @regulator: regulator source
2187 *
2188 * This returns the current supplied by the specified current sink in uA.
2189 *
2190 * NOTE: If the regulator is disabled it will return the current value. This
2191 * function should not be used to determine regulator state.
2192 */
2193int regulator_get_current_limit(struct regulator *regulator)
2194{
2195        return _regulator_get_current_limit(regulator->rdev);
2196}
2197EXPORT_SYMBOL_GPL(regulator_get_current_limit);
2198
2199/**
2200 * regulator_set_mode - set regulator operating mode
2201 * @regulator: regulator source
2202 * @mode: operating mode - one of the REGULATOR_MODE constants
2203 *
2204 * Set regulator operating mode to increase regulator efficiency or improve
2205 * regulation performance.
2206 *
2207 * NOTE: Regulator system constraints must be set for this regulator before
2208 * calling this function otherwise this call will fail.
2209 */
2210int regulator_set_mode(struct regulator *regulator, unsigned int mode)
2211{
2212        struct regulator_dev *rdev = regulator->rdev;
2213        int ret;
2214        int regulator_curr_mode;
2215
2216        mutex_lock(&rdev->mutex);
2217
2218        /* sanity check */
2219        if (!rdev->desc->ops->set_mode) {
2220                ret = -EINVAL;
2221                goto out;
2222        }
2223
2224        /* return if the same mode is requested */
2225        if (rdev->desc->ops->get_mode) {
2226                regulator_curr_mode = rdev->desc->ops->get_mode(rdev);
2227                if (regulator_curr_mode == mode) {
2228                        ret = 0;
2229                        goto out;
2230                }
2231        }
2232
2233        /* constraints check */
2234        ret = regulator_mode_constrain(rdev, &mode);
2235        if (ret < 0)
2236                goto out;
2237
2238        ret = rdev->desc->ops->set_mode(rdev, mode);
2239out:
2240        mutex_unlock(&rdev->mutex);
2241        return ret;
2242}
2243EXPORT_SYMBOL_GPL(regulator_set_mode);
2244
2245static unsigned int _regulator_get_mode(struct regulator_dev *rdev)
2246{
2247        int ret;
2248
2249        mutex_lock(&rdev->mutex);
2250
2251        /* sanity check */
2252        if (!rdev->desc->ops->get_mode) {
2253                ret = -EINVAL;
2254                goto out;
2255        }
2256
2257        ret = rdev->desc->ops->get_mode(rdev);
2258out:
2259        mutex_unlock(&rdev->mutex);
2260        return ret;
2261}
2262
2263/**
2264 * regulator_get_mode - get regulator operating mode
2265 * @regulator: regulator source
2266 *
2267 * Get the current regulator operating mode.
2268 */
2269unsigned int regulator_get_mode(struct regulator *regulator)
2270{
2271        return _regulator_get_mode(regulator->rdev);
2272}
2273EXPORT_SYMBOL_GPL(regulator_get_mode);
2274
2275/**
2276 * regulator_set_optimum_mode - set regulator optimum operating mode
2277 * @regulator: regulator source
2278 * @uA_load: load current
2279 *
2280 * Notifies the regulator core of a new device load. This is then used by
2281 * DRMS (if enabled by constraints) to set the most efficient regulator
2282 * operating mode for the new regulator loading.
2283 *
2284 * Consumer devices notify their supply regulator of the maximum power
2285 * they will require (can be taken from device datasheet in the power
2286 * consumption tables) when they change operational status and hence power
2287 * state. Examples of operational state changes that can affect power
2288 * consumption are :-
2289 *
2290 *    o Device is opened / closed.
2291 *    o Device I/O is about to begin or has just finished.
2292 *    o Device is idling in between work.
2293 *
2294 * This information is also exported via sysfs to userspace.
2295 *
2296 * DRMS will sum the total requested load on the regulator and change
2297 * to the most efficient operating mode if platform constraints allow.
2298 *
2299 * Returns the new regulator mode or error.
2300 */
2301int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
2302{
2303        struct regulator_dev *rdev = regulator->rdev;
2304        struct regulator *consumer;
2305        int ret, output_uV, input_uV, total_uA_load = 0;
2306        unsigned int mode;
2307
2308        mutex_lock(&rdev->mutex);
2309
2310        /*
2311         * first check to see if we can set modes at all, otherwise just
2312         * tell the consumer everything is OK.
2313         */
2314        regulator->uA_load = uA_load;
2315        ret = regulator_check_drms(rdev);
2316        if (ret < 0) {
2317                ret = 0;
2318                goto out;
2319        }
2320
2321        if (!rdev->desc->ops->get_optimum_mode)
2322                goto out;
2323
2324        /*
2325         * we can actually do this so any errors are indicators of
2326         * potential real failure.
2327         */
2328        ret = -EINVAL;
2329
2330        /* get output voltage */
2331        output_uV = _regulator_get_voltage(rdev);
2332        if (output_uV <= 0) {
2333                rdev_err(rdev, "invalid output voltage found\n");
2334                goto out;
2335        }
2336
2337        /* get input voltage */
2338        input_uV = 0;
2339        if (rdev->supply)
2340                input_uV = regulator_get_voltage(rdev->supply);
2341        if (input_uV <= 0)
2342                input_uV = rdev->constraints->input_uV;
2343        if (input_uV <= 0) {
2344                rdev_err(rdev, "invalid input voltage found\n");
2345                goto out;
2346        }
2347
2348        /* calc total requested load for this regulator */
2349        list_for_each_entry(consumer, &rdev->consumer_list, list)
2350                total_uA_load += consumer->uA_load;
2351
2352        mode = rdev->desc->ops->get_optimum_mode(rdev,
2353                                                 input_uV, output_uV,
2354                                                 total_uA_load);
2355        ret = regulator_mode_constrain(rdev, &mode);
2356        if (ret < 0) {
2357                rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n",
2358                         total_uA_load, input_uV, output_uV);
2359                goto out;
2360        }
2361
2362        ret = rdev->desc->ops->set_mode(rdev, mode);
2363        if (ret < 0) {
2364                rdev_err(rdev, "failed to set optimum mode %x\n", mode);
2365                goto out;
2366        }
2367        ret = mode;
2368out:
2369        mutex_unlock(&rdev->mutex);
2370        return ret;
2371}
2372EXPORT_SYMBOL_GPL(regulator_set_optimum_mode);
2373
2374/**
2375 * regulator_register_notifier - register regulator event notifier
2376 * @regulator: regulator source
2377 * @nb: notifier block
2378 *
2379 * Register notifier block to receive regulator events.
2380 */
2381int regulator_register_notifier(struct regulator *regulator,
2382                              struct notifier_block *nb)
2383{
2384        return blocking_notifier_chain_register(&regulator->rdev->notifier,
2385                                                nb);
2386}
2387EXPORT_SYMBOL_GPL(regulator_register_notifier);
2388
2389/**
2390 * regulator_unregister_notifier - unregister regulator event notifier
2391 * @regulator: regulator source
2392 * @nb: notifier block
2393 *
2394 * Unregister regulator event notifier block.
2395 */
2396int regulator_unregister_notifier(struct regulator *regulator,
2397                                struct notifier_block *nb)
2398{
2399        return blocking_notifier_chain_unregister(&regulator->rdev->notifier,
2400                                                  nb);
2401}
2402EXPORT_SYMBOL_GPL(regulator_unregister_notifier);
2403
2404/* notify regulator consumers and downstream regulator consumers.
2405 * Note mutex must be held by caller.
2406 */
2407static void _notifier_call_chain(struct regulator_dev *rdev,
2408                                  unsigned long event, void *data)
2409{
2410        /* call rdev chain first */
2411        blocking_notifier_call_chain(&rdev->notifier, event, NULL);
2412}
2413
2414/**
2415 * regulator_bulk_get - get multiple regulator consumers
2416 *
2417 * @dev:           Device to supply
2418 * @num_consumers: Number of consumers to register
2419 * @consumers:     Configuration of consumers; clients are stored here.
2420 *
2421 * @return 0 on success, an errno on failure.
2422 *
2423 * This helper function allows drivers to get several regulator
2424 * consumers in one operation.  If any of the regulators cannot be
2425 * acquired then any regulators that were allocated will be freed
2426 * before returning to the caller.
2427 */
2428int regulator_bulk_get(struct device *dev, int num_consumers,
2429                       struct regulator_bulk_data *consumers)
2430{
2431        int i;
2432        int ret;
2433
2434        for (i = 0; i < num_consumers; i++)
2435                consumers[i].consumer = NULL;
2436
2437        for (i = 0; i < num_consumers; i++) {
2438                consumers[i].consumer = regulator_get(dev,
2439                                                      consumers[i].supply);
2440                if (IS_ERR(consumers[i].consumer)) {
2441                        ret = PTR_ERR(consumers[i].consumer);
2442                        dev_err(dev, "Failed to get supply '%s': %d\n",
2443                                consumers[i].supply, ret);
2444                        consumers[i].consumer = NULL;
2445                        goto err;
2446                }
2447        }
2448
2449        return 0;
2450
2451err:
2452        while (--i >= 0)
2453                regulator_put(consumers[i].consumer);
2454
2455        return ret;
2456}
2457EXPORT_SYMBOL_GPL(regulator_bulk_get);
2458
2459/**
2460 * devm_regulator_bulk_get - managed get multiple regulator consumers
2461 *
2462 * @dev:           Device to supply
2463 * @num_consumers: Number of consumers to register
2464 * @consumers:     Configuration of consumers; clients are stored here.
2465 *
2466 * @return 0 on success, an errno on failure.
2467 *
2468 * This helper function allows drivers to get several regulator
2469 * consumers in one operation with management, the regulators will
2470 * automatically be freed when the device is unbound.  If any of the
2471 * regulators cannot be acquired then any regulators that were
2472 * allocated will be freed before returning to the caller.
2473 */
2474int devm_regulator_bulk_get(struct device *dev, int num_consumers,
2475                            struct regulator_bulk_data *consumers)
2476{
2477        int i;
2478        int ret;
2479
2480        for (i = 0; i < num_consumers; i++)
2481                consumers[i].consumer = NULL;
2482
2483        for (i = 0; i < num_consumers; i++) {
2484                consumers[i].consumer = devm_regulator_get(dev,
2485                                                           consumers[i].supply);
2486                if (IS_ERR(consumers[i].consumer)) {
2487                        ret = PTR_ERR(consumers[i].consumer);
2488                        dev_err(dev, "Failed to get supply '%s': %d\n",
2489                                consumers[i].supply, ret);
2490                        consumers[i].consumer = NULL;
2491                        goto err;
2492                }
2493        }
2494
2495        return 0;
2496
2497err:
2498        for (i = 0; i < num_consumers && consumers[i].consumer; i++)
2499                devm_regulator_put(consumers[i].consumer);
2500
2501        return ret;
2502}
2503EXPORT_SYMBOL_GPL(devm_regulator_bulk_get);
2504
2505static void regulator_bulk_enable_async(void *data, async_cookie_t cookie)
2506{
2507        struct regulator_bulk_data *bulk = data;
2508
2509        bulk->ret = regulator_enable(bulk->consumer);
2510}
2511
2512/**
2513 * regulator_bulk_enable - enable multiple regulator consumers
2514 *
2515 * @num_consumers: Number of consumers
2516 * @consumers:     Consumer data; clients are stored here.
2517 * @return         0 on success, an errno on failure
2518 *
2519 * This convenience API allows consumers to enable multiple regulator
2520 * clients in a single API call.  If any consumers cannot be enabled
2521 * then any others that were enabled will be disabled again prior to
2522 * return.
2523 */
2524int regulator_bulk_enable(int num_consumers,
2525                          struct regulator_bulk_data *consumers)
2526{
2527        LIST_HEAD(async_domain);
2528        int i;
2529        int ret = 0;
2530
2531        for (i = 0; i < num_consumers; i++)
2532                async_schedule_domain(regulator_bulk_enable_async,
2533                                      &consumers[i], &async_domain);
2534
2535        async_synchronize_full_domain(&async_domain);
2536
2537        /* If any consumer failed we need to unwind any that succeeded */
2538        for (i = 0; i < num_consumers; i++) {
2539                if (consumers[i].ret != 0) {
2540                        ret = consumers[i].ret;
2541                        goto err;
2542                }
2543        }
2544
2545        return 0;
2546
2547err:
2548        pr_err("Failed to enable %s: %d\n", consumers[i].supply, ret);
2549        while (--i >= 0)
2550                regulator_disable(consumers[i].consumer);
2551
2552        return ret;
2553}
2554EXPORT_SYMBOL_GPL(regulator_bulk_enable);
2555
2556/**
2557 * regulator_bulk_disable - disable multiple regulator consumers
2558 *
2559 * @num_consumers: Number of consumers
2560 * @consumers:     Consumer data; clients are stored here.
2561 * @return         0 on success, an errno on failure
2562 *
2563 * This convenience API allows consumers to disable multiple regulator
2564 * clients in a single API call.  If any consumers cannot be disabled
2565 * then any others that were disabled will be enabled again prior to
2566 * return.
2567 */
2568int regulator_bulk_disable(int num_consumers,
2569                           struct regulator_bulk_data *consumers)
2570{
2571        int i;
2572        int ret;
2573
2574        for (i = num_consumers - 1; i >= 0; --i) {
2575                ret = regulator_disable(consumers[i].consumer);
2576                if (ret != 0)
2577                        goto err;
2578        }
2579
2580        return 0;
2581
2582err:
2583        pr_err("Failed to disable %s: %d\n", consumers[i].supply, ret);
2584        for (++i; i < num_consumers; ++i)
2585                regulator_enable(consumers[i].consumer);
2586
2587        return ret;
2588}
2589EXPORT_SYMBOL_GPL(regulator_bulk_disable);
2590
2591/**
2592 * regulator_bulk_force_disable - force disable multiple regulator consumers
2593 *
2594 * @num_consumers: Number of consumers
2595 * @consumers:     Consumer data; clients are stored here.
2596 * @return         0 on success, an errno on failure
2597 *
2598 * This convenience API allows consumers to forcibly disable multiple regulator
2599 * clients in a single API call.
2600 * NOTE: This should be used for situations when device damage will
2601 * likely occur if the regulators are not disabled (e.g. over temp).
2602 * Although regulator_force_disable function call for some consumers can
2603 * return error numbers, the function is called for all consumers.
2604 */
2605int regulator_bulk_force_disable(int num_consumers,
2606                           struct regulator_bulk_data *consumers)
2607{
2608        int i;
2609        int ret;
2610
2611        for (i = 0; i < num_consumers; i++)
2612                consumers[i].ret =
2613                            regulator_force_disable(consumers[i].consumer);
2614
2615        for (i = 0; i < num_consumers; i++) {
2616                if (consumers[i].ret != 0) {
2617                        ret = consumers[i].ret;
2618                        goto out;
2619                }
2620        }
2621
2622        return 0;
2623out:
2624        return ret;
2625}
2626EXPORT_SYMBOL_GPL(regulator_bulk_force_disable);
2627
2628/**
2629 * regulator_bulk_free - free multiple regulator consumers
2630 *
2631 * @num_consumers: Number of consumers
2632 * @consumers:     Consumer data; clients are stored here.
2633 *
2634 * This convenience API allows consumers to free multiple regulator
2635 * clients in a single API call.
2636 */
2637void regulator_bulk_free(int num_consumers,
2638                         struct regulator_bulk_data *consumers)
2639{
2640        int i;
2641
2642        for (i = 0; i < num_consumers; i++) {
2643                regulator_put(consumers[i].consumer);
2644                consumers[i].consumer = NULL;
2645        }
2646}
2647EXPORT_SYMBOL_GPL(regulator_bulk_free);
2648
2649/**
2650 * regulator_notifier_call_chain - call regulator event notifier
2651 * @rdev: regulator source
2652 * @event: notifier block
2653 * @data: callback-specific data.
2654 *
2655 * Called by regulator drivers to notify clients a regulator event has
2656 * occurred. We also notify regulator clients downstream.
2657 * Note lock must be held by caller.
2658 */
2659int regulator_notifier_call_chain(struct regulator_dev *rdev,
2660                                  unsigned long event, void *data)
2661{
2662        _notifier_call_chain(rdev, event, data);
2663        return NOTIFY_DONE;
2664
2665}
2666EXPORT_SYMBOL_GPL(regulator_notifier_call_chain);
2667
2668/**
2669 * regulator_mode_to_status - convert a regulator mode into a status
2670 *
2671 * @mode: Mode to convert
2672 *
2673 * Convert a regulator mode into a status.
2674 */
2675int regulator_mode_to_status(unsigned int mode)
2676{
2677        switch (mode) {
2678        case REGULATOR_MODE_FAST:
2679                return REGULATOR_STATUS_FAST;
2680        case REGULATOR_MODE_NORMAL:
2681                return REGULATOR_STATUS_NORMAL;
2682        case REGULATOR_MODE_IDLE:
2683                return REGULATOR_STATUS_IDLE;
2684        case REGULATOR_STATUS_STANDBY:
2685                return REGULATOR_STATUS_STANDBY;
2686        default:
2687                return 0;
2688        }
2689}
2690EXPORT_SYMBOL_GPL(regulator_mode_to_status);
2691
2692/*
2693 * To avoid cluttering sysfs (and memory) with useless state, only
2694 * create attributes that can be meaningfully displayed.
2695 */
2696static int add_regulator_attributes(struct regulator_dev *rdev)
2697{
2698        struct device           *dev = &rdev->dev;
2699        struct regulator_ops    *ops = rdev->desc->ops;
2700        int                     status = 0;
2701
2702        /* some attributes need specific methods to be displayed */
2703        if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) ||
2704            (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0)) {
2705                status = device_create_file(dev, &dev_attr_microvolts);
2706                if (status < 0)
2707                        return status;
2708        }
2709        if (ops->get_current_limit) {
2710                status = device_create_file(dev, &dev_attr_microamps);
2711                if (status < 0)
2712                        return status;
2713        }
2714        if (ops->get_mode) {
2715                status = device_create_file(dev, &dev_attr_opmode);
2716                if (status < 0)
2717                        return status;
2718        }
2719        if (ops->is_enabled) {
2720                status = device_create_file(dev, &dev_attr_state);
2721                if (status < 0)
2722                        return status;
2723        }
2724        if (ops->get_status) {
2725                status = device_create_file(dev, &dev_attr_status);
2726                if (status < 0)
2727                        return status;
2728        }
2729
2730        /* some attributes are type-specific */
2731        if (rdev->desc->type == REGULATOR_CURRENT) {
2732                status = device_create_file(dev, &dev_attr_requested_microamps);
2733                if (status < 0)
2734                        return status;
2735        }
2736
2737        /* all the other attributes exist to support constraints;
2738         * don't show them if there are no constraints, or if the
2739         * relevant supporting methods are missing.
2740         */
2741        if (!rdev->constraints)
2742                return status;
2743
2744        /* constraints need specific supporting methods */
2745        if (ops->set_voltage || ops->set_voltage_sel) {
2746                status = device_create_file(dev, &dev_attr_min_microvolts);
2747                if (status < 0)
2748                        return status;
2749                status = device_create_file(dev, &dev_attr_max_microvolts);
2750                if (status < 0)
2751                        return status;
2752        }
2753        if (ops->set_current_limit) {
2754                status = device_create_file(dev, &dev_attr_min_microamps);
2755                if (status < 0)
2756                        return status;
2757                status = device_create_file(dev, &dev_attr_max_microamps);
2758                if (status < 0)
2759                        return status;
2760        }
2761
2762        /* suspend mode constraints need multiple supporting methods */
2763        if (!(ops->set_suspend_enable && ops->set_suspend_disable))
2764                return status;
2765
2766        status = device_create_file(dev, &dev_attr_suspend_standby_state);
2767        if (status < 0)
2768                return status;
2769        status = device_create_file(dev, &dev_attr_suspend_mem_state);
2770        if (status < 0)
2771                return status;
2772        status = device_create_file(dev, &dev_attr_suspend_disk_state);
2773        if (status < 0)
2774                return status;
2775
2776        if (ops->set_suspend_voltage) {
2777                status = device_create_file(dev,
2778                                &dev_attr_suspend_standby_microvolts);
2779                if (status < 0)
2780                        return status;
2781                status = device_create_file(dev,
2782                                &dev_attr_suspend_mem_microvolts);
2783                if (status < 0)
2784                        return status;
2785                status = device_create_file(dev,
2786                                &dev_attr_suspend_disk_microvolts);
2787                if (status < 0)
2788                        return status;
2789        }
2790
2791        if (ops->set_suspend_mode) {
2792                status = device_create_file(dev,
2793                                &dev_attr_suspend_standby_mode);
2794                if (status < 0)
2795                        return status;
2796                status = device_create_file(dev,
2797                                &dev_attr_suspend_mem_mode);
2798                if (status < 0)
2799                        return status;
2800                status = device_create_file(dev,
2801                                &dev_attr_suspend_disk_mode);
2802                if (status < 0)
2803                        return status;
2804        }
2805
2806        return status;
2807}
2808
2809static void rdev_init_debugfs(struct regulator_dev *rdev)
2810{
2811        rdev->debugfs = debugfs_create_dir(rdev_get_name(rdev), debugfs_root);
2812        if (!rdev->debugfs) {
2813                rdev_warn(rdev, "Failed to create debugfs directory\n");
2814                return;
2815        }
2816
2817        debugfs_create_u32("use_count", 0444, rdev->debugfs,
2818                           &rdev->use_count);
2819        debugfs_create_u32("open_count", 0444, rdev->debugfs,
2820                           &rdev->open_count);
2821}
2822
2823/**
2824 * regulator_register - register regulator
2825 * @regulator_desc: regulator to register
2826 * @dev: struct device for the regulator
2827 * @init_data: platform provided init data, passed through by driver
2828 * @driver_data: private regulator data
2829 * @of_node: OpenFirmware node to parse for device tree bindings (may be
2830 *           NULL).
2831 *
2832 * Called by regulator drivers to register a regulator.
2833 * Returns 0 on success.
2834 */
2835struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
2836        struct device *dev, const struct regulator_init_data *init_data,
2837        void *driver_data, struct device_node *of_node)
2838{
2839        const struct regulation_constraints *constraints = NULL;
2840        static atomic_t regulator_no = ATOMIC_INIT(0);
2841        struct regulator_dev *rdev;
2842        int ret, i;
2843        const char *supply = NULL;
2844
2845        if (regulator_desc == NULL)
2846                return ERR_PTR(-EINVAL);
2847
2848        if (regulator_desc->name == NULL || regulator_desc->ops == NULL)
2849                return ERR_PTR(-EINVAL);
2850
2851        if (regulator_desc->type != REGULATOR_VOLTAGE &&
2852            regulator_desc->type != REGULATOR_CURRENT)
2853                return ERR_PTR(-EINVAL);
2854
2855        /* Only one of each should be implemented */
2856        WARN_ON(regulator_desc->ops->get_voltage &&
2857                regulator_desc->ops->get_voltage_sel);
2858        WARN_ON(regulator_desc->ops->set_voltage &&
2859                regulator_desc->ops->set_voltage_sel);
2860
2861        /* If we're using selectors we must implement list_voltage. */
2862        if (regulator_desc->ops->get_voltage_sel &&
2863            !regulator_desc->ops->list_voltage) {
2864                return ERR_PTR(-EINVAL);
2865        }
2866        if (regulator_desc->ops->set_voltage_sel &&
2867            !regulator_desc->ops->list_voltage) {
2868                return ERR_PTR(-EINVAL);
2869        }
2870
2871        rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL);
2872        if (rdev == NULL)
2873                return ERR_PTR(-ENOMEM);
2874
2875        mutex_lock(&regulator_list_mutex);
2876
2877        mutex_init(&rdev->mutex);
2878        rdev->reg_data = driver_data;
2879        rdev->owner = regulator_desc->owner;
2880        rdev->desc = regulator_desc;
2881        INIT_LIST_HEAD(&rdev->consumer_list);
2882        INIT_LIST_HEAD(&rdev->list);
2883        BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
2884        INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work);
2885
2886        /* preform any regulator specific init */
2887        if (init_data && init_data->regulator_init) {
2888                ret = init_data->regulator_init(rdev->reg_data);
2889                if (ret < 0)
2890                        goto clean;
2891        }
2892
2893        /* register with sysfs */
2894        rdev->dev.class = &regulator_class;
2895        rdev->dev.of_node = of_node;
2896        rdev->dev.parent = dev;
2897        dev_set_name(&rdev->dev, "regulator.%d",
2898                     atomic_inc_return(&regulator_no) - 1);
2899        ret = device_register(&rdev->dev);
2900        if (ret != 0) {
2901                put_device(&rdev->dev);
2902                goto clean;
2903        }
2904
2905        dev_set_drvdata(&rdev->dev, rdev);
2906
2907        /* set regulator constraints */
2908        if (init_data)
2909                constraints = &init_data->constraints;
2910
2911        ret = set_machine_constraints(rdev, constraints);
2912        if (ret < 0)
2913                goto scrub;
2914
2915        /* add attributes supported by this regulator */
2916        ret = add_regulator_attributes(rdev);
2917        if (ret < 0)
2918                goto scrub;
2919
2920        if (init_data && init_data->supply_regulator)
2921                supply = init_data->supply_regulator;
2922        else if (regulator_desc->supply_name)
2923                supply = regulator_desc->supply_name;
2924
2925        if (supply) {
2926                struct regulator_dev *r;
2927
2928                r = regulator_dev_lookup(dev, supply);
2929
2930                if (!r) {
2931                        dev_err(dev, "Failed to find supply %s\n", supply);
2932                        ret = -EPROBE_DEFER;
2933                        goto scrub;
2934                }
2935
2936                ret = set_supply(rdev, r);
2937                if (ret < 0)
2938                        goto scrub;
2939
2940                /* Enable supply if rail is enabled */
2941                if (rdev->desc->ops->is_enabled &&
2942                                rdev->desc->ops->is_enabled(rdev)) {
2943                        ret = regulator_enable(rdev->supply);
2944                        if (ret < 0)
2945                                goto scrub;
2946                }
2947        }
2948
2949        /* add consumers devices */
2950        if (init_data) {
2951                for (i = 0; i < init_data->num_consumer_supplies; i++) {
2952                        ret = set_consumer_device_supply(rdev,
2953                                init_data->consumer_supplies[i].dev_name,
2954                                init_data->consumer_supplies[i].supply);
2955                        if (ret < 0) {
2956                                dev_err(dev, "Failed to set supply %s\n",
2957                                        init_data->consumer_supplies[i].supply);
2958                                goto unset_supplies;
2959                        }
2960                }
2961        }
2962
2963        list_add(&rdev->list, &regulator_list);
2964
2965        rdev_init_debugfs(rdev);
2966out:
2967        mutex_unlock(&regulator_list_mutex);
2968        return rdev;
2969
2970unset_supplies:
2971        unset_regulator_supplies(rdev);
2972
2973scrub:
2974        kfree(rdev->constraints);
2975        device_unregister(&rdev->dev);
2976        /* device core frees rdev */
2977        rdev = ERR_PTR(ret);
2978        goto out;
2979
2980clean:
2981        kfree(rdev);
2982        rdev = ERR_PTR(ret);
2983        goto out;
2984}
2985EXPORT_SYMBOL_GPL(regulator_register);
2986
2987/**
2988 * regulator_unregister - unregister regulator
2989 * @rdev: regulator to unregister
2990 *
2991 * Called by regulator drivers to unregister a regulator.
2992 */
2993void regulator_unregister(struct regulator_dev *rdev)
2994{
2995        if (rdev == NULL)
2996                return;
2997
2998        if (rdev->supply)
2999                regulator_put(rdev->supply);
3000        mutex_lock(&regulator_list_mutex);
3001        debugfs_remove_recursive(rdev->debugfs);
3002        flush_work_sync(&rdev->disable_work.work);
3003        WARN_ON(rdev->open_count);
3004        unset_regulator_supplies(rdev);
3005        list_del(&rdev->list);
3006        kfree(rdev->constraints);
3007        device_unregister(&rdev->dev);
3008        mutex_unlock(&regulator_list_mutex);
3009}
3010EXPORT_SYMBOL_GPL(regulator_unregister);
3011
3012/**
3013 * regulator_suspend_prepare - prepare regulators for system wide suspend
3014 * @state: system suspend state
3015 *
3016 * Configure each regulator with it's suspend operating parameters for state.
3017 * This will usually be called by machine suspend code prior to supending.
3018 */
3019int regulator_suspend_prepare(suspend_state_t state)
3020{
3021        struct regulator_dev *rdev;
3022        int ret = 0;
3023
3024        /* ON is handled by regulator active state */
3025        if (state == PM_SUSPEND_ON)
3026                return -EINVAL;
3027
3028        mutex_lock(&regulator_list_mutex);
3029        list_for_each_entry(rdev, &regulator_list, list) {
3030
3031                mutex_lock(&rdev->mutex);
3032                ret = suspend_prepare(rdev, state);
3033                mutex_unlock(&rdev->mutex);
3034
3035                if (ret < 0) {
3036                        rdev_err(rdev, "failed to prepare\n");
3037                        goto out;
3038                }
3039        }
3040out:
3041        mutex_unlock(&regulator_list_mutex);
3042        return ret;
3043}
3044EXPORT_SYMBOL_GPL(regulator_suspend_prepare);
3045
3046/**
3047 * regulator_suspend_finish - resume regulators from system wide suspend
3048 *
3049 * Turn on regulators that might be turned off by regulator_suspend_prepare
3050 * and that should be turned on according to the regulators properties.
3051 */
3052int regulator_suspend_finish(void)
3053{
3054        struct regulator_dev *rdev;
3055        int ret = 0, error;
3056
3057        mutex_lock(&regulator_list_mutex);
3058        list_for_each_entry(rdev, &regulator_list, list) {
3059                struct regulator_ops *ops = rdev->desc->ops;
3060
3061                mutex_lock(&rdev->mutex);
3062                if ((rdev->use_count > 0  || rdev->constraints->always_on) &&
3063                                ops->enable) {
3064                        error = ops->enable(rdev);
3065                        if (error)
3066                                ret = error;
3067                } else {
3068                        if (!has_full_constraints)
3069                                goto unlock;
3070                        if (!ops->disable)
3071                                goto unlock;
3072                        if (ops->is_enabled && !ops->is_enabled(rdev))
3073                                goto unlock;
3074
3075                        error = ops->disable(rdev);
3076                        if (error)
3077                                ret = error;
3078                }
3079unlock:
3080                mutex_unlock(&rdev->mutex);
3081        }
3082        mutex_unlock(&regulator_list_mutex);
3083        return ret;
3084}
3085EXPORT_SYMBOL_GPL(regulator_suspend_finish);
3086
3087/**
3088 * regulator_has_full_constraints - the system has fully specified constraints
3089 *
3090 * Calling this function will cause the regulator API to disable all
3091 * regulators which have a zero use count and don't have an always_on
3092 * constraint in a late_initcall.
3093 *
3094 * The intention is that this will become the default behaviour in a
3095 * future kernel release so users are encouraged to use this facility
3096 * now.
3097 */
3098void regulator_has_full_constraints(void)
3099{
3100        has_full_constraints = 1;
3101}
3102EXPORT_SYMBOL_GPL(regulator_has_full_constraints);
3103
3104/**
3105 * regulator_use_dummy_regulator - Provide a dummy regulator when none is found
3106 *
3107 * Calling this function will cause the regulator API to provide a
3108 * dummy regulator to consumers if no physical regulator is found,
3109 * allowing most consumers to proceed as though a regulator were
3110 * configured.  This allows systems such as those with software
3111 * controllable regulators for the CPU core only to be brought up more
3112 * readily.
3113 */
3114void regulator_use_dummy_regulator(void)
3115{
3116        board_wants_dummy_regulator = true;
3117}
3118EXPORT_SYMBOL_GPL(regulator_use_dummy_regulator);
3119
3120/**
3121 * rdev_get_drvdata - get rdev regulator driver data
3122 * @rdev: regulator
3123 *
3124 * Get rdev regulator driver private data. This call can be used in the
3125 * regulator driver context.
3126 */
3127void *rdev_get_drvdata(struct regulator_dev *rdev)
3128{
3129        return rdev->reg_data;
3130}
3131EXPORT_SYMBOL_GPL(rdev_get_drvdata);
3132
3133/**
3134 * regulator_get_drvdata - get regulator driver data
3135 * @regulator: regulator
3136 *
3137 * Get regulator driver private data. This call can be used in the consumer
3138 * driver context when non API regulator specific functions need to be called.
3139 */
3140void *regulator_get_drvdata(struct regulator *regulator)
3141{
3142        return regulator->rdev->reg_data;
3143}
3144EXPORT_SYMBOL_GPL(regulator_get_drvdata);
3145
3146/**
3147 * regulator_set_drvdata - set regulator driver data
3148 * @regulator: regulator
3149 * @data: data
3150 */
3151void regulator_set_drvdata(struct regulator *regulator, void *data)
3152{
3153        regulator->rdev->reg_data = data;
3154}
3155EXPORT_SYMBOL_GPL(regulator_set_drvdata);
3156
3157/**
3158 * regulator_get_id - get regulator ID
3159 * @rdev: regulator
3160 */
3161int rdev_get_id(struct regulator_dev *rdev)
3162{
3163        return rdev->desc->id;
3164}
3165EXPORT_SYMBOL_GPL(rdev_get_id);
3166
3167struct device *rdev_get_dev(struct regulator_dev *rdev)
3168{
3169        return &rdev->dev;
3170}
3171EXPORT_SYMBOL_GPL(rdev_get_dev);
3172
3173void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data)
3174{
3175        return reg_init_data->driver_data;
3176}
3177EXPORT_SYMBOL_GPL(regulator_get_init_drvdata);
3178
3179#ifdef CONFIG_DEBUG_FS
3180static ssize_t supply_map_read_file(struct file *file, char __user *user_buf,
3181                                    size_t count, loff_t *ppos)
3182{
3183        char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
3184        ssize_t len, ret = 0;
3185        struct regulator_map *map;
3186
3187        if (!buf)
3188                return -ENOMEM;
3189
3190        list_for_each_entry(map, &regulator_map_list, list) {
3191                len = snprintf(buf + ret, PAGE_SIZE - ret,
3192                               "%s -> %s.%s\n",
3193                               rdev_get_name(map->regulator), map->dev_name,
3194                               map->supply);
3195                if (len >= 0)
3196                        ret += len;
3197                if (ret > PAGE_SIZE) {
3198                        ret = PAGE_SIZE;
3199                        break;
3200                }
3201        }
3202
3203        ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
3204
3205        kfree(buf);
3206
3207        return ret;
3208}
3209#endif
3210
3211static const struct file_operations supply_map_fops = {
3212#ifdef CONFIG_DEBUG_FS
3213        .read = supply_map_read_file,
3214        .llseek = default_llseek,
3215#endif
3216};
3217
3218static int __init regulator_init(void)
3219{
3220        int ret;
3221
3222        ret = class_register(&regulator_class);
3223
3224        debugfs_root = debugfs_create_dir("regulator", NULL);
3225        if (!debugfs_root)
3226                pr_warn("regulator: Failed to create debugfs directory\n");
3227
3228        debugfs_create_file("supply_map", 0444, debugfs_root, NULL,
3229                            &supply_map_fops);
3230
3231        regulator_dummy_init();
3232
3233        return ret;
3234}
3235
3236/* init early to allow our consumers to complete system booting */
3237core_initcall(regulator_init);
3238
3239static int __init regulator_init_complete(void)
3240{
3241        struct regulator_dev *rdev;
3242        struct regulator_ops *ops;
3243        struct regulation_constraints *c;
3244        int enabled, ret;
3245
3246        mutex_lock(&regulator_list_mutex);
3247
3248        /* If we have a full configuration then disable any regulators
3249         * which are not in use or always_on.  This will become the
3250         * default behaviour in the future.
3251         */
3252        list_for_each_entry(rdev, &regulator_list, list) {
3253                ops = rdev->desc->ops;
3254                c = rdev->constraints;
3255
3256                if (!ops->disable || (c && c->always_on))
3257                        continue;
3258
3259                mutex_lock(&rdev->mutex);
3260
3261                if (rdev->use_count)
3262                        goto unlock;
3263
3264                /* If we can't read the status assume it's on. */
3265                if (ops->is_enabled)
3266                        enabled = ops->is_enabled(rdev);
3267                else
3268                        enabled = 1;
3269
3270                if (!enabled)
3271                        goto unlock;
3272
3273                if (has_full_constraints) {
3274                        /* We log since this may kill the system if it
3275                         * goes wrong. */
3276                        rdev_info(rdev, "disabling\n");
3277                        ret = ops->disable(rdev);
3278                        if (ret != 0) {
3279                                rdev_err(rdev, "couldn't disable: %d\n", ret);
3280                        }
3281                } else {
3282                        /* The intention is that in future we will
3283                         * assume that full constraints are provided
3284                         * so warn even if we aren't going to do
3285                         * anything here.
3286                         */
3287                        rdev_warn(rdev, "incomplete constraints, leaving on\n");
3288                }
3289
3290unlock:
3291                mutex_unlock(&rdev->mutex);
3292        }
3293
3294        mutex_unlock(&regulator_list_mutex);
3295
3296        return 0;
3297}
3298late_initcall(regulator_init_complete);
3299