1 // SPDX-License-Identifier: GPL-2.0-or-later 2 // 3 // core.c -- Voltage/Current Regulator framework. 4 // 5 // Copyright 2007, 2008 Wolfson Microelectronics PLC. 6 // Copyright 2008 SlimLogic Ltd. 7 // 8 // Author: Liam Girdwood <lrg@slimlogic.co.uk> 9 10 #include <linux/kernel.h> 11 #include <linux/init.h> 12 #include <linux/debugfs.h> 13 #include <linux/device.h> 14 #include <linux/slab.h> 15 #include <linux/async.h> 16 #include <linux/err.h> 17 #include <linux/mutex.h> 18 #include <linux/suspend.h> 19 #include <linux/delay.h> 20 #include <linux/gpio/consumer.h> 21 #include <linux/of.h> 22 #include <linux/regmap.h> 23 #include <linux/regulator/of_regulator.h> 24 #include <linux/regulator/consumer.h> 25 #include <linux/regulator/coupler.h> 26 #include <linux/regulator/driver.h> 27 #include <linux/regulator/machine.h> 28 #include <linux/module.h> 29 30 #define CREATE_TRACE_POINTS 31 #include <trace/events/regulator.h> 32 33 #include "dummy.h" 34 #include "internal.h" 35 36 #define rdev_crit(rdev, fmt, ...) \ 37 pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 38 #define rdev_err(rdev, fmt, ...) \ 39 pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 40 #define rdev_warn(rdev, fmt, ...) \ 41 pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 42 #define rdev_info(rdev, fmt, ...) \ 43 pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 44 #define rdev_dbg(rdev, fmt, ...) \ 45 pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 46 47 static DEFINE_WW_CLASS(regulator_ww_class); 48 static DEFINE_MUTEX(regulator_nesting_mutex); 49 static DEFINE_MUTEX(regulator_list_mutex); 50 static LIST_HEAD(regulator_map_list); 51 static LIST_HEAD(regulator_ena_gpio_list); 52 static LIST_HEAD(regulator_supply_alias_list); 53 static LIST_HEAD(regulator_coupler_list); 54 static bool has_full_constraints; 55 56 static struct dentry *debugfs_root; 57 58 /* 59 * struct regulator_map 60 * 61 * Used to provide symbolic supply names to devices. 62 */ 63 struct regulator_map { 64 struct list_head list; 65 const char *dev_name; /* The dev_name() for the consumer */ 66 const char *supply; 67 struct regulator_dev *regulator; 68 }; 69 70 /* 71 * struct regulator_enable_gpio 72 * 73 * Management for shared enable GPIO pin 74 */ 75 struct regulator_enable_gpio { 76 struct list_head list; 77 struct gpio_desc *gpiod; 78 u32 enable_count; /* a number of enabled shared GPIO */ 79 u32 request_count; /* a number of requested shared GPIO */ 80 }; 81 82 /* 83 * struct regulator_supply_alias 84 * 85 * Used to map lookups for a supply onto an alternative device. 86 */ 87 struct regulator_supply_alias { 88 struct list_head list; 89 struct device *src_dev; 90 const char *src_supply; 91 struct device *alias_dev; 92 const char *alias_supply; 93 }; 94 95 static int _regulator_is_enabled(struct regulator_dev *rdev); 96 static int _regulator_disable(struct regulator *regulator); 97 static int _regulator_get_current_limit(struct regulator_dev *rdev); 98 static unsigned int _regulator_get_mode(struct regulator_dev *rdev); 99 static int _notifier_call_chain(struct regulator_dev *rdev, 100 unsigned long event, void *data); 101 static int _regulator_do_set_voltage(struct regulator_dev *rdev, 102 int min_uV, int max_uV); 103 static int regulator_balance_voltage(struct regulator_dev *rdev, 104 suspend_state_t state); 105 static struct regulator *create_regulator(struct regulator_dev *rdev, 106 struct device *dev, 107 const char *supply_name); 108 static void destroy_regulator(struct regulator *regulator); 109 static void _regulator_put(struct regulator *regulator); 110 111 const char *rdev_get_name(struct regulator_dev *rdev) 112 { 113 if (rdev->constraints && rdev->constraints->name) 114 return rdev->constraints->name; 115 else if (rdev->desc->name) 116 return rdev->desc->name; 117 else 118 return ""; 119 } 120 121 static bool have_full_constraints(void) 122 { 123 return has_full_constraints || of_have_populated_dt(); 124 } 125 126 static bool regulator_ops_is_valid(struct regulator_dev *rdev, int ops) 127 { 128 if (!rdev->constraints) { 129 rdev_err(rdev, "no constraints\n"); 130 return false; 131 } 132 133 if (rdev->constraints->valid_ops_mask & ops) 134 return true; 135 136 return false; 137 } 138 139 /** 140 * regulator_lock_nested - lock a single regulator 141 * @rdev: regulator source 142 * @ww_ctx: w/w mutex acquire context 143 * 144 * This function can be called many times by one task on 145 * a single regulator and its mutex will be locked only 146 * once. If a task, which is calling this function is other 147 * than the one, which initially locked the mutex, it will 148 * wait on mutex. 149 */ 150 static inline int regulator_lock_nested(struct regulator_dev *rdev, 151 struct ww_acquire_ctx *ww_ctx) 152 { 153 bool lock = false; 154 int ret = 0; 155 156 mutex_lock(®ulator_nesting_mutex); 157 158 if (ww_ctx || !ww_mutex_trylock(&rdev->mutex)) { 159 if (rdev->mutex_owner == current) 160 rdev->ref_cnt++; 161 else 162 lock = true; 163 164 if (lock) { 165 mutex_unlock(®ulator_nesting_mutex); 166 ret = ww_mutex_lock(&rdev->mutex, ww_ctx); 167 mutex_lock(®ulator_nesting_mutex); 168 } 169 } else { 170 lock = true; 171 } 172 173 if (lock && ret != -EDEADLK) { 174 rdev->ref_cnt++; 175 rdev->mutex_owner = current; 176 } 177 178 mutex_unlock(®ulator_nesting_mutex); 179 180 return ret; 181 } 182 183 /** 184 * regulator_lock - lock a single regulator 185 * @rdev: regulator source 186 * 187 * This function can be called many times by one task on 188 * a single regulator and its mutex will be locked only 189 * once. If a task, which is calling this function is other 190 * than the one, which initially locked the mutex, it will 191 * wait on mutex. 192 */ 193 void regulator_lock(struct regulator_dev *rdev) 194 { 195 regulator_lock_nested(rdev, NULL); 196 } 197 EXPORT_SYMBOL_GPL(regulator_lock); 198 199 /** 200 * regulator_unlock - unlock a single regulator 201 * @rdev: regulator_source 202 * 203 * This function unlocks the mutex when the 204 * reference counter reaches 0. 205 */ 206 void regulator_unlock(struct regulator_dev *rdev) 207 { 208 mutex_lock(®ulator_nesting_mutex); 209 210 if (--rdev->ref_cnt == 0) { 211 rdev->mutex_owner = NULL; 212 ww_mutex_unlock(&rdev->mutex); 213 } 214 215 WARN_ON_ONCE(rdev->ref_cnt < 0); 216 217 mutex_unlock(®ulator_nesting_mutex); 218 } 219 EXPORT_SYMBOL_GPL(regulator_unlock); 220 221 static bool regulator_supply_is_couple(struct regulator_dev *rdev) 222 { 223 struct regulator_dev *c_rdev; 224 int i; 225 226 for (i = 1; i < rdev->coupling_desc.n_coupled; i++) { 227 c_rdev = rdev->coupling_desc.coupled_rdevs[i]; 228 229 if (rdev->supply->rdev == c_rdev) 230 return true; 231 } 232 233 return false; 234 } 235 236 static void regulator_unlock_recursive(struct regulator_dev *rdev, 237 unsigned int n_coupled) 238 { 239 struct regulator_dev *c_rdev, *supply_rdev; 240 int i, supply_n_coupled; 241 242 for (i = n_coupled; i > 0; i--) { 243 c_rdev = rdev->coupling_desc.coupled_rdevs[i - 1]; 244 245 if (!c_rdev) 246 continue; 247 248 if (c_rdev->supply && !regulator_supply_is_couple(c_rdev)) { 249 supply_rdev = c_rdev->supply->rdev; 250 supply_n_coupled = supply_rdev->coupling_desc.n_coupled; 251 252 regulator_unlock_recursive(supply_rdev, 253 supply_n_coupled); 254 } 255 256 regulator_unlock(c_rdev); 257 } 258 } 259 260 static int regulator_lock_recursive(struct regulator_dev *rdev, 261 struct regulator_dev **new_contended_rdev, 262 struct regulator_dev **old_contended_rdev, 263 struct ww_acquire_ctx *ww_ctx) 264 { 265 struct regulator_dev *c_rdev; 266 int i, err; 267 268 for (i = 0; i < rdev->coupling_desc.n_coupled; i++) { 269 c_rdev = rdev->coupling_desc.coupled_rdevs[i]; 270 271 if (!c_rdev) 272 continue; 273 274 if (c_rdev != *old_contended_rdev) { 275 err = regulator_lock_nested(c_rdev, ww_ctx); 276 if (err) { 277 if (err == -EDEADLK) { 278 *new_contended_rdev = c_rdev; 279 goto err_unlock; 280 } 281 282 /* shouldn't happen */ 283 WARN_ON_ONCE(err != -EALREADY); 284 } 285 } else { 286 *old_contended_rdev = NULL; 287 } 288 289 if (c_rdev->supply && !regulator_supply_is_couple(c_rdev)) { 290 err = regulator_lock_recursive(c_rdev->supply->rdev, 291 new_contended_rdev, 292 old_contended_rdev, 293 ww_ctx); 294 if (err) { 295 regulator_unlock(c_rdev); 296 goto err_unlock; 297 } 298 } 299 } 300 301 return 0; 302 303 err_unlock: 304 regulator_unlock_recursive(rdev, i); 305 306 return err; 307 } 308 309 /** 310 * regulator_unlock_dependent - unlock regulator's suppliers and coupled 311 * regulators 312 * @rdev: regulator source 313 * @ww_ctx: w/w mutex acquire context 314 * 315 * Unlock all regulators related with rdev by coupling or supplying. 316 */ 317 static void regulator_unlock_dependent(struct regulator_dev *rdev, 318 struct ww_acquire_ctx *ww_ctx) 319 { 320 regulator_unlock_recursive(rdev, rdev->coupling_desc.n_coupled); 321 ww_acquire_fini(ww_ctx); 322 } 323 324 /** 325 * regulator_lock_dependent - lock regulator's suppliers and coupled regulators 326 * @rdev: regulator source 327 * @ww_ctx: w/w mutex acquire context 328 * 329 * This function as a wrapper on regulator_lock_recursive(), which locks 330 * all regulators related with rdev by coupling or supplying. 331 */ 332 static void regulator_lock_dependent(struct regulator_dev *rdev, 333 struct ww_acquire_ctx *ww_ctx) 334 { 335 struct regulator_dev *new_contended_rdev = NULL; 336 struct regulator_dev *old_contended_rdev = NULL; 337 int err; 338 339 mutex_lock(®ulator_list_mutex); 340 341 ww_acquire_init(ww_ctx, ®ulator_ww_class); 342 343 do { 344 if (new_contended_rdev) { 345 ww_mutex_lock_slow(&new_contended_rdev->mutex, ww_ctx); 346 old_contended_rdev = new_contended_rdev; 347 old_contended_rdev->ref_cnt++; 348 } 349 350 err = regulator_lock_recursive(rdev, 351 &new_contended_rdev, 352 &old_contended_rdev, 353 ww_ctx); 354 355 if (old_contended_rdev) 356 regulator_unlock(old_contended_rdev); 357 358 } while (err == -EDEADLK); 359 360 ww_acquire_done(ww_ctx); 361 362 mutex_unlock(®ulator_list_mutex); 363 } 364 365 /** 366 * of_get_child_regulator - get a child regulator device node 367 * based on supply name 368 * @parent: Parent device node 369 * @prop_name: Combination regulator supply name and "-supply" 370 * 371 * Traverse all child nodes. 372 * Extract the child regulator device node corresponding to the supply name. 373 * returns the device node corresponding to the regulator if found, else 374 * returns NULL. 375 */ 376 static struct device_node *of_get_child_regulator(struct device_node *parent, 377 const char *prop_name) 378 { 379 struct device_node *regnode = NULL; 380 struct device_node *child = NULL; 381 382 for_each_child_of_node(parent, child) { 383 regnode = of_parse_phandle(child, prop_name, 0); 384 385 if (!regnode) { 386 regnode = of_get_child_regulator(child, prop_name); 387 if (regnode) 388 goto err_node_put; 389 } else { 390 goto err_node_put; 391 } 392 } 393 return NULL; 394 395 err_node_put: 396 of_node_put(child); 397 return regnode; 398 } 399 400 /** 401 * of_get_regulator - get a regulator device node based on supply name 402 * @dev: Device pointer for the consumer (of regulator) device 403 * @supply: regulator supply name 404 * 405 * Extract the regulator device node corresponding to the supply name. 406 * returns the device node corresponding to the regulator if found, else 407 * returns NULL. 408 */ 409 static struct device_node *of_get_regulator(struct device *dev, const char *supply) 410 { 411 struct device_node *regnode = NULL; 412 char prop_name[32]; /* 32 is max size of property name */ 413 414 dev_dbg(dev, "Looking up %s-supply from device tree\n", supply); 415 416 snprintf(prop_name, 32, "%s-supply", supply); 417 regnode = of_parse_phandle(dev->of_node, prop_name, 0); 418 419 if (!regnode) { 420 regnode = of_get_child_regulator(dev->of_node, prop_name); 421 if (regnode) 422 return regnode; 423 424 dev_dbg(dev, "Looking up %s property in node %pOF failed\n", 425 prop_name, dev->of_node); 426 return NULL; 427 } 428 return regnode; 429 } 430 431 /* Platform voltage constraint check */ 432 int regulator_check_voltage(struct regulator_dev *rdev, 433 int *min_uV, int *max_uV) 434 { 435 BUG_ON(*min_uV > *max_uV); 436 437 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { 438 rdev_err(rdev, "voltage operation not allowed\n"); 439 return -EPERM; 440 } 441 442 if (*max_uV > rdev->constraints->max_uV) 443 *max_uV = rdev->constraints->max_uV; 444 if (*min_uV < rdev->constraints->min_uV) 445 *min_uV = rdev->constraints->min_uV; 446 447 if (*min_uV > *max_uV) { 448 rdev_err(rdev, "unsupportable voltage range: %d-%duV\n", 449 *min_uV, *max_uV); 450 return -EINVAL; 451 } 452 453 return 0; 454 } 455 456 /* return 0 if the state is valid */ 457 static int regulator_check_states(suspend_state_t state) 458 { 459 return (state > PM_SUSPEND_MAX || state == PM_SUSPEND_TO_IDLE); 460 } 461 462 /* Make sure we select a voltage that suits the needs of all 463 * regulator consumers 464 */ 465 int regulator_check_consumers(struct regulator_dev *rdev, 466 int *min_uV, int *max_uV, 467 suspend_state_t state) 468 { 469 struct regulator *regulator; 470 struct regulator_voltage *voltage; 471 472 list_for_each_entry(regulator, &rdev->consumer_list, list) { 473 voltage = ®ulator->voltage[state]; 474 /* 475 * Assume consumers that didn't say anything are OK 476 * with anything in the constraint range. 477 */ 478 if (!voltage->min_uV && !voltage->max_uV) 479 continue; 480 481 if (*max_uV > voltage->max_uV) 482 *max_uV = voltage->max_uV; 483 if (*min_uV < voltage->min_uV) 484 *min_uV = voltage->min_uV; 485 } 486 487 if (*min_uV > *max_uV) { 488 rdev_err(rdev, "Restricting voltage, %u-%uuV\n", 489 *min_uV, *max_uV); 490 return -EINVAL; 491 } 492 493 return 0; 494 } 495 496 /* current constraint check */ 497 static int regulator_check_current_limit(struct regulator_dev *rdev, 498 int *min_uA, int *max_uA) 499 { 500 BUG_ON(*min_uA > *max_uA); 501 502 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_CURRENT)) { 503 rdev_err(rdev, "current operation not allowed\n"); 504 return -EPERM; 505 } 506 507 if (*max_uA > rdev->constraints->max_uA) 508 *max_uA = rdev->constraints->max_uA; 509 if (*min_uA < rdev->constraints->min_uA) 510 *min_uA = rdev->constraints->min_uA; 511 512 if (*min_uA > *max_uA) { 513 rdev_err(rdev, "unsupportable current range: %d-%duA\n", 514 *min_uA, *max_uA); 515 return -EINVAL; 516 } 517 518 return 0; 519 } 520 521 /* operating mode constraint check */ 522 static int regulator_mode_constrain(struct regulator_dev *rdev, 523 unsigned int *mode) 524 { 525 switch (*mode) { 526 case REGULATOR_MODE_FAST: 527 case REGULATOR_MODE_NORMAL: 528 case REGULATOR_MODE_IDLE: 529 case REGULATOR_MODE_STANDBY: 530 break; 531 default: 532 rdev_err(rdev, "invalid mode %x specified\n", *mode); 533 return -EINVAL; 534 } 535 536 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_MODE)) { 537 rdev_err(rdev, "mode operation not allowed\n"); 538 return -EPERM; 539 } 540 541 /* The modes are bitmasks, the most power hungry modes having 542 * the lowest values. If the requested mode isn't supported 543 * try higher modes. */ 544 while (*mode) { 545 if (rdev->constraints->valid_modes_mask & *mode) 546 return 0; 547 *mode /= 2; 548 } 549 550 return -EINVAL; 551 } 552 553 static inline struct regulator_state * 554 regulator_get_suspend_state(struct regulator_dev *rdev, suspend_state_t state) 555 { 556 if (rdev->constraints == NULL) 557 return NULL; 558 559 switch (state) { 560 case PM_SUSPEND_STANDBY: 561 return &rdev->constraints->state_standby; 562 case PM_SUSPEND_MEM: 563 return &rdev->constraints->state_mem; 564 case PM_SUSPEND_MAX: 565 return &rdev->constraints->state_disk; 566 default: 567 return NULL; 568 } 569 } 570 571 static ssize_t regulator_uV_show(struct device *dev, 572 struct device_attribute *attr, char *buf) 573 { 574 struct regulator_dev *rdev = dev_get_drvdata(dev); 575 int uV; 576 577 regulator_lock(rdev); 578 uV = regulator_get_voltage_rdev(rdev); 579 regulator_unlock(rdev); 580 581 if (uV < 0) 582 return uV; 583 return sprintf(buf, "%d\n", uV); 584 } 585 static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL); 586 587 static ssize_t regulator_uA_show(struct device *dev, 588 struct device_attribute *attr, char *buf) 589 { 590 struct regulator_dev *rdev = dev_get_drvdata(dev); 591 592 return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev)); 593 } 594 static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); 595 596 static ssize_t name_show(struct device *dev, struct device_attribute *attr, 597 char *buf) 598 { 599 struct regulator_dev *rdev = dev_get_drvdata(dev); 600 601 return sprintf(buf, "%s\n", rdev_get_name(rdev)); 602 } 603 static DEVICE_ATTR_RO(name); 604 605 static const char *regulator_opmode_to_str(int mode) 606 { 607 switch (mode) { 608 case REGULATOR_MODE_FAST: 609 return "fast"; 610 case REGULATOR_MODE_NORMAL: 611 return "normal"; 612 case REGULATOR_MODE_IDLE: 613 return "idle"; 614 case REGULATOR_MODE_STANDBY: 615 return "standby"; 616 } 617 return "unknown"; 618 } 619 620 static ssize_t regulator_print_opmode(char *buf, int mode) 621 { 622 return sprintf(buf, "%s\n", regulator_opmode_to_str(mode)); 623 } 624 625 static ssize_t regulator_opmode_show(struct device *dev, 626 struct device_attribute *attr, char *buf) 627 { 628 struct regulator_dev *rdev = dev_get_drvdata(dev); 629 630 return regulator_print_opmode(buf, _regulator_get_mode(rdev)); 631 } 632 static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL); 633 634 static ssize_t regulator_print_state(char *buf, int state) 635 { 636 if (state > 0) 637 return sprintf(buf, "enabled\n"); 638 else if (state == 0) 639 return sprintf(buf, "disabled\n"); 640 else 641 return sprintf(buf, "unknown\n"); 642 } 643 644 static ssize_t regulator_state_show(struct device *dev, 645 struct device_attribute *attr, char *buf) 646 { 647 struct regulator_dev *rdev = dev_get_drvdata(dev); 648 ssize_t ret; 649 650 regulator_lock(rdev); 651 ret = regulator_print_state(buf, _regulator_is_enabled(rdev)); 652 regulator_unlock(rdev); 653 654 return ret; 655 } 656 static DEVICE_ATTR(state, 0444, regulator_state_show, NULL); 657 658 static ssize_t regulator_status_show(struct device *dev, 659 struct device_attribute *attr, char *buf) 660 { 661 struct regulator_dev *rdev = dev_get_drvdata(dev); 662 int status; 663 char *label; 664 665 status = rdev->desc->ops->get_status(rdev); 666 if (status < 0) 667 return status; 668 669 switch (status) { 670 case REGULATOR_STATUS_OFF: 671 label = "off"; 672 break; 673 case REGULATOR_STATUS_ON: 674 label = "on"; 675 break; 676 case REGULATOR_STATUS_ERROR: 677 label = "error"; 678 break; 679 case REGULATOR_STATUS_FAST: 680 label = "fast"; 681 break; 682 case REGULATOR_STATUS_NORMAL: 683 label = "normal"; 684 break; 685 case REGULATOR_STATUS_IDLE: 686 label = "idle"; 687 break; 688 case REGULATOR_STATUS_STANDBY: 689 label = "standby"; 690 break; 691 case REGULATOR_STATUS_BYPASS: 692 label = "bypass"; 693 break; 694 case REGULATOR_STATUS_UNDEFINED: 695 label = "undefined"; 696 break; 697 default: 698 return -ERANGE; 699 } 700 701 return sprintf(buf, "%s\n", label); 702 } 703 static DEVICE_ATTR(status, 0444, regulator_status_show, NULL); 704 705 static ssize_t regulator_min_uA_show(struct device *dev, 706 struct device_attribute *attr, char *buf) 707 { 708 struct regulator_dev *rdev = dev_get_drvdata(dev); 709 710 if (!rdev->constraints) 711 return sprintf(buf, "constraint not defined\n"); 712 713 return sprintf(buf, "%d\n", rdev->constraints->min_uA); 714 } 715 static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL); 716 717 static ssize_t regulator_max_uA_show(struct device *dev, 718 struct device_attribute *attr, char *buf) 719 { 720 struct regulator_dev *rdev = dev_get_drvdata(dev); 721 722 if (!rdev->constraints) 723 return sprintf(buf, "constraint not defined\n"); 724 725 return sprintf(buf, "%d\n", rdev->constraints->max_uA); 726 } 727 static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL); 728 729 static ssize_t regulator_min_uV_show(struct device *dev, 730 struct device_attribute *attr, char *buf) 731 { 732 struct regulator_dev *rdev = dev_get_drvdata(dev); 733 734 if (!rdev->constraints) 735 return sprintf(buf, "constraint not defined\n"); 736 737 return sprintf(buf, "%d\n", rdev->constraints->min_uV); 738 } 739 static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL); 740 741 static ssize_t regulator_max_uV_show(struct device *dev, 742 struct device_attribute *attr, char *buf) 743 { 744 struct regulator_dev *rdev = dev_get_drvdata(dev); 745 746 if (!rdev->constraints) 747 return sprintf(buf, "constraint not defined\n"); 748 749 return sprintf(buf, "%d\n", rdev->constraints->max_uV); 750 } 751 static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL); 752 753 static ssize_t regulator_total_uA_show(struct device *dev, 754 struct device_attribute *attr, char *buf) 755 { 756 struct regulator_dev *rdev = dev_get_drvdata(dev); 757 struct regulator *regulator; 758 int uA = 0; 759 760 regulator_lock(rdev); 761 list_for_each_entry(regulator, &rdev->consumer_list, list) { 762 if (regulator->enable_count) 763 uA += regulator->uA_load; 764 } 765 regulator_unlock(rdev); 766 return sprintf(buf, "%d\n", uA); 767 } 768 static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); 769 770 static ssize_t num_users_show(struct device *dev, struct device_attribute *attr, 771 char *buf) 772 { 773 struct regulator_dev *rdev = dev_get_drvdata(dev); 774 return sprintf(buf, "%d\n", rdev->use_count); 775 } 776 static DEVICE_ATTR_RO(num_users); 777 778 static ssize_t type_show(struct device *dev, struct device_attribute *attr, 779 char *buf) 780 { 781 struct regulator_dev *rdev = dev_get_drvdata(dev); 782 783 switch (rdev->desc->type) { 784 case REGULATOR_VOLTAGE: 785 return sprintf(buf, "voltage\n"); 786 case REGULATOR_CURRENT: 787 return sprintf(buf, "current\n"); 788 } 789 return sprintf(buf, "unknown\n"); 790 } 791 static DEVICE_ATTR_RO(type); 792 793 static ssize_t regulator_suspend_mem_uV_show(struct device *dev, 794 struct device_attribute *attr, char *buf) 795 { 796 struct regulator_dev *rdev = dev_get_drvdata(dev); 797 798 return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV); 799 } 800 static DEVICE_ATTR(suspend_mem_microvolts, 0444, 801 regulator_suspend_mem_uV_show, NULL); 802 803 static ssize_t regulator_suspend_disk_uV_show(struct device *dev, 804 struct device_attribute *attr, char *buf) 805 { 806 struct regulator_dev *rdev = dev_get_drvdata(dev); 807 808 return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV); 809 } 810 static DEVICE_ATTR(suspend_disk_microvolts, 0444, 811 regulator_suspend_disk_uV_show, NULL); 812 813 static ssize_t regulator_suspend_standby_uV_show(struct device *dev, 814 struct device_attribute *attr, char *buf) 815 { 816 struct regulator_dev *rdev = dev_get_drvdata(dev); 817 818 return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV); 819 } 820 static DEVICE_ATTR(suspend_standby_microvolts, 0444, 821 regulator_suspend_standby_uV_show, NULL); 822 823 static ssize_t regulator_suspend_mem_mode_show(struct device *dev, 824 struct device_attribute *attr, char *buf) 825 { 826 struct regulator_dev *rdev = dev_get_drvdata(dev); 827 828 return regulator_print_opmode(buf, 829 rdev->constraints->state_mem.mode); 830 } 831 static DEVICE_ATTR(suspend_mem_mode, 0444, 832 regulator_suspend_mem_mode_show, NULL); 833 834 static ssize_t regulator_suspend_disk_mode_show(struct device *dev, 835 struct device_attribute *attr, char *buf) 836 { 837 struct regulator_dev *rdev = dev_get_drvdata(dev); 838 839 return regulator_print_opmode(buf, 840 rdev->constraints->state_disk.mode); 841 } 842 static DEVICE_ATTR(suspend_disk_mode, 0444, 843 regulator_suspend_disk_mode_show, NULL); 844 845 static ssize_t regulator_suspend_standby_mode_show(struct device *dev, 846 struct device_attribute *attr, char *buf) 847 { 848 struct regulator_dev *rdev = dev_get_drvdata(dev); 849 850 return regulator_print_opmode(buf, 851 rdev->constraints->state_standby.mode); 852 } 853 static DEVICE_ATTR(suspend_standby_mode, 0444, 854 regulator_suspend_standby_mode_show, NULL); 855 856 static ssize_t regulator_suspend_mem_state_show(struct device *dev, 857 struct device_attribute *attr, char *buf) 858 { 859 struct regulator_dev *rdev = dev_get_drvdata(dev); 860 861 return regulator_print_state(buf, 862 rdev->constraints->state_mem.enabled); 863 } 864 static DEVICE_ATTR(suspend_mem_state, 0444, 865 regulator_suspend_mem_state_show, NULL); 866 867 static ssize_t regulator_suspend_disk_state_show(struct device *dev, 868 struct device_attribute *attr, char *buf) 869 { 870 struct regulator_dev *rdev = dev_get_drvdata(dev); 871 872 return regulator_print_state(buf, 873 rdev->constraints->state_disk.enabled); 874 } 875 static DEVICE_ATTR(suspend_disk_state, 0444, 876 regulator_suspend_disk_state_show, NULL); 877 878 static ssize_t regulator_suspend_standby_state_show(struct device *dev, 879 struct device_attribute *attr, char *buf) 880 { 881 struct regulator_dev *rdev = dev_get_drvdata(dev); 882 883 return regulator_print_state(buf, 884 rdev->constraints->state_standby.enabled); 885 } 886 static DEVICE_ATTR(suspend_standby_state, 0444, 887 regulator_suspend_standby_state_show, NULL); 888 889 static ssize_t regulator_bypass_show(struct device *dev, 890 struct device_attribute *attr, char *buf) 891 { 892 struct regulator_dev *rdev = dev_get_drvdata(dev); 893 const char *report; 894 bool bypass; 895 int ret; 896 897 ret = rdev->desc->ops->get_bypass(rdev, &bypass); 898 899 if (ret != 0) 900 report = "unknown"; 901 else if (bypass) 902 report = "enabled"; 903 else 904 report = "disabled"; 905 906 return sprintf(buf, "%s\n", report); 907 } 908 static DEVICE_ATTR(bypass, 0444, 909 regulator_bypass_show, NULL); 910 911 /* Calculate the new optimum regulator operating mode based on the new total 912 * consumer load. All locks held by caller */ 913 static int drms_uA_update(struct regulator_dev *rdev) 914 { 915 struct regulator *sibling; 916 int current_uA = 0, output_uV, input_uV, err; 917 unsigned int mode; 918 919 /* 920 * first check to see if we can set modes at all, otherwise just 921 * tell the consumer everything is OK. 922 */ 923 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_DRMS)) { 924 rdev_dbg(rdev, "DRMS operation not allowed\n"); 925 return 0; 926 } 927 928 if (!rdev->desc->ops->get_optimum_mode && 929 !rdev->desc->ops->set_load) 930 return 0; 931 932 if (!rdev->desc->ops->set_mode && 933 !rdev->desc->ops->set_load) 934 return -EINVAL; 935 936 /* calc total requested load */ 937 list_for_each_entry(sibling, &rdev->consumer_list, list) { 938 if (sibling->enable_count) 939 current_uA += sibling->uA_load; 940 } 941 942 current_uA += rdev->constraints->system_load; 943 944 if (rdev->desc->ops->set_load) { 945 /* set the optimum mode for our new total regulator load */ 946 err = rdev->desc->ops->set_load(rdev, current_uA); 947 if (err < 0) 948 rdev_err(rdev, "failed to set load %d\n", current_uA); 949 } else { 950 /* get output voltage */ 951 output_uV = regulator_get_voltage_rdev(rdev); 952 if (output_uV <= 0) { 953 rdev_err(rdev, "invalid output voltage found\n"); 954 return -EINVAL; 955 } 956 957 /* get input voltage */ 958 input_uV = 0; 959 if (rdev->supply) 960 input_uV = regulator_get_voltage(rdev->supply); 961 if (input_uV <= 0) 962 input_uV = rdev->constraints->input_uV; 963 if (input_uV <= 0) { 964 rdev_err(rdev, "invalid input voltage found\n"); 965 return -EINVAL; 966 } 967 968 /* now get the optimum mode for our new total regulator load */ 969 mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV, 970 output_uV, current_uA); 971 972 /* check the new mode is allowed */ 973 err = regulator_mode_constrain(rdev, &mode); 974 if (err < 0) { 975 rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n", 976 current_uA, input_uV, output_uV); 977 return err; 978 } 979 980 err = rdev->desc->ops->set_mode(rdev, mode); 981 if (err < 0) 982 rdev_err(rdev, "failed to set optimum mode %x\n", mode); 983 } 984 985 return err; 986 } 987 988 static int suspend_set_state(struct regulator_dev *rdev, 989 suspend_state_t state) 990 { 991 int ret = 0; 992 struct regulator_state *rstate; 993 994 rstate = regulator_get_suspend_state(rdev, state); 995 if (rstate == NULL) 996 return 0; 997 998 /* If we have no suspend mode configuration don't set anything; 999 * only warn if the driver implements set_suspend_voltage or 1000 * set_suspend_mode callback. 1001 */ 1002 if (rstate->enabled != ENABLE_IN_SUSPEND && 1003 rstate->enabled != DISABLE_IN_SUSPEND) { 1004 if (rdev->desc->ops->set_suspend_voltage || 1005 rdev->desc->ops->set_suspend_mode) 1006 rdev_warn(rdev, "No configuration\n"); 1007 return 0; 1008 } 1009 1010 if (rstate->enabled == ENABLE_IN_SUSPEND && 1011 rdev->desc->ops->set_suspend_enable) 1012 ret = rdev->desc->ops->set_suspend_enable(rdev); 1013 else if (rstate->enabled == DISABLE_IN_SUSPEND && 1014 rdev->desc->ops->set_suspend_disable) 1015 ret = rdev->desc->ops->set_suspend_disable(rdev); 1016 else /* OK if set_suspend_enable or set_suspend_disable is NULL */ 1017 ret = 0; 1018 1019 if (ret < 0) { 1020 rdev_err(rdev, "failed to enabled/disable\n"); 1021 return ret; 1022 } 1023 1024 if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) { 1025 ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV); 1026 if (ret < 0) { 1027 rdev_err(rdev, "failed to set voltage\n"); 1028 return ret; 1029 } 1030 } 1031 1032 if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) { 1033 ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode); 1034 if (ret < 0) { 1035 rdev_err(rdev, "failed to set mode\n"); 1036 return ret; 1037 } 1038 } 1039 1040 return ret; 1041 } 1042 1043 static void print_constraints(struct regulator_dev *rdev) 1044 { 1045 struct regulation_constraints *constraints = rdev->constraints; 1046 char buf[160] = ""; 1047 size_t len = sizeof(buf) - 1; 1048 int count = 0; 1049 int ret; 1050 1051 if (constraints->min_uV && constraints->max_uV) { 1052 if (constraints->min_uV == constraints->max_uV) 1053 count += scnprintf(buf + count, len - count, "%d mV ", 1054 constraints->min_uV / 1000); 1055 else 1056 count += scnprintf(buf + count, len - count, 1057 "%d <--> %d mV ", 1058 constraints->min_uV / 1000, 1059 constraints->max_uV / 1000); 1060 } 1061 1062 if (!constraints->min_uV || 1063 constraints->min_uV != constraints->max_uV) { 1064 ret = regulator_get_voltage_rdev(rdev); 1065 if (ret > 0) 1066 count += scnprintf(buf + count, len - count, 1067 "at %d mV ", ret / 1000); 1068 } 1069 1070 if (constraints->uV_offset) 1071 count += scnprintf(buf + count, len - count, "%dmV offset ", 1072 constraints->uV_offset / 1000); 1073 1074 if (constraints->min_uA && constraints->max_uA) { 1075 if (constraints->min_uA == constraints->max_uA) 1076 count += scnprintf(buf + count, len - count, "%d mA ", 1077 constraints->min_uA / 1000); 1078 else 1079 count += scnprintf(buf + count, len - count, 1080 "%d <--> %d mA ", 1081 constraints->min_uA / 1000, 1082 constraints->max_uA / 1000); 1083 } 1084 1085 if (!constraints->min_uA || 1086 constraints->min_uA != constraints->max_uA) { 1087 ret = _regulator_get_current_limit(rdev); 1088 if (ret > 0) 1089 count += scnprintf(buf + count, len - count, 1090 "at %d mA ", ret / 1000); 1091 } 1092 1093 if (constraints->valid_modes_mask & REGULATOR_MODE_FAST) 1094 count += scnprintf(buf + count, len - count, "fast "); 1095 if (constraints->valid_modes_mask & REGULATOR_MODE_NORMAL) 1096 count += scnprintf(buf + count, len - count, "normal "); 1097 if (constraints->valid_modes_mask & REGULATOR_MODE_IDLE) 1098 count += scnprintf(buf + count, len - count, "idle "); 1099 if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY) 1100 count += scnprintf(buf + count, len - count, "standby"); 1101 1102 if (!count) 1103 scnprintf(buf, len, "no parameters"); 1104 1105 rdev_dbg(rdev, "%s\n", buf); 1106 1107 if ((constraints->min_uV != constraints->max_uV) && 1108 !regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) 1109 rdev_warn(rdev, 1110 "Voltage range but no REGULATOR_CHANGE_VOLTAGE\n"); 1111 } 1112 1113 static int machine_constraints_voltage(struct regulator_dev *rdev, 1114 struct regulation_constraints *constraints) 1115 { 1116 const struct regulator_ops *ops = rdev->desc->ops; 1117 int ret; 1118 1119 /* do we need to apply the constraint voltage */ 1120 if (rdev->constraints->apply_uV && 1121 rdev->constraints->min_uV && rdev->constraints->max_uV) { 1122 int target_min, target_max; 1123 int current_uV = regulator_get_voltage_rdev(rdev); 1124 1125 if (current_uV == -ENOTRECOVERABLE) { 1126 /* This regulator can't be read and must be initialized */ 1127 rdev_info(rdev, "Setting %d-%duV\n", 1128 rdev->constraints->min_uV, 1129 rdev->constraints->max_uV); 1130 _regulator_do_set_voltage(rdev, 1131 rdev->constraints->min_uV, 1132 rdev->constraints->max_uV); 1133 current_uV = regulator_get_voltage_rdev(rdev); 1134 } 1135 1136 if (current_uV < 0) { 1137 rdev_err(rdev, 1138 "failed to get the current voltage(%d)\n", 1139 current_uV); 1140 return current_uV; 1141 } 1142 1143 /* 1144 * If we're below the minimum voltage move up to the 1145 * minimum voltage, if we're above the maximum voltage 1146 * then move down to the maximum. 1147 */ 1148 target_min = current_uV; 1149 target_max = current_uV; 1150 1151 if (current_uV < rdev->constraints->min_uV) { 1152 target_min = rdev->constraints->min_uV; 1153 target_max = rdev->constraints->min_uV; 1154 } 1155 1156 if (current_uV > rdev->constraints->max_uV) { 1157 target_min = rdev->constraints->max_uV; 1158 target_max = rdev->constraints->max_uV; 1159 } 1160 1161 if (target_min != current_uV || target_max != current_uV) { 1162 rdev_info(rdev, "Bringing %duV into %d-%duV\n", 1163 current_uV, target_min, target_max); 1164 ret = _regulator_do_set_voltage( 1165 rdev, target_min, target_max); 1166 if (ret < 0) { 1167 rdev_err(rdev, 1168 "failed to apply %d-%duV constraint(%d)\n", 1169 target_min, target_max, ret); 1170 return ret; 1171 } 1172 } 1173 } 1174 1175 /* constrain machine-level voltage specs to fit 1176 * the actual range supported by this regulator. 1177 */ 1178 if (ops->list_voltage && rdev->desc->n_voltages) { 1179 int count = rdev->desc->n_voltages; 1180 int i; 1181 int min_uV = INT_MAX; 1182 int max_uV = INT_MIN; 1183 int cmin = constraints->min_uV; 1184 int cmax = constraints->max_uV; 1185 1186 /* it's safe to autoconfigure fixed-voltage supplies 1187 and the constraints are used by list_voltage. */ 1188 if (count == 1 && !cmin) { 1189 cmin = 1; 1190 cmax = INT_MAX; 1191 constraints->min_uV = cmin; 1192 constraints->max_uV = cmax; 1193 } 1194 1195 /* voltage constraints are optional */ 1196 if ((cmin == 0) && (cmax == 0)) 1197 return 0; 1198 1199 /* else require explicit machine-level constraints */ 1200 if (cmin <= 0 || cmax <= 0 || cmax < cmin) { 1201 rdev_err(rdev, "invalid voltage constraints\n"); 1202 return -EINVAL; 1203 } 1204 1205 /* no need to loop voltages if range is continuous */ 1206 if (rdev->desc->continuous_voltage_range) 1207 return 0; 1208 1209 /* initial: [cmin..cmax] valid, [min_uV..max_uV] not */ 1210 for (i = 0; i < count; i++) { 1211 int value; 1212 1213 value = ops->list_voltage(rdev, i); 1214 if (value <= 0) 1215 continue; 1216 1217 /* maybe adjust [min_uV..max_uV] */ 1218 if (value >= cmin && value < min_uV) 1219 min_uV = value; 1220 if (value <= cmax && value > max_uV) 1221 max_uV = value; 1222 } 1223 1224 /* final: [min_uV..max_uV] valid iff constraints valid */ 1225 if (max_uV < min_uV) { 1226 rdev_err(rdev, 1227 "unsupportable voltage constraints %u-%uuV\n", 1228 min_uV, max_uV); 1229 return -EINVAL; 1230 } 1231 1232 /* use regulator's subset of machine constraints */ 1233 if (constraints->min_uV < min_uV) { 1234 rdev_dbg(rdev, "override min_uV, %d -> %d\n", 1235 constraints->min_uV, min_uV); 1236 constraints->min_uV = min_uV; 1237 } 1238 if (constraints->max_uV > max_uV) { 1239 rdev_dbg(rdev, "override max_uV, %d -> %d\n", 1240 constraints->max_uV, max_uV); 1241 constraints->max_uV = max_uV; 1242 } 1243 } 1244 1245 return 0; 1246 } 1247 1248 static int machine_constraints_current(struct regulator_dev *rdev, 1249 struct regulation_constraints *constraints) 1250 { 1251 const struct regulator_ops *ops = rdev->desc->ops; 1252 int ret; 1253 1254 if (!constraints->min_uA && !constraints->max_uA) 1255 return 0; 1256 1257 if (constraints->min_uA > constraints->max_uA) { 1258 rdev_err(rdev, "Invalid current constraints\n"); 1259 return -EINVAL; 1260 } 1261 1262 if (!ops->set_current_limit || !ops->get_current_limit) { 1263 rdev_warn(rdev, "Operation of current configuration missing\n"); 1264 return 0; 1265 } 1266 1267 /* Set regulator current in constraints range */ 1268 ret = ops->set_current_limit(rdev, constraints->min_uA, 1269 constraints->max_uA); 1270 if (ret < 0) { 1271 rdev_err(rdev, "Failed to set current constraint, %d\n", ret); 1272 return ret; 1273 } 1274 1275 return 0; 1276 } 1277 1278 static int _regulator_do_enable(struct regulator_dev *rdev); 1279 1280 /** 1281 * set_machine_constraints - sets regulator constraints 1282 * @rdev: regulator source 1283 * @constraints: constraints to apply 1284 * 1285 * Allows platform initialisation code to define and constrain 1286 * regulator circuits e.g. valid voltage/current ranges, etc. NOTE: 1287 * Constraints *must* be set by platform code in order for some 1288 * regulator operations to proceed i.e. set_voltage, set_current_limit, 1289 * set_mode. 1290 */ 1291 static int set_machine_constraints(struct regulator_dev *rdev, 1292 const struct regulation_constraints *constraints) 1293 { 1294 int ret = 0; 1295 const struct regulator_ops *ops = rdev->desc->ops; 1296 1297 if (constraints) 1298 rdev->constraints = kmemdup(constraints, sizeof(*constraints), 1299 GFP_KERNEL); 1300 else 1301 rdev->constraints = kzalloc(sizeof(*constraints), 1302 GFP_KERNEL); 1303 if (!rdev->constraints) 1304 return -ENOMEM; 1305 1306 ret = machine_constraints_voltage(rdev, rdev->constraints); 1307 if (ret != 0) 1308 return ret; 1309 1310 ret = machine_constraints_current(rdev, rdev->constraints); 1311 if (ret != 0) 1312 return ret; 1313 1314 if (rdev->constraints->ilim_uA && ops->set_input_current_limit) { 1315 ret = ops->set_input_current_limit(rdev, 1316 rdev->constraints->ilim_uA); 1317 if (ret < 0) { 1318 rdev_err(rdev, "failed to set input limit\n"); 1319 return ret; 1320 } 1321 } 1322 1323 /* do we need to setup our suspend state */ 1324 if (rdev->constraints->initial_state) { 1325 ret = suspend_set_state(rdev, rdev->constraints->initial_state); 1326 if (ret < 0) { 1327 rdev_err(rdev, "failed to set suspend state\n"); 1328 return ret; 1329 } 1330 } 1331 1332 if (rdev->constraints->initial_mode) { 1333 if (!ops->set_mode) { 1334 rdev_err(rdev, "no set_mode operation\n"); 1335 return -EINVAL; 1336 } 1337 1338 ret = ops->set_mode(rdev, rdev->constraints->initial_mode); 1339 if (ret < 0) { 1340 rdev_err(rdev, "failed to set initial mode: %d\n", ret); 1341 return ret; 1342 } 1343 } else if (rdev->constraints->system_load) { 1344 /* 1345 * We'll only apply the initial system load if an 1346 * initial mode wasn't specified. 1347 */ 1348 drms_uA_update(rdev); 1349 } 1350 1351 if ((rdev->constraints->ramp_delay || rdev->constraints->ramp_disable) 1352 && ops->set_ramp_delay) { 1353 ret = ops->set_ramp_delay(rdev, rdev->constraints->ramp_delay); 1354 if (ret < 0) { 1355 rdev_err(rdev, "failed to set ramp_delay\n"); 1356 return ret; 1357 } 1358 } 1359 1360 if (rdev->constraints->pull_down && ops->set_pull_down) { 1361 ret = ops->set_pull_down(rdev); 1362 if (ret < 0) { 1363 rdev_err(rdev, "failed to set pull down\n"); 1364 return ret; 1365 } 1366 } 1367 1368 if (rdev->constraints->soft_start && ops->set_soft_start) { 1369 ret = ops->set_soft_start(rdev); 1370 if (ret < 0) { 1371 rdev_err(rdev, "failed to set soft start\n"); 1372 return ret; 1373 } 1374 } 1375 1376 if (rdev->constraints->over_current_protection 1377 && ops->set_over_current_protection) { 1378 ret = ops->set_over_current_protection(rdev); 1379 if (ret < 0) { 1380 rdev_err(rdev, "failed to set over current protection\n"); 1381 return ret; 1382 } 1383 } 1384 1385 if (rdev->constraints->active_discharge && ops->set_active_discharge) { 1386 bool ad_state = (rdev->constraints->active_discharge == 1387 REGULATOR_ACTIVE_DISCHARGE_ENABLE) ? true : false; 1388 1389 ret = ops->set_active_discharge(rdev, ad_state); 1390 if (ret < 0) { 1391 rdev_err(rdev, "failed to set active discharge\n"); 1392 return ret; 1393 } 1394 } 1395 1396 /* If the constraints say the regulator should be on at this point 1397 * and we have control then make sure it is enabled. 1398 */ 1399 if (rdev->constraints->always_on || rdev->constraints->boot_on) { 1400 if (rdev->supply) { 1401 ret = regulator_enable(rdev->supply); 1402 if (ret < 0) { 1403 _regulator_put(rdev->supply); 1404 rdev->supply = NULL; 1405 return ret; 1406 } 1407 } 1408 1409 ret = _regulator_do_enable(rdev); 1410 if (ret < 0 && ret != -EINVAL) { 1411 rdev_err(rdev, "failed to enable\n"); 1412 return ret; 1413 } 1414 1415 if (rdev->constraints->always_on) 1416 rdev->use_count++; 1417 } 1418 1419 print_constraints(rdev); 1420 return 0; 1421 } 1422 1423 /** 1424 * set_supply - set regulator supply regulator 1425 * @rdev: regulator name 1426 * @supply_rdev: supply regulator name 1427 * 1428 * Called by platform initialisation code to set the supply regulator for this 1429 * regulator. This ensures that a regulators supply will also be enabled by the 1430 * core if it's child is enabled. 1431 */ 1432 static int set_supply(struct regulator_dev *rdev, 1433 struct regulator_dev *supply_rdev) 1434 { 1435 int err; 1436 1437 rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev)); 1438 1439 if (!try_module_get(supply_rdev->owner)) 1440 return -ENODEV; 1441 1442 rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY"); 1443 if (rdev->supply == NULL) { 1444 err = -ENOMEM; 1445 return err; 1446 } 1447 supply_rdev->open_count++; 1448 1449 return 0; 1450 } 1451 1452 /** 1453 * set_consumer_device_supply - Bind a regulator to a symbolic supply 1454 * @rdev: regulator source 1455 * @consumer_dev_name: dev_name() string for device supply applies to 1456 * @supply: symbolic name for supply 1457 * 1458 * Allows platform initialisation code to map physical regulator 1459 * sources to symbolic names for supplies for use by devices. Devices 1460 * should use these symbolic names to request regulators, avoiding the 1461 * need to provide board-specific regulator names as platform data. 1462 */ 1463 static int set_consumer_device_supply(struct regulator_dev *rdev, 1464 const char *consumer_dev_name, 1465 const char *supply) 1466 { 1467 struct regulator_map *node, *new_node; 1468 int has_dev; 1469 1470 if (supply == NULL) 1471 return -EINVAL; 1472 1473 if (consumer_dev_name != NULL) 1474 has_dev = 1; 1475 else 1476 has_dev = 0; 1477 1478 new_node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL); 1479 if (new_node == NULL) 1480 return -ENOMEM; 1481 1482 new_node->regulator = rdev; 1483 new_node->supply = supply; 1484 1485 if (has_dev) { 1486 new_node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL); 1487 if (new_node->dev_name == NULL) { 1488 kfree(new_node); 1489 return -ENOMEM; 1490 } 1491 } 1492 1493 mutex_lock(®ulator_list_mutex); 1494 list_for_each_entry(node, ®ulator_map_list, list) { 1495 if (node->dev_name && consumer_dev_name) { 1496 if (strcmp(node->dev_name, consumer_dev_name) != 0) 1497 continue; 1498 } else if (node->dev_name || consumer_dev_name) { 1499 continue; 1500 } 1501 1502 if (strcmp(node->supply, supply) != 0) 1503 continue; 1504 1505 pr_debug("%s: %s/%s is '%s' supply; fail %s/%s\n", 1506 consumer_dev_name, 1507 dev_name(&node->regulator->dev), 1508 node->regulator->desc->name, 1509 supply, 1510 dev_name(&rdev->dev), rdev_get_name(rdev)); 1511 goto fail; 1512 } 1513 1514 list_add(&new_node->list, ®ulator_map_list); 1515 mutex_unlock(®ulator_list_mutex); 1516 1517 return 0; 1518 1519 fail: 1520 mutex_unlock(®ulator_list_mutex); 1521 kfree(new_node->dev_name); 1522 kfree(new_node); 1523 return -EBUSY; 1524 } 1525 1526 static void unset_regulator_supplies(struct regulator_dev *rdev) 1527 { 1528 struct regulator_map *node, *n; 1529 1530 list_for_each_entry_safe(node, n, ®ulator_map_list, list) { 1531 if (rdev == node->regulator) { 1532 list_del(&node->list); 1533 kfree(node->dev_name); 1534 kfree(node); 1535 } 1536 } 1537 } 1538 1539 #ifdef CONFIG_DEBUG_FS 1540 static ssize_t constraint_flags_read_file(struct file *file, 1541 char __user *user_buf, 1542 size_t count, loff_t *ppos) 1543 { 1544 const struct regulator *regulator = file->private_data; 1545 const struct regulation_constraints *c = regulator->rdev->constraints; 1546 char *buf; 1547 ssize_t ret; 1548 1549 if (!c) 1550 return 0; 1551 1552 buf = kmalloc(PAGE_SIZE, GFP_KERNEL); 1553 if (!buf) 1554 return -ENOMEM; 1555 1556 ret = snprintf(buf, PAGE_SIZE, 1557 "always_on: %u\n" 1558 "boot_on: %u\n" 1559 "apply_uV: %u\n" 1560 "ramp_disable: %u\n" 1561 "soft_start: %u\n" 1562 "pull_down: %u\n" 1563 "over_current_protection: %u\n", 1564 c->always_on, 1565 c->boot_on, 1566 c->apply_uV, 1567 c->ramp_disable, 1568 c->soft_start, 1569 c->pull_down, 1570 c->over_current_protection); 1571 1572 ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); 1573 kfree(buf); 1574 1575 return ret; 1576 } 1577 1578 #endif 1579 1580 static const struct file_operations constraint_flags_fops = { 1581 #ifdef CONFIG_DEBUG_FS 1582 .open = simple_open, 1583 .read = constraint_flags_read_file, 1584 .llseek = default_llseek, 1585 #endif 1586 }; 1587 1588 #define REG_STR_SIZE 64 1589 1590 static struct regulator *create_regulator(struct regulator_dev *rdev, 1591 struct device *dev, 1592 const char *supply_name) 1593 { 1594 struct regulator *regulator; 1595 int err; 1596 1597 if (dev) { 1598 char buf[REG_STR_SIZE]; 1599 int size; 1600 1601 size = snprintf(buf, REG_STR_SIZE, "%s-%s", 1602 dev->kobj.name, supply_name); 1603 if (size >= REG_STR_SIZE) 1604 return NULL; 1605 1606 supply_name = kstrdup(buf, GFP_KERNEL); 1607 if (supply_name == NULL) 1608 return NULL; 1609 } else { 1610 supply_name = kstrdup_const(supply_name, GFP_KERNEL); 1611 if (supply_name == NULL) 1612 return NULL; 1613 } 1614 1615 regulator = kzalloc(sizeof(*regulator), GFP_KERNEL); 1616 if (regulator == NULL) { 1617 kfree(supply_name); 1618 return NULL; 1619 } 1620 1621 regulator->rdev = rdev; 1622 regulator->supply_name = supply_name; 1623 1624 regulator_lock(rdev); 1625 list_add(®ulator->list, &rdev->consumer_list); 1626 regulator_unlock(rdev); 1627 1628 if (dev) { 1629 regulator->dev = dev; 1630 1631 /* Add a link to the device sysfs entry */ 1632 err = sysfs_create_link_nowarn(&rdev->dev.kobj, &dev->kobj, 1633 supply_name); 1634 if (err) { 1635 rdev_dbg(rdev, "could not add device link %s err %d\n", 1636 dev->kobj.name, err); 1637 /* non-fatal */ 1638 } 1639 } 1640 1641 regulator->debugfs = debugfs_create_dir(supply_name, 1642 rdev->debugfs); 1643 if (!regulator->debugfs) { 1644 rdev_dbg(rdev, "Failed to create debugfs directory\n"); 1645 } else { 1646 debugfs_create_u32("uA_load", 0444, regulator->debugfs, 1647 ®ulator->uA_load); 1648 debugfs_create_u32("min_uV", 0444, regulator->debugfs, 1649 ®ulator->voltage[PM_SUSPEND_ON].min_uV); 1650 debugfs_create_u32("max_uV", 0444, regulator->debugfs, 1651 ®ulator->voltage[PM_SUSPEND_ON].max_uV); 1652 debugfs_create_file("constraint_flags", 0444, 1653 regulator->debugfs, regulator, 1654 &constraint_flags_fops); 1655 } 1656 1657 /* 1658 * Check now if the regulator is an always on regulator - if 1659 * it is then we don't need to do nearly so much work for 1660 * enable/disable calls. 1661 */ 1662 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS) && 1663 _regulator_is_enabled(rdev)) 1664 regulator->always_on = true; 1665 1666 return regulator; 1667 } 1668 1669 static int _regulator_get_enable_time(struct regulator_dev *rdev) 1670 { 1671 if (rdev->constraints && rdev->constraints->enable_time) 1672 return rdev->constraints->enable_time; 1673 if (rdev->desc->ops->enable_time) 1674 return rdev->desc->ops->enable_time(rdev); 1675 return rdev->desc->enable_time; 1676 } 1677 1678 static struct regulator_supply_alias *regulator_find_supply_alias( 1679 struct device *dev, const char *supply) 1680 { 1681 struct regulator_supply_alias *map; 1682 1683 list_for_each_entry(map, ®ulator_supply_alias_list, list) 1684 if (map->src_dev == dev && strcmp(map->src_supply, supply) == 0) 1685 return map; 1686 1687 return NULL; 1688 } 1689 1690 static void regulator_supply_alias(struct device **dev, const char **supply) 1691 { 1692 struct regulator_supply_alias *map; 1693 1694 map = regulator_find_supply_alias(*dev, *supply); 1695 if (map) { 1696 dev_dbg(*dev, "Mapping supply %s to %s,%s\n", 1697 *supply, map->alias_supply, 1698 dev_name(map->alias_dev)); 1699 *dev = map->alias_dev; 1700 *supply = map->alias_supply; 1701 } 1702 } 1703 1704 static int regulator_match(struct device *dev, const void *data) 1705 { 1706 struct regulator_dev *r = dev_to_rdev(dev); 1707 1708 return strcmp(rdev_get_name(r), data) == 0; 1709 } 1710 1711 static struct regulator_dev *regulator_lookup_by_name(const char *name) 1712 { 1713 struct device *dev; 1714 1715 dev = class_find_device(®ulator_class, NULL, name, regulator_match); 1716 1717 return dev ? dev_to_rdev(dev) : NULL; 1718 } 1719 1720 /** 1721 * regulator_dev_lookup - lookup a regulator device. 1722 * @dev: device for regulator "consumer". 1723 * @supply: Supply name or regulator ID. 1724 * 1725 * If successful, returns a struct regulator_dev that corresponds to the name 1726 * @supply and with the embedded struct device refcount incremented by one. 1727 * The refcount must be dropped by calling put_device(). 1728 * On failure one of the following ERR-PTR-encoded values is returned: 1729 * -ENODEV if lookup fails permanently, -EPROBE_DEFER if lookup could succeed 1730 * in the future. 1731 */ 1732 static struct regulator_dev *regulator_dev_lookup(struct device *dev, 1733 const char *supply) 1734 { 1735 struct regulator_dev *r = NULL; 1736 struct device_node *node; 1737 struct regulator_map *map; 1738 const char *devname = NULL; 1739 1740 regulator_supply_alias(&dev, &supply); 1741 1742 /* first do a dt based lookup */ 1743 if (dev && dev->of_node) { 1744 node = of_get_regulator(dev, supply); 1745 if (node) { 1746 r = of_find_regulator_by_node(node); 1747 if (r) 1748 return r; 1749 1750 /* 1751 * We have a node, but there is no device. 1752 * assume it has not registered yet. 1753 */ 1754 return ERR_PTR(-EPROBE_DEFER); 1755 } 1756 } 1757 1758 /* if not found, try doing it non-dt way */ 1759 if (dev) 1760 devname = dev_name(dev); 1761 1762 mutex_lock(®ulator_list_mutex); 1763 list_for_each_entry(map, ®ulator_map_list, list) { 1764 /* If the mapping has a device set up it must match */ 1765 if (map->dev_name && 1766 (!devname || strcmp(map->dev_name, devname))) 1767 continue; 1768 1769 if (strcmp(map->supply, supply) == 0 && 1770 get_device(&map->regulator->dev)) { 1771 r = map->regulator; 1772 break; 1773 } 1774 } 1775 mutex_unlock(®ulator_list_mutex); 1776 1777 if (r) 1778 return r; 1779 1780 r = regulator_lookup_by_name(supply); 1781 if (r) 1782 return r; 1783 1784 return ERR_PTR(-ENODEV); 1785 } 1786 1787 static int regulator_resolve_supply(struct regulator_dev *rdev) 1788 { 1789 struct regulator_dev *r; 1790 struct device *dev = rdev->dev.parent; 1791 int ret; 1792 1793 /* No supply to resolve? */ 1794 if (!rdev->supply_name) 1795 return 0; 1796 1797 /* Supply already resolved? */ 1798 if (rdev->supply) 1799 return 0; 1800 1801 r = regulator_dev_lookup(dev, rdev->supply_name); 1802 if (IS_ERR(r)) { 1803 ret = PTR_ERR(r); 1804 1805 /* Did the lookup explicitly defer for us? */ 1806 if (ret == -EPROBE_DEFER) 1807 return ret; 1808 1809 if (have_full_constraints()) { 1810 r = dummy_regulator_rdev; 1811 get_device(&r->dev); 1812 } else { 1813 dev_err(dev, "Failed to resolve %s-supply for %s\n", 1814 rdev->supply_name, rdev->desc->name); 1815 return -EPROBE_DEFER; 1816 } 1817 } 1818 1819 /* 1820 * If the supply's parent device is not the same as the 1821 * regulator's parent device, then ensure the parent device 1822 * is bound before we resolve the supply, in case the parent 1823 * device get probe deferred and unregisters the supply. 1824 */ 1825 if (r->dev.parent && r->dev.parent != rdev->dev.parent) { 1826 if (!device_is_bound(r->dev.parent)) { 1827 put_device(&r->dev); 1828 return -EPROBE_DEFER; 1829 } 1830 } 1831 1832 /* Recursively resolve the supply of the supply */ 1833 ret = regulator_resolve_supply(r); 1834 if (ret < 0) { 1835 put_device(&r->dev); 1836 return ret; 1837 } 1838 1839 ret = set_supply(rdev, r); 1840 if (ret < 0) { 1841 put_device(&r->dev); 1842 return ret; 1843 } 1844 1845 /* 1846 * In set_machine_constraints() we may have turned this regulator on 1847 * but we couldn't propagate to the supply if it hadn't been resolved 1848 * yet. Do it now. 1849 */ 1850 if (rdev->use_count) { 1851 ret = regulator_enable(rdev->supply); 1852 if (ret < 0) { 1853 _regulator_put(rdev->supply); 1854 rdev->supply = NULL; 1855 return ret; 1856 } 1857 } 1858 1859 return 0; 1860 } 1861 1862 /* Internal regulator request function */ 1863 struct regulator *_regulator_get(struct device *dev, const char *id, 1864 enum regulator_get_type get_type) 1865 { 1866 struct regulator_dev *rdev; 1867 struct regulator *regulator; 1868 struct device_link *link; 1869 int ret; 1870 1871 if (get_type >= MAX_GET_TYPE) { 1872 dev_err(dev, "invalid type %d in %s\n", get_type, __func__); 1873 return ERR_PTR(-EINVAL); 1874 } 1875 1876 if (id == NULL) { 1877 pr_err("get() with no identifier\n"); 1878 return ERR_PTR(-EINVAL); 1879 } 1880 1881 rdev = regulator_dev_lookup(dev, id); 1882 if (IS_ERR(rdev)) { 1883 ret = PTR_ERR(rdev); 1884 1885 /* 1886 * If regulator_dev_lookup() fails with error other 1887 * than -ENODEV our job here is done, we simply return it. 1888 */ 1889 if (ret != -ENODEV) 1890 return ERR_PTR(ret); 1891 1892 if (!have_full_constraints()) { 1893 dev_warn(dev, 1894 "incomplete constraints, dummy supplies not allowed\n"); 1895 return ERR_PTR(-ENODEV); 1896 } 1897 1898 switch (get_type) { 1899 case NORMAL_GET: 1900 /* 1901 * Assume that a regulator is physically present and 1902 * enabled, even if it isn't hooked up, and just 1903 * provide a dummy. 1904 */ 1905 dev_warn(dev, "supply %s not found, using dummy regulator\n", id); 1906 rdev = dummy_regulator_rdev; 1907 get_device(&rdev->dev); 1908 break; 1909 1910 case EXCLUSIVE_GET: 1911 dev_warn(dev, 1912 "dummy supplies not allowed for exclusive requests\n"); 1913 fallthrough; 1914 1915 default: 1916 return ERR_PTR(-ENODEV); 1917 } 1918 } 1919 1920 if (rdev->exclusive) { 1921 regulator = ERR_PTR(-EPERM); 1922 put_device(&rdev->dev); 1923 return regulator; 1924 } 1925 1926 if (get_type == EXCLUSIVE_GET && rdev->open_count) { 1927 regulator = ERR_PTR(-EBUSY); 1928 put_device(&rdev->dev); 1929 return regulator; 1930 } 1931 1932 mutex_lock(®ulator_list_mutex); 1933 ret = (rdev->coupling_desc.n_resolved != rdev->coupling_desc.n_coupled); 1934 mutex_unlock(®ulator_list_mutex); 1935 1936 if (ret != 0) { 1937 regulator = ERR_PTR(-EPROBE_DEFER); 1938 put_device(&rdev->dev); 1939 return regulator; 1940 } 1941 1942 ret = regulator_resolve_supply(rdev); 1943 if (ret < 0) { 1944 regulator = ERR_PTR(ret); 1945 put_device(&rdev->dev); 1946 return regulator; 1947 } 1948 1949 if (!try_module_get(rdev->owner)) { 1950 regulator = ERR_PTR(-EPROBE_DEFER); 1951 put_device(&rdev->dev); 1952 return regulator; 1953 } 1954 1955 regulator = create_regulator(rdev, dev, id); 1956 if (regulator == NULL) { 1957 regulator = ERR_PTR(-ENOMEM); 1958 module_put(rdev->owner); 1959 put_device(&rdev->dev); 1960 return regulator; 1961 } 1962 1963 rdev->open_count++; 1964 if (get_type == EXCLUSIVE_GET) { 1965 rdev->exclusive = 1; 1966 1967 ret = _regulator_is_enabled(rdev); 1968 if (ret > 0) 1969 rdev->use_count = 1; 1970 else 1971 rdev->use_count = 0; 1972 } 1973 1974 link = device_link_add(dev, &rdev->dev, DL_FLAG_STATELESS); 1975 if (!IS_ERR_OR_NULL(link)) 1976 regulator->device_link = true; 1977 1978 return regulator; 1979 } 1980 1981 /** 1982 * regulator_get - lookup and obtain a reference to a regulator. 1983 * @dev: device for regulator "consumer" 1984 * @id: Supply name or regulator ID. 1985 * 1986 * Returns a struct regulator corresponding to the regulator producer, 1987 * or IS_ERR() condition containing errno. 1988 * 1989 * Use of supply names configured via regulator_set_device_supply() is 1990 * strongly encouraged. It is recommended that the supply name used 1991 * should match the name used for the supply and/or the relevant 1992 * device pins in the datasheet. 1993 */ 1994 struct regulator *regulator_get(struct device *dev, const char *id) 1995 { 1996 return _regulator_get(dev, id, NORMAL_GET); 1997 } 1998 EXPORT_SYMBOL_GPL(regulator_get); 1999 2000 /** 2001 * regulator_get_exclusive - obtain exclusive access to a regulator. 2002 * @dev: device for regulator "consumer" 2003 * @id: Supply name or regulator ID. 2004 * 2005 * Returns a struct regulator corresponding to the regulator producer, 2006 * or IS_ERR() condition containing errno. Other consumers will be 2007 * unable to obtain this regulator while this reference is held and the 2008 * use count for the regulator will be initialised to reflect the current 2009 * state of the regulator. 2010 * 2011 * This is intended for use by consumers which cannot tolerate shared 2012 * use of the regulator such as those which need to force the 2013 * regulator off for correct operation of the hardware they are 2014 * controlling. 2015 * 2016 * Use of supply names configured via regulator_set_device_supply() is 2017 * strongly encouraged. It is recommended that the supply name used 2018 * should match the name used for the supply and/or the relevant 2019 * device pins in the datasheet. 2020 */ 2021 struct regulator *regulator_get_exclusive(struct device *dev, const char *id) 2022 { 2023 return _regulator_get(dev, id, EXCLUSIVE_GET); 2024 } 2025 EXPORT_SYMBOL_GPL(regulator_get_exclusive); 2026 2027 /** 2028 * regulator_get_optional - obtain optional access to a regulator. 2029 * @dev: device for regulator "consumer" 2030 * @id: Supply name or regulator ID. 2031 * 2032 * Returns a struct regulator corresponding to the regulator producer, 2033 * or IS_ERR() condition containing errno. 2034 * 2035 * This is intended for use by consumers for devices which can have 2036 * some supplies unconnected in normal use, such as some MMC devices. 2037 * It can allow the regulator core to provide stub supplies for other 2038 * supplies requested using normal regulator_get() calls without 2039 * disrupting the operation of drivers that can handle absent 2040 * supplies. 2041 * 2042 * Use of supply names configured via regulator_set_device_supply() is 2043 * strongly encouraged. It is recommended that the supply name used 2044 * should match the name used for the supply and/or the relevant 2045 * device pins in the datasheet. 2046 */ 2047 struct regulator *regulator_get_optional(struct device *dev, const char *id) 2048 { 2049 return _regulator_get(dev, id, OPTIONAL_GET); 2050 } 2051 EXPORT_SYMBOL_GPL(regulator_get_optional); 2052 2053 static void destroy_regulator(struct regulator *regulator) 2054 { 2055 struct regulator_dev *rdev = regulator->rdev; 2056 2057 debugfs_remove_recursive(regulator->debugfs); 2058 2059 if (regulator->dev) { 2060 if (regulator->device_link) 2061 device_link_remove(regulator->dev, &rdev->dev); 2062 2063 /* remove any sysfs entries */ 2064 sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); 2065 } 2066 2067 regulator_lock(rdev); 2068 list_del(®ulator->list); 2069 2070 rdev->open_count--; 2071 rdev->exclusive = 0; 2072 regulator_unlock(rdev); 2073 2074 kfree_const(regulator->supply_name); 2075 kfree(regulator); 2076 } 2077 2078 /* regulator_list_mutex lock held by regulator_put() */ 2079 static void _regulator_put(struct regulator *regulator) 2080 { 2081 struct regulator_dev *rdev; 2082 2083 if (IS_ERR_OR_NULL(regulator)) 2084 return; 2085 2086 lockdep_assert_held_once(®ulator_list_mutex); 2087 2088 /* Docs say you must disable before calling regulator_put() */ 2089 WARN_ON(regulator->enable_count); 2090 2091 rdev = regulator->rdev; 2092 2093 destroy_regulator(regulator); 2094 2095 module_put(rdev->owner); 2096 put_device(&rdev->dev); 2097 } 2098 2099 /** 2100 * regulator_put - "free" the regulator source 2101 * @regulator: regulator source 2102 * 2103 * Note: drivers must ensure that all regulator_enable calls made on this 2104 * regulator source are balanced by regulator_disable calls prior to calling 2105 * this function. 2106 */ 2107 void regulator_put(struct regulator *regulator) 2108 { 2109 mutex_lock(®ulator_list_mutex); 2110 _regulator_put(regulator); 2111 mutex_unlock(®ulator_list_mutex); 2112 } 2113 EXPORT_SYMBOL_GPL(regulator_put); 2114 2115 /** 2116 * regulator_register_supply_alias - Provide device alias for supply lookup 2117 * 2118 * @dev: device that will be given as the regulator "consumer" 2119 * @id: Supply name or regulator ID 2120 * @alias_dev: device that should be used to lookup the supply 2121 * @alias_id: Supply name or regulator ID that should be used to lookup the 2122 * supply 2123 * 2124 * All lookups for id on dev will instead be conducted for alias_id on 2125 * alias_dev. 2126 */ 2127 int regulator_register_supply_alias(struct device *dev, const char *id, 2128 struct device *alias_dev, 2129 const char *alias_id) 2130 { 2131 struct regulator_supply_alias *map; 2132 2133 map = regulator_find_supply_alias(dev, id); 2134 if (map) 2135 return -EEXIST; 2136 2137 map = kzalloc(sizeof(struct regulator_supply_alias), GFP_KERNEL); 2138 if (!map) 2139 return -ENOMEM; 2140 2141 map->src_dev = dev; 2142 map->src_supply = id; 2143 map->alias_dev = alias_dev; 2144 map->alias_supply = alias_id; 2145 2146 list_add(&map->list, ®ulator_supply_alias_list); 2147 2148 pr_info("Adding alias for supply %s,%s -> %s,%s\n", 2149 id, dev_name(dev), alias_id, dev_name(alias_dev)); 2150 2151 return 0; 2152 } 2153 EXPORT_SYMBOL_GPL(regulator_register_supply_alias); 2154 2155 /** 2156 * regulator_unregister_supply_alias - Remove device alias 2157 * 2158 * @dev: device that will be given as the regulator "consumer" 2159 * @id: Supply name or regulator ID 2160 * 2161 * Remove a lookup alias if one exists for id on dev. 2162 */ 2163 void regulator_unregister_supply_alias(struct device *dev, const char *id) 2164 { 2165 struct regulator_supply_alias *map; 2166 2167 map = regulator_find_supply_alias(dev, id); 2168 if (map) { 2169 list_del(&map->list); 2170 kfree(map); 2171 } 2172 } 2173 EXPORT_SYMBOL_GPL(regulator_unregister_supply_alias); 2174 2175 /** 2176 * regulator_bulk_register_supply_alias - register multiple aliases 2177 * 2178 * @dev: device that will be given as the regulator "consumer" 2179 * @id: List of supply names or regulator IDs 2180 * @alias_dev: device that should be used to lookup the supply 2181 * @alias_id: List of supply names or regulator IDs that should be used to 2182 * lookup the supply 2183 * @num_id: Number of aliases to register 2184 * 2185 * @return 0 on success, an errno on failure. 2186 * 2187 * This helper function allows drivers to register several supply 2188 * aliases in one operation. If any of the aliases cannot be 2189 * registered any aliases that were registered will be removed 2190 * before returning to the caller. 2191 */ 2192 int regulator_bulk_register_supply_alias(struct device *dev, 2193 const char *const *id, 2194 struct device *alias_dev, 2195 const char *const *alias_id, 2196 int num_id) 2197 { 2198 int i; 2199 int ret; 2200 2201 for (i = 0; i < num_id; ++i) { 2202 ret = regulator_register_supply_alias(dev, id[i], alias_dev, 2203 alias_id[i]); 2204 if (ret < 0) 2205 goto err; 2206 } 2207 2208 return 0; 2209 2210 err: 2211 dev_err(dev, 2212 "Failed to create supply alias %s,%s -> %s,%s\n", 2213 id[i], dev_name(dev), alias_id[i], dev_name(alias_dev)); 2214 2215 while (--i >= 0) 2216 regulator_unregister_supply_alias(dev, id[i]); 2217 2218 return ret; 2219 } 2220 EXPORT_SYMBOL_GPL(regulator_bulk_register_supply_alias); 2221 2222 /** 2223 * regulator_bulk_unregister_supply_alias - unregister multiple aliases 2224 * 2225 * @dev: device that will be given as the regulator "consumer" 2226 * @id: List of supply names or regulator IDs 2227 * @num_id: Number of aliases to unregister 2228 * 2229 * This helper function allows drivers to unregister several supply 2230 * aliases in one operation. 2231 */ 2232 void regulator_bulk_unregister_supply_alias(struct device *dev, 2233 const char *const *id, 2234 int num_id) 2235 { 2236 int i; 2237 2238 for (i = 0; i < num_id; ++i) 2239 regulator_unregister_supply_alias(dev, id[i]); 2240 } 2241 EXPORT_SYMBOL_GPL(regulator_bulk_unregister_supply_alias); 2242 2243 2244 /* Manage enable GPIO list. Same GPIO pin can be shared among regulators */ 2245 static int regulator_ena_gpio_request(struct regulator_dev *rdev, 2246 const struct regulator_config *config) 2247 { 2248 struct regulator_enable_gpio *pin, *new_pin; 2249 struct gpio_desc *gpiod; 2250 2251 gpiod = config->ena_gpiod; 2252 new_pin = kzalloc(sizeof(*new_pin), GFP_KERNEL); 2253 2254 mutex_lock(®ulator_list_mutex); 2255 2256 list_for_each_entry(pin, ®ulator_ena_gpio_list, list) { 2257 if (pin->gpiod == gpiod) { 2258 rdev_dbg(rdev, "GPIO is already used\n"); 2259 goto update_ena_gpio_to_rdev; 2260 } 2261 } 2262 2263 if (new_pin == NULL) { 2264 mutex_unlock(®ulator_list_mutex); 2265 return -ENOMEM; 2266 } 2267 2268 pin = new_pin; 2269 new_pin = NULL; 2270 2271 pin->gpiod = gpiod; 2272 list_add(&pin->list, ®ulator_ena_gpio_list); 2273 2274 update_ena_gpio_to_rdev: 2275 pin->request_count++; 2276 rdev->ena_pin = pin; 2277 2278 mutex_unlock(®ulator_list_mutex); 2279 kfree(new_pin); 2280 2281 return 0; 2282 } 2283 2284 static void regulator_ena_gpio_free(struct regulator_dev *rdev) 2285 { 2286 struct regulator_enable_gpio *pin, *n; 2287 2288 if (!rdev->ena_pin) 2289 return; 2290 2291 /* Free the GPIO only in case of no use */ 2292 list_for_each_entry_safe(pin, n, ®ulator_ena_gpio_list, list) { 2293 if (pin != rdev->ena_pin) 2294 continue; 2295 2296 if (--pin->request_count) 2297 break; 2298 2299 gpiod_put(pin->gpiod); 2300 list_del(&pin->list); 2301 kfree(pin); 2302 break; 2303 } 2304 2305 rdev->ena_pin = NULL; 2306 } 2307 2308 /** 2309 * regulator_ena_gpio_ctrl - balance enable_count of each GPIO and actual GPIO pin control 2310 * @rdev: regulator_dev structure 2311 * @enable: enable GPIO at initial use? 2312 * 2313 * GPIO is enabled in case of initial use. (enable_count is 0) 2314 * GPIO is disabled when it is not shared any more. (enable_count <= 1) 2315 */ 2316 static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable) 2317 { 2318 struct regulator_enable_gpio *pin = rdev->ena_pin; 2319 2320 if (!pin) 2321 return -EINVAL; 2322 2323 if (enable) { 2324 /* Enable GPIO at initial use */ 2325 if (pin->enable_count == 0) 2326 gpiod_set_value_cansleep(pin->gpiod, 1); 2327 2328 pin->enable_count++; 2329 } else { 2330 if (pin->enable_count > 1) { 2331 pin->enable_count--; 2332 return 0; 2333 } 2334 2335 /* Disable GPIO if not used */ 2336 if (pin->enable_count <= 1) { 2337 gpiod_set_value_cansleep(pin->gpiod, 0); 2338 pin->enable_count = 0; 2339 } 2340 } 2341 2342 return 0; 2343 } 2344 2345 /** 2346 * _regulator_enable_delay - a delay helper function 2347 * @delay: time to delay in microseconds 2348 * 2349 * Delay for the requested amount of time as per the guidelines in: 2350 * 2351 * Documentation/timers/timers-howto.rst 2352 * 2353 * The assumption here is that regulators will never be enabled in 2354 * atomic context and therefore sleeping functions can be used. 2355 */ 2356 static void _regulator_enable_delay(unsigned int delay) 2357 { 2358 unsigned int ms = delay / 1000; 2359 unsigned int us = delay % 1000; 2360 2361 if (ms > 0) { 2362 /* 2363 * For small enough values, handle super-millisecond 2364 * delays in the usleep_range() call below. 2365 */ 2366 if (ms < 20) 2367 us += ms * 1000; 2368 else 2369 msleep(ms); 2370 } 2371 2372 /* 2373 * Give the scheduler some room to coalesce with any other 2374 * wakeup sources. For delays shorter than 10 us, don't even 2375 * bother setting up high-resolution timers and just busy- 2376 * loop. 2377 */ 2378 if (us >= 10) 2379 usleep_range(us, us + 100); 2380 else 2381 udelay(us); 2382 } 2383 2384 /** 2385 * _regulator_check_status_enabled 2386 * 2387 * A helper function to check if the regulator status can be interpreted 2388 * as 'regulator is enabled'. 2389 * @rdev: the regulator device to check 2390 * 2391 * Return: 2392 * * 1 - if status shows regulator is in enabled state 2393 * * 0 - if not enabled state 2394 * * Error Value - as received from ops->get_status() 2395 */ 2396 static inline int _regulator_check_status_enabled(struct regulator_dev *rdev) 2397 { 2398 int ret = rdev->desc->ops->get_status(rdev); 2399 2400 if (ret < 0) { 2401 rdev_info(rdev, "get_status returned error: %d\n", ret); 2402 return ret; 2403 } 2404 2405 switch (ret) { 2406 case REGULATOR_STATUS_OFF: 2407 case REGULATOR_STATUS_ERROR: 2408 case REGULATOR_STATUS_UNDEFINED: 2409 return 0; 2410 default: 2411 return 1; 2412 } 2413 } 2414 2415 static int _regulator_do_enable(struct regulator_dev *rdev) 2416 { 2417 int ret, delay; 2418 2419 /* Query before enabling in case configuration dependent. */ 2420 ret = _regulator_get_enable_time(rdev); 2421 if (ret >= 0) { 2422 delay = ret; 2423 } else { 2424 rdev_warn(rdev, "enable_time() failed: %d\n", ret); 2425 delay = 0; 2426 } 2427 2428 trace_regulator_enable(rdev_get_name(rdev)); 2429 2430 if (rdev->desc->off_on_delay) { 2431 /* if needed, keep a distance of off_on_delay from last time 2432 * this regulator was disabled. 2433 */ 2434 unsigned long start_jiffy = jiffies; 2435 unsigned long intended, max_delay, remaining; 2436 2437 max_delay = usecs_to_jiffies(rdev->desc->off_on_delay); 2438 intended = rdev->last_off_jiffy + max_delay; 2439 2440 if (time_before(start_jiffy, intended)) { 2441 /* calc remaining jiffies to deal with one-time 2442 * timer wrapping. 2443 * in case of multiple timer wrapping, either it can be 2444 * detected by out-of-range remaining, or it cannot be 2445 * detected and we get a penalty of 2446 * _regulator_enable_delay(). 2447 */ 2448 remaining = intended - start_jiffy; 2449 if (remaining <= max_delay) 2450 _regulator_enable_delay( 2451 jiffies_to_usecs(remaining)); 2452 } 2453 } 2454 2455 if (rdev->ena_pin) { 2456 if (!rdev->ena_gpio_state) { 2457 ret = regulator_ena_gpio_ctrl(rdev, true); 2458 if (ret < 0) 2459 return ret; 2460 rdev->ena_gpio_state = 1; 2461 } 2462 } else if (rdev->desc->ops->enable) { 2463 ret = rdev->desc->ops->enable(rdev); 2464 if (ret < 0) 2465 return ret; 2466 } else { 2467 return -EINVAL; 2468 } 2469 2470 /* Allow the regulator to ramp; it would be useful to extend 2471 * this for bulk operations so that the regulators can ramp 2472 * together. */ 2473 trace_regulator_enable_delay(rdev_get_name(rdev)); 2474 2475 /* If poll_enabled_time is set, poll upto the delay calculated 2476 * above, delaying poll_enabled_time uS to check if the regulator 2477 * actually got enabled. 2478 * If the regulator isn't enabled after enable_delay has 2479 * expired, return -ETIMEDOUT. 2480 */ 2481 if (rdev->desc->poll_enabled_time) { 2482 unsigned int time_remaining = delay; 2483 2484 while (time_remaining > 0) { 2485 _regulator_enable_delay(rdev->desc->poll_enabled_time); 2486 2487 if (rdev->desc->ops->get_status) { 2488 ret = _regulator_check_status_enabled(rdev); 2489 if (ret < 0) 2490 return ret; 2491 else if (ret) 2492 break; 2493 } else if (rdev->desc->ops->is_enabled(rdev)) 2494 break; 2495 2496 time_remaining -= rdev->desc->poll_enabled_time; 2497 } 2498 2499 if (time_remaining <= 0) { 2500 rdev_err(rdev, "Enabled check timed out\n"); 2501 return -ETIMEDOUT; 2502 } 2503 } else { 2504 _regulator_enable_delay(delay); 2505 } 2506 2507 trace_regulator_enable_complete(rdev_get_name(rdev)); 2508 2509 return 0; 2510 } 2511 2512 /** 2513 * _regulator_handle_consumer_enable - handle that a consumer enabled 2514 * @regulator: regulator source 2515 * 2516 * Some things on a regulator consumer (like the contribution towards total 2517 * load on the regulator) only have an effect when the consumer wants the 2518 * regulator enabled. Explained in example with two consumers of the same 2519 * regulator: 2520 * consumer A: set_load(100); => total load = 0 2521 * consumer A: regulator_enable(); => total load = 100 2522 * consumer B: set_load(1000); => total load = 100 2523 * consumer B: regulator_enable(); => total load = 1100 2524 * consumer A: regulator_disable(); => total_load = 1000 2525 * 2526 * This function (together with _regulator_handle_consumer_disable) is 2527 * responsible for keeping track of the refcount for a given regulator consumer 2528 * and applying / unapplying these things. 2529 * 2530 * Returns 0 upon no error; -error upon error. 2531 */ 2532 static int _regulator_handle_consumer_enable(struct regulator *regulator) 2533 { 2534 struct regulator_dev *rdev = regulator->rdev; 2535 2536 lockdep_assert_held_once(&rdev->mutex.base); 2537 2538 regulator->enable_count++; 2539 if (regulator->uA_load && regulator->enable_count == 1) 2540 return drms_uA_update(rdev); 2541 2542 return 0; 2543 } 2544 2545 /** 2546 * _regulator_handle_consumer_disable - handle that a consumer disabled 2547 * @regulator: regulator source 2548 * 2549 * The opposite of _regulator_handle_consumer_enable(). 2550 * 2551 * Returns 0 upon no error; -error upon error. 2552 */ 2553 static int _regulator_handle_consumer_disable(struct regulator *regulator) 2554 { 2555 struct regulator_dev *rdev = regulator->rdev; 2556 2557 lockdep_assert_held_once(&rdev->mutex.base); 2558 2559 if (!regulator->enable_count) { 2560 rdev_err(rdev, "Underflow of regulator enable count\n"); 2561 return -EINVAL; 2562 } 2563 2564 regulator->enable_count--; 2565 if (regulator->uA_load && regulator->enable_count == 0) 2566 return drms_uA_update(rdev); 2567 2568 return 0; 2569 } 2570 2571 /* locks held by regulator_enable() */ 2572 static int _regulator_enable(struct regulator *regulator) 2573 { 2574 struct regulator_dev *rdev = regulator->rdev; 2575 int ret; 2576 2577 lockdep_assert_held_once(&rdev->mutex.base); 2578 2579 if (rdev->use_count == 0 && rdev->supply) { 2580 ret = _regulator_enable(rdev->supply); 2581 if (ret < 0) 2582 return ret; 2583 } 2584 2585 /* balance only if there are regulators coupled */ 2586 if (rdev->coupling_desc.n_coupled > 1) { 2587 ret = regulator_balance_voltage(rdev, PM_SUSPEND_ON); 2588 if (ret < 0) 2589 goto err_disable_supply; 2590 } 2591 2592 ret = _regulator_handle_consumer_enable(regulator); 2593 if (ret < 0) 2594 goto err_disable_supply; 2595 2596 if (rdev->use_count == 0) { 2597 /* The regulator may on if it's not switchable or left on */ 2598 ret = _regulator_is_enabled(rdev); 2599 if (ret == -EINVAL || ret == 0) { 2600 if (!regulator_ops_is_valid(rdev, 2601 REGULATOR_CHANGE_STATUS)) { 2602 ret = -EPERM; 2603 goto err_consumer_disable; 2604 } 2605 2606 ret = _regulator_do_enable(rdev); 2607 if (ret < 0) 2608 goto err_consumer_disable; 2609 2610 _notifier_call_chain(rdev, REGULATOR_EVENT_ENABLE, 2611 NULL); 2612 } else if (ret < 0) { 2613 rdev_err(rdev, "is_enabled() failed: %d\n", ret); 2614 goto err_consumer_disable; 2615 } 2616 /* Fallthrough on positive return values - already enabled */ 2617 } 2618 2619 rdev->use_count++; 2620 2621 return 0; 2622 2623 err_consumer_disable: 2624 _regulator_handle_consumer_disable(regulator); 2625 2626 err_disable_supply: 2627 if (rdev->use_count == 0 && rdev->supply) 2628 _regulator_disable(rdev->supply); 2629 2630 return ret; 2631 } 2632 2633 /** 2634 * regulator_enable - enable regulator output 2635 * @regulator: regulator source 2636 * 2637 * Request that the regulator be enabled with the regulator output at 2638 * the predefined voltage or current value. Calls to regulator_enable() 2639 * must be balanced with calls to regulator_disable(). 2640 * 2641 * NOTE: the output value can be set by other drivers, boot loader or may be 2642 * hardwired in the regulator. 2643 */ 2644 int regulator_enable(struct regulator *regulator) 2645 { 2646 struct regulator_dev *rdev = regulator->rdev; 2647 struct ww_acquire_ctx ww_ctx; 2648 int ret; 2649 2650 regulator_lock_dependent(rdev, &ww_ctx); 2651 ret = _regulator_enable(regulator); 2652 regulator_unlock_dependent(rdev, &ww_ctx); 2653 2654 return ret; 2655 } 2656 EXPORT_SYMBOL_GPL(regulator_enable); 2657 2658 static int _regulator_do_disable(struct regulator_dev *rdev) 2659 { 2660 int ret; 2661 2662 trace_regulator_disable(rdev_get_name(rdev)); 2663 2664 if (rdev->ena_pin) { 2665 if (rdev->ena_gpio_state) { 2666 ret = regulator_ena_gpio_ctrl(rdev, false); 2667 if (ret < 0) 2668 return ret; 2669 rdev->ena_gpio_state = 0; 2670 } 2671 2672 } else if (rdev->desc->ops->disable) { 2673 ret = rdev->desc->ops->disable(rdev); 2674 if (ret != 0) 2675 return ret; 2676 } 2677 2678 /* cares about last_off_jiffy only if off_on_delay is required by 2679 * device. 2680 */ 2681 if (rdev->desc->off_on_delay) 2682 rdev->last_off_jiffy = jiffies; 2683 2684 trace_regulator_disable_complete(rdev_get_name(rdev)); 2685 2686 return 0; 2687 } 2688 2689 /* locks held by regulator_disable() */ 2690 static int _regulator_disable(struct regulator *regulator) 2691 { 2692 struct regulator_dev *rdev = regulator->rdev; 2693 int ret = 0; 2694 2695 lockdep_assert_held_once(&rdev->mutex.base); 2696 2697 if (WARN(rdev->use_count <= 0, 2698 "unbalanced disables for %s\n", rdev_get_name(rdev))) 2699 return -EIO; 2700 2701 /* are we the last user and permitted to disable ? */ 2702 if (rdev->use_count == 1 && 2703 (rdev->constraints && !rdev->constraints->always_on)) { 2704 2705 /* we are last user */ 2706 if (regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS)) { 2707 ret = _notifier_call_chain(rdev, 2708 REGULATOR_EVENT_PRE_DISABLE, 2709 NULL); 2710 if (ret & NOTIFY_STOP_MASK) 2711 return -EINVAL; 2712 2713 ret = _regulator_do_disable(rdev); 2714 if (ret < 0) { 2715 rdev_err(rdev, "failed to disable\n"); 2716 _notifier_call_chain(rdev, 2717 REGULATOR_EVENT_ABORT_DISABLE, 2718 NULL); 2719 return ret; 2720 } 2721 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, 2722 NULL); 2723 } 2724 2725 rdev->use_count = 0; 2726 } else if (rdev->use_count > 1) { 2727 rdev->use_count--; 2728 } 2729 2730 if (ret == 0) 2731 ret = _regulator_handle_consumer_disable(regulator); 2732 2733 if (ret == 0 && rdev->coupling_desc.n_coupled > 1) 2734 ret = regulator_balance_voltage(rdev, PM_SUSPEND_ON); 2735 2736 if (ret == 0 && rdev->use_count == 0 && rdev->supply) 2737 ret = _regulator_disable(rdev->supply); 2738 2739 return ret; 2740 } 2741 2742 /** 2743 * regulator_disable - disable regulator output 2744 * @regulator: regulator source 2745 * 2746 * Disable the regulator output voltage or current. Calls to 2747 * regulator_enable() must be balanced with calls to 2748 * regulator_disable(). 2749 * 2750 * NOTE: this will only disable the regulator output if no other consumer 2751 * devices have it enabled, the regulator device supports disabling and 2752 * machine constraints permit this operation. 2753 */ 2754 int regulator_disable(struct regulator *regulator) 2755 { 2756 struct regulator_dev *rdev = regulator->rdev; 2757 struct ww_acquire_ctx ww_ctx; 2758 int ret; 2759 2760 regulator_lock_dependent(rdev, &ww_ctx); 2761 ret = _regulator_disable(regulator); 2762 regulator_unlock_dependent(rdev, &ww_ctx); 2763 2764 return ret; 2765 } 2766 EXPORT_SYMBOL_GPL(regulator_disable); 2767 2768 /* locks held by regulator_force_disable() */ 2769 static int _regulator_force_disable(struct regulator_dev *rdev) 2770 { 2771 int ret = 0; 2772 2773 lockdep_assert_held_once(&rdev->mutex.base); 2774 2775 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2776 REGULATOR_EVENT_PRE_DISABLE, NULL); 2777 if (ret & NOTIFY_STOP_MASK) 2778 return -EINVAL; 2779 2780 ret = _regulator_do_disable(rdev); 2781 if (ret < 0) { 2782 rdev_err(rdev, "failed to force disable\n"); 2783 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2784 REGULATOR_EVENT_ABORT_DISABLE, NULL); 2785 return ret; 2786 } 2787 2788 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2789 REGULATOR_EVENT_DISABLE, NULL); 2790 2791 return 0; 2792 } 2793 2794 /** 2795 * regulator_force_disable - force disable regulator output 2796 * @regulator: regulator source 2797 * 2798 * Forcibly disable the regulator output voltage or current. 2799 * NOTE: this *will* disable the regulator output even if other consumer 2800 * devices have it enabled. This should be used for situations when device 2801 * damage will likely occur if the regulator is not disabled (e.g. over temp). 2802 */ 2803 int regulator_force_disable(struct regulator *regulator) 2804 { 2805 struct regulator_dev *rdev = regulator->rdev; 2806 struct ww_acquire_ctx ww_ctx; 2807 int ret; 2808 2809 regulator_lock_dependent(rdev, &ww_ctx); 2810 2811 ret = _regulator_force_disable(regulator->rdev); 2812 2813 if (rdev->coupling_desc.n_coupled > 1) 2814 regulator_balance_voltage(rdev, PM_SUSPEND_ON); 2815 2816 if (regulator->uA_load) { 2817 regulator->uA_load = 0; 2818 ret = drms_uA_update(rdev); 2819 } 2820 2821 if (rdev->use_count != 0 && rdev->supply) 2822 _regulator_disable(rdev->supply); 2823 2824 regulator_unlock_dependent(rdev, &ww_ctx); 2825 2826 return ret; 2827 } 2828 EXPORT_SYMBOL_GPL(regulator_force_disable); 2829 2830 static void regulator_disable_work(struct work_struct *work) 2831 { 2832 struct regulator_dev *rdev = container_of(work, struct regulator_dev, 2833 disable_work.work); 2834 struct ww_acquire_ctx ww_ctx; 2835 int count, i, ret; 2836 struct regulator *regulator; 2837 int total_count = 0; 2838 2839 regulator_lock_dependent(rdev, &ww_ctx); 2840 2841 /* 2842 * Workqueue functions queue the new work instance while the previous 2843 * work instance is being processed. Cancel the queued work instance 2844 * as the work instance under processing does the job of the queued 2845 * work instance. 2846 */ 2847 cancel_delayed_work(&rdev->disable_work); 2848 2849 list_for_each_entry(regulator, &rdev->consumer_list, list) { 2850 count = regulator->deferred_disables; 2851 2852 if (!count) 2853 continue; 2854 2855 total_count += count; 2856 regulator->deferred_disables = 0; 2857 2858 for (i = 0; i < count; i++) { 2859 ret = _regulator_disable(regulator); 2860 if (ret != 0) 2861 rdev_err(rdev, "Deferred disable failed: %d\n", ret); 2862 } 2863 } 2864 WARN_ON(!total_count); 2865 2866 if (rdev->coupling_desc.n_coupled > 1) 2867 regulator_balance_voltage(rdev, PM_SUSPEND_ON); 2868 2869 regulator_unlock_dependent(rdev, &ww_ctx); 2870 } 2871 2872 /** 2873 * regulator_disable_deferred - disable regulator output with delay 2874 * @regulator: regulator source 2875 * @ms: milliseconds until the regulator is disabled 2876 * 2877 * Execute regulator_disable() on the regulator after a delay. This 2878 * is intended for use with devices that require some time to quiesce. 2879 * 2880 * NOTE: this will only disable the regulator output if no other consumer 2881 * devices have it enabled, the regulator device supports disabling and 2882 * machine constraints permit this operation. 2883 */ 2884 int regulator_disable_deferred(struct regulator *regulator, int ms) 2885 { 2886 struct regulator_dev *rdev = regulator->rdev; 2887 2888 if (!ms) 2889 return regulator_disable(regulator); 2890 2891 regulator_lock(rdev); 2892 regulator->deferred_disables++; 2893 mod_delayed_work(system_power_efficient_wq, &rdev->disable_work, 2894 msecs_to_jiffies(ms)); 2895 regulator_unlock(rdev); 2896 2897 return 0; 2898 } 2899 EXPORT_SYMBOL_GPL(regulator_disable_deferred); 2900 2901 static int _regulator_is_enabled(struct regulator_dev *rdev) 2902 { 2903 /* A GPIO control always takes precedence */ 2904 if (rdev->ena_pin) 2905 return rdev->ena_gpio_state; 2906 2907 /* If we don't know then assume that the regulator is always on */ 2908 if (!rdev->desc->ops->is_enabled) 2909 return 1; 2910 2911 return rdev->desc->ops->is_enabled(rdev); 2912 } 2913 2914 static int _regulator_list_voltage(struct regulator_dev *rdev, 2915 unsigned selector, int lock) 2916 { 2917 const struct regulator_ops *ops = rdev->desc->ops; 2918 int ret; 2919 2920 if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector) 2921 return rdev->desc->fixed_uV; 2922 2923 if (ops->list_voltage) { 2924 if (selector >= rdev->desc->n_voltages) 2925 return -EINVAL; 2926 if (lock) 2927 regulator_lock(rdev); 2928 ret = ops->list_voltage(rdev, selector); 2929 if (lock) 2930 regulator_unlock(rdev); 2931 } else if (rdev->is_switch && rdev->supply) { 2932 ret = _regulator_list_voltage(rdev->supply->rdev, 2933 selector, lock); 2934 } else { 2935 return -EINVAL; 2936 } 2937 2938 if (ret > 0) { 2939 if (ret < rdev->constraints->min_uV) 2940 ret = 0; 2941 else if (ret > rdev->constraints->max_uV) 2942 ret = 0; 2943 } 2944 2945 return ret; 2946 } 2947 2948 /** 2949 * regulator_is_enabled - is the regulator output enabled 2950 * @regulator: regulator source 2951 * 2952 * Returns positive if the regulator driver backing the source/client 2953 * has requested that the device be enabled, zero if it hasn't, else a 2954 * negative errno code. 2955 * 2956 * Note that the device backing this regulator handle can have multiple 2957 * users, so it might be enabled even if regulator_enable() was never 2958 * called for this particular source. 2959 */ 2960 int regulator_is_enabled(struct regulator *regulator) 2961 { 2962 int ret; 2963 2964 if (regulator->always_on) 2965 return 1; 2966 2967 regulator_lock(regulator->rdev); 2968 ret = _regulator_is_enabled(regulator->rdev); 2969 regulator_unlock(regulator->rdev); 2970 2971 return ret; 2972 } 2973 EXPORT_SYMBOL_GPL(regulator_is_enabled); 2974 2975 /** 2976 * regulator_count_voltages - count regulator_list_voltage() selectors 2977 * @regulator: regulator source 2978 * 2979 * Returns number of selectors, or negative errno. Selectors are 2980 * numbered starting at zero, and typically correspond to bitfields 2981 * in hardware registers. 2982 */ 2983 int regulator_count_voltages(struct regulator *regulator) 2984 { 2985 struct regulator_dev *rdev = regulator->rdev; 2986 2987 if (rdev->desc->n_voltages) 2988 return rdev->desc->n_voltages; 2989 2990 if (!rdev->is_switch || !rdev->supply) 2991 return -EINVAL; 2992 2993 return regulator_count_voltages(rdev->supply); 2994 } 2995 EXPORT_SYMBOL_GPL(regulator_count_voltages); 2996 2997 /** 2998 * regulator_list_voltage - enumerate supported voltages 2999 * @regulator: regulator source 3000 * @selector: identify voltage to list 3001 * Context: can sleep 3002 * 3003 * Returns a voltage that can be passed to @regulator_set_voltage(), 3004 * zero if this selector code can't be used on this system, or a 3005 * negative errno. 3006 */ 3007 int regulator_list_voltage(struct regulator *regulator, unsigned selector) 3008 { 3009 return _regulator_list_voltage(regulator->rdev, selector, 1); 3010 } 3011 EXPORT_SYMBOL_GPL(regulator_list_voltage); 3012 3013 /** 3014 * regulator_get_regmap - get the regulator's register map 3015 * @regulator: regulator source 3016 * 3017 * Returns the register map for the given regulator, or an ERR_PTR value 3018 * if the regulator doesn't use regmap. 3019 */ 3020 struct regmap *regulator_get_regmap(struct regulator *regulator) 3021 { 3022 struct regmap *map = regulator->rdev->regmap; 3023 3024 return map ? map : ERR_PTR(-EOPNOTSUPP); 3025 } 3026 3027 /** 3028 * regulator_get_hardware_vsel_register - get the HW voltage selector register 3029 * @regulator: regulator source 3030 * @vsel_reg: voltage selector register, output parameter 3031 * @vsel_mask: mask for voltage selector bitfield, output parameter 3032 * 3033 * Returns the hardware register offset and bitmask used for setting the 3034 * regulator voltage. This might be useful when configuring voltage-scaling 3035 * hardware or firmware that can make I2C requests behind the kernel's back, 3036 * for example. 3037 * 3038 * On success, the output parameters @vsel_reg and @vsel_mask are filled in 3039 * and 0 is returned, otherwise a negative errno is returned. 3040 */ 3041 int regulator_get_hardware_vsel_register(struct regulator *regulator, 3042 unsigned *vsel_reg, 3043 unsigned *vsel_mask) 3044 { 3045 struct regulator_dev *rdev = regulator->rdev; 3046 const struct regulator_ops *ops = rdev->desc->ops; 3047 3048 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 3049 return -EOPNOTSUPP; 3050 3051 *vsel_reg = rdev->desc->vsel_reg; 3052 *vsel_mask = rdev->desc->vsel_mask; 3053 3054 return 0; 3055 } 3056 EXPORT_SYMBOL_GPL(regulator_get_hardware_vsel_register); 3057 3058 /** 3059 * regulator_list_hardware_vsel - get the HW-specific register value for a selector 3060 * @regulator: regulator source 3061 * @selector: identify voltage to list 3062 * 3063 * Converts the selector to a hardware-specific voltage selector that can be 3064 * directly written to the regulator registers. The address of the voltage 3065 * register can be determined by calling @regulator_get_hardware_vsel_register. 3066 * 3067 * On error a negative errno is returned. 3068 */ 3069 int regulator_list_hardware_vsel(struct regulator *regulator, 3070 unsigned selector) 3071 { 3072 struct regulator_dev *rdev = regulator->rdev; 3073 const struct regulator_ops *ops = rdev->desc->ops; 3074 3075 if (selector >= rdev->desc->n_voltages) 3076 return -EINVAL; 3077 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 3078 return -EOPNOTSUPP; 3079 3080 return selector; 3081 } 3082 EXPORT_SYMBOL_GPL(regulator_list_hardware_vsel); 3083 3084 /** 3085 * regulator_get_linear_step - return the voltage step size between VSEL values 3086 * @regulator: regulator source 3087 * 3088 * Returns the voltage step size between VSEL values for linear 3089 * regulators, or return 0 if the regulator isn't a linear regulator. 3090 */ 3091 unsigned int regulator_get_linear_step(struct regulator *regulator) 3092 { 3093 struct regulator_dev *rdev = regulator->rdev; 3094 3095 return rdev->desc->uV_step; 3096 } 3097 EXPORT_SYMBOL_GPL(regulator_get_linear_step); 3098 3099 /** 3100 * regulator_is_supported_voltage - check if a voltage range can be supported 3101 * 3102 * @regulator: Regulator to check. 3103 * @min_uV: Minimum required voltage in uV. 3104 * @max_uV: Maximum required voltage in uV. 3105 * 3106 * Returns a boolean. 3107 */ 3108 int regulator_is_supported_voltage(struct regulator *regulator, 3109 int min_uV, int max_uV) 3110 { 3111 struct regulator_dev *rdev = regulator->rdev; 3112 int i, voltages, ret; 3113 3114 /* If we can't change voltage check the current voltage */ 3115 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { 3116 ret = regulator_get_voltage(regulator); 3117 if (ret >= 0) 3118 return min_uV <= ret && ret <= max_uV; 3119 else 3120 return ret; 3121 } 3122 3123 /* Any voltage within constrains range is fine? */ 3124 if (rdev->desc->continuous_voltage_range) 3125 return min_uV >= rdev->constraints->min_uV && 3126 max_uV <= rdev->constraints->max_uV; 3127 3128 ret = regulator_count_voltages(regulator); 3129 if (ret < 0) 3130 return 0; 3131 voltages = ret; 3132 3133 for (i = 0; i < voltages; i++) { 3134 ret = regulator_list_voltage(regulator, i); 3135 3136 if (ret >= min_uV && ret <= max_uV) 3137 return 1; 3138 } 3139 3140 return 0; 3141 } 3142 EXPORT_SYMBOL_GPL(regulator_is_supported_voltage); 3143 3144 static int regulator_map_voltage(struct regulator_dev *rdev, int min_uV, 3145 int max_uV) 3146 { 3147 const struct regulator_desc *desc = rdev->desc; 3148 3149 if (desc->ops->map_voltage) 3150 return desc->ops->map_voltage(rdev, min_uV, max_uV); 3151 3152 if (desc->ops->list_voltage == regulator_list_voltage_linear) 3153 return regulator_map_voltage_linear(rdev, min_uV, max_uV); 3154 3155 if (desc->ops->list_voltage == regulator_list_voltage_linear_range) 3156 return regulator_map_voltage_linear_range(rdev, min_uV, max_uV); 3157 3158 if (desc->ops->list_voltage == 3159 regulator_list_voltage_pickable_linear_range) 3160 return regulator_map_voltage_pickable_linear_range(rdev, 3161 min_uV, max_uV); 3162 3163 return regulator_map_voltage_iterate(rdev, min_uV, max_uV); 3164 } 3165 3166 static int _regulator_call_set_voltage(struct regulator_dev *rdev, 3167 int min_uV, int max_uV, 3168 unsigned *selector) 3169 { 3170 struct pre_voltage_change_data data; 3171 int ret; 3172 3173 data.old_uV = regulator_get_voltage_rdev(rdev); 3174 data.min_uV = min_uV; 3175 data.max_uV = max_uV; 3176 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 3177 &data); 3178 if (ret & NOTIFY_STOP_MASK) 3179 return -EINVAL; 3180 3181 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, selector); 3182 if (ret >= 0) 3183 return ret; 3184 3185 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 3186 (void *)data.old_uV); 3187 3188 return ret; 3189 } 3190 3191 static int _regulator_call_set_voltage_sel(struct regulator_dev *rdev, 3192 int uV, unsigned selector) 3193 { 3194 struct pre_voltage_change_data data; 3195 int ret; 3196 3197 data.old_uV = regulator_get_voltage_rdev(rdev); 3198 data.min_uV = uV; 3199 data.max_uV = uV; 3200 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 3201 &data); 3202 if (ret & NOTIFY_STOP_MASK) 3203 return -EINVAL; 3204 3205 ret = rdev->desc->ops->set_voltage_sel(rdev, selector); 3206 if (ret >= 0) 3207 return ret; 3208 3209 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 3210 (void *)data.old_uV); 3211 3212 return ret; 3213 } 3214 3215 static int _regulator_set_voltage_sel_step(struct regulator_dev *rdev, 3216 int uV, int new_selector) 3217 { 3218 const struct regulator_ops *ops = rdev->desc->ops; 3219 int diff, old_sel, curr_sel, ret; 3220 3221 /* Stepping is only needed if the regulator is enabled. */ 3222 if (!_regulator_is_enabled(rdev)) 3223 goto final_set; 3224 3225 if (!ops->get_voltage_sel) 3226 return -EINVAL; 3227 3228 old_sel = ops->get_voltage_sel(rdev); 3229 if (old_sel < 0) 3230 return old_sel; 3231 3232 diff = new_selector - old_sel; 3233 if (diff == 0) 3234 return 0; /* No change needed. */ 3235 3236 if (diff > 0) { 3237 /* Stepping up. */ 3238 for (curr_sel = old_sel + rdev->desc->vsel_step; 3239 curr_sel < new_selector; 3240 curr_sel += rdev->desc->vsel_step) { 3241 /* 3242 * Call the callback directly instead of using 3243 * _regulator_call_set_voltage_sel() as we don't 3244 * want to notify anyone yet. Same in the branch 3245 * below. 3246 */ 3247 ret = ops->set_voltage_sel(rdev, curr_sel); 3248 if (ret) 3249 goto try_revert; 3250 } 3251 } else { 3252 /* Stepping down. */ 3253 for (curr_sel = old_sel - rdev->desc->vsel_step; 3254 curr_sel > new_selector; 3255 curr_sel -= rdev->desc->vsel_step) { 3256 ret = ops->set_voltage_sel(rdev, curr_sel); 3257 if (ret) 3258 goto try_revert; 3259 } 3260 } 3261 3262 final_set: 3263 /* The final selector will trigger the notifiers. */ 3264 return _regulator_call_set_voltage_sel(rdev, uV, new_selector); 3265 3266 try_revert: 3267 /* 3268 * At least try to return to the previous voltage if setting a new 3269 * one failed. 3270 */ 3271 (void)ops->set_voltage_sel(rdev, old_sel); 3272 return ret; 3273 } 3274 3275 static int _regulator_set_voltage_time(struct regulator_dev *rdev, 3276 int old_uV, int new_uV) 3277 { 3278 unsigned int ramp_delay = 0; 3279 3280 if (rdev->constraints->ramp_delay) 3281 ramp_delay = rdev->constraints->ramp_delay; 3282 else if (rdev->desc->ramp_delay) 3283 ramp_delay = rdev->desc->ramp_delay; 3284 else if (rdev->constraints->settling_time) 3285 return rdev->constraints->settling_time; 3286 else if (rdev->constraints->settling_time_up && 3287 (new_uV > old_uV)) 3288 return rdev->constraints->settling_time_up; 3289 else if (rdev->constraints->settling_time_down && 3290 (new_uV < old_uV)) 3291 return rdev->constraints->settling_time_down; 3292 3293 if (ramp_delay == 0) { 3294 rdev_dbg(rdev, "ramp_delay not set\n"); 3295 return 0; 3296 } 3297 3298 return DIV_ROUND_UP(abs(new_uV - old_uV), ramp_delay); 3299 } 3300 3301 static int _regulator_do_set_voltage(struct regulator_dev *rdev, 3302 int min_uV, int max_uV) 3303 { 3304 int ret; 3305 int delay = 0; 3306 int best_val = 0; 3307 unsigned int selector; 3308 int old_selector = -1; 3309 const struct regulator_ops *ops = rdev->desc->ops; 3310 int old_uV = regulator_get_voltage_rdev(rdev); 3311 3312 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV); 3313 3314 min_uV += rdev->constraints->uV_offset; 3315 max_uV += rdev->constraints->uV_offset; 3316 3317 /* 3318 * If we can't obtain the old selector there is not enough 3319 * info to call set_voltage_time_sel(). 3320 */ 3321 if (_regulator_is_enabled(rdev) && 3322 ops->set_voltage_time_sel && ops->get_voltage_sel) { 3323 old_selector = ops->get_voltage_sel(rdev); 3324 if (old_selector < 0) 3325 return old_selector; 3326 } 3327 3328 if (ops->set_voltage) { 3329 ret = _regulator_call_set_voltage(rdev, min_uV, max_uV, 3330 &selector); 3331 3332 if (ret >= 0) { 3333 if (ops->list_voltage) 3334 best_val = ops->list_voltage(rdev, 3335 selector); 3336 else 3337 best_val = regulator_get_voltage_rdev(rdev); 3338 } 3339 3340 } else if (ops->set_voltage_sel) { 3341 ret = regulator_map_voltage(rdev, min_uV, max_uV); 3342 if (ret >= 0) { 3343 best_val = ops->list_voltage(rdev, ret); 3344 if (min_uV <= best_val && max_uV >= best_val) { 3345 selector = ret; 3346 if (old_selector == selector) 3347 ret = 0; 3348 else if (rdev->desc->vsel_step) 3349 ret = _regulator_set_voltage_sel_step( 3350 rdev, best_val, selector); 3351 else 3352 ret = _regulator_call_set_voltage_sel( 3353 rdev, best_val, selector); 3354 } else { 3355 ret = -EINVAL; 3356 } 3357 } 3358 } else { 3359 ret = -EINVAL; 3360 } 3361 3362 if (ret) 3363 goto out; 3364 3365 if (ops->set_voltage_time_sel) { 3366 /* 3367 * Call set_voltage_time_sel if successfully obtained 3368 * old_selector 3369 */ 3370 if (old_selector >= 0 && old_selector != selector) 3371 delay = ops->set_voltage_time_sel(rdev, old_selector, 3372 selector); 3373 } else { 3374 if (old_uV != best_val) { 3375 if (ops->set_voltage_time) 3376 delay = ops->set_voltage_time(rdev, old_uV, 3377 best_val); 3378 else 3379 delay = _regulator_set_voltage_time(rdev, 3380 old_uV, 3381 best_val); 3382 } 3383 } 3384 3385 if (delay < 0) { 3386 rdev_warn(rdev, "failed to get delay: %d\n", delay); 3387 delay = 0; 3388 } 3389 3390 /* Insert any necessary delays */ 3391 if (delay >= 1000) { 3392 mdelay(delay / 1000); 3393 udelay(delay % 1000); 3394 } else if (delay) { 3395 udelay(delay); 3396 } 3397 3398 if (best_val >= 0) { 3399 unsigned long data = best_val; 3400 3401 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, 3402 (void *)data); 3403 } 3404 3405 out: 3406 trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); 3407 3408 return ret; 3409 } 3410 3411 static int _regulator_do_set_suspend_voltage(struct regulator_dev *rdev, 3412 int min_uV, int max_uV, suspend_state_t state) 3413 { 3414 struct regulator_state *rstate; 3415 int uV, sel; 3416 3417 rstate = regulator_get_suspend_state(rdev, state); 3418 if (rstate == NULL) 3419 return -EINVAL; 3420 3421 if (min_uV < rstate->min_uV) 3422 min_uV = rstate->min_uV; 3423 if (max_uV > rstate->max_uV) 3424 max_uV = rstate->max_uV; 3425 3426 sel = regulator_map_voltage(rdev, min_uV, max_uV); 3427 if (sel < 0) 3428 return sel; 3429 3430 uV = rdev->desc->ops->list_voltage(rdev, sel); 3431 if (uV >= min_uV && uV <= max_uV) 3432 rstate->uV = uV; 3433 3434 return 0; 3435 } 3436 3437 static int regulator_set_voltage_unlocked(struct regulator *regulator, 3438 int min_uV, int max_uV, 3439 suspend_state_t state) 3440 { 3441 struct regulator_dev *rdev = regulator->rdev; 3442 struct regulator_voltage *voltage = ®ulator->voltage[state]; 3443 int ret = 0; 3444 int old_min_uV, old_max_uV; 3445 int current_uV; 3446 3447 /* If we're setting the same range as last time the change 3448 * should be a noop (some cpufreq implementations use the same 3449 * voltage for multiple frequencies, for example). 3450 */ 3451 if (voltage->min_uV == min_uV && voltage->max_uV == max_uV) 3452 goto out; 3453 3454 /* If we're trying to set a range that overlaps the current voltage, 3455 * return successfully even though the regulator does not support 3456 * changing the voltage. 3457 */ 3458 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { 3459 current_uV = regulator_get_voltage_rdev(rdev); 3460 if (min_uV <= current_uV && current_uV <= max_uV) { 3461 voltage->min_uV = min_uV; 3462 voltage->max_uV = max_uV; 3463 goto out; 3464 } 3465 } 3466 3467 /* sanity check */ 3468 if (!rdev->desc->ops->set_voltage && 3469 !rdev->desc->ops->set_voltage_sel) { 3470 ret = -EINVAL; 3471 goto out; 3472 } 3473 3474 /* constraints check */ 3475 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 3476 if (ret < 0) 3477 goto out; 3478 3479 /* restore original values in case of error */ 3480 old_min_uV = voltage->min_uV; 3481 old_max_uV = voltage->max_uV; 3482 voltage->min_uV = min_uV; 3483 voltage->max_uV = max_uV; 3484 3485 /* for not coupled regulators this will just set the voltage */ 3486 ret = regulator_balance_voltage(rdev, state); 3487 if (ret < 0) { 3488 voltage->min_uV = old_min_uV; 3489 voltage->max_uV = old_max_uV; 3490 } 3491 3492 out: 3493 return ret; 3494 } 3495 3496 int regulator_set_voltage_rdev(struct regulator_dev *rdev, int min_uV, 3497 int max_uV, suspend_state_t state) 3498 { 3499 int best_supply_uV = 0; 3500 int supply_change_uV = 0; 3501 int ret; 3502 3503 if (rdev->supply && 3504 regulator_ops_is_valid(rdev->supply->rdev, 3505 REGULATOR_CHANGE_VOLTAGE) && 3506 (rdev->desc->min_dropout_uV || !(rdev->desc->ops->get_voltage || 3507 rdev->desc->ops->get_voltage_sel))) { 3508 int current_supply_uV; 3509 int selector; 3510 3511 selector = regulator_map_voltage(rdev, min_uV, max_uV); 3512 if (selector < 0) { 3513 ret = selector; 3514 goto out; 3515 } 3516 3517 best_supply_uV = _regulator_list_voltage(rdev, selector, 0); 3518 if (best_supply_uV < 0) { 3519 ret = best_supply_uV; 3520 goto out; 3521 } 3522 3523 best_supply_uV += rdev->desc->min_dropout_uV; 3524 3525 current_supply_uV = regulator_get_voltage_rdev(rdev->supply->rdev); 3526 if (current_supply_uV < 0) { 3527 ret = current_supply_uV; 3528 goto out; 3529 } 3530 3531 supply_change_uV = best_supply_uV - current_supply_uV; 3532 } 3533 3534 if (supply_change_uV > 0) { 3535 ret = regulator_set_voltage_unlocked(rdev->supply, 3536 best_supply_uV, INT_MAX, state); 3537 if (ret) { 3538 dev_err(&rdev->dev, "Failed to increase supply voltage: %d\n", 3539 ret); 3540 goto out; 3541 } 3542 } 3543 3544 if (state == PM_SUSPEND_ON) 3545 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 3546 else 3547 ret = _regulator_do_set_suspend_voltage(rdev, min_uV, 3548 max_uV, state); 3549 if (ret < 0) 3550 goto out; 3551 3552 if (supply_change_uV < 0) { 3553 ret = regulator_set_voltage_unlocked(rdev->supply, 3554 best_supply_uV, INT_MAX, state); 3555 if (ret) 3556 dev_warn(&rdev->dev, "Failed to decrease supply voltage: %d\n", 3557 ret); 3558 /* No need to fail here */ 3559 ret = 0; 3560 } 3561 3562 out: 3563 return ret; 3564 } 3565 EXPORT_SYMBOL_GPL(regulator_set_voltage_rdev); 3566 3567 static int regulator_limit_voltage_step(struct regulator_dev *rdev, 3568 int *current_uV, int *min_uV) 3569 { 3570 struct regulation_constraints *constraints = rdev->constraints; 3571 3572 /* Limit voltage change only if necessary */ 3573 if (!constraints->max_uV_step || !_regulator_is_enabled(rdev)) 3574 return 1; 3575 3576 if (*current_uV < 0) { 3577 *current_uV = regulator_get_voltage_rdev(rdev); 3578 3579 if (*current_uV < 0) 3580 return *current_uV; 3581 } 3582 3583 if (abs(*current_uV - *min_uV) <= constraints->max_uV_step) 3584 return 1; 3585 3586 /* Clamp target voltage within the given step */ 3587 if (*current_uV < *min_uV) 3588 *min_uV = min(*current_uV + constraints->max_uV_step, 3589 *min_uV); 3590 else 3591 *min_uV = max(*current_uV - constraints->max_uV_step, 3592 *min_uV); 3593 3594 return 0; 3595 } 3596 3597 static int regulator_get_optimal_voltage(struct regulator_dev *rdev, 3598 int *current_uV, 3599 int *min_uV, int *max_uV, 3600 suspend_state_t state, 3601 int n_coupled) 3602 { 3603 struct coupling_desc *c_desc = &rdev->coupling_desc; 3604 struct regulator_dev **c_rdevs = c_desc->coupled_rdevs; 3605 struct regulation_constraints *constraints = rdev->constraints; 3606 int desired_min_uV = 0, desired_max_uV = INT_MAX; 3607 int max_current_uV = 0, min_current_uV = INT_MAX; 3608 int highest_min_uV = 0, target_uV, possible_uV; 3609 int i, ret, max_spread; 3610 bool done; 3611 3612 *current_uV = -1; 3613 3614 /* 3615 * If there are no coupled regulators, simply set the voltage 3616 * demanded by consumers. 3617 */ 3618 if (n_coupled == 1) { 3619 /* 3620 * If consumers don't provide any demands, set voltage 3621 * to min_uV 3622 */ 3623 desired_min_uV = constraints->min_uV; 3624 desired_max_uV = constraints->max_uV; 3625 3626 ret = regulator_check_consumers(rdev, 3627 &desired_min_uV, 3628 &desired_max_uV, state); 3629 if (ret < 0) 3630 return ret; 3631 3632 possible_uV = desired_min_uV; 3633 done = true; 3634 3635 goto finish; 3636 } 3637 3638 /* Find highest min desired voltage */ 3639 for (i = 0; i < n_coupled; i++) { 3640 int tmp_min = 0; 3641 int tmp_max = INT_MAX; 3642 3643 lockdep_assert_held_once(&c_rdevs[i]->mutex.base); 3644 3645 ret = regulator_check_consumers(c_rdevs[i], 3646 &tmp_min, 3647 &tmp_max, state); 3648 if (ret < 0) 3649 return ret; 3650 3651 ret = regulator_check_voltage(c_rdevs[i], &tmp_min, &tmp_max); 3652 if (ret < 0) 3653 return ret; 3654 3655 highest_min_uV = max(highest_min_uV, tmp_min); 3656 3657 if (i == 0) { 3658 desired_min_uV = tmp_min; 3659 desired_max_uV = tmp_max; 3660 } 3661 } 3662 3663 max_spread = constraints->max_spread[0]; 3664 3665 /* 3666 * Let target_uV be equal to the desired one if possible. 3667 * If not, set it to minimum voltage, allowed by other coupled 3668 * regulators. 3669 */ 3670 target_uV = max(desired_min_uV, highest_min_uV - max_spread); 3671 3672 /* 3673 * Find min and max voltages, which currently aren't violating 3674 * max_spread. 3675 */ 3676 for (i = 1; i < n_coupled; i++) { 3677 int tmp_act; 3678 3679 if (!_regulator_is_enabled(c_rdevs[i])) 3680 continue; 3681 3682 tmp_act = regulator_get_voltage_rdev(c_rdevs[i]); 3683 if (tmp_act < 0) 3684 return tmp_act; 3685 3686 min_current_uV = min(tmp_act, min_current_uV); 3687 max_current_uV = max(tmp_act, max_current_uV); 3688 } 3689 3690 /* There aren't any other regulators enabled */ 3691 if (max_current_uV == 0) { 3692 possible_uV = target_uV; 3693 } else { 3694 /* 3695 * Correct target voltage, so as it currently isn't 3696 * violating max_spread 3697 */ 3698 possible_uV = max(target_uV, max_current_uV - max_spread); 3699 possible_uV = min(possible_uV, min_current_uV + max_spread); 3700 } 3701 3702 if (possible_uV > desired_max_uV) 3703 return -EINVAL; 3704 3705 done = (possible_uV == target_uV); 3706 desired_min_uV = possible_uV; 3707 3708 finish: 3709 /* Apply max_uV_step constraint if necessary */ 3710 if (state == PM_SUSPEND_ON) { 3711 ret = regulator_limit_voltage_step(rdev, current_uV, 3712 &desired_min_uV); 3713 if (ret < 0) 3714 return ret; 3715 3716 if (ret == 0) 3717 done = false; 3718 } 3719 3720 /* Set current_uV if wasn't done earlier in the code and if necessary */ 3721 if (n_coupled > 1 && *current_uV == -1) { 3722 3723 if (_regulator_is_enabled(rdev)) { 3724 ret = regulator_get_voltage_rdev(rdev); 3725 if (ret < 0) 3726 return ret; 3727 3728 *current_uV = ret; 3729 } else { 3730 *current_uV = desired_min_uV; 3731 } 3732 } 3733 3734 *min_uV = desired_min_uV; 3735 *max_uV = desired_max_uV; 3736 3737 return done; 3738 } 3739 3740 int regulator_do_balance_voltage(struct regulator_dev *rdev, 3741 suspend_state_t state, bool skip_coupled) 3742 { 3743 struct regulator_dev **c_rdevs; 3744 struct regulator_dev *best_rdev; 3745 struct coupling_desc *c_desc = &rdev->coupling_desc; 3746 int i, ret, n_coupled, best_min_uV, best_max_uV, best_c_rdev; 3747 unsigned int delta, best_delta; 3748 unsigned long c_rdev_done = 0; 3749 bool best_c_rdev_done; 3750 3751 c_rdevs = c_desc->coupled_rdevs; 3752 n_coupled = skip_coupled ? 1 : c_desc->n_coupled; 3753 3754 /* 3755 * Find the best possible voltage change on each loop. Leave the loop 3756 * if there isn't any possible change. 3757 */ 3758 do { 3759 best_c_rdev_done = false; 3760 best_delta = 0; 3761 best_min_uV = 0; 3762 best_max_uV = 0; 3763 best_c_rdev = 0; 3764 best_rdev = NULL; 3765 3766 /* 3767 * Find highest difference between optimal voltage 3768 * and current voltage. 3769 */ 3770 for (i = 0; i < n_coupled; i++) { 3771 /* 3772 * optimal_uV is the best voltage that can be set for 3773 * i-th regulator at the moment without violating 3774 * max_spread constraint in order to balance 3775 * the coupled voltages. 3776 */ 3777 int optimal_uV = 0, optimal_max_uV = 0, current_uV = 0; 3778 3779 if (test_bit(i, &c_rdev_done)) 3780 continue; 3781 3782 ret = regulator_get_optimal_voltage(c_rdevs[i], 3783 ¤t_uV, 3784 &optimal_uV, 3785 &optimal_max_uV, 3786 state, n_coupled); 3787 if (ret < 0) 3788 goto out; 3789 3790 delta = abs(optimal_uV - current_uV); 3791 3792 if (delta && best_delta <= delta) { 3793 best_c_rdev_done = ret; 3794 best_delta = delta; 3795 best_rdev = c_rdevs[i]; 3796 best_min_uV = optimal_uV; 3797 best_max_uV = optimal_max_uV; 3798 best_c_rdev = i; 3799 } 3800 } 3801 3802 /* Nothing to change, return successfully */ 3803 if (!best_rdev) { 3804 ret = 0; 3805 goto out; 3806 } 3807 3808 ret = regulator_set_voltage_rdev(best_rdev, best_min_uV, 3809 best_max_uV, state); 3810 3811 if (ret < 0) 3812 goto out; 3813 3814 if (best_c_rdev_done) 3815 set_bit(best_c_rdev, &c_rdev_done); 3816 3817 } while (n_coupled > 1); 3818 3819 out: 3820 return ret; 3821 } 3822 3823 static int regulator_balance_voltage(struct regulator_dev *rdev, 3824 suspend_state_t state) 3825 { 3826 struct coupling_desc *c_desc = &rdev->coupling_desc; 3827 struct regulator_coupler *coupler = c_desc->coupler; 3828 bool skip_coupled = false; 3829 3830 /* 3831 * If system is in a state other than PM_SUSPEND_ON, don't check 3832 * other coupled regulators. 3833 */ 3834 if (state != PM_SUSPEND_ON) 3835 skip_coupled = true; 3836 3837 if (c_desc->n_resolved < c_desc->n_coupled) { 3838 rdev_err(rdev, "Not all coupled regulators registered\n"); 3839 return -EPERM; 3840 } 3841 3842 /* Invoke custom balancer for customized couplers */ 3843 if (coupler && coupler->balance_voltage) 3844 return coupler->balance_voltage(coupler, rdev, state); 3845 3846 return regulator_do_balance_voltage(rdev, state, skip_coupled); 3847 } 3848 3849 /** 3850 * regulator_set_voltage - set regulator output voltage 3851 * @regulator: regulator source 3852 * @min_uV: Minimum required voltage in uV 3853 * @max_uV: Maximum acceptable voltage in uV 3854 * 3855 * Sets a voltage regulator to the desired output voltage. This can be set 3856 * during any regulator state. IOW, regulator can be disabled or enabled. 3857 * 3858 * If the regulator is enabled then the voltage will change to the new value 3859 * immediately otherwise if the regulator is disabled the regulator will 3860 * output at the new voltage when enabled. 3861 * 3862 * NOTE: If the regulator is shared between several devices then the lowest 3863 * request voltage that meets the system constraints will be used. 3864 * Regulator system constraints must be set for this regulator before 3865 * calling this function otherwise this call will fail. 3866 */ 3867 int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) 3868 { 3869 struct ww_acquire_ctx ww_ctx; 3870 int ret; 3871 3872 regulator_lock_dependent(regulator->rdev, &ww_ctx); 3873 3874 ret = regulator_set_voltage_unlocked(regulator, min_uV, max_uV, 3875 PM_SUSPEND_ON); 3876 3877 regulator_unlock_dependent(regulator->rdev, &ww_ctx); 3878 3879 return ret; 3880 } 3881 EXPORT_SYMBOL_GPL(regulator_set_voltage); 3882 3883 static inline int regulator_suspend_toggle(struct regulator_dev *rdev, 3884 suspend_state_t state, bool en) 3885 { 3886 struct regulator_state *rstate; 3887 3888 rstate = regulator_get_suspend_state(rdev, state); 3889 if (rstate == NULL) 3890 return -EINVAL; 3891 3892 if (!rstate->changeable) 3893 return -EPERM; 3894 3895 rstate->enabled = (en) ? ENABLE_IN_SUSPEND : DISABLE_IN_SUSPEND; 3896 3897 return 0; 3898 } 3899 3900 int regulator_suspend_enable(struct regulator_dev *rdev, 3901 suspend_state_t state) 3902 { 3903 return regulator_suspend_toggle(rdev, state, true); 3904 } 3905 EXPORT_SYMBOL_GPL(regulator_suspend_enable); 3906 3907 int regulator_suspend_disable(struct regulator_dev *rdev, 3908 suspend_state_t state) 3909 { 3910 struct regulator *regulator; 3911 struct regulator_voltage *voltage; 3912 3913 /* 3914 * if any consumer wants this regulator device keeping on in 3915 * suspend states, don't set it as disabled. 3916 */ 3917 list_for_each_entry(regulator, &rdev->consumer_list, list) { 3918 voltage = ®ulator->voltage[state]; 3919 if (voltage->min_uV || voltage->max_uV) 3920 return 0; 3921 } 3922 3923 return regulator_suspend_toggle(rdev, state, false); 3924 } 3925 EXPORT_SYMBOL_GPL(regulator_suspend_disable); 3926 3927 static int _regulator_set_suspend_voltage(struct regulator *regulator, 3928 int min_uV, int max_uV, 3929 suspend_state_t state) 3930 { 3931 struct regulator_dev *rdev = regulator->rdev; 3932 struct regulator_state *rstate; 3933 3934 rstate = regulator_get_suspend_state(rdev, state); 3935 if (rstate == NULL) 3936 return -EINVAL; 3937 3938 if (rstate->min_uV == rstate->max_uV) { 3939 rdev_err(rdev, "The suspend voltage can't be changed!\n"); 3940 return -EPERM; 3941 } 3942 3943 return regulator_set_voltage_unlocked(regulator, min_uV, max_uV, state); 3944 } 3945 3946 int regulator_set_suspend_voltage(struct regulator *regulator, int min_uV, 3947 int max_uV, suspend_state_t state) 3948 { 3949 struct ww_acquire_ctx ww_ctx; 3950 int ret; 3951 3952 /* PM_SUSPEND_ON is handled by regulator_set_voltage() */ 3953 if (regulator_check_states(state) || state == PM_SUSPEND_ON) 3954 return -EINVAL; 3955 3956 regulator_lock_dependent(regulator->rdev, &ww_ctx); 3957 3958 ret = _regulator_set_suspend_voltage(regulator, min_uV, 3959 max_uV, state); 3960 3961 regulator_unlock_dependent(regulator->rdev, &ww_ctx); 3962 3963 return ret; 3964 } 3965 EXPORT_SYMBOL_GPL(regulator_set_suspend_voltage); 3966 3967 /** 3968 * regulator_set_voltage_time - get raise/fall time 3969 * @regulator: regulator source 3970 * @old_uV: starting voltage in microvolts 3971 * @new_uV: target voltage in microvolts 3972 * 3973 * Provided with the starting and ending voltage, this function attempts to 3974 * calculate the time in microseconds required to rise or fall to this new 3975 * voltage. 3976 */ 3977 int regulator_set_voltage_time(struct regulator *regulator, 3978 int old_uV, int new_uV) 3979 { 3980 struct regulator_dev *rdev = regulator->rdev; 3981 const struct regulator_ops *ops = rdev->desc->ops; 3982 int old_sel = -1; 3983 int new_sel = -1; 3984 int voltage; 3985 int i; 3986 3987 if (ops->set_voltage_time) 3988 return ops->set_voltage_time(rdev, old_uV, new_uV); 3989 else if (!ops->set_voltage_time_sel) 3990 return _regulator_set_voltage_time(rdev, old_uV, new_uV); 3991 3992 /* Currently requires operations to do this */ 3993 if (!ops->list_voltage || !rdev->desc->n_voltages) 3994 return -EINVAL; 3995 3996 for (i = 0; i < rdev->desc->n_voltages; i++) { 3997 /* We only look for exact voltage matches here */ 3998 voltage = regulator_list_voltage(regulator, i); 3999 if (voltage < 0) 4000 return -EINVAL; 4001 if (voltage == 0) 4002 continue; 4003 if (voltage == old_uV) 4004 old_sel = i; 4005 if (voltage == new_uV) 4006 new_sel = i; 4007 } 4008 4009 if (old_sel < 0 || new_sel < 0) 4010 return -EINVAL; 4011 4012 return ops->set_voltage_time_sel(rdev, old_sel, new_sel); 4013 } 4014 EXPORT_SYMBOL_GPL(regulator_set_voltage_time); 4015 4016 /** 4017 * regulator_set_voltage_time_sel - get raise/fall time 4018 * @rdev: regulator source device 4019 * @old_selector: selector for starting voltage 4020 * @new_selector: selector for target voltage 4021 * 4022 * Provided with the starting and target voltage selectors, this function 4023 * returns time in microseconds required to rise or fall to this new voltage 4024 * 4025 * Drivers providing ramp_delay in regulation_constraints can use this as their 4026 * set_voltage_time_sel() operation. 4027 */ 4028 int regulator_set_voltage_time_sel(struct regulator_dev *rdev, 4029 unsigned int old_selector, 4030 unsigned int new_selector) 4031 { 4032 int old_volt, new_volt; 4033 4034 /* sanity check */ 4035 if (!rdev->desc->ops->list_voltage) 4036 return -EINVAL; 4037 4038 old_volt = rdev->desc->ops->list_voltage(rdev, old_selector); 4039 new_volt = rdev->desc->ops->list_voltage(rdev, new_selector); 4040 4041 if (rdev->desc->ops->set_voltage_time) 4042 return rdev->desc->ops->set_voltage_time(rdev, old_volt, 4043 new_volt); 4044 else 4045 return _regulator_set_voltage_time(rdev, old_volt, new_volt); 4046 } 4047 EXPORT_SYMBOL_GPL(regulator_set_voltage_time_sel); 4048 4049 /** 4050 * regulator_sync_voltage - re-apply last regulator output voltage 4051 * @regulator: regulator source 4052 * 4053 * Re-apply the last configured voltage. This is intended to be used 4054 * where some external control source the consumer is cooperating with 4055 * has caused the configured voltage to change. 4056 */ 4057 int regulator_sync_voltage(struct regulator *regulator) 4058 { 4059 struct regulator_dev *rdev = regulator->rdev; 4060 struct regulator_voltage *voltage = ®ulator->voltage[PM_SUSPEND_ON]; 4061 int ret, min_uV, max_uV; 4062 4063 regulator_lock(rdev); 4064 4065 if (!rdev->desc->ops->set_voltage && 4066 !rdev->desc->ops->set_voltage_sel) { 4067 ret = -EINVAL; 4068 goto out; 4069 } 4070 4071 /* This is only going to work if we've had a voltage configured. */ 4072 if (!voltage->min_uV && !voltage->max_uV) { 4073 ret = -EINVAL; 4074 goto out; 4075 } 4076 4077 min_uV = voltage->min_uV; 4078 max_uV = voltage->max_uV; 4079 4080 /* This should be a paranoia check... */ 4081 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 4082 if (ret < 0) 4083 goto out; 4084 4085 ret = regulator_check_consumers(rdev, &min_uV, &max_uV, 0); 4086 if (ret < 0) 4087 goto out; 4088 4089 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 4090 4091 out: 4092 regulator_unlock(rdev); 4093 return ret; 4094 } 4095 EXPORT_SYMBOL_GPL(regulator_sync_voltage); 4096 4097 int regulator_get_voltage_rdev(struct regulator_dev *rdev) 4098 { 4099 int sel, ret; 4100 bool bypassed; 4101 4102 if (rdev->desc->ops->get_bypass) { 4103 ret = rdev->desc->ops->get_bypass(rdev, &bypassed); 4104 if (ret < 0) 4105 return ret; 4106 if (bypassed) { 4107 /* if bypassed the regulator must have a supply */ 4108 if (!rdev->supply) { 4109 rdev_err(rdev, 4110 "bypassed regulator has no supply!\n"); 4111 return -EPROBE_DEFER; 4112 } 4113 4114 return regulator_get_voltage_rdev(rdev->supply->rdev); 4115 } 4116 } 4117 4118 if (rdev->desc->ops->get_voltage_sel) { 4119 sel = rdev->desc->ops->get_voltage_sel(rdev); 4120 if (sel < 0) 4121 return sel; 4122 ret = rdev->desc->ops->list_voltage(rdev, sel); 4123 } else if (rdev->desc->ops->get_voltage) { 4124 ret = rdev->desc->ops->get_voltage(rdev); 4125 } else if (rdev->desc->ops->list_voltage) { 4126 ret = rdev->desc->ops->list_voltage(rdev, 0); 4127 } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { 4128 ret = rdev->desc->fixed_uV; 4129 } else if (rdev->supply) { 4130 ret = regulator_get_voltage_rdev(rdev->supply->rdev); 4131 } else { 4132 return -EINVAL; 4133 } 4134 4135 if (ret < 0) 4136 return ret; 4137 return ret - rdev->constraints->uV_offset; 4138 } 4139 EXPORT_SYMBOL_GPL(regulator_get_voltage_rdev); 4140 4141 /** 4142 * regulator_get_voltage - get regulator output voltage 4143 * @regulator: regulator source 4144 * 4145 * This returns the current regulator voltage in uV. 4146 * 4147 * NOTE: If the regulator is disabled it will return the voltage value. This 4148 * function should not be used to determine regulator state. 4149 */ 4150 int regulator_get_voltage(struct regulator *regulator) 4151 { 4152 struct ww_acquire_ctx ww_ctx; 4153 int ret; 4154 4155 regulator_lock_dependent(regulator->rdev, &ww_ctx); 4156 ret = regulator_get_voltage_rdev(regulator->rdev); 4157 regulator_unlock_dependent(regulator->rdev, &ww_ctx); 4158 4159 return ret; 4160 } 4161 EXPORT_SYMBOL_GPL(regulator_get_voltage); 4162 4163 /** 4164 * regulator_set_current_limit - set regulator output current limit 4165 * @regulator: regulator source 4166 * @min_uA: Minimum supported current in uA 4167 * @max_uA: Maximum supported current in uA 4168 * 4169 * Sets current sink to the desired output current. This can be set during 4170 * any regulator state. IOW, regulator can be disabled or enabled. 4171 * 4172 * If the regulator is enabled then the current will change to the new value 4173 * immediately otherwise if the regulator is disabled the regulator will 4174 * output at the new current when enabled. 4175 * 4176 * NOTE: Regulator system constraints must be set for this regulator before 4177 * calling this function otherwise this call will fail. 4178 */ 4179 int regulator_set_current_limit(struct regulator *regulator, 4180 int min_uA, int max_uA) 4181 { 4182 struct regulator_dev *rdev = regulator->rdev; 4183 int ret; 4184 4185 regulator_lock(rdev); 4186 4187 /* sanity check */ 4188 if (!rdev->desc->ops->set_current_limit) { 4189 ret = -EINVAL; 4190 goto out; 4191 } 4192 4193 /* constraints check */ 4194 ret = regulator_check_current_limit(rdev, &min_uA, &max_uA); 4195 if (ret < 0) 4196 goto out; 4197 4198 ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA); 4199 out: 4200 regulator_unlock(rdev); 4201 return ret; 4202 } 4203 EXPORT_SYMBOL_GPL(regulator_set_current_limit); 4204 4205 static int _regulator_get_current_limit_unlocked(struct regulator_dev *rdev) 4206 { 4207 /* sanity check */ 4208 if (!rdev->desc->ops->get_current_limit) 4209 return -EINVAL; 4210 4211 return rdev->desc->ops->get_current_limit(rdev); 4212 } 4213 4214 static int _regulator_get_current_limit(struct regulator_dev *rdev) 4215 { 4216 int ret; 4217 4218 regulator_lock(rdev); 4219 ret = _regulator_get_current_limit_unlocked(rdev); 4220 regulator_unlock(rdev); 4221 4222 return ret; 4223 } 4224 4225 /** 4226 * regulator_get_current_limit - get regulator output current 4227 * @regulator: regulator source 4228 * 4229 * This returns the current supplied by the specified current sink in uA. 4230 * 4231 * NOTE: If the regulator is disabled it will return the current value. This 4232 * function should not be used to determine regulator state. 4233 */ 4234 int regulator_get_current_limit(struct regulator *regulator) 4235 { 4236 return _regulator_get_current_limit(regulator->rdev); 4237 } 4238 EXPORT_SYMBOL_GPL(regulator_get_current_limit); 4239 4240 /** 4241 * regulator_set_mode - set regulator operating mode 4242 * @regulator: regulator source 4243 * @mode: operating mode - one of the REGULATOR_MODE constants 4244 * 4245 * Set regulator operating mode to increase regulator efficiency or improve 4246 * regulation performance. 4247 * 4248 * NOTE: Regulator system constraints must be set for this regulator before 4249 * calling this function otherwise this call will fail. 4250 */ 4251 int regulator_set_mode(struct regulator *regulator, unsigned int mode) 4252 { 4253 struct regulator_dev *rdev = regulator->rdev; 4254 int ret; 4255 int regulator_curr_mode; 4256 4257 regulator_lock(rdev); 4258 4259 /* sanity check */ 4260 if (!rdev->desc->ops->set_mode) { 4261 ret = -EINVAL; 4262 goto out; 4263 } 4264 4265 /* return if the same mode is requested */ 4266 if (rdev->desc->ops->get_mode) { 4267 regulator_curr_mode = rdev->desc->ops->get_mode(rdev); 4268 if (regulator_curr_mode == mode) { 4269 ret = 0; 4270 goto out; 4271 } 4272 } 4273 4274 /* constraints check */ 4275 ret = regulator_mode_constrain(rdev, &mode); 4276 if (ret < 0) 4277 goto out; 4278 4279 ret = rdev->desc->ops->set_mode(rdev, mode); 4280 out: 4281 regulator_unlock(rdev); 4282 return ret; 4283 } 4284 EXPORT_SYMBOL_GPL(regulator_set_mode); 4285 4286 static unsigned int _regulator_get_mode_unlocked(struct regulator_dev *rdev) 4287 { 4288 /* sanity check */ 4289 if (!rdev->desc->ops->get_mode) 4290 return -EINVAL; 4291 4292 return rdev->desc->ops->get_mode(rdev); 4293 } 4294 4295 static unsigned int _regulator_get_mode(struct regulator_dev *rdev) 4296 { 4297 int ret; 4298 4299 regulator_lock(rdev); 4300 ret = _regulator_get_mode_unlocked(rdev); 4301 regulator_unlock(rdev); 4302 4303 return ret; 4304 } 4305 4306 /** 4307 * regulator_get_mode - get regulator operating mode 4308 * @regulator: regulator source 4309 * 4310 * Get the current regulator operating mode. 4311 */ 4312 unsigned int regulator_get_mode(struct regulator *regulator) 4313 { 4314 return _regulator_get_mode(regulator->rdev); 4315 } 4316 EXPORT_SYMBOL_GPL(regulator_get_mode); 4317 4318 static int _regulator_get_error_flags(struct regulator_dev *rdev, 4319 unsigned int *flags) 4320 { 4321 int ret; 4322 4323 regulator_lock(rdev); 4324 4325 /* sanity check */ 4326 if (!rdev->desc->ops->get_error_flags) { 4327 ret = -EINVAL; 4328 goto out; 4329 } 4330 4331 ret = rdev->desc->ops->get_error_flags(rdev, flags); 4332 out: 4333 regulator_unlock(rdev); 4334 return ret; 4335 } 4336 4337 /** 4338 * regulator_get_error_flags - get regulator error information 4339 * @regulator: regulator source 4340 * @flags: pointer to store error flags 4341 * 4342 * Get the current regulator error information. 4343 */ 4344 int regulator_get_error_flags(struct regulator *regulator, 4345 unsigned int *flags) 4346 { 4347 return _regulator_get_error_flags(regulator->rdev, flags); 4348 } 4349 EXPORT_SYMBOL_GPL(regulator_get_error_flags); 4350 4351 /** 4352 * regulator_set_load - set regulator load 4353 * @regulator: regulator source 4354 * @uA_load: load current 4355 * 4356 * Notifies the regulator core of a new device load. This is then used by 4357 * DRMS (if enabled by constraints) to set the most efficient regulator 4358 * operating mode for the new regulator loading. 4359 * 4360 * Consumer devices notify their supply regulator of the maximum power 4361 * they will require (can be taken from device datasheet in the power 4362 * consumption tables) when they change operational status and hence power 4363 * state. Examples of operational state changes that can affect power 4364 * consumption are :- 4365 * 4366 * o Device is opened / closed. 4367 * o Device I/O is about to begin or has just finished. 4368 * o Device is idling in between work. 4369 * 4370 * This information is also exported via sysfs to userspace. 4371 * 4372 * DRMS will sum the total requested load on the regulator and change 4373 * to the most efficient operating mode if platform constraints allow. 4374 * 4375 * NOTE: when a regulator consumer requests to have a regulator 4376 * disabled then any load that consumer requested no longer counts 4377 * toward the total requested load. If the regulator is re-enabled 4378 * then the previously requested load will start counting again. 4379 * 4380 * If a regulator is an always-on regulator then an individual consumer's 4381 * load will still be removed if that consumer is fully disabled. 4382 * 4383 * On error a negative errno is returned. 4384 */ 4385 int regulator_set_load(struct regulator *regulator, int uA_load) 4386 { 4387 struct regulator_dev *rdev = regulator->rdev; 4388 int old_uA_load; 4389 int ret = 0; 4390 4391 regulator_lock(rdev); 4392 old_uA_load = regulator->uA_load; 4393 regulator->uA_load = uA_load; 4394 if (regulator->enable_count && old_uA_load != uA_load) { 4395 ret = drms_uA_update(rdev); 4396 if (ret < 0) 4397 regulator->uA_load = old_uA_load; 4398 } 4399 regulator_unlock(rdev); 4400 4401 return ret; 4402 } 4403 EXPORT_SYMBOL_GPL(regulator_set_load); 4404 4405 /** 4406 * regulator_allow_bypass - allow the regulator to go into bypass mode 4407 * 4408 * @regulator: Regulator to configure 4409 * @enable: enable or disable bypass mode 4410 * 4411 * Allow the regulator to go into bypass mode if all other consumers 4412 * for the regulator also enable bypass mode and the machine 4413 * constraints allow this. Bypass mode means that the regulator is 4414 * simply passing the input directly to the output with no regulation. 4415 */ 4416 int regulator_allow_bypass(struct regulator *regulator, bool enable) 4417 { 4418 struct regulator_dev *rdev = regulator->rdev; 4419 const char *name = rdev_get_name(rdev); 4420 int ret = 0; 4421 4422 if (!rdev->desc->ops->set_bypass) 4423 return 0; 4424 4425 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_BYPASS)) 4426 return 0; 4427 4428 regulator_lock(rdev); 4429 4430 if (enable && !regulator->bypass) { 4431 rdev->bypass_count++; 4432 4433 if (rdev->bypass_count == rdev->open_count) { 4434 trace_regulator_bypass_enable(name); 4435 4436 ret = rdev->desc->ops->set_bypass(rdev, enable); 4437 if (ret != 0) 4438 rdev->bypass_count--; 4439 else 4440 trace_regulator_bypass_enable_complete(name); 4441 } 4442 4443 } else if (!enable && regulator->bypass) { 4444 rdev->bypass_count--; 4445 4446 if (rdev->bypass_count != rdev->open_count) { 4447 trace_regulator_bypass_disable(name); 4448 4449 ret = rdev->desc->ops->set_bypass(rdev, enable); 4450 if (ret != 0) 4451 rdev->bypass_count++; 4452 else 4453 trace_regulator_bypass_disable_complete(name); 4454 } 4455 } 4456 4457 if (ret == 0) 4458 regulator->bypass = enable; 4459 4460 regulator_unlock(rdev); 4461 4462 return ret; 4463 } 4464 EXPORT_SYMBOL_GPL(regulator_allow_bypass); 4465 4466 /** 4467 * regulator_register_notifier - register regulator event notifier 4468 * @regulator: regulator source 4469 * @nb: notifier block 4470 * 4471 * Register notifier block to receive regulator events. 4472 */ 4473 int regulator_register_notifier(struct regulator *regulator, 4474 struct notifier_block *nb) 4475 { 4476 return blocking_notifier_chain_register(®ulator->rdev->notifier, 4477 nb); 4478 } 4479 EXPORT_SYMBOL_GPL(regulator_register_notifier); 4480 4481 /** 4482 * regulator_unregister_notifier - unregister regulator event notifier 4483 * @regulator: regulator source 4484 * @nb: notifier block 4485 * 4486 * Unregister regulator event notifier block. 4487 */ 4488 int regulator_unregister_notifier(struct regulator *regulator, 4489 struct notifier_block *nb) 4490 { 4491 return blocking_notifier_chain_unregister(®ulator->rdev->notifier, 4492 nb); 4493 } 4494 EXPORT_SYMBOL_GPL(regulator_unregister_notifier); 4495 4496 /* notify regulator consumers and downstream regulator consumers. 4497 * Note mutex must be held by caller. 4498 */ 4499 static int _notifier_call_chain(struct regulator_dev *rdev, 4500 unsigned long event, void *data) 4501 { 4502 /* call rdev chain first */ 4503 return blocking_notifier_call_chain(&rdev->notifier, event, data); 4504 } 4505 4506 /** 4507 * regulator_bulk_get - get multiple regulator consumers 4508 * 4509 * @dev: Device to supply 4510 * @num_consumers: Number of consumers to register 4511 * @consumers: Configuration of consumers; clients are stored here. 4512 * 4513 * @return 0 on success, an errno on failure. 4514 * 4515 * This helper function allows drivers to get several regulator 4516 * consumers in one operation. If any of the regulators cannot be 4517 * acquired then any regulators that were allocated will be freed 4518 * before returning to the caller. 4519 */ 4520 int regulator_bulk_get(struct device *dev, int num_consumers, 4521 struct regulator_bulk_data *consumers) 4522 { 4523 int i; 4524 int ret; 4525 4526 for (i = 0; i < num_consumers; i++) 4527 consumers[i].consumer = NULL; 4528 4529 for (i = 0; i < num_consumers; i++) { 4530 consumers[i].consumer = regulator_get(dev, 4531 consumers[i].supply); 4532 if (IS_ERR(consumers[i].consumer)) { 4533 ret = PTR_ERR(consumers[i].consumer); 4534 consumers[i].consumer = NULL; 4535 goto err; 4536 } 4537 } 4538 4539 return 0; 4540 4541 err: 4542 if (ret != -EPROBE_DEFER) 4543 dev_err(dev, "Failed to get supply '%s': %d\n", 4544 consumers[i].supply, ret); 4545 else 4546 dev_dbg(dev, "Failed to get supply '%s', deferring\n", 4547 consumers[i].supply); 4548 4549 while (--i >= 0) 4550 regulator_put(consumers[i].consumer); 4551 4552 return ret; 4553 } 4554 EXPORT_SYMBOL_GPL(regulator_bulk_get); 4555 4556 static void regulator_bulk_enable_async(void *data, async_cookie_t cookie) 4557 { 4558 struct regulator_bulk_data *bulk = data; 4559 4560 bulk->ret = regulator_enable(bulk->consumer); 4561 } 4562 4563 /** 4564 * regulator_bulk_enable - enable multiple regulator consumers 4565 * 4566 * @num_consumers: Number of consumers 4567 * @consumers: Consumer data; clients are stored here. 4568 * @return 0 on success, an errno on failure 4569 * 4570 * This convenience API allows consumers to enable multiple regulator 4571 * clients in a single API call. If any consumers cannot be enabled 4572 * then any others that were enabled will be disabled again prior to 4573 * return. 4574 */ 4575 int regulator_bulk_enable(int num_consumers, 4576 struct regulator_bulk_data *consumers) 4577 { 4578 ASYNC_DOMAIN_EXCLUSIVE(async_domain); 4579 int i; 4580 int ret = 0; 4581 4582 for (i = 0; i < num_consumers; i++) { 4583 async_schedule_domain(regulator_bulk_enable_async, 4584 &consumers[i], &async_domain); 4585 } 4586 4587 async_synchronize_full_domain(&async_domain); 4588 4589 /* If any consumer failed we need to unwind any that succeeded */ 4590 for (i = 0; i < num_consumers; i++) { 4591 if (consumers[i].ret != 0) { 4592 ret = consumers[i].ret; 4593 goto err; 4594 } 4595 } 4596 4597 return 0; 4598 4599 err: 4600 for (i = 0; i < num_consumers; i++) { 4601 if (consumers[i].ret < 0) 4602 pr_err("Failed to enable %s: %d\n", consumers[i].supply, 4603 consumers[i].ret); 4604 else 4605 regulator_disable(consumers[i].consumer); 4606 } 4607 4608 return ret; 4609 } 4610 EXPORT_SYMBOL_GPL(regulator_bulk_enable); 4611 4612 /** 4613 * regulator_bulk_disable - disable multiple regulator consumers 4614 * 4615 * @num_consumers: Number of consumers 4616 * @consumers: Consumer data; clients are stored here. 4617 * @return 0 on success, an errno on failure 4618 * 4619 * This convenience API allows consumers to disable multiple regulator 4620 * clients in a single API call. If any consumers cannot be disabled 4621 * then any others that were disabled will be enabled again prior to 4622 * return. 4623 */ 4624 int regulator_bulk_disable(int num_consumers, 4625 struct regulator_bulk_data *consumers) 4626 { 4627 int i; 4628 int ret, r; 4629 4630 for (i = num_consumers - 1; i >= 0; --i) { 4631 ret = regulator_disable(consumers[i].consumer); 4632 if (ret != 0) 4633 goto err; 4634 } 4635 4636 return 0; 4637 4638 err: 4639 pr_err("Failed to disable %s: %d\n", consumers[i].supply, ret); 4640 for (++i; i < num_consumers; ++i) { 4641 r = regulator_enable(consumers[i].consumer); 4642 if (r != 0) 4643 pr_err("Failed to re-enable %s: %d\n", 4644 consumers[i].supply, r); 4645 } 4646 4647 return ret; 4648 } 4649 EXPORT_SYMBOL_GPL(regulator_bulk_disable); 4650 4651 /** 4652 * regulator_bulk_force_disable - force disable multiple regulator consumers 4653 * 4654 * @num_consumers: Number of consumers 4655 * @consumers: Consumer data; clients are stored here. 4656 * @return 0 on success, an errno on failure 4657 * 4658 * This convenience API allows consumers to forcibly disable multiple regulator 4659 * clients in a single API call. 4660 * NOTE: This should be used for situations when device damage will 4661 * likely occur if the regulators are not disabled (e.g. over temp). 4662 * Although regulator_force_disable function call for some consumers can 4663 * return error numbers, the function is called for all consumers. 4664 */ 4665 int regulator_bulk_force_disable(int num_consumers, 4666 struct regulator_bulk_data *consumers) 4667 { 4668 int i; 4669 int ret = 0; 4670 4671 for (i = 0; i < num_consumers; i++) { 4672 consumers[i].ret = 4673 regulator_force_disable(consumers[i].consumer); 4674 4675 /* Store first error for reporting */ 4676 if (consumers[i].ret && !ret) 4677 ret = consumers[i].ret; 4678 } 4679 4680 return ret; 4681 } 4682 EXPORT_SYMBOL_GPL(regulator_bulk_force_disable); 4683 4684 /** 4685 * regulator_bulk_free - free multiple regulator consumers 4686 * 4687 * @num_consumers: Number of consumers 4688 * @consumers: Consumer data; clients are stored here. 4689 * 4690 * This convenience API allows consumers to free multiple regulator 4691 * clients in a single API call. 4692 */ 4693 void regulator_bulk_free(int num_consumers, 4694 struct regulator_bulk_data *consumers) 4695 { 4696 int i; 4697 4698 for (i = 0; i < num_consumers; i++) { 4699 regulator_put(consumers[i].consumer); 4700 consumers[i].consumer = NULL; 4701 } 4702 } 4703 EXPORT_SYMBOL_GPL(regulator_bulk_free); 4704 4705 /** 4706 * regulator_notifier_call_chain - call regulator event notifier 4707 * @rdev: regulator source 4708 * @event: notifier block 4709 * @data: callback-specific data. 4710 * 4711 * Called by regulator drivers to notify clients a regulator event has 4712 * occurred. We also notify regulator clients downstream. 4713 * Note lock must be held by caller. 4714 */ 4715 int regulator_notifier_call_chain(struct regulator_dev *rdev, 4716 unsigned long event, void *data) 4717 { 4718 lockdep_assert_held_once(&rdev->mutex.base); 4719 4720 _notifier_call_chain(rdev, event, data); 4721 return NOTIFY_DONE; 4722 4723 } 4724 EXPORT_SYMBOL_GPL(regulator_notifier_call_chain); 4725 4726 /** 4727 * regulator_mode_to_status - convert a regulator mode into a status 4728 * 4729 * @mode: Mode to convert 4730 * 4731 * Convert a regulator mode into a status. 4732 */ 4733 int regulator_mode_to_status(unsigned int mode) 4734 { 4735 switch (mode) { 4736 case REGULATOR_MODE_FAST: 4737 return REGULATOR_STATUS_FAST; 4738 case REGULATOR_MODE_NORMAL: 4739 return REGULATOR_STATUS_NORMAL; 4740 case REGULATOR_MODE_IDLE: 4741 return REGULATOR_STATUS_IDLE; 4742 case REGULATOR_MODE_STANDBY: 4743 return REGULATOR_STATUS_STANDBY; 4744 default: 4745 return REGULATOR_STATUS_UNDEFINED; 4746 } 4747 } 4748 EXPORT_SYMBOL_GPL(regulator_mode_to_status); 4749 4750 static struct attribute *regulator_dev_attrs[] = { 4751 &dev_attr_name.attr, 4752 &dev_attr_num_users.attr, 4753 &dev_attr_type.attr, 4754 &dev_attr_microvolts.attr, 4755 &dev_attr_microamps.attr, 4756 &dev_attr_opmode.attr, 4757 &dev_attr_state.attr, 4758 &dev_attr_status.attr, 4759 &dev_attr_bypass.attr, 4760 &dev_attr_requested_microamps.attr, 4761 &dev_attr_min_microvolts.attr, 4762 &dev_attr_max_microvolts.attr, 4763 &dev_attr_min_microamps.attr, 4764 &dev_attr_max_microamps.attr, 4765 &dev_attr_suspend_standby_state.attr, 4766 &dev_attr_suspend_mem_state.attr, 4767 &dev_attr_suspend_disk_state.attr, 4768 &dev_attr_suspend_standby_microvolts.attr, 4769 &dev_attr_suspend_mem_microvolts.attr, 4770 &dev_attr_suspend_disk_microvolts.attr, 4771 &dev_attr_suspend_standby_mode.attr, 4772 &dev_attr_suspend_mem_mode.attr, 4773 &dev_attr_suspend_disk_mode.attr, 4774 NULL 4775 }; 4776 4777 /* 4778 * To avoid cluttering sysfs (and memory) with useless state, only 4779 * create attributes that can be meaningfully displayed. 4780 */ 4781 static umode_t regulator_attr_is_visible(struct kobject *kobj, 4782 struct attribute *attr, int idx) 4783 { 4784 struct device *dev = kobj_to_dev(kobj); 4785 struct regulator_dev *rdev = dev_to_rdev(dev); 4786 const struct regulator_ops *ops = rdev->desc->ops; 4787 umode_t mode = attr->mode; 4788 4789 /* these three are always present */ 4790 if (attr == &dev_attr_name.attr || 4791 attr == &dev_attr_num_users.attr || 4792 attr == &dev_attr_type.attr) 4793 return mode; 4794 4795 /* some attributes need specific methods to be displayed */ 4796 if (attr == &dev_attr_microvolts.attr) { 4797 if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) || 4798 (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) || 4799 (ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) || 4800 (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1)) 4801 return mode; 4802 return 0; 4803 } 4804 4805 if (attr == &dev_attr_microamps.attr) 4806 return ops->get_current_limit ? mode : 0; 4807 4808 if (attr == &dev_attr_opmode.attr) 4809 return ops->get_mode ? mode : 0; 4810 4811 if (attr == &dev_attr_state.attr) 4812 return (rdev->ena_pin || ops->is_enabled) ? mode : 0; 4813 4814 if (attr == &dev_attr_status.attr) 4815 return ops->get_status ? mode : 0; 4816 4817 if (attr == &dev_attr_bypass.attr) 4818 return ops->get_bypass ? mode : 0; 4819 4820 /* constraints need specific supporting methods */ 4821 if (attr == &dev_attr_min_microvolts.attr || 4822 attr == &dev_attr_max_microvolts.attr) 4823 return (ops->set_voltage || ops->set_voltage_sel) ? mode : 0; 4824 4825 if (attr == &dev_attr_min_microamps.attr || 4826 attr == &dev_attr_max_microamps.attr) 4827 return ops->set_current_limit ? mode : 0; 4828 4829 if (attr == &dev_attr_suspend_standby_state.attr || 4830 attr == &dev_attr_suspend_mem_state.attr || 4831 attr == &dev_attr_suspend_disk_state.attr) 4832 return mode; 4833 4834 if (attr == &dev_attr_suspend_standby_microvolts.attr || 4835 attr == &dev_attr_suspend_mem_microvolts.attr || 4836 attr == &dev_attr_suspend_disk_microvolts.attr) 4837 return ops->set_suspend_voltage ? mode : 0; 4838 4839 if (attr == &dev_attr_suspend_standby_mode.attr || 4840 attr == &dev_attr_suspend_mem_mode.attr || 4841 attr == &dev_attr_suspend_disk_mode.attr) 4842 return ops->set_suspend_mode ? mode : 0; 4843 4844 return mode; 4845 } 4846 4847 static const struct attribute_group regulator_dev_group = { 4848 .attrs = regulator_dev_attrs, 4849 .is_visible = regulator_attr_is_visible, 4850 }; 4851 4852 static const struct attribute_group *regulator_dev_groups[] = { 4853 ®ulator_dev_group, 4854 NULL 4855 }; 4856 4857 static void regulator_dev_release(struct device *dev) 4858 { 4859 struct regulator_dev *rdev = dev_get_drvdata(dev); 4860 4861 kfree(rdev->constraints); 4862 of_node_put(rdev->dev.of_node); 4863 kfree(rdev); 4864 } 4865 4866 static void rdev_init_debugfs(struct regulator_dev *rdev) 4867 { 4868 struct device *parent = rdev->dev.parent; 4869 const char *rname = rdev_get_name(rdev); 4870 char name[NAME_MAX]; 4871 4872 /* Avoid duplicate debugfs directory names */ 4873 if (parent && rname == rdev->desc->name) { 4874 snprintf(name, sizeof(name), "%s-%s", dev_name(parent), 4875 rname); 4876 rname = name; 4877 } 4878 4879 rdev->debugfs = debugfs_create_dir(rname, debugfs_root); 4880 if (!rdev->debugfs) { 4881 rdev_warn(rdev, "Failed to create debugfs directory\n"); 4882 return; 4883 } 4884 4885 debugfs_create_u32("use_count", 0444, rdev->debugfs, 4886 &rdev->use_count); 4887 debugfs_create_u32("open_count", 0444, rdev->debugfs, 4888 &rdev->open_count); 4889 debugfs_create_u32("bypass_count", 0444, rdev->debugfs, 4890 &rdev->bypass_count); 4891 } 4892 4893 static int regulator_register_resolve_supply(struct device *dev, void *data) 4894 { 4895 struct regulator_dev *rdev = dev_to_rdev(dev); 4896 4897 if (regulator_resolve_supply(rdev)) 4898 rdev_dbg(rdev, "unable to resolve supply\n"); 4899 4900 return 0; 4901 } 4902 4903 int regulator_coupler_register(struct regulator_coupler *coupler) 4904 { 4905 mutex_lock(®ulator_list_mutex); 4906 list_add_tail(&coupler->list, ®ulator_coupler_list); 4907 mutex_unlock(®ulator_list_mutex); 4908 4909 return 0; 4910 } 4911 4912 static struct regulator_coupler * 4913 regulator_find_coupler(struct regulator_dev *rdev) 4914 { 4915 struct regulator_coupler *coupler; 4916 int err; 4917 4918 /* 4919 * Note that regulators are appended to the list and the generic 4920 * coupler is registered first, hence it will be attached at last 4921 * if nobody cared. 4922 */ 4923 list_for_each_entry_reverse(coupler, ®ulator_coupler_list, list) { 4924 err = coupler->attach_regulator(coupler, rdev); 4925 if (!err) { 4926 if (!coupler->balance_voltage && 4927 rdev->coupling_desc.n_coupled > 2) 4928 goto err_unsupported; 4929 4930 return coupler; 4931 } 4932 4933 if (err < 0) 4934 return ERR_PTR(err); 4935 4936 if (err == 1) 4937 continue; 4938 4939 break; 4940 } 4941 4942 return ERR_PTR(-EINVAL); 4943 4944 err_unsupported: 4945 if (coupler->detach_regulator) 4946 coupler->detach_regulator(coupler, rdev); 4947 4948 rdev_err(rdev, 4949 "Voltage balancing for multiple regulator couples is unimplemented\n"); 4950 4951 return ERR_PTR(-EPERM); 4952 } 4953 4954 static void regulator_resolve_coupling(struct regulator_dev *rdev) 4955 { 4956 struct regulator_coupler *coupler = rdev->coupling_desc.coupler; 4957 struct coupling_desc *c_desc = &rdev->coupling_desc; 4958 int n_coupled = c_desc->n_coupled; 4959 struct regulator_dev *c_rdev; 4960 int i; 4961 4962 for (i = 1; i < n_coupled; i++) { 4963 /* already resolved */ 4964 if (c_desc->coupled_rdevs[i]) 4965 continue; 4966 4967 c_rdev = of_parse_coupled_regulator(rdev, i - 1); 4968 4969 if (!c_rdev) 4970 continue; 4971 4972 if (c_rdev->coupling_desc.coupler != coupler) { 4973 rdev_err(rdev, "coupler mismatch with %s\n", 4974 rdev_get_name(c_rdev)); 4975 return; 4976 } 4977 4978 c_desc->coupled_rdevs[i] = c_rdev; 4979 c_desc->n_resolved++; 4980 4981 regulator_resolve_coupling(c_rdev); 4982 } 4983 } 4984 4985 static void regulator_remove_coupling(struct regulator_dev *rdev) 4986 { 4987 struct regulator_coupler *coupler = rdev->coupling_desc.coupler; 4988 struct coupling_desc *__c_desc, *c_desc = &rdev->coupling_desc; 4989 struct regulator_dev *__c_rdev, *c_rdev; 4990 unsigned int __n_coupled, n_coupled; 4991 int i, k; 4992 int err; 4993 4994 n_coupled = c_desc->n_coupled; 4995 4996 for (i = 1; i < n_coupled; i++) { 4997 c_rdev = c_desc->coupled_rdevs[i]; 4998 4999 if (!c_rdev) 5000 continue; 5001 5002 regulator_lock(c_rdev); 5003 5004 __c_desc = &c_rdev->coupling_desc; 5005 __n_coupled = __c_desc->n_coupled; 5006 5007 for (k = 1; k < __n_coupled; k++) { 5008 __c_rdev = __c_desc->coupled_rdevs[k]; 5009 5010 if (__c_rdev == rdev) { 5011 __c_desc->coupled_rdevs[k] = NULL; 5012 __c_desc->n_resolved--; 5013 break; 5014 } 5015 } 5016 5017 regulator_unlock(c_rdev); 5018 5019 c_desc->coupled_rdevs[i] = NULL; 5020 c_desc->n_resolved--; 5021 } 5022 5023 if (coupler && coupler->detach_regulator) { 5024 err = coupler->detach_regulator(coupler, rdev); 5025 if (err) 5026 rdev_err(rdev, "failed to detach from coupler: %d\n", 5027 err); 5028 } 5029 5030 kfree(rdev->coupling_desc.coupled_rdevs); 5031 rdev->coupling_desc.coupled_rdevs = NULL; 5032 } 5033 5034 static int regulator_init_coupling(struct regulator_dev *rdev) 5035 { 5036 int err, n_phandles; 5037 size_t alloc_size; 5038 5039 if (!IS_ENABLED(CONFIG_OF)) 5040 n_phandles = 0; 5041 else 5042 n_phandles = of_get_n_coupled(rdev); 5043 5044 alloc_size = sizeof(*rdev) * (n_phandles + 1); 5045 5046 rdev->coupling_desc.coupled_rdevs = kzalloc(alloc_size, GFP_KERNEL); 5047 if (!rdev->coupling_desc.coupled_rdevs) 5048 return -ENOMEM; 5049 5050 /* 5051 * Every regulator should always have coupling descriptor filled with 5052 * at least pointer to itself. 5053 */ 5054 rdev->coupling_desc.coupled_rdevs[0] = rdev; 5055 rdev->coupling_desc.n_coupled = n_phandles + 1; 5056 rdev->coupling_desc.n_resolved++; 5057 5058 /* regulator isn't coupled */ 5059 if (n_phandles == 0) 5060 return 0; 5061 5062 if (!of_check_coupling_data(rdev)) 5063 return -EPERM; 5064 5065 mutex_lock(®ulator_list_mutex); 5066 rdev->coupling_desc.coupler = regulator_find_coupler(rdev); 5067 mutex_unlock(®ulator_list_mutex); 5068 5069 if (IS_ERR(rdev->coupling_desc.coupler)) { 5070 err = PTR_ERR(rdev->coupling_desc.coupler); 5071 rdev_err(rdev, "failed to get coupler: %d\n", err); 5072 return err; 5073 } 5074 5075 return 0; 5076 } 5077 5078 static int generic_coupler_attach(struct regulator_coupler *coupler, 5079 struct regulator_dev *rdev) 5080 { 5081 if (rdev->coupling_desc.n_coupled > 2) { 5082 rdev_err(rdev, 5083 "Voltage balancing for multiple regulator couples is unimplemented\n"); 5084 return -EPERM; 5085 } 5086 5087 if (!rdev->constraints->always_on) { 5088 rdev_err(rdev, 5089 "Coupling of a non always-on regulator is unimplemented\n"); 5090 return -ENOTSUPP; 5091 } 5092 5093 return 0; 5094 } 5095 5096 static struct regulator_coupler generic_regulator_coupler = { 5097 .attach_regulator = generic_coupler_attach, 5098 }; 5099 5100 /** 5101 * regulator_register - register regulator 5102 * @regulator_desc: regulator to register 5103 * @cfg: runtime configuration for regulator 5104 * 5105 * Called by regulator drivers to register a regulator. 5106 * Returns a valid pointer to struct regulator_dev on success 5107 * or an ERR_PTR() on error. 5108 */ 5109 struct regulator_dev * 5110 regulator_register(const struct regulator_desc *regulator_desc, 5111 const struct regulator_config *cfg) 5112 { 5113 const struct regulation_constraints *constraints = NULL; 5114 const struct regulator_init_data *init_data; 5115 struct regulator_config *config = NULL; 5116 static atomic_t regulator_no = ATOMIC_INIT(-1); 5117 struct regulator_dev *rdev; 5118 bool dangling_cfg_gpiod = false; 5119 bool dangling_of_gpiod = false; 5120 struct device *dev; 5121 int ret, i; 5122 5123 if (cfg == NULL) 5124 return ERR_PTR(-EINVAL); 5125 if (cfg->ena_gpiod) 5126 dangling_cfg_gpiod = true; 5127 if (regulator_desc == NULL) { 5128 ret = -EINVAL; 5129 goto rinse; 5130 } 5131 5132 dev = cfg->dev; 5133 WARN_ON(!dev); 5134 5135 if (regulator_desc->name == NULL || regulator_desc->ops == NULL) { 5136 ret = -EINVAL; 5137 goto rinse; 5138 } 5139 5140 if (regulator_desc->type != REGULATOR_VOLTAGE && 5141 regulator_desc->type != REGULATOR_CURRENT) { 5142 ret = -EINVAL; 5143 goto rinse; 5144 } 5145 5146 /* Only one of each should be implemented */ 5147 WARN_ON(regulator_desc->ops->get_voltage && 5148 regulator_desc->ops->get_voltage_sel); 5149 WARN_ON(regulator_desc->ops->set_voltage && 5150 regulator_desc->ops->set_voltage_sel); 5151 5152 /* If we're using selectors we must implement list_voltage. */ 5153 if (regulator_desc->ops->get_voltage_sel && 5154 !regulator_desc->ops->list_voltage) { 5155 ret = -EINVAL; 5156 goto rinse; 5157 } 5158 if (regulator_desc->ops->set_voltage_sel && 5159 !regulator_desc->ops->list_voltage) { 5160 ret = -EINVAL; 5161 goto rinse; 5162 } 5163 5164 rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL); 5165 if (rdev == NULL) { 5166 ret = -ENOMEM; 5167 goto rinse; 5168 } 5169 device_initialize(&rdev->dev); 5170 5171 /* 5172 * Duplicate the config so the driver could override it after 5173 * parsing init data. 5174 */ 5175 config = kmemdup(cfg, sizeof(*cfg), GFP_KERNEL); 5176 if (config == NULL) { 5177 ret = -ENOMEM; 5178 goto clean; 5179 } 5180 5181 init_data = regulator_of_get_init_data(dev, regulator_desc, config, 5182 &rdev->dev.of_node); 5183 5184 /* 5185 * Sometimes not all resources are probed already so we need to take 5186 * that into account. This happens most the time if the ena_gpiod comes 5187 * from a gpio extender or something else. 5188 */ 5189 if (PTR_ERR(init_data) == -EPROBE_DEFER) { 5190 ret = -EPROBE_DEFER; 5191 goto clean; 5192 } 5193 5194 /* 5195 * We need to keep track of any GPIO descriptor coming from the 5196 * device tree until we have handled it over to the core. If the 5197 * config that was passed in to this function DOES NOT contain 5198 * a descriptor, and the config after this call DOES contain 5199 * a descriptor, we definitely got one from parsing the device 5200 * tree. 5201 */ 5202 if (!cfg->ena_gpiod && config->ena_gpiod) 5203 dangling_of_gpiod = true; 5204 if (!init_data) { 5205 init_data = config->init_data; 5206 rdev->dev.of_node = of_node_get(config->of_node); 5207 } 5208 5209 ww_mutex_init(&rdev->mutex, ®ulator_ww_class); 5210 rdev->reg_data = config->driver_data; 5211 rdev->owner = regulator_desc->owner; 5212 rdev->desc = regulator_desc; 5213 if (config->regmap) 5214 rdev->regmap = config->regmap; 5215 else if (dev_get_regmap(dev, NULL)) 5216 rdev->regmap = dev_get_regmap(dev, NULL); 5217 else if (dev->parent) 5218 rdev->regmap = dev_get_regmap(dev->parent, NULL); 5219 INIT_LIST_HEAD(&rdev->consumer_list); 5220 INIT_LIST_HEAD(&rdev->list); 5221 BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier); 5222 INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work); 5223 5224 /* preform any regulator specific init */ 5225 if (init_data && init_data->regulator_init) { 5226 ret = init_data->regulator_init(rdev->reg_data); 5227 if (ret < 0) 5228 goto clean; 5229 } 5230 5231 if (config->ena_gpiod) { 5232 ret = regulator_ena_gpio_request(rdev, config); 5233 if (ret != 0) { 5234 rdev_err(rdev, "Failed to request enable GPIO: %d\n", 5235 ret); 5236 goto clean; 5237 } 5238 /* The regulator core took over the GPIO descriptor */ 5239 dangling_cfg_gpiod = false; 5240 dangling_of_gpiod = false; 5241 } 5242 5243 /* register with sysfs */ 5244 rdev->dev.class = ®ulator_class; 5245 rdev->dev.parent = dev; 5246 dev_set_name(&rdev->dev, "regulator.%lu", 5247 (unsigned long) atomic_inc_return(®ulator_no)); 5248 dev_set_drvdata(&rdev->dev, rdev); 5249 5250 /* set regulator constraints */ 5251 if (init_data) 5252 constraints = &init_data->constraints; 5253 5254 if (init_data && init_data->supply_regulator) 5255 rdev->supply_name = init_data->supply_regulator; 5256 else if (regulator_desc->supply_name) 5257 rdev->supply_name = regulator_desc->supply_name; 5258 5259 /* 5260 * Attempt to resolve the regulator supply, if specified, 5261 * but don't return an error if we fail because we will try 5262 * to resolve it again later as more regulators are added. 5263 */ 5264 if (regulator_resolve_supply(rdev)) 5265 rdev_dbg(rdev, "unable to resolve supply\n"); 5266 5267 ret = set_machine_constraints(rdev, constraints); 5268 if (ret < 0) 5269 goto wash; 5270 5271 ret = regulator_init_coupling(rdev); 5272 if (ret < 0) 5273 goto wash; 5274 5275 /* add consumers devices */ 5276 if (init_data) { 5277 for (i = 0; i < init_data->num_consumer_supplies; i++) { 5278 ret = set_consumer_device_supply(rdev, 5279 init_data->consumer_supplies[i].dev_name, 5280 init_data->consumer_supplies[i].supply); 5281 if (ret < 0) { 5282 dev_err(dev, "Failed to set supply %s\n", 5283 init_data->consumer_supplies[i].supply); 5284 goto unset_supplies; 5285 } 5286 } 5287 } 5288 5289 if (!rdev->desc->ops->get_voltage && 5290 !rdev->desc->ops->list_voltage && 5291 !rdev->desc->fixed_uV) 5292 rdev->is_switch = true; 5293 5294 ret = device_add(&rdev->dev); 5295 if (ret != 0) 5296 goto unset_supplies; 5297 5298 rdev_init_debugfs(rdev); 5299 5300 /* try to resolve regulators coupling since a new one was registered */ 5301 mutex_lock(®ulator_list_mutex); 5302 regulator_resolve_coupling(rdev); 5303 mutex_unlock(®ulator_list_mutex); 5304 5305 /* try to resolve regulators supply since a new one was registered */ 5306 class_for_each_device(®ulator_class, NULL, NULL, 5307 regulator_register_resolve_supply); 5308 kfree(config); 5309 return rdev; 5310 5311 unset_supplies: 5312 mutex_lock(®ulator_list_mutex); 5313 unset_regulator_supplies(rdev); 5314 regulator_remove_coupling(rdev); 5315 mutex_unlock(®ulator_list_mutex); 5316 wash: 5317 kfree(rdev->coupling_desc.coupled_rdevs); 5318 mutex_lock(®ulator_list_mutex); 5319 regulator_ena_gpio_free(rdev); 5320 mutex_unlock(®ulator_list_mutex); 5321 clean: 5322 if (dangling_of_gpiod) 5323 gpiod_put(config->ena_gpiod); 5324 kfree(config); 5325 put_device(&rdev->dev); 5326 rinse: 5327 if (dangling_cfg_gpiod) 5328 gpiod_put(cfg->ena_gpiod); 5329 return ERR_PTR(ret); 5330 } 5331 EXPORT_SYMBOL_GPL(regulator_register); 5332 5333 /** 5334 * regulator_unregister - unregister regulator 5335 * @rdev: regulator to unregister 5336 * 5337 * Called by regulator drivers to unregister a regulator. 5338 */ 5339 void regulator_unregister(struct regulator_dev *rdev) 5340 { 5341 if (rdev == NULL) 5342 return; 5343 5344 if (rdev->supply) { 5345 while (rdev->use_count--) 5346 regulator_disable(rdev->supply); 5347 regulator_put(rdev->supply); 5348 } 5349 5350 flush_work(&rdev->disable_work.work); 5351 5352 mutex_lock(®ulator_list_mutex); 5353 5354 debugfs_remove_recursive(rdev->debugfs); 5355 WARN_ON(rdev->open_count); 5356 regulator_remove_coupling(rdev); 5357 unset_regulator_supplies(rdev); 5358 list_del(&rdev->list); 5359 regulator_ena_gpio_free(rdev); 5360 device_unregister(&rdev->dev); 5361 5362 mutex_unlock(®ulator_list_mutex); 5363 } 5364 EXPORT_SYMBOL_GPL(regulator_unregister); 5365 5366 #ifdef CONFIG_SUSPEND 5367 /** 5368 * regulator_suspend - prepare regulators for system wide suspend 5369 * @dev: ``&struct device`` pointer that is passed to _regulator_suspend() 5370 * 5371 * Configure each regulator with it's suspend operating parameters for state. 5372 */ 5373 static int regulator_suspend(struct device *dev) 5374 { 5375 struct regulator_dev *rdev = dev_to_rdev(dev); 5376 suspend_state_t state = pm_suspend_target_state; 5377 int ret; 5378 5379 regulator_lock(rdev); 5380 ret = suspend_set_state(rdev, state); 5381 regulator_unlock(rdev); 5382 5383 return ret; 5384 } 5385 5386 static int regulator_resume(struct device *dev) 5387 { 5388 suspend_state_t state = pm_suspend_target_state; 5389 struct regulator_dev *rdev = dev_to_rdev(dev); 5390 struct regulator_state *rstate; 5391 int ret = 0; 5392 5393 rstate = regulator_get_suspend_state(rdev, state); 5394 if (rstate == NULL) 5395 return 0; 5396 5397 regulator_lock(rdev); 5398 5399 if (rdev->desc->ops->resume && 5400 (rstate->enabled == ENABLE_IN_SUSPEND || 5401 rstate->enabled == DISABLE_IN_SUSPEND)) 5402 ret = rdev->desc->ops->resume(rdev); 5403 5404 regulator_unlock(rdev); 5405 5406 return ret; 5407 } 5408 #else /* !CONFIG_SUSPEND */ 5409 5410 #define regulator_suspend NULL 5411 #define regulator_resume NULL 5412 5413 #endif /* !CONFIG_SUSPEND */ 5414 5415 #ifdef CONFIG_PM 5416 static const struct dev_pm_ops __maybe_unused regulator_pm_ops = { 5417 .suspend = regulator_suspend, 5418 .resume = regulator_resume, 5419 }; 5420 #endif 5421 5422 struct class regulator_class = { 5423 .name = "regulator", 5424 .dev_release = regulator_dev_release, 5425 .dev_groups = regulator_dev_groups, 5426 #ifdef CONFIG_PM 5427 .pm = ®ulator_pm_ops, 5428 #endif 5429 }; 5430 /** 5431 * regulator_has_full_constraints - the system has fully specified constraints 5432 * 5433 * Calling this function will cause the regulator API to disable all 5434 * regulators which have a zero use count and don't have an always_on 5435 * constraint in a late_initcall. 5436 * 5437 * The intention is that this will become the default behaviour in a 5438 * future kernel release so users are encouraged to use this facility 5439 * now. 5440 */ 5441 void regulator_has_full_constraints(void) 5442 { 5443 has_full_constraints = 1; 5444 } 5445 EXPORT_SYMBOL_GPL(regulator_has_full_constraints); 5446 5447 /** 5448 * rdev_get_drvdata - get rdev regulator driver data 5449 * @rdev: regulator 5450 * 5451 * Get rdev regulator driver private data. This call can be used in the 5452 * regulator driver context. 5453 */ 5454 void *rdev_get_drvdata(struct regulator_dev *rdev) 5455 { 5456 return rdev->reg_data; 5457 } 5458 EXPORT_SYMBOL_GPL(rdev_get_drvdata); 5459 5460 /** 5461 * regulator_get_drvdata - get regulator driver data 5462 * @regulator: regulator 5463 * 5464 * Get regulator driver private data. This call can be used in the consumer 5465 * driver context when non API regulator specific functions need to be called. 5466 */ 5467 void *regulator_get_drvdata(struct regulator *regulator) 5468 { 5469 return regulator->rdev->reg_data; 5470 } 5471 EXPORT_SYMBOL_GPL(regulator_get_drvdata); 5472 5473 /** 5474 * regulator_set_drvdata - set regulator driver data 5475 * @regulator: regulator 5476 * @data: data 5477 */ 5478 void regulator_set_drvdata(struct regulator *regulator, void *data) 5479 { 5480 regulator->rdev->reg_data = data; 5481 } 5482 EXPORT_SYMBOL_GPL(regulator_set_drvdata); 5483 5484 /** 5485 * regulator_get_id - get regulator ID 5486 * @rdev: regulator 5487 */ 5488 int rdev_get_id(struct regulator_dev *rdev) 5489 { 5490 return rdev->desc->id; 5491 } 5492 EXPORT_SYMBOL_GPL(rdev_get_id); 5493 5494 struct device *rdev_get_dev(struct regulator_dev *rdev) 5495 { 5496 return &rdev->dev; 5497 } 5498 EXPORT_SYMBOL_GPL(rdev_get_dev); 5499 5500 struct regmap *rdev_get_regmap(struct regulator_dev *rdev) 5501 { 5502 return rdev->regmap; 5503 } 5504 EXPORT_SYMBOL_GPL(rdev_get_regmap); 5505 5506 void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data) 5507 { 5508 return reg_init_data->driver_data; 5509 } 5510 EXPORT_SYMBOL_GPL(regulator_get_init_drvdata); 5511 5512 #ifdef CONFIG_DEBUG_FS 5513 static int supply_map_show(struct seq_file *sf, void *data) 5514 { 5515 struct regulator_map *map; 5516 5517 list_for_each_entry(map, ®ulator_map_list, list) { 5518 seq_printf(sf, "%s -> %s.%s\n", 5519 rdev_get_name(map->regulator), map->dev_name, 5520 map->supply); 5521 } 5522 5523 return 0; 5524 } 5525 DEFINE_SHOW_ATTRIBUTE(supply_map); 5526 5527 struct summary_data { 5528 struct seq_file *s; 5529 struct regulator_dev *parent; 5530 int level; 5531 }; 5532 5533 static void regulator_summary_show_subtree(struct seq_file *s, 5534 struct regulator_dev *rdev, 5535 int level); 5536 5537 static int regulator_summary_show_children(struct device *dev, void *data) 5538 { 5539 struct regulator_dev *rdev = dev_to_rdev(dev); 5540 struct summary_data *summary_data = data; 5541 5542 if (rdev->supply && rdev->supply->rdev == summary_data->parent) 5543 regulator_summary_show_subtree(summary_data->s, rdev, 5544 summary_data->level + 1); 5545 5546 return 0; 5547 } 5548 5549 static void regulator_summary_show_subtree(struct seq_file *s, 5550 struct regulator_dev *rdev, 5551 int level) 5552 { 5553 struct regulation_constraints *c; 5554 struct regulator *consumer; 5555 struct summary_data summary_data; 5556 unsigned int opmode; 5557 5558 if (!rdev) 5559 return; 5560 5561 opmode = _regulator_get_mode_unlocked(rdev); 5562 seq_printf(s, "%*s%-*s %3d %4d %6d %7s ", 5563 level * 3 + 1, "", 5564 30 - level * 3, rdev_get_name(rdev), 5565 rdev->use_count, rdev->open_count, rdev->bypass_count, 5566 regulator_opmode_to_str(opmode)); 5567 5568 seq_printf(s, "%5dmV ", regulator_get_voltage_rdev(rdev) / 1000); 5569 seq_printf(s, "%5dmA ", 5570 _regulator_get_current_limit_unlocked(rdev) / 1000); 5571 5572 c = rdev->constraints; 5573 if (c) { 5574 switch (rdev->desc->type) { 5575 case REGULATOR_VOLTAGE: 5576 seq_printf(s, "%5dmV %5dmV ", 5577 c->min_uV / 1000, c->max_uV / 1000); 5578 break; 5579 case REGULATOR_CURRENT: 5580 seq_printf(s, "%5dmA %5dmA ", 5581 c->min_uA / 1000, c->max_uA / 1000); 5582 break; 5583 } 5584 } 5585 5586 seq_puts(s, "\n"); 5587 5588 list_for_each_entry(consumer, &rdev->consumer_list, list) { 5589 if (consumer->dev && consumer->dev->class == ®ulator_class) 5590 continue; 5591 5592 seq_printf(s, "%*s%-*s ", 5593 (level + 1) * 3 + 1, "", 5594 30 - (level + 1) * 3, 5595 consumer->supply_name ? consumer->supply_name : 5596 consumer->dev ? dev_name(consumer->dev) : "deviceless"); 5597 5598 switch (rdev->desc->type) { 5599 case REGULATOR_VOLTAGE: 5600 seq_printf(s, "%3d %33dmA%c%5dmV %5dmV", 5601 consumer->enable_count, 5602 consumer->uA_load / 1000, 5603 consumer->uA_load && !consumer->enable_count ? 5604 '*' : ' ', 5605 consumer->voltage[PM_SUSPEND_ON].min_uV / 1000, 5606 consumer->voltage[PM_SUSPEND_ON].max_uV / 1000); 5607 break; 5608 case REGULATOR_CURRENT: 5609 break; 5610 } 5611 5612 seq_puts(s, "\n"); 5613 } 5614 5615 summary_data.s = s; 5616 summary_data.level = level; 5617 summary_data.parent = rdev; 5618 5619 class_for_each_device(®ulator_class, NULL, &summary_data, 5620 regulator_summary_show_children); 5621 } 5622 5623 struct summary_lock_data { 5624 struct ww_acquire_ctx *ww_ctx; 5625 struct regulator_dev **new_contended_rdev; 5626 struct regulator_dev **old_contended_rdev; 5627 }; 5628 5629 static int regulator_summary_lock_one(struct device *dev, void *data) 5630 { 5631 struct regulator_dev *rdev = dev_to_rdev(dev); 5632 struct summary_lock_data *lock_data = data; 5633 int ret = 0; 5634 5635 if (rdev != *lock_data->old_contended_rdev) { 5636 ret = regulator_lock_nested(rdev, lock_data->ww_ctx); 5637 5638 if (ret == -EDEADLK) 5639 *lock_data->new_contended_rdev = rdev; 5640 else 5641 WARN_ON_ONCE(ret); 5642 } else { 5643 *lock_data->old_contended_rdev = NULL; 5644 } 5645 5646 return ret; 5647 } 5648 5649 static int regulator_summary_unlock_one(struct device *dev, void *data) 5650 { 5651 struct regulator_dev *rdev = dev_to_rdev(dev); 5652 struct summary_lock_data *lock_data = data; 5653 5654 if (lock_data) { 5655 if (rdev == *lock_data->new_contended_rdev) 5656 return -EDEADLK; 5657 } 5658 5659 regulator_unlock(rdev); 5660 5661 return 0; 5662 } 5663 5664 static int regulator_summary_lock_all(struct ww_acquire_ctx *ww_ctx, 5665 struct regulator_dev **new_contended_rdev, 5666 struct regulator_dev **old_contended_rdev) 5667 { 5668 struct summary_lock_data lock_data; 5669 int ret; 5670 5671 lock_data.ww_ctx = ww_ctx; 5672 lock_data.new_contended_rdev = new_contended_rdev; 5673 lock_data.old_contended_rdev = old_contended_rdev; 5674 5675 ret = class_for_each_device(®ulator_class, NULL, &lock_data, 5676 regulator_summary_lock_one); 5677 if (ret) 5678 class_for_each_device(®ulator_class, NULL, &lock_data, 5679 regulator_summary_unlock_one); 5680 5681 return ret; 5682 } 5683 5684 static void regulator_summary_lock(struct ww_acquire_ctx *ww_ctx) 5685 { 5686 struct regulator_dev *new_contended_rdev = NULL; 5687 struct regulator_dev *old_contended_rdev = NULL; 5688 int err; 5689 5690 mutex_lock(®ulator_list_mutex); 5691 5692 ww_acquire_init(ww_ctx, ®ulator_ww_class); 5693 5694 do { 5695 if (new_contended_rdev) { 5696 ww_mutex_lock_slow(&new_contended_rdev->mutex, ww_ctx); 5697 old_contended_rdev = new_contended_rdev; 5698 old_contended_rdev->ref_cnt++; 5699 } 5700 5701 err = regulator_summary_lock_all(ww_ctx, 5702 &new_contended_rdev, 5703 &old_contended_rdev); 5704 5705 if (old_contended_rdev) 5706 regulator_unlock(old_contended_rdev); 5707 5708 } while (err == -EDEADLK); 5709 5710 ww_acquire_done(ww_ctx); 5711 } 5712 5713 static void regulator_summary_unlock(struct ww_acquire_ctx *ww_ctx) 5714 { 5715 class_for_each_device(®ulator_class, NULL, NULL, 5716 regulator_summary_unlock_one); 5717 ww_acquire_fini(ww_ctx); 5718 5719 mutex_unlock(®ulator_list_mutex); 5720 } 5721 5722 static int regulator_summary_show_roots(struct device *dev, void *data) 5723 { 5724 struct regulator_dev *rdev = dev_to_rdev(dev); 5725 struct seq_file *s = data; 5726 5727 if (!rdev->supply) 5728 regulator_summary_show_subtree(s, rdev, 0); 5729 5730 return 0; 5731 } 5732 5733 static int regulator_summary_show(struct seq_file *s, void *data) 5734 { 5735 struct ww_acquire_ctx ww_ctx; 5736 5737 seq_puts(s, " regulator use open bypass opmode voltage current min max\n"); 5738 seq_puts(s, "---------------------------------------------------------------------------------------\n"); 5739 5740 regulator_summary_lock(&ww_ctx); 5741 5742 class_for_each_device(®ulator_class, NULL, s, 5743 regulator_summary_show_roots); 5744 5745 regulator_summary_unlock(&ww_ctx); 5746 5747 return 0; 5748 } 5749 DEFINE_SHOW_ATTRIBUTE(regulator_summary); 5750 #endif /* CONFIG_DEBUG_FS */ 5751 5752 static int __init regulator_init(void) 5753 { 5754 int ret; 5755 5756 ret = class_register(®ulator_class); 5757 5758 debugfs_root = debugfs_create_dir("regulator", NULL); 5759 if (!debugfs_root) 5760 pr_warn("regulator: Failed to create debugfs directory\n"); 5761 5762 #ifdef CONFIG_DEBUG_FS 5763 debugfs_create_file("supply_map", 0444, debugfs_root, NULL, 5764 &supply_map_fops); 5765 5766 debugfs_create_file("regulator_summary", 0444, debugfs_root, 5767 NULL, ®ulator_summary_fops); 5768 #endif 5769 regulator_dummy_init(); 5770 5771 regulator_coupler_register(&generic_regulator_coupler); 5772 5773 return ret; 5774 } 5775 5776 /* init early to allow our consumers to complete system booting */ 5777 core_initcall(regulator_init); 5778 5779 static int regulator_late_cleanup(struct device *dev, void *data) 5780 { 5781 struct regulator_dev *rdev = dev_to_rdev(dev); 5782 const struct regulator_ops *ops = rdev->desc->ops; 5783 struct regulation_constraints *c = rdev->constraints; 5784 int enabled, ret; 5785 5786 if (c && c->always_on) 5787 return 0; 5788 5789 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS)) 5790 return 0; 5791 5792 regulator_lock(rdev); 5793 5794 if (rdev->use_count) 5795 goto unlock; 5796 5797 /* If we can't read the status assume it's on. */ 5798 if (ops->is_enabled) 5799 enabled = ops->is_enabled(rdev); 5800 else 5801 enabled = 1; 5802 5803 if (!enabled) 5804 goto unlock; 5805 5806 if (have_full_constraints()) { 5807 /* We log since this may kill the system if it goes 5808 * wrong. */ 5809 rdev_info(rdev, "disabling\n"); 5810 ret = _regulator_do_disable(rdev); 5811 if (ret != 0) 5812 rdev_err(rdev, "couldn't disable: %d\n", ret); 5813 } else { 5814 /* The intention is that in future we will 5815 * assume that full constraints are provided 5816 * so warn even if we aren't going to do 5817 * anything here. 5818 */ 5819 rdev_warn(rdev, "incomplete constraints, leaving on\n"); 5820 } 5821 5822 unlock: 5823 regulator_unlock(rdev); 5824 5825 return 0; 5826 } 5827 5828 static void regulator_init_complete_work_function(struct work_struct *work) 5829 { 5830 /* 5831 * Regulators may had failed to resolve their input supplies 5832 * when were registered, either because the input supply was 5833 * not registered yet or because its parent device was not 5834 * bound yet. So attempt to resolve the input supplies for 5835 * pending regulators before trying to disable unused ones. 5836 */ 5837 class_for_each_device(®ulator_class, NULL, NULL, 5838 regulator_register_resolve_supply); 5839 5840 /* If we have a full configuration then disable any regulators 5841 * we have permission to change the status for and which are 5842 * not in use or always_on. This is effectively the default 5843 * for DT and ACPI as they have full constraints. 5844 */ 5845 class_for_each_device(®ulator_class, NULL, NULL, 5846 regulator_late_cleanup); 5847 } 5848 5849 static DECLARE_DELAYED_WORK(regulator_init_complete_work, 5850 regulator_init_complete_work_function); 5851 5852 static int __init regulator_init_complete(void) 5853 { 5854 /* 5855 * Since DT doesn't provide an idiomatic mechanism for 5856 * enabling full constraints and since it's much more natural 5857 * with DT to provide them just assume that a DT enabled 5858 * system has full constraints. 5859 */ 5860 if (of_have_populated_dt()) 5861 has_full_constraints = true; 5862 5863 /* 5864 * We punt completion for an arbitrary amount of time since 5865 * systems like distros will load many drivers from userspace 5866 * so consumers might not always be ready yet, this is 5867 * particularly an issue with laptops where this might bounce 5868 * the display off then on. Ideally we'd get a notification 5869 * from userspace when this happens but we don't so just wait 5870 * a bit and hope we waited long enough. It'd be better if 5871 * we'd only do this on systems that need it, and a kernel 5872 * command line option might be useful. 5873 */ 5874 schedule_delayed_work(®ulator_init_complete_work, 5875 msecs_to_jiffies(30000)); 5876 5877 return 0; 5878 } 5879 late_initcall_sync(regulator_init_complete); 5880