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