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