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/gpio.h> 27#include <linux/gpio/consumer.h> 28#include <linux/of.h> 29#include <linux/regmap.h> 30#include <linux/regulator/of_regulator.h> 31#include <linux/regulator/consumer.h> 32#include <linux/regulator/driver.h> 33#include <linux/regulator/machine.h> 34#include <linux/module.h> 35 36#define CREATE_TRACE_POINTS 37#include <trace/events/regulator.h> 38 39#include "dummy.h" 40#include "internal.h" 41 42#define rdev_crit(rdev, fmt, ...) \ 43 pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 44#define rdev_err(rdev, fmt, ...) \ 45 pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 46#define rdev_warn(rdev, fmt, ...) \ 47 pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 48#define rdev_info(rdev, fmt, ...) \ 49 pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 50#define rdev_dbg(rdev, fmt, ...) \ 51 pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 52 53static DEFINE_MUTEX(regulator_list_mutex); 54static LIST_HEAD(regulator_list); 55static LIST_HEAD(regulator_map_list); 56static LIST_HEAD(regulator_ena_gpio_list); 57static LIST_HEAD(regulator_supply_alias_list); 58static bool has_full_constraints; 59 60static struct dentry *debugfs_root; 61 62/* 63 * struct regulator_map 64 * 65 * Used to provide symbolic supply names to devices. 66 */ 67struct regulator_map { 68 struct list_head list; 69 const char *dev_name; /* The dev_name() for the consumer */ 70 const char *supply; 71 struct regulator_dev *regulator; 72}; 73 74/* 75 * struct regulator_enable_gpio 76 * 77 * Management for shared enable GPIO pin 78 */ 79struct regulator_enable_gpio { 80 struct list_head list; 81 struct gpio_desc *gpiod; 82 u32 enable_count; /* a number of enabled shared GPIO */ 83 u32 request_count; /* a number of requested shared GPIO */ 84 unsigned int ena_gpio_invert:1; 85}; 86 87/* 88 * struct regulator_supply_alias 89 * 90 * Used to map lookups for a supply onto an alternative device. 91 */ 92struct regulator_supply_alias { 93 struct list_head list; 94 struct device *src_dev; 95 const char *src_supply; 96 struct device *alias_dev; 97 const char *alias_supply; 98}; 99 100static int _regulator_is_enabled(struct regulator_dev *rdev); 101static int _regulator_disable(struct regulator_dev *rdev); 102static int _regulator_get_voltage(struct regulator_dev *rdev); 103static int _regulator_get_current_limit(struct regulator_dev *rdev); 104static unsigned int _regulator_get_mode(struct regulator_dev *rdev); 105static int _notifier_call_chain(struct regulator_dev *rdev, 106 unsigned long event, void *data); 107static int _regulator_do_set_voltage(struct regulator_dev *rdev, 108 int min_uV, int max_uV); 109static struct regulator *create_regulator(struct regulator_dev *rdev, 110 struct device *dev, 111 const char *supply_name); 112 113static struct regulator_dev *dev_to_rdev(struct device *dev) 114{ 115 return container_of(dev, struct regulator_dev, dev); 116} 117 118static const char *rdev_get_name(struct regulator_dev *rdev) 119{ 120 if (rdev->constraints && rdev->constraints->name) 121 return rdev->constraints->name; 122 else if (rdev->desc->name) 123 return rdev->desc->name; 124 else 125 return ""; 126} 127 128static bool have_full_constraints(void) 129{ 130 return has_full_constraints || of_have_populated_dt(); 131} 132 133/** 134 * of_get_regulator - get a regulator device node based on supply name 135 * @dev: Device pointer for the consumer (of regulator) device 136 * @supply: regulator supply name 137 * 138 * Extract the regulator device node corresponding to the supply name. 139 * returns the device node corresponding to the regulator if found, else 140 * returns NULL. 141 */ 142static struct device_node *of_get_regulator(struct device *dev, const char *supply) 143{ 144 struct device_node *regnode = NULL; 145 char prop_name[32]; /* 32 is max size of property name */ 146 147 dev_dbg(dev, "Looking up %s-supply from device tree\n", supply); 148 149 snprintf(prop_name, 32, "%s-supply", supply); 150 regnode = of_parse_phandle(dev->of_node, prop_name, 0); 151 152 if (!regnode) { 153 dev_dbg(dev, "Looking up %s property in node %s failed", 154 prop_name, dev->of_node->full_name); 155 return NULL; 156 } 157 return regnode; 158} 159 160static int _regulator_can_change_status(struct regulator_dev *rdev) 161{ 162 if (!rdev->constraints) 163 return 0; 164 165 if (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_STATUS) 166 return 1; 167 else 168 return 0; 169} 170 171/* Platform voltage constraint check */ 172static int regulator_check_voltage(struct regulator_dev *rdev, 173 int *min_uV, int *max_uV) 174{ 175 BUG_ON(*min_uV > *max_uV); 176 177 if (!rdev->constraints) { 178 rdev_err(rdev, "no constraints\n"); 179 return -ENODEV; 180 } 181 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 182 rdev_err(rdev, "operation not allowed\n"); 183 return -EPERM; 184 } 185 186 if (*max_uV > rdev->constraints->max_uV) 187 *max_uV = rdev->constraints->max_uV; 188 if (*min_uV < rdev->constraints->min_uV) 189 *min_uV = rdev->constraints->min_uV; 190 191 if (*min_uV > *max_uV) { 192 rdev_err(rdev, "unsupportable voltage range: %d-%duV\n", 193 *min_uV, *max_uV); 194 return -EINVAL; 195 } 196 197 return 0; 198} 199 200/* Make sure we select a voltage that suits the needs of all 201 * regulator consumers 202 */ 203static int regulator_check_consumers(struct regulator_dev *rdev, 204 int *min_uV, int *max_uV) 205{ 206 struct regulator *regulator; 207 208 list_for_each_entry(regulator, &rdev->consumer_list, list) { 209 /* 210 * Assume consumers that didn't say anything are OK 211 * with anything in the constraint range. 212 */ 213 if (!regulator->min_uV && !regulator->max_uV) 214 continue; 215 216 if (*max_uV > regulator->max_uV) 217 *max_uV = regulator->max_uV; 218 if (*min_uV < regulator->min_uV) 219 *min_uV = regulator->min_uV; 220 } 221 222 if (*min_uV > *max_uV) { 223 rdev_err(rdev, "Restricting voltage, %u-%uuV\n", 224 *min_uV, *max_uV); 225 return -EINVAL; 226 } 227 228 return 0; 229} 230 231/* current constraint check */ 232static int regulator_check_current_limit(struct regulator_dev *rdev, 233 int *min_uA, int *max_uA) 234{ 235 BUG_ON(*min_uA > *max_uA); 236 237 if (!rdev->constraints) { 238 rdev_err(rdev, "no constraints\n"); 239 return -ENODEV; 240 } 241 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) { 242 rdev_err(rdev, "operation not allowed\n"); 243 return -EPERM; 244 } 245 246 if (*max_uA > rdev->constraints->max_uA) 247 *max_uA = rdev->constraints->max_uA; 248 if (*min_uA < rdev->constraints->min_uA) 249 *min_uA = rdev->constraints->min_uA; 250 251 if (*min_uA > *max_uA) { 252 rdev_err(rdev, "unsupportable current range: %d-%duA\n", 253 *min_uA, *max_uA); 254 return -EINVAL; 255 } 256 257 return 0; 258} 259 260/* operating mode constraint check */ 261static int regulator_mode_constrain(struct regulator_dev *rdev, int *mode) 262{ 263 switch (*mode) { 264 case REGULATOR_MODE_FAST: 265 case REGULATOR_MODE_NORMAL: 266 case REGULATOR_MODE_IDLE: 267 case REGULATOR_MODE_STANDBY: 268 break; 269 default: 270 rdev_err(rdev, "invalid mode %x specified\n", *mode); 271 return -EINVAL; 272 } 273 274 if (!rdev->constraints) { 275 rdev_err(rdev, "no constraints\n"); 276 return -ENODEV; 277 } 278 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) { 279 rdev_err(rdev, "operation not allowed\n"); 280 return -EPERM; 281 } 282 283 /* The modes are bitmasks, the most power hungry modes having 284 * the lowest values. If the requested mode isn't supported 285 * try higher modes. */ 286 while (*mode) { 287 if (rdev->constraints->valid_modes_mask & *mode) 288 return 0; 289 *mode /= 2; 290 } 291 292 return -EINVAL; 293} 294 295/* dynamic regulator mode switching constraint check */ 296static int regulator_check_drms(struct regulator_dev *rdev) 297{ 298 if (!rdev->constraints) { 299 rdev_err(rdev, "no constraints\n"); 300 return -ENODEV; 301 } 302 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) { 303 rdev_err(rdev, "operation not allowed\n"); 304 return -EPERM; 305 } 306 return 0; 307} 308 309static ssize_t regulator_uV_show(struct device *dev, 310 struct device_attribute *attr, char *buf) 311{ 312 struct regulator_dev *rdev = dev_get_drvdata(dev); 313 ssize_t ret; 314 315 mutex_lock(&rdev->mutex); 316 ret = sprintf(buf, "%d\n", _regulator_get_voltage(rdev)); 317 mutex_unlock(&rdev->mutex); 318 319 return ret; 320} 321static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL); 322 323static ssize_t regulator_uA_show(struct device *dev, 324 struct device_attribute *attr, char *buf) 325{ 326 struct regulator_dev *rdev = dev_get_drvdata(dev); 327 328 return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev)); 329} 330static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); 331 332static ssize_t name_show(struct device *dev, struct device_attribute *attr, 333 char *buf) 334{ 335 struct regulator_dev *rdev = dev_get_drvdata(dev); 336 337 return sprintf(buf, "%s\n", rdev_get_name(rdev)); 338} 339static DEVICE_ATTR_RO(name); 340 341static ssize_t regulator_print_opmode(char *buf, int mode) 342{ 343 switch (mode) { 344 case REGULATOR_MODE_FAST: 345 return sprintf(buf, "fast\n"); 346 case REGULATOR_MODE_NORMAL: 347 return sprintf(buf, "normal\n"); 348 case REGULATOR_MODE_IDLE: 349 return sprintf(buf, "idle\n"); 350 case REGULATOR_MODE_STANDBY: 351 return sprintf(buf, "standby\n"); 352 } 353 return sprintf(buf, "unknown\n"); 354} 355 356static ssize_t regulator_opmode_show(struct device *dev, 357 struct device_attribute *attr, char *buf) 358{ 359 struct regulator_dev *rdev = dev_get_drvdata(dev); 360 361 return regulator_print_opmode(buf, _regulator_get_mode(rdev)); 362} 363static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL); 364 365static ssize_t regulator_print_state(char *buf, int state) 366{ 367 if (state > 0) 368 return sprintf(buf, "enabled\n"); 369 else if (state == 0) 370 return sprintf(buf, "disabled\n"); 371 else 372 return sprintf(buf, "unknown\n"); 373} 374 375static ssize_t regulator_state_show(struct device *dev, 376 struct device_attribute *attr, char *buf) 377{ 378 struct regulator_dev *rdev = dev_get_drvdata(dev); 379 ssize_t ret; 380 381 mutex_lock(&rdev->mutex); 382 ret = regulator_print_state(buf, _regulator_is_enabled(rdev)); 383 mutex_unlock(&rdev->mutex); 384 385 return ret; 386} 387static DEVICE_ATTR(state, 0444, regulator_state_show, NULL); 388 389static ssize_t regulator_status_show(struct device *dev, 390 struct device_attribute *attr, char *buf) 391{ 392 struct regulator_dev *rdev = dev_get_drvdata(dev); 393 int status; 394 char *label; 395 396 status = rdev->desc->ops->get_status(rdev); 397 if (status < 0) 398 return status; 399 400 switch (status) { 401 case REGULATOR_STATUS_OFF: 402 label = "off"; 403 break; 404 case REGULATOR_STATUS_ON: 405 label = "on"; 406 break; 407 case REGULATOR_STATUS_ERROR: 408 label = "error"; 409 break; 410 case REGULATOR_STATUS_FAST: 411 label = "fast"; 412 break; 413 case REGULATOR_STATUS_NORMAL: 414 label = "normal"; 415 break; 416 case REGULATOR_STATUS_IDLE: 417 label = "idle"; 418 break; 419 case REGULATOR_STATUS_STANDBY: 420 label = "standby"; 421 break; 422 case REGULATOR_STATUS_BYPASS: 423 label = "bypass"; 424 break; 425 case REGULATOR_STATUS_UNDEFINED: 426 label = "undefined"; 427 break; 428 default: 429 return -ERANGE; 430 } 431 432 return sprintf(buf, "%s\n", label); 433} 434static DEVICE_ATTR(status, 0444, regulator_status_show, NULL); 435 436static ssize_t regulator_min_uA_show(struct device *dev, 437 struct device_attribute *attr, char *buf) 438{ 439 struct regulator_dev *rdev = dev_get_drvdata(dev); 440 441 if (!rdev->constraints) 442 return sprintf(buf, "constraint not defined\n"); 443 444 return sprintf(buf, "%d\n", rdev->constraints->min_uA); 445} 446static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL); 447 448static ssize_t regulator_max_uA_show(struct device *dev, 449 struct device_attribute *attr, char *buf) 450{ 451 struct regulator_dev *rdev = dev_get_drvdata(dev); 452 453 if (!rdev->constraints) 454 return sprintf(buf, "constraint not defined\n"); 455 456 return sprintf(buf, "%d\n", rdev->constraints->max_uA); 457} 458static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL); 459 460static ssize_t regulator_min_uV_show(struct device *dev, 461 struct device_attribute *attr, char *buf) 462{ 463 struct regulator_dev *rdev = dev_get_drvdata(dev); 464 465 if (!rdev->constraints) 466 return sprintf(buf, "constraint not defined\n"); 467 468 return sprintf(buf, "%d\n", rdev->constraints->min_uV); 469} 470static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL); 471 472static ssize_t regulator_max_uV_show(struct device *dev, 473 struct device_attribute *attr, char *buf) 474{ 475 struct regulator_dev *rdev = dev_get_drvdata(dev); 476 477 if (!rdev->constraints) 478 return sprintf(buf, "constraint not defined\n"); 479 480 return sprintf(buf, "%d\n", rdev->constraints->max_uV); 481} 482static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL); 483 484static ssize_t regulator_total_uA_show(struct device *dev, 485 struct device_attribute *attr, char *buf) 486{ 487 struct regulator_dev *rdev = dev_get_drvdata(dev); 488 struct regulator *regulator; 489 int uA = 0; 490 491 mutex_lock(&rdev->mutex); 492 list_for_each_entry(regulator, &rdev->consumer_list, list) 493 uA += regulator->uA_load; 494 mutex_unlock(&rdev->mutex); 495 return sprintf(buf, "%d\n", uA); 496} 497static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); 498 499static ssize_t num_users_show(struct device *dev, struct device_attribute *attr, 500 char *buf) 501{ 502 struct regulator_dev *rdev = dev_get_drvdata(dev); 503 return sprintf(buf, "%d\n", rdev->use_count); 504} 505static DEVICE_ATTR_RO(num_users); 506 507static ssize_t type_show(struct device *dev, struct device_attribute *attr, 508 char *buf) 509{ 510 struct regulator_dev *rdev = dev_get_drvdata(dev); 511 512 switch (rdev->desc->type) { 513 case REGULATOR_VOLTAGE: 514 return sprintf(buf, "voltage\n"); 515 case REGULATOR_CURRENT: 516 return sprintf(buf, "current\n"); 517 } 518 return sprintf(buf, "unknown\n"); 519} 520static DEVICE_ATTR_RO(type); 521 522static ssize_t regulator_suspend_mem_uV_show(struct device *dev, 523 struct device_attribute *attr, char *buf) 524{ 525 struct regulator_dev *rdev = dev_get_drvdata(dev); 526 527 return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV); 528} 529static DEVICE_ATTR(suspend_mem_microvolts, 0444, 530 regulator_suspend_mem_uV_show, NULL); 531 532static ssize_t regulator_suspend_disk_uV_show(struct device *dev, 533 struct device_attribute *attr, char *buf) 534{ 535 struct regulator_dev *rdev = dev_get_drvdata(dev); 536 537 return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV); 538} 539static DEVICE_ATTR(suspend_disk_microvolts, 0444, 540 regulator_suspend_disk_uV_show, NULL); 541 542static ssize_t regulator_suspend_standby_uV_show(struct device *dev, 543 struct device_attribute *attr, char *buf) 544{ 545 struct regulator_dev *rdev = dev_get_drvdata(dev); 546 547 return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV); 548} 549static DEVICE_ATTR(suspend_standby_microvolts, 0444, 550 regulator_suspend_standby_uV_show, NULL); 551 552static ssize_t regulator_suspend_mem_mode_show(struct device *dev, 553 struct device_attribute *attr, char *buf) 554{ 555 struct regulator_dev *rdev = dev_get_drvdata(dev); 556 557 return regulator_print_opmode(buf, 558 rdev->constraints->state_mem.mode); 559} 560static DEVICE_ATTR(suspend_mem_mode, 0444, 561 regulator_suspend_mem_mode_show, NULL); 562 563static ssize_t regulator_suspend_disk_mode_show(struct device *dev, 564 struct device_attribute *attr, char *buf) 565{ 566 struct regulator_dev *rdev = dev_get_drvdata(dev); 567 568 return regulator_print_opmode(buf, 569 rdev->constraints->state_disk.mode); 570} 571static DEVICE_ATTR(suspend_disk_mode, 0444, 572 regulator_suspend_disk_mode_show, NULL); 573 574static ssize_t regulator_suspend_standby_mode_show(struct device *dev, 575 struct device_attribute *attr, char *buf) 576{ 577 struct regulator_dev *rdev = dev_get_drvdata(dev); 578 579 return regulator_print_opmode(buf, 580 rdev->constraints->state_standby.mode); 581} 582static DEVICE_ATTR(suspend_standby_mode, 0444, 583 regulator_suspend_standby_mode_show, NULL); 584 585static ssize_t regulator_suspend_mem_state_show(struct device *dev, 586 struct device_attribute *attr, char *buf) 587{ 588 struct regulator_dev *rdev = dev_get_drvdata(dev); 589 590 return regulator_print_state(buf, 591 rdev->constraints->state_mem.enabled); 592} 593static DEVICE_ATTR(suspend_mem_state, 0444, 594 regulator_suspend_mem_state_show, NULL); 595 596static ssize_t regulator_suspend_disk_state_show(struct device *dev, 597 struct device_attribute *attr, char *buf) 598{ 599 struct regulator_dev *rdev = dev_get_drvdata(dev); 600 601 return regulator_print_state(buf, 602 rdev->constraints->state_disk.enabled); 603} 604static DEVICE_ATTR(suspend_disk_state, 0444, 605 regulator_suspend_disk_state_show, NULL); 606 607static ssize_t regulator_suspend_standby_state_show(struct device *dev, 608 struct device_attribute *attr, char *buf) 609{ 610 struct regulator_dev *rdev = dev_get_drvdata(dev); 611 612 return regulator_print_state(buf, 613 rdev->constraints->state_standby.enabled); 614} 615static DEVICE_ATTR(suspend_standby_state, 0444, 616 regulator_suspend_standby_state_show, NULL); 617 618static ssize_t regulator_bypass_show(struct device *dev, 619 struct device_attribute *attr, char *buf) 620{ 621 struct regulator_dev *rdev = dev_get_drvdata(dev); 622 const char *report; 623 bool bypass; 624 int ret; 625 626 ret = rdev->desc->ops->get_bypass(rdev, &bypass); 627 628 if (ret != 0) 629 report = "unknown"; 630 else if (bypass) 631 report = "enabled"; 632 else 633 report = "disabled"; 634 635 return sprintf(buf, "%s\n", report); 636} 637static DEVICE_ATTR(bypass, 0444, 638 regulator_bypass_show, NULL); 639 640/* Calculate the new optimum regulator operating mode based on the new total 641 * consumer load. All locks held by caller */ 642static int drms_uA_update(struct regulator_dev *rdev) 643{ 644 struct regulator *sibling; 645 int current_uA = 0, output_uV, input_uV, err; 646 unsigned int mode; 647 648 /* 649 * first check to see if we can set modes at all, otherwise just 650 * tell the consumer everything is OK. 651 */ 652 err = regulator_check_drms(rdev); 653 if (err < 0) 654 return 0; 655 656 if (!rdev->desc->ops->get_optimum_mode && 657 !rdev->desc->ops->set_load) 658 return 0; 659 660 if (!rdev->desc->ops->set_mode && 661 !rdev->desc->ops->set_load) 662 return -EINVAL; 663 664 /* get output voltage */ 665 output_uV = _regulator_get_voltage(rdev); 666 if (output_uV <= 0) { 667 rdev_err(rdev, "invalid output voltage found\n"); 668 return -EINVAL; 669 } 670 671 /* get input voltage */ 672 input_uV = 0; 673 if (rdev->supply) 674 input_uV = regulator_get_voltage(rdev->supply); 675 if (input_uV <= 0) 676 input_uV = rdev->constraints->input_uV; 677 if (input_uV <= 0) { 678 rdev_err(rdev, "invalid input voltage found\n"); 679 return -EINVAL; 680 } 681 682 /* calc total requested load */ 683 list_for_each_entry(sibling, &rdev->consumer_list, list) 684 current_uA += sibling->uA_load; 685 686 if (rdev->desc->ops->set_load) { 687 /* set the optimum mode for our new total regulator load */ 688 err = rdev->desc->ops->set_load(rdev, current_uA); 689 if (err < 0) 690 rdev_err(rdev, "failed to set load %d\n", current_uA); 691 } else { 692 /* now get the optimum mode for our new total regulator load */ 693 mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV, 694 output_uV, current_uA); 695 696 /* check the new mode is allowed */ 697 err = regulator_mode_constrain(rdev, &mode); 698 if (err < 0) { 699 rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n", 700 current_uA, input_uV, output_uV); 701 return err; 702 } 703 704 err = rdev->desc->ops->set_mode(rdev, mode); 705 if (err < 0) 706 rdev_err(rdev, "failed to set optimum mode %x\n", mode); 707 } 708 709 return err; 710} 711 712static int suspend_set_state(struct regulator_dev *rdev, 713 struct regulator_state *rstate) 714{ 715 int ret = 0; 716 717 /* If we have no suspend mode configration don't set anything; 718 * only warn if the driver implements set_suspend_voltage or 719 * set_suspend_mode callback. 720 */ 721 if (!rstate->enabled && !rstate->disabled) { 722 if (rdev->desc->ops->set_suspend_voltage || 723 rdev->desc->ops->set_suspend_mode) 724 rdev_warn(rdev, "No configuration\n"); 725 return 0; 726 } 727 728 if (rstate->enabled && rstate->disabled) { 729 rdev_err(rdev, "invalid configuration\n"); 730 return -EINVAL; 731 } 732 733 if (rstate->enabled && rdev->desc->ops->set_suspend_enable) 734 ret = rdev->desc->ops->set_suspend_enable(rdev); 735 else if (rstate->disabled && rdev->desc->ops->set_suspend_disable) 736 ret = rdev->desc->ops->set_suspend_disable(rdev); 737 else /* OK if set_suspend_enable or set_suspend_disable is NULL */ 738 ret = 0; 739 740 if (ret < 0) { 741 rdev_err(rdev, "failed to enabled/disable\n"); 742 return ret; 743 } 744 745 if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) { 746 ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV); 747 if (ret < 0) { 748 rdev_err(rdev, "failed to set voltage\n"); 749 return ret; 750 } 751 } 752 753 if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) { 754 ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode); 755 if (ret < 0) { 756 rdev_err(rdev, "failed to set mode\n"); 757 return ret; 758 } 759 } 760 return ret; 761} 762 763/* locks held by caller */ 764static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state) 765{ 766 if (!rdev->constraints) 767 return -EINVAL; 768 769 switch (state) { 770 case PM_SUSPEND_STANDBY: 771 return suspend_set_state(rdev, 772 &rdev->constraints->state_standby); 773 case PM_SUSPEND_MEM: 774 return suspend_set_state(rdev, 775 &rdev->constraints->state_mem); 776 case PM_SUSPEND_MAX: 777 return suspend_set_state(rdev, 778 &rdev->constraints->state_disk); 779 default: 780 return -EINVAL; 781 } 782} 783 784static void print_constraints(struct regulator_dev *rdev) 785{ 786 struct regulation_constraints *constraints = rdev->constraints; 787 char buf[160] = ""; 788 int count = 0; 789 int ret; 790 791 if (constraints->min_uV && constraints->max_uV) { 792 if (constraints->min_uV == constraints->max_uV) 793 count += sprintf(buf + count, "%d mV ", 794 constraints->min_uV / 1000); 795 else 796 count += sprintf(buf + count, "%d <--> %d mV ", 797 constraints->min_uV / 1000, 798 constraints->max_uV / 1000); 799 } 800 801 if (!constraints->min_uV || 802 constraints->min_uV != constraints->max_uV) { 803 ret = _regulator_get_voltage(rdev); 804 if (ret > 0) 805 count += sprintf(buf + count, "at %d mV ", ret / 1000); 806 } 807 808 if (constraints->uV_offset) 809 count += sprintf(buf, "%dmV offset ", 810 constraints->uV_offset / 1000); 811 812 if (constraints->min_uA && constraints->max_uA) { 813 if (constraints->min_uA == constraints->max_uA) 814 count += sprintf(buf + count, "%d mA ", 815 constraints->min_uA / 1000); 816 else 817 count += sprintf(buf + count, "%d <--> %d mA ", 818 constraints->min_uA / 1000, 819 constraints->max_uA / 1000); 820 } 821 822 if (!constraints->min_uA || 823 constraints->min_uA != constraints->max_uA) { 824 ret = _regulator_get_current_limit(rdev); 825 if (ret > 0) 826 count += sprintf(buf + count, "at %d mA ", ret / 1000); 827 } 828 829 if (constraints->valid_modes_mask & REGULATOR_MODE_FAST) 830 count += sprintf(buf + count, "fast "); 831 if (constraints->valid_modes_mask & REGULATOR_MODE_NORMAL) 832 count += sprintf(buf + count, "normal "); 833 if (constraints->valid_modes_mask & REGULATOR_MODE_IDLE) 834 count += sprintf(buf + count, "idle "); 835 if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY) 836 count += sprintf(buf + count, "standby"); 837 838 if (!count) 839 sprintf(buf, "no parameters"); 840 841 rdev_dbg(rdev, "%s\n", buf); 842 843 if ((constraints->min_uV != constraints->max_uV) && 844 !(constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) 845 rdev_warn(rdev, 846 "Voltage range but no REGULATOR_CHANGE_VOLTAGE\n"); 847} 848 849static int machine_constraints_voltage(struct regulator_dev *rdev, 850 struct regulation_constraints *constraints) 851{ 852 const struct regulator_ops *ops = rdev->desc->ops; 853 int ret; 854 855 /* do we need to apply the constraint voltage */ 856 if (rdev->constraints->apply_uV && 857 rdev->constraints->min_uV == rdev->constraints->max_uV) { 858 int current_uV = _regulator_get_voltage(rdev); 859 if (current_uV < 0) { 860 rdev_err(rdev, 861 "failed to get the current voltage(%d)\n", 862 current_uV); 863 return current_uV; 864 } 865 if (current_uV < rdev->constraints->min_uV || 866 current_uV > rdev->constraints->max_uV) { 867 ret = _regulator_do_set_voltage( 868 rdev, rdev->constraints->min_uV, 869 rdev->constraints->max_uV); 870 if (ret < 0) { 871 rdev_err(rdev, 872 "failed to apply %duV constraint(%d)\n", 873 rdev->constraints->min_uV, ret); 874 return ret; 875 } 876 } 877 } 878 879 /* constrain machine-level voltage specs to fit 880 * the actual range supported by this regulator. 881 */ 882 if (ops->list_voltage && rdev->desc->n_voltages) { 883 int count = rdev->desc->n_voltages; 884 int i; 885 int min_uV = INT_MAX; 886 int max_uV = INT_MIN; 887 int cmin = constraints->min_uV; 888 int cmax = constraints->max_uV; 889 890 /* it's safe to autoconfigure fixed-voltage supplies 891 and the constraints are used by list_voltage. */ 892 if (count == 1 && !cmin) { 893 cmin = 1; 894 cmax = INT_MAX; 895 constraints->min_uV = cmin; 896 constraints->max_uV = cmax; 897 } 898 899 /* voltage constraints are optional */ 900 if ((cmin == 0) && (cmax == 0)) 901 return 0; 902 903 /* else require explicit machine-level constraints */ 904 if (cmin <= 0 || cmax <= 0 || cmax < cmin) { 905 rdev_err(rdev, "invalid voltage constraints\n"); 906 return -EINVAL; 907 } 908 909 /* initial: [cmin..cmax] valid, [min_uV..max_uV] not */ 910 for (i = 0; i < count; i++) { 911 int value; 912 913 value = ops->list_voltage(rdev, i); 914 if (value <= 0) 915 continue; 916 917 /* maybe adjust [min_uV..max_uV] */ 918 if (value >= cmin && value < min_uV) 919 min_uV = value; 920 if (value <= cmax && value > max_uV) 921 max_uV = value; 922 } 923 924 /* final: [min_uV..max_uV] valid iff constraints valid */ 925 if (max_uV < min_uV) { 926 rdev_err(rdev, 927 "unsupportable voltage constraints %u-%uuV\n", 928 min_uV, max_uV); 929 return -EINVAL; 930 } 931 932 /* use regulator's subset of machine constraints */ 933 if (constraints->min_uV < min_uV) { 934 rdev_dbg(rdev, "override min_uV, %d -> %d\n", 935 constraints->min_uV, min_uV); 936 constraints->min_uV = min_uV; 937 } 938 if (constraints->max_uV > max_uV) { 939 rdev_dbg(rdev, "override max_uV, %d -> %d\n", 940 constraints->max_uV, max_uV); 941 constraints->max_uV = max_uV; 942 } 943 } 944 945 return 0; 946} 947 948static int machine_constraints_current(struct regulator_dev *rdev, 949 struct regulation_constraints *constraints) 950{ 951 const struct regulator_ops *ops = rdev->desc->ops; 952 int ret; 953 954 if (!constraints->min_uA && !constraints->max_uA) 955 return 0; 956 957 if (constraints->min_uA > constraints->max_uA) { 958 rdev_err(rdev, "Invalid current constraints\n"); 959 return -EINVAL; 960 } 961 962 if (!ops->set_current_limit || !ops->get_current_limit) { 963 rdev_warn(rdev, "Operation of current configuration missing\n"); 964 return 0; 965 } 966 967 /* Set regulator current in constraints range */ 968 ret = ops->set_current_limit(rdev, constraints->min_uA, 969 constraints->max_uA); 970 if (ret < 0) { 971 rdev_err(rdev, "Failed to set current constraint, %d\n", ret); 972 return ret; 973 } 974 975 return 0; 976} 977 978static int _regulator_do_enable(struct regulator_dev *rdev); 979 980/** 981 * set_machine_constraints - sets regulator constraints 982 * @rdev: regulator source 983 * @constraints: constraints to apply 984 * 985 * Allows platform initialisation code to define and constrain 986 * regulator circuits e.g. valid voltage/current ranges, etc. NOTE: 987 * Constraints *must* be set by platform code in order for some 988 * regulator operations to proceed i.e. set_voltage, set_current_limit, 989 * set_mode. 990 */ 991static int set_machine_constraints(struct regulator_dev *rdev, 992 const struct regulation_constraints *constraints) 993{ 994 int ret = 0; 995 const struct regulator_ops *ops = rdev->desc->ops; 996 997 if (constraints) 998 rdev->constraints = kmemdup(constraints, sizeof(*constraints), 999 GFP_KERNEL); 1000 else 1001 rdev->constraints = kzalloc(sizeof(*constraints), 1002 GFP_KERNEL); 1003 if (!rdev->constraints) 1004 return -ENOMEM; 1005 1006 ret = machine_constraints_voltage(rdev, rdev->constraints); 1007 if (ret != 0) 1008 goto out; 1009 1010 ret = machine_constraints_current(rdev, rdev->constraints); 1011 if (ret != 0) 1012 goto out; 1013 1014 /* do we need to setup our suspend state */ 1015 if (rdev->constraints->initial_state) { 1016 ret = suspend_prepare(rdev, rdev->constraints->initial_state); 1017 if (ret < 0) { 1018 rdev_err(rdev, "failed to set suspend state\n"); 1019 goto out; 1020 } 1021 } 1022 1023 if (rdev->constraints->initial_mode) { 1024 if (!ops->set_mode) { 1025 rdev_err(rdev, "no set_mode operation\n"); 1026 ret = -EINVAL; 1027 goto out; 1028 } 1029 1030 ret = ops->set_mode(rdev, rdev->constraints->initial_mode); 1031 if (ret < 0) { 1032 rdev_err(rdev, "failed to set initial mode: %d\n", ret); 1033 goto out; 1034 } 1035 } 1036 1037 /* If the constraints say the regulator should be on at this point 1038 * and we have control then make sure it is enabled. 1039 */ 1040 if (rdev->constraints->always_on || rdev->constraints->boot_on) { 1041 ret = _regulator_do_enable(rdev); 1042 if (ret < 0 && ret != -EINVAL) { 1043 rdev_err(rdev, "failed to enable\n"); 1044 goto out; 1045 } 1046 } 1047 1048 if ((rdev->constraints->ramp_delay || rdev->constraints->ramp_disable) 1049 && ops->set_ramp_delay) { 1050 ret = ops->set_ramp_delay(rdev, rdev->constraints->ramp_delay); 1051 if (ret < 0) { 1052 rdev_err(rdev, "failed to set ramp_delay\n"); 1053 goto out; 1054 } 1055 } 1056 1057 print_constraints(rdev); 1058 return 0; 1059out: 1060 kfree(rdev->constraints); 1061 rdev->constraints = NULL; 1062 return ret; 1063} 1064 1065/** 1066 * set_supply - set regulator supply regulator 1067 * @rdev: regulator name 1068 * @supply_rdev: supply regulator name 1069 * 1070 * Called by platform initialisation code to set the supply regulator for this 1071 * regulator. This ensures that a regulators supply will also be enabled by the 1072 * core if it's child is enabled. 1073 */ 1074static int set_supply(struct regulator_dev *rdev, 1075 struct regulator_dev *supply_rdev) 1076{ 1077 int err; 1078 1079 rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev)); 1080 1081 rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY"); 1082 if (rdev->supply == NULL) { 1083 err = -ENOMEM; 1084 return err; 1085 } 1086 supply_rdev->open_count++; 1087 1088 return 0; 1089} 1090 1091/** 1092 * set_consumer_device_supply - Bind a regulator to a symbolic supply 1093 * @rdev: regulator source 1094 * @consumer_dev_name: dev_name() string for device supply applies to 1095 * @supply: symbolic name for supply 1096 * 1097 * Allows platform initialisation code to map physical regulator 1098 * sources to symbolic names for supplies for use by devices. Devices 1099 * should use these symbolic names to request regulators, avoiding the 1100 * need to provide board-specific regulator names as platform data. 1101 */ 1102static int set_consumer_device_supply(struct regulator_dev *rdev, 1103 const char *consumer_dev_name, 1104 const char *supply) 1105{ 1106 struct regulator_map *node; 1107 int has_dev; 1108 1109 if (supply == NULL) 1110 return -EINVAL; 1111 1112 if (consumer_dev_name != NULL) 1113 has_dev = 1; 1114 else 1115 has_dev = 0; 1116 1117 list_for_each_entry(node, ®ulator_map_list, list) { 1118 if (node->dev_name && consumer_dev_name) { 1119 if (strcmp(node->dev_name, consumer_dev_name) != 0) 1120 continue; 1121 } else if (node->dev_name || consumer_dev_name) { 1122 continue; 1123 } 1124 1125 if (strcmp(node->supply, supply) != 0) 1126 continue; 1127 1128 pr_debug("%s: %s/%s is '%s' supply; fail %s/%s\n", 1129 consumer_dev_name, 1130 dev_name(&node->regulator->dev), 1131 node->regulator->desc->name, 1132 supply, 1133 dev_name(&rdev->dev), rdev_get_name(rdev)); 1134 return -EBUSY; 1135 } 1136 1137 node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL); 1138 if (node == NULL) 1139 return -ENOMEM; 1140 1141 node->regulator = rdev; 1142 node->supply = supply; 1143 1144 if (has_dev) { 1145 node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL); 1146 if (node->dev_name == NULL) { 1147 kfree(node); 1148 return -ENOMEM; 1149 } 1150 } 1151 1152 list_add(&node->list, ®ulator_map_list); 1153 return 0; 1154} 1155 1156static void unset_regulator_supplies(struct regulator_dev *rdev) 1157{ 1158 struct regulator_map *node, *n; 1159 1160 list_for_each_entry_safe(node, n, ®ulator_map_list, list) { 1161 if (rdev == node->regulator) { 1162 list_del(&node->list); 1163 kfree(node->dev_name); 1164 kfree(node); 1165 } 1166 } 1167} 1168 1169#define REG_STR_SIZE 64 1170 1171static struct regulator *create_regulator(struct regulator_dev *rdev, 1172 struct device *dev, 1173 const char *supply_name) 1174{ 1175 struct regulator *regulator; 1176 char buf[REG_STR_SIZE]; 1177 int err, size; 1178 1179 regulator = kzalloc(sizeof(*regulator), GFP_KERNEL); 1180 if (regulator == NULL) 1181 return NULL; 1182 1183 mutex_lock(&rdev->mutex); 1184 regulator->rdev = rdev; 1185 list_add(®ulator->list, &rdev->consumer_list); 1186 1187 if (dev) { 1188 regulator->dev = dev; 1189 1190 /* Add a link to the device sysfs entry */ 1191 size = scnprintf(buf, REG_STR_SIZE, "%s-%s", 1192 dev->kobj.name, supply_name); 1193 if (size >= REG_STR_SIZE) 1194 goto overflow_err; 1195 1196 regulator->supply_name = kstrdup(buf, GFP_KERNEL); 1197 if (regulator->supply_name == NULL) 1198 goto overflow_err; 1199 1200 err = sysfs_create_link(&rdev->dev.kobj, &dev->kobj, 1201 buf); 1202 if (err) { 1203 rdev_warn(rdev, "could not add device link %s err %d\n", 1204 dev->kobj.name, err); 1205 /* non-fatal */ 1206 } 1207 } else { 1208 regulator->supply_name = kstrdup(supply_name, GFP_KERNEL); 1209 if (regulator->supply_name == NULL) 1210 goto overflow_err; 1211 } 1212 1213 regulator->debugfs = debugfs_create_dir(regulator->supply_name, 1214 rdev->debugfs); 1215 if (!regulator->debugfs) { 1216 rdev_warn(rdev, "Failed to create debugfs directory\n"); 1217 } else { 1218 debugfs_create_u32("uA_load", 0444, regulator->debugfs, 1219 ®ulator->uA_load); 1220 debugfs_create_u32("min_uV", 0444, regulator->debugfs, 1221 ®ulator->min_uV); 1222 debugfs_create_u32("max_uV", 0444, regulator->debugfs, 1223 ®ulator->max_uV); 1224 } 1225 1226 /* 1227 * Check now if the regulator is an always on regulator - if 1228 * it is then we don't need to do nearly so much work for 1229 * enable/disable calls. 1230 */ 1231 if (!_regulator_can_change_status(rdev) && 1232 _regulator_is_enabled(rdev)) 1233 regulator->always_on = true; 1234 1235 mutex_unlock(&rdev->mutex); 1236 return regulator; 1237overflow_err: 1238 list_del(®ulator->list); 1239 kfree(regulator); 1240 mutex_unlock(&rdev->mutex); 1241 return NULL; 1242} 1243 1244static int _regulator_get_enable_time(struct regulator_dev *rdev) 1245{ 1246 if (rdev->constraints && rdev->constraints->enable_time) 1247 return rdev->constraints->enable_time; 1248 if (!rdev->desc->ops->enable_time) 1249 return rdev->desc->enable_time; 1250 return rdev->desc->ops->enable_time(rdev); 1251} 1252 1253static struct regulator_supply_alias *regulator_find_supply_alias( 1254 struct device *dev, const char *supply) 1255{ 1256 struct regulator_supply_alias *map; 1257 1258 list_for_each_entry(map, ®ulator_supply_alias_list, list) 1259 if (map->src_dev == dev && strcmp(map->src_supply, supply) == 0) 1260 return map; 1261 1262 return NULL; 1263} 1264 1265static void regulator_supply_alias(struct device **dev, const char **supply) 1266{ 1267 struct regulator_supply_alias *map; 1268 1269 map = regulator_find_supply_alias(*dev, *supply); 1270 if (map) { 1271 dev_dbg(*dev, "Mapping supply %s to %s,%s\n", 1272 *supply, map->alias_supply, 1273 dev_name(map->alias_dev)); 1274 *dev = map->alias_dev; 1275 *supply = map->alias_supply; 1276 } 1277} 1278 1279static struct regulator_dev *regulator_dev_lookup(struct device *dev, 1280 const char *supply, 1281 int *ret) 1282{ 1283 struct regulator_dev *r; 1284 struct device_node *node; 1285 struct regulator_map *map; 1286 const char *devname = NULL; 1287 1288 regulator_supply_alias(&dev, &supply); 1289 1290 /* first do a dt based lookup */ 1291 if (dev && dev->of_node) { 1292 node = of_get_regulator(dev, supply); 1293 if (node) { 1294 list_for_each_entry(r, ®ulator_list, list) 1295 if (r->dev.parent && 1296 node == r->dev.of_node) 1297 return r; 1298 *ret = -EPROBE_DEFER; 1299 return NULL; 1300 } else { 1301 /* 1302 * If we couldn't even get the node then it's 1303 * not just that the device didn't register 1304 * yet, there's no node and we'll never 1305 * succeed. 1306 */ 1307 *ret = -ENODEV; 1308 } 1309 } 1310 1311 /* if not found, try doing it non-dt way */ 1312 if (dev) 1313 devname = dev_name(dev); 1314 1315 list_for_each_entry(r, ®ulator_list, list) 1316 if (strcmp(rdev_get_name(r), supply) == 0) 1317 return r; 1318 1319 list_for_each_entry(map, ®ulator_map_list, list) { 1320 /* If the mapping has a device set up it must match */ 1321 if (map->dev_name && 1322 (!devname || strcmp(map->dev_name, devname))) 1323 continue; 1324 1325 if (strcmp(map->supply, supply) == 0) 1326 return map->regulator; 1327 } 1328 1329 1330 return NULL; 1331} 1332 1333static int regulator_resolve_supply(struct regulator_dev *rdev) 1334{ 1335 struct regulator_dev *r; 1336 struct device *dev = rdev->dev.parent; 1337 int ret; 1338 1339 /* No supply to resovle? */ 1340 if (!rdev->supply_name) 1341 return 0; 1342 1343 /* Supply already resolved? */ 1344 if (rdev->supply) 1345 return 0; 1346 1347 r = regulator_dev_lookup(dev, rdev->supply_name, &ret); 1348 if (ret == -ENODEV) { 1349 /* 1350 * No supply was specified for this regulator and 1351 * there will never be one. 1352 */ 1353 return 0; 1354 } 1355 1356 if (!r) { 1357 dev_err(dev, "Failed to resolve %s-supply for %s\n", 1358 rdev->supply_name, rdev->desc->name); 1359 return -EPROBE_DEFER; 1360 } 1361 1362 /* Recursively resolve the supply of the supply */ 1363 ret = regulator_resolve_supply(r); 1364 if (ret < 0) 1365 return ret; 1366 1367 ret = set_supply(rdev, r); 1368 if (ret < 0) 1369 return ret; 1370 1371 /* Cascade always-on state to supply */ 1372 if (_regulator_is_enabled(rdev)) { 1373 ret = regulator_enable(rdev->supply); 1374 if (ret < 0) 1375 return ret; 1376 } 1377 1378 return 0; 1379} 1380 1381/* Internal regulator request function */ 1382static struct regulator *_regulator_get(struct device *dev, const char *id, 1383 bool exclusive, bool allow_dummy) 1384{ 1385 struct regulator_dev *rdev; 1386 struct regulator *regulator = ERR_PTR(-EPROBE_DEFER); 1387 const char *devname = NULL; 1388 int ret; 1389 1390 if (id == NULL) { 1391 pr_err("get() with no identifier\n"); 1392 return ERR_PTR(-EINVAL); 1393 } 1394 1395 if (dev) 1396 devname = dev_name(dev); 1397 1398 if (have_full_constraints()) 1399 ret = -ENODEV; 1400 else 1401 ret = -EPROBE_DEFER; 1402 1403 mutex_lock(®ulator_list_mutex); 1404 1405 rdev = regulator_dev_lookup(dev, id, &ret); 1406 if (rdev) 1407 goto found; 1408 1409 regulator = ERR_PTR(ret); 1410 1411 /* 1412 * If we have return value from dev_lookup fail, we do not expect to 1413 * succeed, so, quit with appropriate error value 1414 */ 1415 if (ret && ret != -ENODEV) 1416 goto out; 1417 1418 if (!devname) 1419 devname = "deviceless"; 1420 1421 /* 1422 * Assume that a regulator is physically present and enabled 1423 * even if it isn't hooked up and just provide a dummy. 1424 */ 1425 if (have_full_constraints() && allow_dummy) { 1426 pr_warn("%s supply %s not found, using dummy regulator\n", 1427 devname, id); 1428 1429 rdev = dummy_regulator_rdev; 1430 goto found; 1431 /* Don't log an error when called from regulator_get_optional() */ 1432 } else if (!have_full_constraints() || exclusive) { 1433 dev_warn(dev, "dummy supplies not allowed\n"); 1434 } 1435 1436 mutex_unlock(®ulator_list_mutex); 1437 return regulator; 1438 1439found: 1440 if (rdev->exclusive) { 1441 regulator = ERR_PTR(-EPERM); 1442 goto out; 1443 } 1444 1445 if (exclusive && rdev->open_count) { 1446 regulator = ERR_PTR(-EBUSY); 1447 goto out; 1448 } 1449 1450 ret = regulator_resolve_supply(rdev); 1451 if (ret < 0) { 1452 regulator = ERR_PTR(ret); 1453 goto out; 1454 } 1455 1456 if (!try_module_get(rdev->owner)) 1457 goto out; 1458 1459 regulator = create_regulator(rdev, dev, id); 1460 if (regulator == NULL) { 1461 regulator = ERR_PTR(-ENOMEM); 1462 module_put(rdev->owner); 1463 goto out; 1464 } 1465 1466 rdev->open_count++; 1467 if (exclusive) { 1468 rdev->exclusive = 1; 1469 1470 ret = _regulator_is_enabled(rdev); 1471 if (ret > 0) 1472 rdev->use_count = 1; 1473 else 1474 rdev->use_count = 0; 1475 } 1476 1477out: 1478 mutex_unlock(®ulator_list_mutex); 1479 1480 return regulator; 1481} 1482 1483/** 1484 * regulator_get - lookup and obtain a reference to a regulator. 1485 * @dev: device for regulator "consumer" 1486 * @id: Supply name or regulator ID. 1487 * 1488 * Returns a struct regulator corresponding to the regulator producer, 1489 * or IS_ERR() condition containing errno. 1490 * 1491 * Use of supply names configured via regulator_set_device_supply() is 1492 * strongly encouraged. It is recommended that the supply name used 1493 * should match the name used for the supply and/or the relevant 1494 * device pins in the datasheet. 1495 */ 1496struct regulator *regulator_get(struct device *dev, const char *id) 1497{ 1498 return _regulator_get(dev, id, false, true); 1499} 1500EXPORT_SYMBOL_GPL(regulator_get); 1501 1502/** 1503 * regulator_get_exclusive - obtain exclusive access to a regulator. 1504 * @dev: device for regulator "consumer" 1505 * @id: Supply name or regulator ID. 1506 * 1507 * Returns a struct regulator corresponding to the regulator producer, 1508 * or IS_ERR() condition containing errno. Other consumers will be 1509 * unable to obtain this regulator while this reference is held and the 1510 * use count for the regulator will be initialised to reflect the current 1511 * state of the regulator. 1512 * 1513 * This is intended for use by consumers which cannot tolerate shared 1514 * use of the regulator such as those which need to force the 1515 * regulator off for correct operation of the hardware they are 1516 * controlling. 1517 * 1518 * Use of supply names configured via regulator_set_device_supply() is 1519 * strongly encouraged. It is recommended that the supply name used 1520 * should match the name used for the supply and/or the relevant 1521 * device pins in the datasheet. 1522 */ 1523struct regulator *regulator_get_exclusive(struct device *dev, const char *id) 1524{ 1525 return _regulator_get(dev, id, true, false); 1526} 1527EXPORT_SYMBOL_GPL(regulator_get_exclusive); 1528 1529/** 1530 * regulator_get_optional - obtain optional access to a regulator. 1531 * @dev: device for regulator "consumer" 1532 * @id: Supply name or regulator ID. 1533 * 1534 * Returns a struct regulator corresponding to the regulator producer, 1535 * or IS_ERR() condition containing errno. 1536 * 1537 * This is intended for use by consumers for devices which can have 1538 * some supplies unconnected in normal use, such as some MMC devices. 1539 * It can allow the regulator core to provide stub supplies for other 1540 * supplies requested using normal regulator_get() calls without 1541 * disrupting the operation of drivers that can handle absent 1542 * supplies. 1543 * 1544 * Use of supply names configured via regulator_set_device_supply() is 1545 * strongly encouraged. It is recommended that the supply name used 1546 * should match the name used for the supply and/or the relevant 1547 * device pins in the datasheet. 1548 */ 1549struct regulator *regulator_get_optional(struct device *dev, const char *id) 1550{ 1551 return _regulator_get(dev, id, false, false); 1552} 1553EXPORT_SYMBOL_GPL(regulator_get_optional); 1554 1555/* regulator_list_mutex lock held by regulator_put() */ 1556static void _regulator_put(struct regulator *regulator) 1557{ 1558 struct regulator_dev *rdev; 1559 1560 if (regulator == NULL || IS_ERR(regulator)) 1561 return; 1562 1563 rdev = regulator->rdev; 1564 1565 debugfs_remove_recursive(regulator->debugfs); 1566 1567 /* remove any sysfs entries */ 1568 if (regulator->dev) 1569 sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); 1570 mutex_lock(&rdev->mutex); 1571 kfree(regulator->supply_name); 1572 list_del(®ulator->list); 1573 kfree(regulator); 1574 1575 rdev->open_count--; 1576 rdev->exclusive = 0; 1577 mutex_unlock(&rdev->mutex); 1578 1579 module_put(rdev->owner); 1580} 1581 1582/** 1583 * regulator_put - "free" the regulator source 1584 * @regulator: regulator source 1585 * 1586 * Note: drivers must ensure that all regulator_enable calls made on this 1587 * regulator source are balanced by regulator_disable calls prior to calling 1588 * this function. 1589 */ 1590void regulator_put(struct regulator *regulator) 1591{ 1592 mutex_lock(®ulator_list_mutex); 1593 _regulator_put(regulator); 1594 mutex_unlock(®ulator_list_mutex); 1595} 1596EXPORT_SYMBOL_GPL(regulator_put); 1597 1598/** 1599 * regulator_register_supply_alias - Provide device alias for supply lookup 1600 * 1601 * @dev: device that will be given as the regulator "consumer" 1602 * @id: Supply name or regulator ID 1603 * @alias_dev: device that should be used to lookup the supply 1604 * @alias_id: Supply name or regulator ID that should be used to lookup the 1605 * supply 1606 * 1607 * All lookups for id on dev will instead be conducted for alias_id on 1608 * alias_dev. 1609 */ 1610int regulator_register_supply_alias(struct device *dev, const char *id, 1611 struct device *alias_dev, 1612 const char *alias_id) 1613{ 1614 struct regulator_supply_alias *map; 1615 1616 map = regulator_find_supply_alias(dev, id); 1617 if (map) 1618 return -EEXIST; 1619 1620 map = kzalloc(sizeof(struct regulator_supply_alias), GFP_KERNEL); 1621 if (!map) 1622 return -ENOMEM; 1623 1624 map->src_dev = dev; 1625 map->src_supply = id; 1626 map->alias_dev = alias_dev; 1627 map->alias_supply = alias_id; 1628 1629 list_add(&map->list, ®ulator_supply_alias_list); 1630 1631 pr_info("Adding alias for supply %s,%s -> %s,%s\n", 1632 id, dev_name(dev), alias_id, dev_name(alias_dev)); 1633 1634 return 0; 1635} 1636EXPORT_SYMBOL_GPL(regulator_register_supply_alias); 1637 1638/** 1639 * regulator_unregister_supply_alias - Remove device alias 1640 * 1641 * @dev: device that will be given as the regulator "consumer" 1642 * @id: Supply name or regulator ID 1643 * 1644 * Remove a lookup alias if one exists for id on dev. 1645 */ 1646void regulator_unregister_supply_alias(struct device *dev, const char *id) 1647{ 1648 struct regulator_supply_alias *map; 1649 1650 map = regulator_find_supply_alias(dev, id); 1651 if (map) { 1652 list_del(&map->list); 1653 kfree(map); 1654 } 1655} 1656EXPORT_SYMBOL_GPL(regulator_unregister_supply_alias); 1657 1658/** 1659 * regulator_bulk_register_supply_alias - register multiple aliases 1660 * 1661 * @dev: device that will be given as the regulator "consumer" 1662 * @id: List of supply names or regulator IDs 1663 * @alias_dev: device that should be used to lookup the supply 1664 * @alias_id: List of supply names or regulator IDs that should be used to 1665 * lookup the supply 1666 * @num_id: Number of aliases to register 1667 * 1668 * @return 0 on success, an errno on failure. 1669 * 1670 * This helper function allows drivers to register several supply 1671 * aliases in one operation. If any of the aliases cannot be 1672 * registered any aliases that were registered will be removed 1673 * before returning to the caller. 1674 */ 1675int regulator_bulk_register_supply_alias(struct device *dev, 1676 const char *const *id, 1677 struct device *alias_dev, 1678 const char *const *alias_id, 1679 int num_id) 1680{ 1681 int i; 1682 int ret; 1683 1684 for (i = 0; i < num_id; ++i) { 1685 ret = regulator_register_supply_alias(dev, id[i], alias_dev, 1686 alias_id[i]); 1687 if (ret < 0) 1688 goto err; 1689 } 1690 1691 return 0; 1692 1693err: 1694 dev_err(dev, 1695 "Failed to create supply alias %s,%s -> %s,%s\n", 1696 id[i], dev_name(dev), alias_id[i], dev_name(alias_dev)); 1697 1698 while (--i >= 0) 1699 regulator_unregister_supply_alias(dev, id[i]); 1700 1701 return ret; 1702} 1703EXPORT_SYMBOL_GPL(regulator_bulk_register_supply_alias); 1704 1705/** 1706 * regulator_bulk_unregister_supply_alias - unregister multiple aliases 1707 * 1708 * @dev: device that will be given as the regulator "consumer" 1709 * @id: List of supply names or regulator IDs 1710 * @num_id: Number of aliases to unregister 1711 * 1712 * This helper function allows drivers to unregister several supply 1713 * aliases in one operation. 1714 */ 1715void regulator_bulk_unregister_supply_alias(struct device *dev, 1716 const char *const *id, 1717 int num_id) 1718{ 1719 int i; 1720 1721 for (i = 0; i < num_id; ++i) 1722 regulator_unregister_supply_alias(dev, id[i]); 1723} 1724EXPORT_SYMBOL_GPL(regulator_bulk_unregister_supply_alias); 1725 1726 1727/* Manage enable GPIO list. Same GPIO pin can be shared among regulators */ 1728static int regulator_ena_gpio_request(struct regulator_dev *rdev, 1729 const struct regulator_config *config) 1730{ 1731 struct regulator_enable_gpio *pin; 1732 struct gpio_desc *gpiod; 1733 int ret; 1734 1735 gpiod = gpio_to_desc(config->ena_gpio); 1736 1737 list_for_each_entry(pin, ®ulator_ena_gpio_list, list) { 1738 if (pin->gpiod == gpiod) { 1739 rdev_dbg(rdev, "GPIO %d is already used\n", 1740 config->ena_gpio); 1741 goto update_ena_gpio_to_rdev; 1742 } 1743 } 1744 1745 ret = gpio_request_one(config->ena_gpio, 1746 GPIOF_DIR_OUT | config->ena_gpio_flags, 1747 rdev_get_name(rdev)); 1748 if (ret) 1749 return ret; 1750 1751 pin = kzalloc(sizeof(struct regulator_enable_gpio), GFP_KERNEL); 1752 if (pin == NULL) { 1753 gpio_free(config->ena_gpio); 1754 return -ENOMEM; 1755 } 1756 1757 pin->gpiod = gpiod; 1758 pin->ena_gpio_invert = config->ena_gpio_invert; 1759 list_add(&pin->list, ®ulator_ena_gpio_list); 1760 1761update_ena_gpio_to_rdev: 1762 pin->request_count++; 1763 rdev->ena_pin = pin; 1764 return 0; 1765} 1766 1767static void regulator_ena_gpio_free(struct regulator_dev *rdev) 1768{ 1769 struct regulator_enable_gpio *pin, *n; 1770 1771 if (!rdev->ena_pin) 1772 return; 1773 1774 /* Free the GPIO only in case of no use */ 1775 list_for_each_entry_safe(pin, n, ®ulator_ena_gpio_list, list) { 1776 if (pin->gpiod == rdev->ena_pin->gpiod) { 1777 if (pin->request_count <= 1) { 1778 pin->request_count = 0; 1779 gpiod_put(pin->gpiod); 1780 list_del(&pin->list); 1781 kfree(pin); 1782 rdev->ena_pin = NULL; 1783 return; 1784 } else { 1785 pin->request_count--; 1786 } 1787 } 1788 } 1789} 1790 1791/** 1792 * regulator_ena_gpio_ctrl - balance enable_count of each GPIO and actual GPIO pin control 1793 * @rdev: regulator_dev structure 1794 * @enable: enable GPIO at initial use? 1795 * 1796 * GPIO is enabled in case of initial use. (enable_count is 0) 1797 * GPIO is disabled when it is not shared any more. (enable_count <= 1) 1798 */ 1799static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable) 1800{ 1801 struct regulator_enable_gpio *pin = rdev->ena_pin; 1802 1803 if (!pin) 1804 return -EINVAL; 1805 1806 if (enable) { 1807 /* Enable GPIO at initial use */ 1808 if (pin->enable_count == 0) 1809 gpiod_set_value_cansleep(pin->gpiod, 1810 !pin->ena_gpio_invert); 1811 1812 pin->enable_count++; 1813 } else { 1814 if (pin->enable_count > 1) { 1815 pin->enable_count--; 1816 return 0; 1817 } 1818 1819 /* Disable GPIO if not used */ 1820 if (pin->enable_count <= 1) { 1821 gpiod_set_value_cansleep(pin->gpiod, 1822 pin->ena_gpio_invert); 1823 pin->enable_count = 0; 1824 } 1825 } 1826 1827 return 0; 1828} 1829 1830/** 1831 * _regulator_enable_delay - a delay helper function 1832 * @delay: time to delay in microseconds 1833 * 1834 * Delay for the requested amount of time as per the guidelines in: 1835 * 1836 * Documentation/timers/timers-howto.txt 1837 * 1838 * The assumption here is that regulators will never be enabled in 1839 * atomic context and therefore sleeping functions can be used. 1840 */ 1841static void _regulator_enable_delay(unsigned int delay) 1842{ 1843 unsigned int ms = delay / 1000; 1844 unsigned int us = delay % 1000; 1845 1846 if (ms > 0) { 1847 /* 1848 * For small enough values, handle super-millisecond 1849 * delays in the usleep_range() call below. 1850 */ 1851 if (ms < 20) 1852 us += ms * 1000; 1853 else 1854 msleep(ms); 1855 } 1856 1857 /* 1858 * Give the scheduler some room to coalesce with any other 1859 * wakeup sources. For delays shorter than 10 us, don't even 1860 * bother setting up high-resolution timers and just busy- 1861 * loop. 1862 */ 1863 if (us >= 10) 1864 usleep_range(us, us + 100); 1865 else 1866 udelay(us); 1867} 1868 1869static int _regulator_do_enable(struct regulator_dev *rdev) 1870{ 1871 int ret, delay; 1872 1873 /* Query before enabling in case configuration dependent. */ 1874 ret = _regulator_get_enable_time(rdev); 1875 if (ret >= 0) { 1876 delay = ret; 1877 } else { 1878 rdev_warn(rdev, "enable_time() failed: %d\n", ret); 1879 delay = 0; 1880 } 1881 1882 trace_regulator_enable(rdev_get_name(rdev)); 1883 1884 if (rdev->desc->off_on_delay) { 1885 /* if needed, keep a distance of off_on_delay from last time 1886 * this regulator was disabled. 1887 */ 1888 unsigned long start_jiffy = jiffies; 1889 unsigned long intended, max_delay, remaining; 1890 1891 max_delay = usecs_to_jiffies(rdev->desc->off_on_delay); 1892 intended = rdev->last_off_jiffy + max_delay; 1893 1894 if (time_before(start_jiffy, intended)) { 1895 /* calc remaining jiffies to deal with one-time 1896 * timer wrapping. 1897 * in case of multiple timer wrapping, either it can be 1898 * detected by out-of-range remaining, or it cannot be 1899 * detected and we gets a panelty of 1900 * _regulator_enable_delay(). 1901 */ 1902 remaining = intended - start_jiffy; 1903 if (remaining <= max_delay) 1904 _regulator_enable_delay( 1905 jiffies_to_usecs(remaining)); 1906 } 1907 } 1908 1909 if (rdev->ena_pin) { 1910 if (!rdev->ena_gpio_state) { 1911 ret = regulator_ena_gpio_ctrl(rdev, true); 1912 if (ret < 0) 1913 return ret; 1914 rdev->ena_gpio_state = 1; 1915 } 1916 } else if (rdev->desc->ops->enable) { 1917 ret = rdev->desc->ops->enable(rdev); 1918 if (ret < 0) 1919 return ret; 1920 } else { 1921 return -EINVAL; 1922 } 1923 1924 /* Allow the regulator to ramp; it would be useful to extend 1925 * this for bulk operations so that the regulators can ramp 1926 * together. */ 1927 trace_regulator_enable_delay(rdev_get_name(rdev)); 1928 1929 _regulator_enable_delay(delay); 1930 1931 trace_regulator_enable_complete(rdev_get_name(rdev)); 1932 1933 return 0; 1934} 1935 1936/* locks held by regulator_enable() */ 1937static int _regulator_enable(struct regulator_dev *rdev) 1938{ 1939 int ret; 1940 1941 /* check voltage and requested load before enabling */ 1942 if (rdev->constraints && 1943 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) 1944 drms_uA_update(rdev); 1945 1946 if (rdev->use_count == 0) { 1947 /* The regulator may on if it's not switchable or left on */ 1948 ret = _regulator_is_enabled(rdev); 1949 if (ret == -EINVAL || ret == 0) { 1950 if (!_regulator_can_change_status(rdev)) 1951 return -EPERM; 1952 1953 ret = _regulator_do_enable(rdev); 1954 if (ret < 0) 1955 return ret; 1956 1957 } else if (ret < 0) { 1958 rdev_err(rdev, "is_enabled() failed: %d\n", ret); 1959 return ret; 1960 } 1961 /* Fallthrough on positive return values - already enabled */ 1962 } 1963 1964 rdev->use_count++; 1965 1966 return 0; 1967} 1968 1969/** 1970 * regulator_enable - enable regulator output 1971 * @regulator: regulator source 1972 * 1973 * Request that the regulator be enabled with the regulator output at 1974 * the predefined voltage or current value. Calls to regulator_enable() 1975 * must be balanced with calls to regulator_disable(). 1976 * 1977 * NOTE: the output value can be set by other drivers, boot loader or may be 1978 * hardwired in the regulator. 1979 */ 1980int regulator_enable(struct regulator *regulator) 1981{ 1982 struct regulator_dev *rdev = regulator->rdev; 1983 int ret = 0; 1984 1985 if (regulator->always_on) 1986 return 0; 1987 1988 if (rdev->supply) { 1989 ret = regulator_enable(rdev->supply); 1990 if (ret != 0) 1991 return ret; 1992 } 1993 1994 mutex_lock(&rdev->mutex); 1995 ret = _regulator_enable(rdev); 1996 mutex_unlock(&rdev->mutex); 1997 1998 if (ret != 0 && rdev->supply) 1999 regulator_disable(rdev->supply); 2000 2001 return ret; 2002} 2003EXPORT_SYMBOL_GPL(regulator_enable); 2004 2005static int _regulator_do_disable(struct regulator_dev *rdev) 2006{ 2007 int ret; 2008 2009 trace_regulator_disable(rdev_get_name(rdev)); 2010 2011 if (rdev->ena_pin) { 2012 if (rdev->ena_gpio_state) { 2013 ret = regulator_ena_gpio_ctrl(rdev, false); 2014 if (ret < 0) 2015 return ret; 2016 rdev->ena_gpio_state = 0; 2017 } 2018 2019 } else if (rdev->desc->ops->disable) { 2020 ret = rdev->desc->ops->disable(rdev); 2021 if (ret != 0) 2022 return ret; 2023 } 2024 2025 /* cares about last_off_jiffy only if off_on_delay is required by 2026 * device. 2027 */ 2028 if (rdev->desc->off_on_delay) 2029 rdev->last_off_jiffy = jiffies; 2030 2031 trace_regulator_disable_complete(rdev_get_name(rdev)); 2032 2033 return 0; 2034} 2035 2036/* locks held by regulator_disable() */ 2037static int _regulator_disable(struct regulator_dev *rdev) 2038{ 2039 int ret = 0; 2040 2041 if (WARN(rdev->use_count <= 0, 2042 "unbalanced disables for %s\n", rdev_get_name(rdev))) 2043 return -EIO; 2044 2045 /* are we the last user and permitted to disable ? */ 2046 if (rdev->use_count == 1 && 2047 (rdev->constraints && !rdev->constraints->always_on)) { 2048 2049 /* we are last user */ 2050 if (_regulator_can_change_status(rdev)) { 2051 ret = _notifier_call_chain(rdev, 2052 REGULATOR_EVENT_PRE_DISABLE, 2053 NULL); 2054 if (ret & NOTIFY_STOP_MASK) 2055 return -EINVAL; 2056 2057 ret = _regulator_do_disable(rdev); 2058 if (ret < 0) { 2059 rdev_err(rdev, "failed to disable\n"); 2060 _notifier_call_chain(rdev, 2061 REGULATOR_EVENT_ABORT_DISABLE, 2062 NULL); 2063 return ret; 2064 } 2065 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, 2066 NULL); 2067 } 2068 2069 rdev->use_count = 0; 2070 } else if (rdev->use_count > 1) { 2071 2072 if (rdev->constraints && 2073 (rdev->constraints->valid_ops_mask & 2074 REGULATOR_CHANGE_DRMS)) 2075 drms_uA_update(rdev); 2076 2077 rdev->use_count--; 2078 } 2079 2080 return ret; 2081} 2082 2083/** 2084 * regulator_disable - disable regulator output 2085 * @regulator: regulator source 2086 * 2087 * Disable the regulator output voltage or current. Calls to 2088 * regulator_enable() must be balanced with calls to 2089 * regulator_disable(). 2090 * 2091 * NOTE: this will only disable the regulator output if no other consumer 2092 * devices have it enabled, the regulator device supports disabling and 2093 * machine constraints permit this operation. 2094 */ 2095int regulator_disable(struct regulator *regulator) 2096{ 2097 struct regulator_dev *rdev = regulator->rdev; 2098 int ret = 0; 2099 2100 if (regulator->always_on) 2101 return 0; 2102 2103 mutex_lock(&rdev->mutex); 2104 ret = _regulator_disable(rdev); 2105 mutex_unlock(&rdev->mutex); 2106 2107 if (ret == 0 && rdev->supply) 2108 regulator_disable(rdev->supply); 2109 2110 return ret; 2111} 2112EXPORT_SYMBOL_GPL(regulator_disable); 2113 2114/* locks held by regulator_force_disable() */ 2115static int _regulator_force_disable(struct regulator_dev *rdev) 2116{ 2117 int ret = 0; 2118 2119 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2120 REGULATOR_EVENT_PRE_DISABLE, NULL); 2121 if (ret & NOTIFY_STOP_MASK) 2122 return -EINVAL; 2123 2124 ret = _regulator_do_disable(rdev); 2125 if (ret < 0) { 2126 rdev_err(rdev, "failed to force disable\n"); 2127 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2128 REGULATOR_EVENT_ABORT_DISABLE, NULL); 2129 return ret; 2130 } 2131 2132 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2133 REGULATOR_EVENT_DISABLE, NULL); 2134 2135 return 0; 2136} 2137 2138/** 2139 * regulator_force_disable - force disable regulator output 2140 * @regulator: regulator source 2141 * 2142 * Forcibly disable the regulator output voltage or current. 2143 * NOTE: this *will* disable the regulator output even if other consumer 2144 * devices have it enabled. This should be used for situations when device 2145 * damage will likely occur if the regulator is not disabled (e.g. over temp). 2146 */ 2147int regulator_force_disable(struct regulator *regulator) 2148{ 2149 struct regulator_dev *rdev = regulator->rdev; 2150 int ret; 2151 2152 mutex_lock(&rdev->mutex); 2153 regulator->uA_load = 0; 2154 ret = _regulator_force_disable(regulator->rdev); 2155 mutex_unlock(&rdev->mutex); 2156 2157 if (rdev->supply) 2158 while (rdev->open_count--) 2159 regulator_disable(rdev->supply); 2160 2161 return ret; 2162} 2163EXPORT_SYMBOL_GPL(regulator_force_disable); 2164 2165static void regulator_disable_work(struct work_struct *work) 2166{ 2167 struct regulator_dev *rdev = container_of(work, struct regulator_dev, 2168 disable_work.work); 2169 int count, i, ret; 2170 2171 mutex_lock(&rdev->mutex); 2172 2173 BUG_ON(!rdev->deferred_disables); 2174 2175 count = rdev->deferred_disables; 2176 rdev->deferred_disables = 0; 2177 2178 for (i = 0; i < count; i++) { 2179 ret = _regulator_disable(rdev); 2180 if (ret != 0) 2181 rdev_err(rdev, "Deferred disable failed: %d\n", ret); 2182 } 2183 2184 mutex_unlock(&rdev->mutex); 2185 2186 if (rdev->supply) { 2187 for (i = 0; i < count; i++) { 2188 ret = regulator_disable(rdev->supply); 2189 if (ret != 0) { 2190 rdev_err(rdev, 2191 "Supply disable failed: %d\n", ret); 2192 } 2193 } 2194 } 2195} 2196 2197/** 2198 * regulator_disable_deferred - disable regulator output with delay 2199 * @regulator: regulator source 2200 * @ms: miliseconds until the regulator is disabled 2201 * 2202 * Execute regulator_disable() on the regulator after a delay. This 2203 * is intended for use with devices that require some time to quiesce. 2204 * 2205 * NOTE: this will only disable the regulator output if no other consumer 2206 * devices have it enabled, the regulator device supports disabling and 2207 * machine constraints permit this operation. 2208 */ 2209int regulator_disable_deferred(struct regulator *regulator, int ms) 2210{ 2211 struct regulator_dev *rdev = regulator->rdev; 2212 int ret; 2213 2214 if (regulator->always_on) 2215 return 0; 2216 2217 if (!ms) 2218 return regulator_disable(regulator); 2219 2220 mutex_lock(&rdev->mutex); 2221 rdev->deferred_disables++; 2222 mutex_unlock(&rdev->mutex); 2223 2224 ret = queue_delayed_work(system_power_efficient_wq, 2225 &rdev->disable_work, 2226 msecs_to_jiffies(ms)); 2227 if (ret < 0) 2228 return ret; 2229 else 2230 return 0; 2231} 2232EXPORT_SYMBOL_GPL(regulator_disable_deferred); 2233 2234static int _regulator_is_enabled(struct regulator_dev *rdev) 2235{ 2236 /* A GPIO control always takes precedence */ 2237 if (rdev->ena_pin) 2238 return rdev->ena_gpio_state; 2239 2240 /* If we don't know then assume that the regulator is always on */ 2241 if (!rdev->desc->ops->is_enabled) 2242 return 1; 2243 2244 return rdev->desc->ops->is_enabled(rdev); 2245} 2246 2247/** 2248 * regulator_is_enabled - is the regulator output enabled 2249 * @regulator: regulator source 2250 * 2251 * Returns positive if the regulator driver backing the source/client 2252 * has requested that the device be enabled, zero if it hasn't, else a 2253 * negative errno code. 2254 * 2255 * Note that the device backing this regulator handle can have multiple 2256 * users, so it might be enabled even if regulator_enable() was never 2257 * called for this particular source. 2258 */ 2259int regulator_is_enabled(struct regulator *regulator) 2260{ 2261 int ret; 2262 2263 if (regulator->always_on) 2264 return 1; 2265 2266 mutex_lock(®ulator->rdev->mutex); 2267 ret = _regulator_is_enabled(regulator->rdev); 2268 mutex_unlock(®ulator->rdev->mutex); 2269 2270 return ret; 2271} 2272EXPORT_SYMBOL_GPL(regulator_is_enabled); 2273 2274/** 2275 * regulator_can_change_voltage - check if regulator can change voltage 2276 * @regulator: regulator source 2277 * 2278 * Returns positive if the regulator driver backing the source/client 2279 * can change its voltage, false otherwise. Useful for detecting fixed 2280 * or dummy regulators and disabling voltage change logic in the client 2281 * driver. 2282 */ 2283int regulator_can_change_voltage(struct regulator *regulator) 2284{ 2285 struct regulator_dev *rdev = regulator->rdev; 2286 2287 if (rdev->constraints && 2288 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2289 if (rdev->desc->n_voltages - rdev->desc->linear_min_sel > 1) 2290 return 1; 2291 2292 if (rdev->desc->continuous_voltage_range && 2293 rdev->constraints->min_uV && rdev->constraints->max_uV && 2294 rdev->constraints->min_uV != rdev->constraints->max_uV) 2295 return 1; 2296 } 2297 2298 return 0; 2299} 2300EXPORT_SYMBOL_GPL(regulator_can_change_voltage); 2301 2302/** 2303 * regulator_count_voltages - count regulator_list_voltage() selectors 2304 * @regulator: regulator source 2305 * 2306 * Returns number of selectors, or negative errno. Selectors are 2307 * numbered starting at zero, and typically correspond to bitfields 2308 * in hardware registers. 2309 */ 2310int regulator_count_voltages(struct regulator *regulator) 2311{ 2312 struct regulator_dev *rdev = regulator->rdev; 2313 2314 if (rdev->desc->n_voltages) 2315 return rdev->desc->n_voltages; 2316 2317 if (!rdev->supply) 2318 return -EINVAL; 2319 2320 return regulator_count_voltages(rdev->supply); 2321} 2322EXPORT_SYMBOL_GPL(regulator_count_voltages); 2323 2324/** 2325 * regulator_list_voltage - enumerate supported voltages 2326 * @regulator: regulator source 2327 * @selector: identify voltage to list 2328 * Context: can sleep 2329 * 2330 * Returns a voltage that can be passed to @regulator_set_voltage(), 2331 * zero if this selector code can't be used on this system, or a 2332 * negative errno. 2333 */ 2334int regulator_list_voltage(struct regulator *regulator, unsigned selector) 2335{ 2336 struct regulator_dev *rdev = regulator->rdev; 2337 const struct regulator_ops *ops = rdev->desc->ops; 2338 int ret; 2339 2340 if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector) 2341 return rdev->desc->fixed_uV; 2342 2343 if (ops->list_voltage) { 2344 if (selector >= rdev->desc->n_voltages) 2345 return -EINVAL; 2346 mutex_lock(&rdev->mutex); 2347 ret = ops->list_voltage(rdev, selector); 2348 mutex_unlock(&rdev->mutex); 2349 } else if (rdev->supply) { 2350 ret = regulator_list_voltage(rdev->supply, selector); 2351 } else { 2352 return -EINVAL; 2353 } 2354 2355 if (ret > 0) { 2356 if (ret < rdev->constraints->min_uV) 2357 ret = 0; 2358 else if (ret > rdev->constraints->max_uV) 2359 ret = 0; 2360 } 2361 2362 return ret; 2363} 2364EXPORT_SYMBOL_GPL(regulator_list_voltage); 2365 2366/** 2367 * regulator_get_regmap - get the regulator's register map 2368 * @regulator: regulator source 2369 * 2370 * Returns the register map for the given regulator, or an ERR_PTR value 2371 * if the regulator doesn't use regmap. 2372 */ 2373struct regmap *regulator_get_regmap(struct regulator *regulator) 2374{ 2375 struct regmap *map = regulator->rdev->regmap; 2376 2377 return map ? map : ERR_PTR(-EOPNOTSUPP); 2378} 2379 2380/** 2381 * regulator_get_hardware_vsel_register - get the HW voltage selector register 2382 * @regulator: regulator source 2383 * @vsel_reg: voltage selector register, output parameter 2384 * @vsel_mask: mask for voltage selector bitfield, output parameter 2385 * 2386 * Returns the hardware register offset and bitmask used for setting the 2387 * regulator voltage. This might be useful when configuring voltage-scaling 2388 * hardware or firmware that can make I2C requests behind the kernel's back, 2389 * for example. 2390 * 2391 * On success, the output parameters @vsel_reg and @vsel_mask are filled in 2392 * and 0 is returned, otherwise a negative errno is returned. 2393 */ 2394int regulator_get_hardware_vsel_register(struct regulator *regulator, 2395 unsigned *vsel_reg, 2396 unsigned *vsel_mask) 2397{ 2398 struct regulator_dev *rdev = regulator->rdev; 2399 const struct regulator_ops *ops = rdev->desc->ops; 2400 2401 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 2402 return -EOPNOTSUPP; 2403 2404 *vsel_reg = rdev->desc->vsel_reg; 2405 *vsel_mask = rdev->desc->vsel_mask; 2406 2407 return 0; 2408} 2409EXPORT_SYMBOL_GPL(regulator_get_hardware_vsel_register); 2410 2411/** 2412 * regulator_list_hardware_vsel - get the HW-specific register value for a selector 2413 * @regulator: regulator source 2414 * @selector: identify voltage to list 2415 * 2416 * Converts the selector to a hardware-specific voltage selector that can be 2417 * directly written to the regulator registers. The address of the voltage 2418 * register can be determined by calling @regulator_get_hardware_vsel_register. 2419 * 2420 * On error a negative errno is returned. 2421 */ 2422int regulator_list_hardware_vsel(struct regulator *regulator, 2423 unsigned selector) 2424{ 2425 struct regulator_dev *rdev = regulator->rdev; 2426 const struct regulator_ops *ops = rdev->desc->ops; 2427 2428 if (selector >= rdev->desc->n_voltages) 2429 return -EINVAL; 2430 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 2431 return -EOPNOTSUPP; 2432 2433 return selector; 2434} 2435EXPORT_SYMBOL_GPL(regulator_list_hardware_vsel); 2436 2437/** 2438 * regulator_get_linear_step - return the voltage step size between VSEL values 2439 * @regulator: regulator source 2440 * 2441 * Returns the voltage step size between VSEL values for linear 2442 * regulators, or return 0 if the regulator isn't a linear regulator. 2443 */ 2444unsigned int regulator_get_linear_step(struct regulator *regulator) 2445{ 2446 struct regulator_dev *rdev = regulator->rdev; 2447 2448 return rdev->desc->uV_step; 2449} 2450EXPORT_SYMBOL_GPL(regulator_get_linear_step); 2451 2452/** 2453 * regulator_is_supported_voltage - check if a voltage range can be supported 2454 * 2455 * @regulator: Regulator to check. 2456 * @min_uV: Minimum required voltage in uV. 2457 * @max_uV: Maximum required voltage in uV. 2458 * 2459 * Returns a boolean or a negative error code. 2460 */ 2461int regulator_is_supported_voltage(struct regulator *regulator, 2462 int min_uV, int max_uV) 2463{ 2464 struct regulator_dev *rdev = regulator->rdev; 2465 int i, voltages, ret; 2466 2467 /* If we can't change voltage check the current voltage */ 2468 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2469 ret = regulator_get_voltage(regulator); 2470 if (ret >= 0) 2471 return min_uV <= ret && ret <= max_uV; 2472 else 2473 return ret; 2474 } 2475 2476 /* Any voltage within constrains range is fine? */ 2477 if (rdev->desc->continuous_voltage_range) 2478 return min_uV >= rdev->constraints->min_uV && 2479 max_uV <= rdev->constraints->max_uV; 2480 2481 ret = regulator_count_voltages(regulator); 2482 if (ret < 0) 2483 return ret; 2484 voltages = ret; 2485 2486 for (i = 0; i < voltages; i++) { 2487 ret = regulator_list_voltage(regulator, i); 2488 2489 if (ret >= min_uV && ret <= max_uV) 2490 return 1; 2491 } 2492 2493 return 0; 2494} 2495EXPORT_SYMBOL_GPL(regulator_is_supported_voltage); 2496 2497static int _regulator_call_set_voltage(struct regulator_dev *rdev, 2498 int min_uV, int max_uV, 2499 unsigned *selector) 2500{ 2501 struct pre_voltage_change_data data; 2502 int ret; 2503 2504 data.old_uV = _regulator_get_voltage(rdev); 2505 data.min_uV = min_uV; 2506 data.max_uV = max_uV; 2507 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 2508 &data); 2509 if (ret & NOTIFY_STOP_MASK) 2510 return -EINVAL; 2511 2512 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, selector); 2513 if (ret >= 0) 2514 return ret; 2515 2516 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 2517 (void *)data.old_uV); 2518 2519 return ret; 2520} 2521 2522static int _regulator_call_set_voltage_sel(struct regulator_dev *rdev, 2523 int uV, unsigned selector) 2524{ 2525 struct pre_voltage_change_data data; 2526 int ret; 2527 2528 data.old_uV = _regulator_get_voltage(rdev); 2529 data.min_uV = uV; 2530 data.max_uV = uV; 2531 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 2532 &data); 2533 if (ret & NOTIFY_STOP_MASK) 2534 return -EINVAL; 2535 2536 ret = rdev->desc->ops->set_voltage_sel(rdev, selector); 2537 if (ret >= 0) 2538 return ret; 2539 2540 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 2541 (void *)data.old_uV); 2542 2543 return ret; 2544} 2545 2546static int _regulator_do_set_voltage(struct regulator_dev *rdev, 2547 int min_uV, int max_uV) 2548{ 2549 int ret; 2550 int delay = 0; 2551 int best_val = 0; 2552 unsigned int selector; 2553 int old_selector = -1; 2554 2555 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV); 2556 2557 min_uV += rdev->constraints->uV_offset; 2558 max_uV += rdev->constraints->uV_offset; 2559 2560 /* 2561 * If we can't obtain the old selector there is not enough 2562 * info to call set_voltage_time_sel(). 2563 */ 2564 if (_regulator_is_enabled(rdev) && 2565 rdev->desc->ops->set_voltage_time_sel && 2566 rdev->desc->ops->get_voltage_sel) { 2567 old_selector = rdev->desc->ops->get_voltage_sel(rdev); 2568 if (old_selector < 0) 2569 return old_selector; 2570 } 2571 2572 if (rdev->desc->ops->set_voltage) { 2573 ret = _regulator_call_set_voltage(rdev, min_uV, max_uV, 2574 &selector); 2575 2576 if (ret >= 0) { 2577 if (rdev->desc->ops->list_voltage) 2578 best_val = rdev->desc->ops->list_voltage(rdev, 2579 selector); 2580 else 2581 best_val = _regulator_get_voltage(rdev); 2582 } 2583 2584 } else if (rdev->desc->ops->set_voltage_sel) { 2585 if (rdev->desc->ops->map_voltage) { 2586 ret = rdev->desc->ops->map_voltage(rdev, min_uV, 2587 max_uV); 2588 } else { 2589 if (rdev->desc->ops->list_voltage == 2590 regulator_list_voltage_linear) 2591 ret = regulator_map_voltage_linear(rdev, 2592 min_uV, max_uV); 2593 else if (rdev->desc->ops->list_voltage == 2594 regulator_list_voltage_linear_range) 2595 ret = regulator_map_voltage_linear_range(rdev, 2596 min_uV, max_uV); 2597 else 2598 ret = regulator_map_voltage_iterate(rdev, 2599 min_uV, max_uV); 2600 } 2601 2602 if (ret >= 0) { 2603 best_val = rdev->desc->ops->list_voltage(rdev, ret); 2604 if (min_uV <= best_val && max_uV >= best_val) { 2605 selector = ret; 2606 if (old_selector == selector) 2607 ret = 0; 2608 else 2609 ret = _regulator_call_set_voltage_sel( 2610 rdev, best_val, selector); 2611 } else { 2612 ret = -EINVAL; 2613 } 2614 } 2615 } else { 2616 ret = -EINVAL; 2617 } 2618 2619 /* Call set_voltage_time_sel if successfully obtained old_selector */ 2620 if (ret == 0 && !rdev->constraints->ramp_disable && old_selector >= 0 2621 && old_selector != selector) { 2622 2623 delay = rdev->desc->ops->set_voltage_time_sel(rdev, 2624 old_selector, selector); 2625 if (delay < 0) { 2626 rdev_warn(rdev, "set_voltage_time_sel() failed: %d\n", 2627 delay); 2628 delay = 0; 2629 } 2630 2631 /* Insert any necessary delays */ 2632 if (delay >= 1000) { 2633 mdelay(delay / 1000); 2634 udelay(delay % 1000); 2635 } else if (delay) { 2636 udelay(delay); 2637 } 2638 } 2639 2640 if (ret == 0 && best_val >= 0) { 2641 unsigned long data = best_val; 2642 2643 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, 2644 (void *)data); 2645 } 2646 2647 trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); 2648 2649 return ret; 2650} 2651 2652/** 2653 * regulator_set_voltage - set regulator output voltage 2654 * @regulator: regulator source 2655 * @min_uV: Minimum required voltage in uV 2656 * @max_uV: Maximum acceptable voltage in uV 2657 * 2658 * Sets a voltage regulator to the desired output voltage. This can be set 2659 * during any regulator state. IOW, regulator can be disabled or enabled. 2660 * 2661 * If the regulator is enabled then the voltage will change to the new value 2662 * immediately otherwise if the regulator is disabled the regulator will 2663 * output at the new voltage when enabled. 2664 * 2665 * NOTE: If the regulator is shared between several devices then the lowest 2666 * request voltage that meets the system constraints will be used. 2667 * Regulator system constraints must be set for this regulator before 2668 * calling this function otherwise this call will fail. 2669 */ 2670int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) 2671{ 2672 struct regulator_dev *rdev = regulator->rdev; 2673 int ret = 0; 2674 int old_min_uV, old_max_uV; 2675 int current_uV; 2676 2677 mutex_lock(&rdev->mutex); 2678 2679 /* If we're setting the same range as last time the change 2680 * should be a noop (some cpufreq implementations use the same 2681 * voltage for multiple frequencies, for example). 2682 */ 2683 if (regulator->min_uV == min_uV && regulator->max_uV == max_uV) 2684 goto out; 2685 2686 /* If we're trying to set a range that overlaps the current voltage, 2687 * return succesfully even though the regulator does not support 2688 * changing the voltage. 2689 */ 2690 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2691 current_uV = _regulator_get_voltage(rdev); 2692 if (min_uV <= current_uV && current_uV <= max_uV) { 2693 regulator->min_uV = min_uV; 2694 regulator->max_uV = max_uV; 2695 goto out; 2696 } 2697 } 2698 2699 /* sanity check */ 2700 if (!rdev->desc->ops->set_voltage && 2701 !rdev->desc->ops->set_voltage_sel) { 2702 ret = -EINVAL; 2703 goto out; 2704 } 2705 2706 /* constraints check */ 2707 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 2708 if (ret < 0) 2709 goto out; 2710 2711 /* restore original values in case of error */ 2712 old_min_uV = regulator->min_uV; 2713 old_max_uV = regulator->max_uV; 2714 regulator->min_uV = min_uV; 2715 regulator->max_uV = max_uV; 2716 2717 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); 2718 if (ret < 0) 2719 goto out2; 2720 2721 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 2722 if (ret < 0) 2723 goto out2; 2724 2725out: 2726 mutex_unlock(&rdev->mutex); 2727 return ret; 2728out2: 2729 regulator->min_uV = old_min_uV; 2730 regulator->max_uV = old_max_uV; 2731 mutex_unlock(&rdev->mutex); 2732 return ret; 2733} 2734EXPORT_SYMBOL_GPL(regulator_set_voltage); 2735 2736/** 2737 * regulator_set_voltage_time - get raise/fall time 2738 * @regulator: regulator source 2739 * @old_uV: starting voltage in microvolts 2740 * @new_uV: target voltage in microvolts 2741 * 2742 * Provided with the starting and ending voltage, this function attempts to 2743 * calculate the time in microseconds required to rise or fall to this new 2744 * voltage. 2745 */ 2746int regulator_set_voltage_time(struct regulator *regulator, 2747 int old_uV, int new_uV) 2748{ 2749 struct regulator_dev *rdev = regulator->rdev; 2750 const struct regulator_ops *ops = rdev->desc->ops; 2751 int old_sel = -1; 2752 int new_sel = -1; 2753 int voltage; 2754 int i; 2755 2756 /* Currently requires operations to do this */ 2757 if (!ops->list_voltage || !ops->set_voltage_time_sel 2758 || !rdev->desc->n_voltages) 2759 return -EINVAL; 2760 2761 for (i = 0; i < rdev->desc->n_voltages; i++) { 2762 /* We only look for exact voltage matches here */ 2763 voltage = regulator_list_voltage(regulator, i); 2764 if (voltage < 0) 2765 return -EINVAL; 2766 if (voltage == 0) 2767 continue; 2768 if (voltage == old_uV) 2769 old_sel = i; 2770 if (voltage == new_uV) 2771 new_sel = i; 2772 } 2773 2774 if (old_sel < 0 || new_sel < 0) 2775 return -EINVAL; 2776 2777 return ops->set_voltage_time_sel(rdev, old_sel, new_sel); 2778} 2779EXPORT_SYMBOL_GPL(regulator_set_voltage_time); 2780 2781/** 2782 * regulator_set_voltage_time_sel - get raise/fall time 2783 * @rdev: regulator source device 2784 * @old_selector: selector for starting voltage 2785 * @new_selector: selector for target voltage 2786 * 2787 * Provided with the starting and target voltage selectors, this function 2788 * returns time in microseconds required to rise or fall to this new voltage 2789 * 2790 * Drivers providing ramp_delay in regulation_constraints can use this as their 2791 * set_voltage_time_sel() operation. 2792 */ 2793int regulator_set_voltage_time_sel(struct regulator_dev *rdev, 2794 unsigned int old_selector, 2795 unsigned int new_selector) 2796{ 2797 unsigned int ramp_delay = 0; 2798 int old_volt, new_volt; 2799 2800 if (rdev->constraints->ramp_delay) 2801 ramp_delay = rdev->constraints->ramp_delay; 2802 else if (rdev->desc->ramp_delay) 2803 ramp_delay = rdev->desc->ramp_delay; 2804 2805 if (ramp_delay == 0) { 2806 rdev_warn(rdev, "ramp_delay not set\n"); 2807 return 0; 2808 } 2809 2810 /* sanity check */ 2811 if (!rdev->desc->ops->list_voltage) 2812 return -EINVAL; 2813 2814 old_volt = rdev->desc->ops->list_voltage(rdev, old_selector); 2815 new_volt = rdev->desc->ops->list_voltage(rdev, new_selector); 2816 2817 return DIV_ROUND_UP(abs(new_volt - old_volt), ramp_delay); 2818} 2819EXPORT_SYMBOL_GPL(regulator_set_voltage_time_sel); 2820 2821/** 2822 * regulator_sync_voltage - re-apply last regulator output voltage 2823 * @regulator: regulator source 2824 * 2825 * Re-apply the last configured voltage. This is intended to be used 2826 * where some external control source the consumer is cooperating with 2827 * has caused the configured voltage to change. 2828 */ 2829int regulator_sync_voltage(struct regulator *regulator) 2830{ 2831 struct regulator_dev *rdev = regulator->rdev; 2832 int ret, min_uV, max_uV; 2833 2834 mutex_lock(&rdev->mutex); 2835 2836 if (!rdev->desc->ops->set_voltage && 2837 !rdev->desc->ops->set_voltage_sel) { 2838 ret = -EINVAL; 2839 goto out; 2840 } 2841 2842 /* This is only going to work if we've had a voltage configured. */ 2843 if (!regulator->min_uV && !regulator->max_uV) { 2844 ret = -EINVAL; 2845 goto out; 2846 } 2847 2848 min_uV = regulator->min_uV; 2849 max_uV = regulator->max_uV; 2850 2851 /* This should be a paranoia check... */ 2852 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 2853 if (ret < 0) 2854 goto out; 2855 2856 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); 2857 if (ret < 0) 2858 goto out; 2859 2860 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 2861 2862out: 2863 mutex_unlock(&rdev->mutex); 2864 return ret; 2865} 2866EXPORT_SYMBOL_GPL(regulator_sync_voltage); 2867 2868static int _regulator_get_voltage(struct regulator_dev *rdev) 2869{ 2870 int sel, ret; 2871 2872 if (rdev->desc->ops->get_voltage_sel) { 2873 sel = rdev->desc->ops->get_voltage_sel(rdev); 2874 if (sel < 0) 2875 return sel; 2876 ret = rdev->desc->ops->list_voltage(rdev, sel); 2877 } else if (rdev->desc->ops->get_voltage) { 2878 ret = rdev->desc->ops->get_voltage(rdev); 2879 } else if (rdev->desc->ops->list_voltage) { 2880 ret = rdev->desc->ops->list_voltage(rdev, 0); 2881 } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { 2882 ret = rdev->desc->fixed_uV; 2883 } else if (rdev->supply) { 2884 ret = regulator_get_voltage(rdev->supply); 2885 } else { 2886 return -EINVAL; 2887 } 2888 2889 if (ret < 0) 2890 return ret; 2891 return ret - rdev->constraints->uV_offset; 2892} 2893 2894/** 2895 * regulator_get_voltage - get regulator output voltage 2896 * @regulator: regulator source 2897 * 2898 * This returns the current regulator voltage in uV. 2899 * 2900 * NOTE: If the regulator is disabled it will return the voltage value. This 2901 * function should not be used to determine regulator state. 2902 */ 2903int regulator_get_voltage(struct regulator *regulator) 2904{ 2905 int ret; 2906 2907 mutex_lock(®ulator->rdev->mutex); 2908 2909 ret = _regulator_get_voltage(regulator->rdev); 2910 2911 mutex_unlock(®ulator->rdev->mutex); 2912 2913 return ret; 2914} 2915EXPORT_SYMBOL_GPL(regulator_get_voltage); 2916 2917/** 2918 * regulator_set_current_limit - set regulator output current limit 2919 * @regulator: regulator source 2920 * @min_uA: Minimum supported current in uA 2921 * @max_uA: Maximum supported current in uA 2922 * 2923 * Sets current sink to the desired output current. This can be set during 2924 * any regulator state. IOW, regulator can be disabled or enabled. 2925 * 2926 * If the regulator is enabled then the current will change to the new value 2927 * immediately otherwise if the regulator is disabled the regulator will 2928 * output at the new current when enabled. 2929 * 2930 * NOTE: Regulator system constraints must be set for this regulator before 2931 * calling this function otherwise this call will fail. 2932 */ 2933int regulator_set_current_limit(struct regulator *regulator, 2934 int min_uA, int max_uA) 2935{ 2936 struct regulator_dev *rdev = regulator->rdev; 2937 int ret; 2938 2939 mutex_lock(&rdev->mutex); 2940 2941 /* sanity check */ 2942 if (!rdev->desc->ops->set_current_limit) { 2943 ret = -EINVAL; 2944 goto out; 2945 } 2946 2947 /* constraints check */ 2948 ret = regulator_check_current_limit(rdev, &min_uA, &max_uA); 2949 if (ret < 0) 2950 goto out; 2951 2952 ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA); 2953out: 2954 mutex_unlock(&rdev->mutex); 2955 return ret; 2956} 2957EXPORT_SYMBOL_GPL(regulator_set_current_limit); 2958 2959static int _regulator_get_current_limit(struct regulator_dev *rdev) 2960{ 2961 int ret; 2962 2963 mutex_lock(&rdev->mutex); 2964 2965 /* sanity check */ 2966 if (!rdev->desc->ops->get_current_limit) { 2967 ret = -EINVAL; 2968 goto out; 2969 } 2970 2971 ret = rdev->desc->ops->get_current_limit(rdev); 2972out: 2973 mutex_unlock(&rdev->mutex); 2974 return ret; 2975} 2976 2977/** 2978 * regulator_get_current_limit - get regulator output current 2979 * @regulator: regulator source 2980 * 2981 * This returns the current supplied by the specified current sink in uA. 2982 * 2983 * NOTE: If the regulator is disabled it will return the current value. This 2984 * function should not be used to determine regulator state. 2985 */ 2986int regulator_get_current_limit(struct regulator *regulator) 2987{ 2988 return _regulator_get_current_limit(regulator->rdev); 2989} 2990EXPORT_SYMBOL_GPL(regulator_get_current_limit); 2991 2992/** 2993 * regulator_set_mode - set regulator operating mode 2994 * @regulator: regulator source 2995 * @mode: operating mode - one of the REGULATOR_MODE constants 2996 * 2997 * Set regulator operating mode to increase regulator efficiency or improve 2998 * regulation performance. 2999 * 3000 * NOTE: Regulator system constraints must be set for this regulator before 3001 * calling this function otherwise this call will fail. 3002 */ 3003int regulator_set_mode(struct regulator *regulator, unsigned int mode) 3004{ 3005 struct regulator_dev *rdev = regulator->rdev; 3006 int ret; 3007 int regulator_curr_mode; 3008 3009 mutex_lock(&rdev->mutex); 3010 3011 /* sanity check */ 3012 if (!rdev->desc->ops->set_mode) { 3013 ret = -EINVAL; 3014 goto out; 3015 } 3016 3017 /* return if the same mode is requested */ 3018 if (rdev->desc->ops->get_mode) { 3019 regulator_curr_mode = rdev->desc->ops->get_mode(rdev); 3020 if (regulator_curr_mode == mode) { 3021 ret = 0; 3022 goto out; 3023 } 3024 } 3025 3026 /* constraints check */ 3027 ret = regulator_mode_constrain(rdev, &mode); 3028 if (ret < 0) 3029 goto out; 3030 3031 ret = rdev->desc->ops->set_mode(rdev, mode); 3032out: 3033 mutex_unlock(&rdev->mutex); 3034 return ret; 3035} 3036EXPORT_SYMBOL_GPL(regulator_set_mode); 3037 3038static unsigned int _regulator_get_mode(struct regulator_dev *rdev) 3039{ 3040 int ret; 3041 3042 mutex_lock(&rdev->mutex); 3043 3044 /* sanity check */ 3045 if (!rdev->desc->ops->get_mode) { 3046 ret = -EINVAL; 3047 goto out; 3048 } 3049 3050 ret = rdev->desc->ops->get_mode(rdev); 3051out: 3052 mutex_unlock(&rdev->mutex); 3053 return ret; 3054} 3055 3056/** 3057 * regulator_get_mode - get regulator operating mode 3058 * @regulator: regulator source 3059 * 3060 * Get the current regulator operating mode. 3061 */ 3062unsigned int regulator_get_mode(struct regulator *regulator) 3063{ 3064 return _regulator_get_mode(regulator->rdev); 3065} 3066EXPORT_SYMBOL_GPL(regulator_get_mode); 3067 3068/** 3069 * regulator_set_load - set regulator load 3070 * @regulator: regulator source 3071 * @uA_load: load current 3072 * 3073 * Notifies the regulator core of a new device load. This is then used by 3074 * DRMS (if enabled by constraints) to set the most efficient regulator 3075 * operating mode for the new regulator loading. 3076 * 3077 * Consumer devices notify their supply regulator of the maximum power 3078 * they will require (can be taken from device datasheet in the power 3079 * consumption tables) when they change operational status and hence power 3080 * state. Examples of operational state changes that can affect power 3081 * consumption are :- 3082 * 3083 * o Device is opened / closed. 3084 * o Device I/O is about to begin or has just finished. 3085 * o Device is idling in between work. 3086 * 3087 * This information is also exported via sysfs to userspace. 3088 * 3089 * DRMS will sum the total requested load on the regulator and change 3090 * to the most efficient operating mode if platform constraints allow. 3091 * 3092 * On error a negative errno is returned. 3093 */ 3094int regulator_set_load(struct regulator *regulator, int uA_load) 3095{ 3096 struct regulator_dev *rdev = regulator->rdev; 3097 int ret; 3098 3099 mutex_lock(&rdev->mutex); 3100 regulator->uA_load = uA_load; 3101 ret = drms_uA_update(rdev); 3102 mutex_unlock(&rdev->mutex); 3103 3104 return ret; 3105} 3106EXPORT_SYMBOL_GPL(regulator_set_load); 3107 3108/** 3109 * regulator_allow_bypass - allow the regulator to go into bypass mode 3110 * 3111 * @regulator: Regulator to configure 3112 * @enable: enable or disable bypass mode 3113 * 3114 * Allow the regulator to go into bypass mode if all other consumers 3115 * for the regulator also enable bypass mode and the machine 3116 * constraints allow this. Bypass mode means that the regulator is 3117 * simply passing the input directly to the output with no regulation. 3118 */ 3119int regulator_allow_bypass(struct regulator *regulator, bool enable) 3120{ 3121 struct regulator_dev *rdev = regulator->rdev; 3122 int ret = 0; 3123 3124 if (!rdev->desc->ops->set_bypass) 3125 return 0; 3126 3127 if (rdev->constraints && 3128 !(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_BYPASS)) 3129 return 0; 3130 3131 mutex_lock(&rdev->mutex); 3132 3133 if (enable && !regulator->bypass) { 3134 rdev->bypass_count++; 3135 3136 if (rdev->bypass_count == rdev->open_count) { 3137 ret = rdev->desc->ops->set_bypass(rdev, enable); 3138 if (ret != 0) 3139 rdev->bypass_count--; 3140 } 3141 3142 } else if (!enable && regulator->bypass) { 3143 rdev->bypass_count--; 3144 3145 if (rdev->bypass_count != rdev->open_count) { 3146 ret = rdev->desc->ops->set_bypass(rdev, enable); 3147 if (ret != 0) 3148 rdev->bypass_count++; 3149 } 3150 } 3151 3152 if (ret == 0) 3153 regulator->bypass = enable; 3154 3155 mutex_unlock(&rdev->mutex); 3156 3157 return ret; 3158} 3159EXPORT_SYMBOL_GPL(regulator_allow_bypass); 3160 3161/** 3162 * regulator_register_notifier - register regulator event notifier 3163 * @regulator: regulator source 3164 * @nb: notifier block 3165 * 3166 * Register notifier block to receive regulator events. 3167 */ 3168int regulator_register_notifier(struct regulator *regulator, 3169 struct notifier_block *nb) 3170{ 3171 return blocking_notifier_chain_register(®ulator->rdev->notifier, 3172 nb); 3173} 3174EXPORT_SYMBOL_GPL(regulator_register_notifier); 3175 3176/** 3177 * regulator_unregister_notifier - unregister regulator event notifier 3178 * @regulator: regulator source 3179 * @nb: notifier block 3180 * 3181 * Unregister regulator event notifier block. 3182 */ 3183int regulator_unregister_notifier(struct regulator *regulator, 3184 struct notifier_block *nb) 3185{ 3186 return blocking_notifier_chain_unregister(®ulator->rdev->notifier, 3187 nb); 3188} 3189EXPORT_SYMBOL_GPL(regulator_unregister_notifier); 3190 3191/* notify regulator consumers and downstream regulator consumers. 3192 * Note mutex must be held by caller. 3193 */ 3194static int _notifier_call_chain(struct regulator_dev *rdev, 3195 unsigned long event, void *data) 3196{ 3197 /* call rdev chain first */ 3198 return blocking_notifier_call_chain(&rdev->notifier, event, data); 3199} 3200 3201/** 3202 * regulator_bulk_get - get multiple regulator consumers 3203 * 3204 * @dev: Device to supply 3205 * @num_consumers: Number of consumers to register 3206 * @consumers: Configuration of consumers; clients are stored here. 3207 * 3208 * @return 0 on success, an errno on failure. 3209 * 3210 * This helper function allows drivers to get several regulator 3211 * consumers in one operation. If any of the regulators cannot be 3212 * acquired then any regulators that were allocated will be freed 3213 * before returning to the caller. 3214 */ 3215int regulator_bulk_get(struct device *dev, int num_consumers, 3216 struct regulator_bulk_data *consumers) 3217{ 3218 int i; 3219 int ret; 3220 3221 for (i = 0; i < num_consumers; i++) 3222 consumers[i].consumer = NULL; 3223 3224 for (i = 0; i < num_consumers; i++) { 3225 consumers[i].consumer = regulator_get(dev, 3226 consumers[i].supply); 3227 if (IS_ERR(consumers[i].consumer)) { 3228 ret = PTR_ERR(consumers[i].consumer); 3229 dev_err(dev, "Failed to get supply '%s': %d\n", 3230 consumers[i].supply, ret); 3231 consumers[i].consumer = NULL; 3232 goto err; 3233 } 3234 } 3235 3236 return 0; 3237 3238err: 3239 while (--i >= 0) 3240 regulator_put(consumers[i].consumer); 3241 3242 return ret; 3243} 3244EXPORT_SYMBOL_GPL(regulator_bulk_get); 3245 3246static void regulator_bulk_enable_async(void *data, async_cookie_t cookie) 3247{ 3248 struct regulator_bulk_data *bulk = data; 3249 3250 bulk->ret = regulator_enable(bulk->consumer); 3251} 3252 3253/** 3254 * regulator_bulk_enable - enable multiple regulator consumers 3255 * 3256 * @num_consumers: Number of consumers 3257 * @consumers: Consumer data; clients are stored here. 3258 * @return 0 on success, an errno on failure 3259 * 3260 * This convenience API allows consumers to enable multiple regulator 3261 * clients in a single API call. If any consumers cannot be enabled 3262 * then any others that were enabled will be disabled again prior to 3263 * return. 3264 */ 3265int regulator_bulk_enable(int num_consumers, 3266 struct regulator_bulk_data *consumers) 3267{ 3268 ASYNC_DOMAIN_EXCLUSIVE(async_domain); 3269 int i; 3270 int ret = 0; 3271 3272 for (i = 0; i < num_consumers; i++) { 3273 if (consumers[i].consumer->always_on) 3274 consumers[i].ret = 0; 3275 else 3276 async_schedule_domain(regulator_bulk_enable_async, 3277 &consumers[i], &async_domain); 3278 } 3279 3280 async_synchronize_full_domain(&async_domain); 3281 3282 /* If any consumer failed we need to unwind any that succeeded */ 3283 for (i = 0; i < num_consumers; i++) { 3284 if (consumers[i].ret != 0) { 3285 ret = consumers[i].ret; 3286 goto err; 3287 } 3288 } 3289 3290 return 0; 3291 3292err: 3293 for (i = 0; i < num_consumers; i++) { 3294 if (consumers[i].ret < 0) 3295 pr_err("Failed to enable %s: %d\n", consumers[i].supply, 3296 consumers[i].ret); 3297 else 3298 regulator_disable(consumers[i].consumer); 3299 } 3300 3301 return ret; 3302} 3303EXPORT_SYMBOL_GPL(regulator_bulk_enable); 3304 3305/** 3306 * regulator_bulk_disable - disable multiple regulator consumers 3307 * 3308 * @num_consumers: Number of consumers 3309 * @consumers: Consumer data; clients are stored here. 3310 * @return 0 on success, an errno on failure 3311 * 3312 * This convenience API allows consumers to disable multiple regulator 3313 * clients in a single API call. If any consumers cannot be disabled 3314 * then any others that were disabled will be enabled again prior to 3315 * return. 3316 */ 3317int regulator_bulk_disable(int num_consumers, 3318 struct regulator_bulk_data *consumers) 3319{ 3320 int i; 3321 int ret, r; 3322 3323 for (i = num_consumers - 1; i >= 0; --i) { 3324 ret = regulator_disable(consumers[i].consumer); 3325 if (ret != 0) 3326 goto err; 3327 } 3328 3329 return 0; 3330 3331err: 3332 pr_err("Failed to disable %s: %d\n", consumers[i].supply, ret); 3333 for (++i; i < num_consumers; ++i) { 3334 r = regulator_enable(consumers[i].consumer); 3335 if (r != 0) 3336 pr_err("Failed to reename %s: %d\n", 3337 consumers[i].supply, r); 3338 } 3339 3340 return ret; 3341} 3342EXPORT_SYMBOL_GPL(regulator_bulk_disable); 3343 3344/** 3345 * regulator_bulk_force_disable - force disable multiple regulator consumers 3346 * 3347 * @num_consumers: Number of consumers 3348 * @consumers: Consumer data; clients are stored here. 3349 * @return 0 on success, an errno on failure 3350 * 3351 * This convenience API allows consumers to forcibly disable multiple regulator 3352 * clients in a single API call. 3353 * NOTE: This should be used for situations when device damage will 3354 * likely occur if the regulators are not disabled (e.g. over temp). 3355 * Although regulator_force_disable function call for some consumers can 3356 * return error numbers, the function is called for all consumers. 3357 */ 3358int regulator_bulk_force_disable(int num_consumers, 3359 struct regulator_bulk_data *consumers) 3360{ 3361 int i; 3362 int ret; 3363 3364 for (i = 0; i < num_consumers; i++) 3365 consumers[i].ret = 3366 regulator_force_disable(consumers[i].consumer); 3367 3368 for (i = 0; i < num_consumers; i++) { 3369 if (consumers[i].ret != 0) { 3370 ret = consumers[i].ret; 3371 goto out; 3372 } 3373 } 3374 3375 return 0; 3376out: 3377 return ret; 3378} 3379EXPORT_SYMBOL_GPL(regulator_bulk_force_disable); 3380 3381/** 3382 * regulator_bulk_free - free multiple regulator consumers 3383 * 3384 * @num_consumers: Number of consumers 3385 * @consumers: Consumer data; clients are stored here. 3386 * 3387 * This convenience API allows consumers to free multiple regulator 3388 * clients in a single API call. 3389 */ 3390void regulator_bulk_free(int num_consumers, 3391 struct regulator_bulk_data *consumers) 3392{ 3393 int i; 3394 3395 for (i = 0; i < num_consumers; i++) { 3396 regulator_put(consumers[i].consumer); 3397 consumers[i].consumer = NULL; 3398 } 3399} 3400EXPORT_SYMBOL_GPL(regulator_bulk_free); 3401 3402/** 3403 * regulator_notifier_call_chain - call regulator event notifier 3404 * @rdev: regulator source 3405 * @event: notifier block 3406 * @data: callback-specific data. 3407 * 3408 * Called by regulator drivers to notify clients a regulator event has 3409 * occurred. We also notify regulator clients downstream. 3410 * Note lock must be held by caller. 3411 */ 3412int regulator_notifier_call_chain(struct regulator_dev *rdev, 3413 unsigned long event, void *data) 3414{ 3415 _notifier_call_chain(rdev, event, data); 3416 return NOTIFY_DONE; 3417 3418} 3419EXPORT_SYMBOL_GPL(regulator_notifier_call_chain); 3420 3421/** 3422 * regulator_mode_to_status - convert a regulator mode into a status 3423 * 3424 * @mode: Mode to convert 3425 * 3426 * Convert a regulator mode into a status. 3427 */ 3428int regulator_mode_to_status(unsigned int mode) 3429{ 3430 switch (mode) { 3431 case REGULATOR_MODE_FAST: 3432 return REGULATOR_STATUS_FAST; 3433 case REGULATOR_MODE_NORMAL: 3434 return REGULATOR_STATUS_NORMAL; 3435 case REGULATOR_MODE_IDLE: 3436 return REGULATOR_STATUS_IDLE; 3437 case REGULATOR_MODE_STANDBY: 3438 return REGULATOR_STATUS_STANDBY; 3439 default: 3440 return REGULATOR_STATUS_UNDEFINED; 3441 } 3442} 3443EXPORT_SYMBOL_GPL(regulator_mode_to_status); 3444 3445static struct attribute *regulator_dev_attrs[] = { 3446 &dev_attr_name.attr, 3447 &dev_attr_num_users.attr, 3448 &dev_attr_type.attr, 3449 &dev_attr_microvolts.attr, 3450 &dev_attr_microamps.attr, 3451 &dev_attr_opmode.attr, 3452 &dev_attr_state.attr, 3453 &dev_attr_status.attr, 3454 &dev_attr_bypass.attr, 3455 &dev_attr_requested_microamps.attr, 3456 &dev_attr_min_microvolts.attr, 3457 &dev_attr_max_microvolts.attr, 3458 &dev_attr_min_microamps.attr, 3459 &dev_attr_max_microamps.attr, 3460 &dev_attr_suspend_standby_state.attr, 3461 &dev_attr_suspend_mem_state.attr, 3462 &dev_attr_suspend_disk_state.attr, 3463 &dev_attr_suspend_standby_microvolts.attr, 3464 &dev_attr_suspend_mem_microvolts.attr, 3465 &dev_attr_suspend_disk_microvolts.attr, 3466 &dev_attr_suspend_standby_mode.attr, 3467 &dev_attr_suspend_mem_mode.attr, 3468 &dev_attr_suspend_disk_mode.attr, 3469 NULL 3470}; 3471 3472/* 3473 * To avoid cluttering sysfs (and memory) with useless state, only 3474 * create attributes that can be meaningfully displayed. 3475 */ 3476static umode_t regulator_attr_is_visible(struct kobject *kobj, 3477 struct attribute *attr, int idx) 3478{ 3479 struct device *dev = kobj_to_dev(kobj); 3480 struct regulator_dev *rdev = container_of(dev, struct regulator_dev, dev); 3481 const struct regulator_ops *ops = rdev->desc->ops; 3482 umode_t mode = attr->mode; 3483 3484 /* these three are always present */ 3485 if (attr == &dev_attr_name.attr || 3486 attr == &dev_attr_num_users.attr || 3487 attr == &dev_attr_type.attr) 3488 return mode; 3489 3490 /* some attributes need specific methods to be displayed */ 3491 if (attr == &dev_attr_microvolts.attr) { 3492 if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) || 3493 (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) || 3494 (ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) || 3495 (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1)) 3496 return mode; 3497 return 0; 3498 } 3499 3500 if (attr == &dev_attr_microamps.attr) 3501 return ops->get_current_limit ? mode : 0; 3502 3503 if (attr == &dev_attr_opmode.attr) 3504 return ops->get_mode ? mode : 0; 3505 3506 if (attr == &dev_attr_state.attr) 3507 return (rdev->ena_pin || ops->is_enabled) ? mode : 0; 3508 3509 if (attr == &dev_attr_status.attr) 3510 return ops->get_status ? mode : 0; 3511 3512 if (attr == &dev_attr_bypass.attr) 3513 return ops->get_bypass ? mode : 0; 3514 3515 /* some attributes are type-specific */ 3516 if (attr == &dev_attr_requested_microamps.attr) 3517 return rdev->desc->type == REGULATOR_CURRENT ? mode : 0; 3518 3519 /* constraints need specific supporting methods */ 3520 if (attr == &dev_attr_min_microvolts.attr || 3521 attr == &dev_attr_max_microvolts.attr) 3522 return (ops->set_voltage || ops->set_voltage_sel) ? mode : 0; 3523 3524 if (attr == &dev_attr_min_microamps.attr || 3525 attr == &dev_attr_max_microamps.attr) 3526 return ops->set_current_limit ? mode : 0; 3527 3528 if (attr == &dev_attr_suspend_standby_state.attr || 3529 attr == &dev_attr_suspend_mem_state.attr || 3530 attr == &dev_attr_suspend_disk_state.attr) 3531 return mode; 3532 3533 if (attr == &dev_attr_suspend_standby_microvolts.attr || 3534 attr == &dev_attr_suspend_mem_microvolts.attr || 3535 attr == &dev_attr_suspend_disk_microvolts.attr) 3536 return ops->set_suspend_voltage ? mode : 0; 3537 3538 if (attr == &dev_attr_suspend_standby_mode.attr || 3539 attr == &dev_attr_suspend_mem_mode.attr || 3540 attr == &dev_attr_suspend_disk_mode.attr) 3541 return ops->set_suspend_mode ? mode : 0; 3542 3543 return mode; 3544} 3545 3546static const struct attribute_group regulator_dev_group = { 3547 .attrs = regulator_dev_attrs, 3548 .is_visible = regulator_attr_is_visible, 3549}; 3550 3551static const struct attribute_group *regulator_dev_groups[] = { 3552 ®ulator_dev_group, 3553 NULL 3554}; 3555 3556static void regulator_dev_release(struct device *dev) 3557{ 3558 struct regulator_dev *rdev = dev_get_drvdata(dev); 3559 kfree(rdev); 3560} 3561 3562static struct class regulator_class = { 3563 .name = "regulator", 3564 .dev_release = regulator_dev_release, 3565 .dev_groups = regulator_dev_groups, 3566}; 3567 3568static void rdev_init_debugfs(struct regulator_dev *rdev) 3569{ 3570 struct device *parent = rdev->dev.parent; 3571 const char *rname = rdev_get_name(rdev); 3572 char name[NAME_MAX]; 3573 3574 /* Avoid duplicate debugfs directory names */ 3575 if (parent && rname == rdev->desc->name) { 3576 snprintf(name, sizeof(name), "%s-%s", dev_name(parent), 3577 rname); 3578 rname = name; 3579 } 3580 3581 rdev->debugfs = debugfs_create_dir(rname, debugfs_root); 3582 if (!rdev->debugfs) { 3583 rdev_warn(rdev, "Failed to create debugfs directory\n"); 3584 return; 3585 } 3586 3587 debugfs_create_u32("use_count", 0444, rdev->debugfs, 3588 &rdev->use_count); 3589 debugfs_create_u32("open_count", 0444, rdev->debugfs, 3590 &rdev->open_count); 3591 debugfs_create_u32("bypass_count", 0444, rdev->debugfs, 3592 &rdev->bypass_count); 3593} 3594 3595static int regulator_register_resolve_supply(struct device *dev, void *data) 3596{ 3597 return regulator_resolve_supply(dev_to_rdev(dev)); 3598} 3599 3600/** 3601 * regulator_register - register regulator 3602 * @regulator_desc: regulator to register 3603 * @cfg: runtime configuration for regulator 3604 * 3605 * Called by regulator drivers to register a regulator. 3606 * Returns a valid pointer to struct regulator_dev on success 3607 * or an ERR_PTR() on error. 3608 */ 3609struct regulator_dev * 3610regulator_register(const struct regulator_desc *regulator_desc, 3611 const struct regulator_config *cfg) 3612{ 3613 const struct regulation_constraints *constraints = NULL; 3614 const struct regulator_init_data *init_data; 3615 struct regulator_config *config = NULL; 3616 static atomic_t regulator_no = ATOMIC_INIT(-1); 3617 struct regulator_dev *rdev; 3618 struct device *dev; 3619 int ret, i; 3620 3621 if (regulator_desc == NULL || cfg == NULL) 3622 return ERR_PTR(-EINVAL); 3623 3624 dev = cfg->dev; 3625 WARN_ON(!dev); 3626 3627 if (regulator_desc->name == NULL || regulator_desc->ops == NULL) 3628 return ERR_PTR(-EINVAL); 3629 3630 if (regulator_desc->type != REGULATOR_VOLTAGE && 3631 regulator_desc->type != REGULATOR_CURRENT) 3632 return ERR_PTR(-EINVAL); 3633 3634 /* Only one of each should be implemented */ 3635 WARN_ON(regulator_desc->ops->get_voltage && 3636 regulator_desc->ops->get_voltage_sel); 3637 WARN_ON(regulator_desc->ops->set_voltage && 3638 regulator_desc->ops->set_voltage_sel); 3639 3640 /* If we're using selectors we must implement list_voltage. */ 3641 if (regulator_desc->ops->get_voltage_sel && 3642 !regulator_desc->ops->list_voltage) { 3643 return ERR_PTR(-EINVAL); 3644 } 3645 if (regulator_desc->ops->set_voltage_sel && 3646 !regulator_desc->ops->list_voltage) { 3647 return ERR_PTR(-EINVAL); 3648 } 3649 3650 rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL); 3651 if (rdev == NULL) 3652 return ERR_PTR(-ENOMEM); 3653 3654 /* 3655 * Duplicate the config so the driver could override it after 3656 * parsing init data. 3657 */ 3658 config = kmemdup(cfg, sizeof(*cfg), GFP_KERNEL); 3659 if (config == NULL) { 3660 kfree(rdev); 3661 return ERR_PTR(-ENOMEM); 3662 } 3663 3664 init_data = regulator_of_get_init_data(dev, regulator_desc, config, 3665 &rdev->dev.of_node); 3666 if (!init_data) { 3667 init_data = config->init_data; 3668 rdev->dev.of_node = of_node_get(config->of_node); 3669 } 3670 3671 mutex_lock(®ulator_list_mutex); 3672 3673 mutex_init(&rdev->mutex); 3674 rdev->reg_data = config->driver_data; 3675 rdev->owner = regulator_desc->owner; 3676 rdev->desc = regulator_desc; 3677 if (config->regmap) 3678 rdev->regmap = config->regmap; 3679 else if (dev_get_regmap(dev, NULL)) 3680 rdev->regmap = dev_get_regmap(dev, NULL); 3681 else if (dev->parent) 3682 rdev->regmap = dev_get_regmap(dev->parent, NULL); 3683 INIT_LIST_HEAD(&rdev->consumer_list); 3684 INIT_LIST_HEAD(&rdev->list); 3685 BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier); 3686 INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work); 3687 3688 /* preform any regulator specific init */ 3689 if (init_data && init_data->regulator_init) { 3690 ret = init_data->regulator_init(rdev->reg_data); 3691 if (ret < 0) 3692 goto clean; 3693 } 3694 3695 /* register with sysfs */ 3696 rdev->dev.class = ®ulator_class; 3697 rdev->dev.parent = dev; 3698 dev_set_name(&rdev->dev, "regulator.%lu", 3699 (unsigned long) atomic_inc_return(®ulator_no)); 3700 ret = device_register(&rdev->dev); 3701 if (ret != 0) { 3702 put_device(&rdev->dev); 3703 goto clean; 3704 } 3705 3706 dev_set_drvdata(&rdev->dev, rdev); 3707 3708 if ((config->ena_gpio || config->ena_gpio_initialized) && 3709 gpio_is_valid(config->ena_gpio)) { 3710 ret = regulator_ena_gpio_request(rdev, config); 3711 if (ret != 0) { 3712 rdev_err(rdev, "Failed to request enable GPIO%d: %d\n", 3713 config->ena_gpio, ret); 3714 goto wash; 3715 } 3716 } 3717 3718 /* set regulator constraints */ 3719 if (init_data) 3720 constraints = &init_data->constraints; 3721 3722 ret = set_machine_constraints(rdev, constraints); 3723 if (ret < 0) 3724 goto scrub; 3725 3726 if (init_data && init_data->supply_regulator) 3727 rdev->supply_name = init_data->supply_regulator; 3728 else if (regulator_desc->supply_name) 3729 rdev->supply_name = regulator_desc->supply_name; 3730 3731 /* add consumers devices */ 3732 if (init_data) { 3733 for (i = 0; i < init_data->num_consumer_supplies; i++) { 3734 ret = set_consumer_device_supply(rdev, 3735 init_data->consumer_supplies[i].dev_name, 3736 init_data->consumer_supplies[i].supply); 3737 if (ret < 0) { 3738 dev_err(dev, "Failed to set supply %s\n", 3739 init_data->consumer_supplies[i].supply); 3740 goto unset_supplies; 3741 } 3742 } 3743 } 3744 3745 list_add(&rdev->list, ®ulator_list); 3746 3747 rdev_init_debugfs(rdev); 3748 3749 /* try to resolve regulators supply since a new one was registered */ 3750 class_for_each_device(®ulator_class, NULL, NULL, 3751 regulator_register_resolve_supply); 3752out: 3753 mutex_unlock(®ulator_list_mutex); 3754 kfree(config); 3755 return rdev; 3756 3757unset_supplies: 3758 unset_regulator_supplies(rdev); 3759 3760scrub: 3761 regulator_ena_gpio_free(rdev); 3762 kfree(rdev->constraints); 3763wash: 3764 device_unregister(&rdev->dev); 3765 /* device core frees rdev */ 3766 rdev = ERR_PTR(ret); 3767 goto out; 3768 3769clean: 3770 kfree(rdev); 3771 rdev = ERR_PTR(ret); 3772 goto out; 3773} 3774EXPORT_SYMBOL_GPL(regulator_register); 3775 3776/** 3777 * regulator_unregister - unregister regulator 3778 * @rdev: regulator to unregister 3779 * 3780 * Called by regulator drivers to unregister a regulator. 3781 */ 3782void regulator_unregister(struct regulator_dev *rdev) 3783{ 3784 if (rdev == NULL) 3785 return; 3786 3787 if (rdev->supply) { 3788 while (rdev->use_count--) 3789 regulator_disable(rdev->supply); 3790 regulator_put(rdev->supply); 3791 } 3792 mutex_lock(®ulator_list_mutex); 3793 debugfs_remove_recursive(rdev->debugfs); 3794 flush_work(&rdev->disable_work.work); 3795 WARN_ON(rdev->open_count); 3796 unset_regulator_supplies(rdev); 3797 list_del(&rdev->list); 3798 kfree(rdev->constraints); 3799 regulator_ena_gpio_free(rdev); 3800 of_node_put(rdev->dev.of_node); 3801 device_unregister(&rdev->dev); 3802 mutex_unlock(®ulator_list_mutex); 3803} 3804EXPORT_SYMBOL_GPL(regulator_unregister); 3805 3806/** 3807 * regulator_suspend_prepare - prepare regulators for system wide suspend 3808 * @state: system suspend state 3809 * 3810 * Configure each regulator with it's suspend operating parameters for state. 3811 * This will usually be called by machine suspend code prior to supending. 3812 */ 3813int regulator_suspend_prepare(suspend_state_t state) 3814{ 3815 struct regulator_dev *rdev; 3816 int ret = 0; 3817 3818 /* ON is handled by regulator active state */ 3819 if (state == PM_SUSPEND_ON) 3820 return -EINVAL; 3821 3822 mutex_lock(®ulator_list_mutex); 3823 list_for_each_entry(rdev, ®ulator_list, list) { 3824 3825 mutex_lock(&rdev->mutex); 3826 ret = suspend_prepare(rdev, state); 3827 mutex_unlock(&rdev->mutex); 3828 3829 if (ret < 0) { 3830 rdev_err(rdev, "failed to prepare\n"); 3831 goto out; 3832 } 3833 } 3834out: 3835 mutex_unlock(®ulator_list_mutex); 3836 return ret; 3837} 3838EXPORT_SYMBOL_GPL(regulator_suspend_prepare); 3839 3840/** 3841 * regulator_suspend_finish - resume regulators from system wide suspend 3842 * 3843 * Turn on regulators that might be turned off by regulator_suspend_prepare 3844 * and that should be turned on according to the regulators properties. 3845 */ 3846int regulator_suspend_finish(void) 3847{ 3848 struct regulator_dev *rdev; 3849 int ret = 0, error; 3850 3851 mutex_lock(®ulator_list_mutex); 3852 list_for_each_entry(rdev, ®ulator_list, list) { 3853 mutex_lock(&rdev->mutex); 3854 if (rdev->use_count > 0 || rdev->constraints->always_on) { 3855 if (!_regulator_is_enabled(rdev)) { 3856 error = _regulator_do_enable(rdev); 3857 if (error) 3858 ret = error; 3859 } 3860 } else { 3861 if (!have_full_constraints()) 3862 goto unlock; 3863 if (!_regulator_is_enabled(rdev)) 3864 goto unlock; 3865 3866 error = _regulator_do_disable(rdev); 3867 if (error) 3868 ret = error; 3869 } 3870unlock: 3871 mutex_unlock(&rdev->mutex); 3872 } 3873 mutex_unlock(®ulator_list_mutex); 3874 return ret; 3875} 3876EXPORT_SYMBOL_GPL(regulator_suspend_finish); 3877 3878/** 3879 * regulator_has_full_constraints - the system has fully specified constraints 3880 * 3881 * Calling this function will cause the regulator API to disable all 3882 * regulators which have a zero use count and don't have an always_on 3883 * constraint in a late_initcall. 3884 * 3885 * The intention is that this will become the default behaviour in a 3886 * future kernel release so users are encouraged to use this facility 3887 * now. 3888 */ 3889void regulator_has_full_constraints(void) 3890{ 3891 has_full_constraints = 1; 3892} 3893EXPORT_SYMBOL_GPL(regulator_has_full_constraints); 3894 3895/** 3896 * rdev_get_drvdata - get rdev regulator driver data 3897 * @rdev: regulator 3898 * 3899 * Get rdev regulator driver private data. This call can be used in the 3900 * regulator driver context. 3901 */ 3902void *rdev_get_drvdata(struct regulator_dev *rdev) 3903{ 3904 return rdev->reg_data; 3905} 3906EXPORT_SYMBOL_GPL(rdev_get_drvdata); 3907 3908/** 3909 * regulator_get_drvdata - get regulator driver data 3910 * @regulator: regulator 3911 * 3912 * Get regulator driver private data. This call can be used in the consumer 3913 * driver context when non API regulator specific functions need to be called. 3914 */ 3915void *regulator_get_drvdata(struct regulator *regulator) 3916{ 3917 return regulator->rdev->reg_data; 3918} 3919EXPORT_SYMBOL_GPL(regulator_get_drvdata); 3920 3921/** 3922 * regulator_set_drvdata - set regulator driver data 3923 * @regulator: regulator 3924 * @data: data 3925 */ 3926void regulator_set_drvdata(struct regulator *regulator, void *data) 3927{ 3928 regulator->rdev->reg_data = data; 3929} 3930EXPORT_SYMBOL_GPL(regulator_set_drvdata); 3931 3932/** 3933 * regulator_get_id - get regulator ID 3934 * @rdev: regulator 3935 */ 3936int rdev_get_id(struct regulator_dev *rdev) 3937{ 3938 return rdev->desc->id; 3939} 3940EXPORT_SYMBOL_GPL(rdev_get_id); 3941 3942struct device *rdev_get_dev(struct regulator_dev *rdev) 3943{ 3944 return &rdev->dev; 3945} 3946EXPORT_SYMBOL_GPL(rdev_get_dev); 3947 3948void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data) 3949{ 3950 return reg_init_data->driver_data; 3951} 3952EXPORT_SYMBOL_GPL(regulator_get_init_drvdata); 3953 3954#ifdef CONFIG_DEBUG_FS 3955static ssize_t supply_map_read_file(struct file *file, char __user *user_buf, 3956 size_t count, loff_t *ppos) 3957{ 3958 char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL); 3959 ssize_t len, ret = 0; 3960 struct regulator_map *map; 3961 3962 if (!buf) 3963 return -ENOMEM; 3964 3965 list_for_each_entry(map, ®ulator_map_list, list) { 3966 len = snprintf(buf + ret, PAGE_SIZE - ret, 3967 "%s -> %s.%s\n", 3968 rdev_get_name(map->regulator), map->dev_name, 3969 map->supply); 3970 if (len >= 0) 3971 ret += len; 3972 if (ret > PAGE_SIZE) { 3973 ret = PAGE_SIZE; 3974 break; 3975 } 3976 } 3977 3978 ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); 3979 3980 kfree(buf); 3981 3982 return ret; 3983} 3984#endif 3985 3986static const struct file_operations supply_map_fops = { 3987#ifdef CONFIG_DEBUG_FS 3988 .read = supply_map_read_file, 3989 .llseek = default_llseek, 3990#endif 3991}; 3992 3993#ifdef CONFIG_DEBUG_FS 3994static void regulator_summary_show_subtree(struct seq_file *s, 3995 struct regulator_dev *rdev, 3996 int level) 3997{ 3998 struct list_head *list = s->private; 3999 struct regulator_dev *child; 4000 struct regulation_constraints *c; 4001 struct regulator *consumer; 4002 4003 if (!rdev) 4004 return; 4005 4006 seq_printf(s, "%*s%-*s %3d %4d %6d ", 4007 level * 3 + 1, "", 4008 30 - level * 3, rdev_get_name(rdev), 4009 rdev->use_count, rdev->open_count, rdev->bypass_count); 4010 4011 seq_printf(s, "%5dmV ", _regulator_get_voltage(rdev) / 1000); 4012 seq_printf(s, "%5dmA ", _regulator_get_current_limit(rdev) / 1000); 4013 4014 c = rdev->constraints; 4015 if (c) { 4016 switch (rdev->desc->type) { 4017 case REGULATOR_VOLTAGE: 4018 seq_printf(s, "%5dmV %5dmV ", 4019 c->min_uV / 1000, c->max_uV / 1000); 4020 break; 4021 case REGULATOR_CURRENT: 4022 seq_printf(s, "%5dmA %5dmA ", 4023 c->min_uA / 1000, c->max_uA / 1000); 4024 break; 4025 } 4026 } 4027 4028 seq_puts(s, "\n"); 4029 4030 list_for_each_entry(consumer, &rdev->consumer_list, list) { 4031 if (consumer->dev->class == ®ulator_class) 4032 continue; 4033 4034 seq_printf(s, "%*s%-*s ", 4035 (level + 1) * 3 + 1, "", 4036 30 - (level + 1) * 3, dev_name(consumer->dev)); 4037 4038 switch (rdev->desc->type) { 4039 case REGULATOR_VOLTAGE: 4040 seq_printf(s, "%37dmV %5dmV", 4041 consumer->min_uV / 1000, 4042 consumer->max_uV / 1000); 4043 break; 4044 case REGULATOR_CURRENT: 4045 break; 4046 } 4047 4048 seq_puts(s, "\n"); 4049 } 4050 4051 list_for_each_entry(child, list, list) { 4052 /* handle only non-root regulators supplied by current rdev */ 4053 if (!child->supply || child->supply->rdev != rdev) 4054 continue; 4055 4056 regulator_summary_show_subtree(s, child, level + 1); 4057 } 4058} 4059 4060static int regulator_summary_show(struct seq_file *s, void *data) 4061{ 4062 struct list_head *list = s->private; 4063 struct regulator_dev *rdev; 4064 4065 seq_puts(s, " regulator use open bypass voltage current min max\n"); 4066 seq_puts(s, "-------------------------------------------------------------------------------\n"); 4067 4068 mutex_lock(®ulator_list_mutex); 4069 4070 list_for_each_entry(rdev, list, list) { 4071 if (rdev->supply) 4072 continue; 4073 4074 regulator_summary_show_subtree(s, rdev, 0); 4075 } 4076 4077 mutex_unlock(®ulator_list_mutex); 4078 4079 return 0; 4080} 4081 4082static int regulator_summary_open(struct inode *inode, struct file *file) 4083{ 4084 return single_open(file, regulator_summary_show, inode->i_private); 4085} 4086#endif 4087 4088static const struct file_operations regulator_summary_fops = { 4089#ifdef CONFIG_DEBUG_FS 4090 .open = regulator_summary_open, 4091 .read = seq_read, 4092 .llseek = seq_lseek, 4093 .release = single_release, 4094#endif 4095}; 4096 4097static int __init regulator_init(void) 4098{ 4099 int ret; 4100 4101 ret = class_register(®ulator_class); 4102 4103 debugfs_root = debugfs_create_dir("regulator", NULL); 4104 if (!debugfs_root) 4105 pr_warn("regulator: Failed to create debugfs directory\n"); 4106 4107 debugfs_create_file("supply_map", 0444, debugfs_root, NULL, 4108 &supply_map_fops); 4109 4110 debugfs_create_file("regulator_summary", 0444, debugfs_root, 4111 ®ulator_list, ®ulator_summary_fops); 4112 4113 regulator_dummy_init(); 4114 4115 return ret; 4116} 4117 4118/* init early to allow our consumers to complete system booting */ 4119core_initcall(regulator_init); 4120 4121static int __init regulator_late_cleanup(struct device *dev, void *data) 4122{ 4123 struct regulator_dev *rdev = dev_to_rdev(dev); 4124 const struct regulator_ops *ops = rdev->desc->ops; 4125 struct regulation_constraints *c = rdev->constraints; 4126 int enabled, ret; 4127 4128 if (c && c->always_on) 4129 return 0; 4130 4131 if (c && !(c->valid_ops_mask & REGULATOR_CHANGE_STATUS)) 4132 return 0; 4133 4134 mutex_lock(&rdev->mutex); 4135 4136 if (rdev->use_count) 4137 goto unlock; 4138 4139 /* If we can't read the status assume it's on. */ 4140 if (ops->is_enabled) 4141 enabled = ops->is_enabled(rdev); 4142 else 4143 enabled = 1; 4144 4145 if (!enabled) 4146 goto unlock; 4147 4148 if (have_full_constraints()) { 4149 /* We log since this may kill the system if it goes 4150 * wrong. */ 4151 rdev_info(rdev, "disabling\n"); 4152 ret = _regulator_do_disable(rdev); 4153 if (ret != 0) 4154 rdev_err(rdev, "couldn't disable: %d\n", ret); 4155 } else { 4156 /* The intention is that in future we will 4157 * assume that full constraints are provided 4158 * so warn even if we aren't going to do 4159 * anything here. 4160 */ 4161 rdev_warn(rdev, "incomplete constraints, leaving on\n"); 4162 } 4163 4164unlock: 4165 mutex_unlock(&rdev->mutex); 4166 4167 return 0; 4168} 4169 4170static int __init regulator_init_complete(void) 4171{ 4172 /* 4173 * Since DT doesn't provide an idiomatic mechanism for 4174 * enabling full constraints and since it's much more natural 4175 * with DT to provide them just assume that a DT enabled 4176 * system has full constraints. 4177 */ 4178 if (of_have_populated_dt()) 4179 has_full_constraints = true; 4180 4181 /* If we have a full configuration then disable any regulators 4182 * we have permission to change the status for and which are 4183 * not in use or always_on. This is effectively the default 4184 * for DT and ACPI as they have full constraints. 4185 */ 4186 class_for_each_device(®ulator_class, NULL, NULL, 4187 regulator_late_cleanup); 4188 4189 return 0; 4190} 4191late_initcall_sync(regulator_init_complete); 4192