1/* 2 * core.c -- Voltage/Current Regulator framework. 3 * 4 * Copyright 2007, 2008 Wolfson Microelectronics PLC. 5 * Copyright 2008 SlimLogic Ltd. 6 * 7 * Author: Liam Girdwood <lrg@slimlogic.co.uk> 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU General Public License as published by the 11 * Free Software Foundation; either version 2 of the License, or (at your 12 * option) any later version. 13 * 14 */ 15 16#include <linux/kernel.h> 17#include <linux/init.h> 18#include <linux/debugfs.h> 19#include <linux/device.h> 20#include <linux/slab.h> 21#include <linux/async.h> 22#include <linux/err.h> 23#include <linux/mutex.h> 24#include <linux/suspend.h> 25#include <linux/delay.h> 26#include <linux/gpio.h> 27#include <linux/gpio/consumer.h> 28#include <linux/of.h> 29#include <linux/regmap.h> 30#include <linux/regulator/of_regulator.h> 31#include <linux/regulator/consumer.h> 32#include <linux/regulator/driver.h> 33#include <linux/regulator/machine.h> 34#include <linux/module.h> 35 36#define CREATE_TRACE_POINTS 37#include <trace/events/regulator.h> 38 39#include "dummy.h" 40#include "internal.h" 41 42#define rdev_crit(rdev, fmt, ...) \ 43 pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 44#define rdev_err(rdev, fmt, ...) \ 45 pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 46#define rdev_warn(rdev, fmt, ...) \ 47 pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 48#define rdev_info(rdev, fmt, ...) \ 49 pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 50#define rdev_dbg(rdev, fmt, ...) \ 51 pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) 52 53static DEFINE_MUTEX(regulator_list_mutex); 54static LIST_HEAD(regulator_map_list); 55static LIST_HEAD(regulator_ena_gpio_list); 56static LIST_HEAD(regulator_supply_alias_list); 57static bool has_full_constraints; 58 59static struct dentry *debugfs_root; 60 61static struct class regulator_class; 62 63/* 64 * struct regulator_map 65 * 66 * Used to provide symbolic supply names to devices. 67 */ 68struct 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 */ 80struct 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 */ 93struct 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 101static int _regulator_is_enabled(struct regulator_dev *rdev); 102static int _regulator_disable(struct regulator_dev *rdev); 103static int _regulator_get_voltage(struct regulator_dev *rdev); 104static int _regulator_get_current_limit(struct regulator_dev *rdev); 105static unsigned int _regulator_get_mode(struct regulator_dev *rdev); 106static int _notifier_call_chain(struct regulator_dev *rdev, 107 unsigned long event, void *data); 108static int _regulator_do_set_voltage(struct regulator_dev *rdev, 109 int min_uV, int max_uV); 110static struct regulator *create_regulator(struct regulator_dev *rdev, 111 struct device *dev, 112 const char *supply_name); 113static void _regulator_put(struct regulator *regulator); 114 115static struct regulator_dev *dev_to_rdev(struct device *dev) 116{ 117 return container_of(dev, struct regulator_dev, dev); 118} 119 120static 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 130static bool have_full_constraints(void) 131{ 132 return has_full_constraints || of_have_populated_dt(); 133} 134 135static 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 */ 147static 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 */ 159static 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 */ 183static 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 201static 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 */ 213static 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 */ 244static 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 */ 273static 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 */ 302static 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 */ 337static 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 350static 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} 362static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL); 363 364static 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} 371static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); 372 373static 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} 380static DEVICE_ATTR_RO(name); 381 382static 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 397static 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} 404static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL); 405 406static 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 416static 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} 428static DEVICE_ATTR(state, 0444, regulator_state_show, NULL); 429 430static 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} 475static DEVICE_ATTR(status, 0444, regulator_status_show, NULL); 476 477static 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} 487static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL); 488 489static 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} 499static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL); 500 501static 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} 511static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL); 512 513static 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} 523static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL); 524 525static 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} 538static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); 539 540static 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} 546static DEVICE_ATTR_RO(num_users); 547 548static 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} 561static DEVICE_ATTR_RO(type); 562 563static 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} 570static DEVICE_ATTR(suspend_mem_microvolts, 0444, 571 regulator_suspend_mem_uV_show, NULL); 572 573static 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} 580static DEVICE_ATTR(suspend_disk_microvolts, 0444, 581 regulator_suspend_disk_uV_show, NULL); 582 583static 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} 590static DEVICE_ATTR(suspend_standby_microvolts, 0444, 591 regulator_suspend_standby_uV_show, NULL); 592 593static 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} 601static DEVICE_ATTR(suspend_mem_mode, 0444, 602 regulator_suspend_mem_mode_show, NULL); 603 604static 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} 612static DEVICE_ATTR(suspend_disk_mode, 0444, 613 regulator_suspend_disk_mode_show, NULL); 614 615static 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} 623static DEVICE_ATTR(suspend_standby_mode, 0444, 624 regulator_suspend_standby_mode_show, NULL); 625 626static 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} 634static DEVICE_ATTR(suspend_mem_state, 0444, 635 regulator_suspend_mem_state_show, NULL); 636 637static 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} 645static DEVICE_ATTR(suspend_disk_state, 0444, 646 regulator_suspend_disk_state_show, NULL); 647 648static 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} 656static DEVICE_ATTR(suspend_standby_state, 0444, 657 regulator_suspend_standby_state_show, NULL); 658 659static 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} 678static 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 */ 683static 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 757static 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 */ 809static 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 831static 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 901static 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 1000static 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 1030static 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 */ 1043static 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; 1145out: 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 */ 1160static 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 */ 1191static 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 1245static 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 1260static 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; 1326overflow_err: 1327 list_del(®ulator->list); 1328 kfree(regulator); 1329 mutex_unlock(&rdev->mutex); 1330 return NULL; 1331} 1332 1333static 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 1342static 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 1354static 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 1368static int of_node_match(struct device *dev, const void *data) 1369{ 1370 return dev->of_node == data; 1371} 1372 1373static 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 1382static 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 1389static 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 */ 1409static 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 1466static 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 */ 1530static 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 1585found: 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 */ 1645struct regulator *regulator_get(struct device *dev, const char *id) 1646{ 1647 return _regulator_get(dev, id, false, true); 1648} 1649EXPORT_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 */ 1672struct regulator *regulator_get_exclusive(struct device *dev, const char *id) 1673{ 1674 return _regulator_get(dev, id, true, false); 1675} 1676EXPORT_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 */ 1698struct regulator *regulator_get_optional(struct device *dev, const char *id) 1699{ 1700 return _regulator_get(dev, id, false, false); 1701} 1702EXPORT_SYMBOL_GPL(regulator_get_optional); 1703 1704/* regulator_list_mutex lock held by regulator_put() */ 1705static 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 */ 1743void regulator_put(struct regulator *regulator) 1744{ 1745 mutex_lock(®ulator_list_mutex); 1746 _regulator_put(regulator); 1747 mutex_unlock(®ulator_list_mutex); 1748} 1749EXPORT_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 */ 1763int 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} 1789EXPORT_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 */ 1799void 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} 1809EXPORT_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 */ 1828int 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 1846err: 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} 1856EXPORT_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 */ 1868void 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} 1877EXPORT_SYMBOL_GPL(regulator_bulk_unregister_supply_alias); 1878 1879 1880/* Manage enable GPIO list. Same GPIO pin can be shared among regulators */ 1881static 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 1914update_ena_gpio_to_rdev: 1915 pin->request_count++; 1916 rdev->ena_pin = pin; 1917 return 0; 1918} 1919 1920static 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 */ 1952static 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 */ 1994static 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 2022static 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() */ 2090static 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 */ 2135int 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} 2158EXPORT_SYMBOL_GPL(regulator_enable); 2159 2160static 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() */ 2192static 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 */ 2252int 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} 2269EXPORT_SYMBOL_GPL(regulator_disable); 2270 2271/* locks held by regulator_force_disable() */ 2272static 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 */ 2306int 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} 2322EXPORT_SYMBOL_GPL(regulator_force_disable); 2323 2324static 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 */ 2368int regulator_disable_deferred(struct regulator *regulator, int ms) 2369{ 2370 struct regulator_dev *rdev = regulator->rdev; 2371 int ret; 2372 2373 if (regulator->always_on) 2374 return 0; 2375 2376 if (!ms) 2377 return regulator_disable(regulator); 2378 2379 mutex_lock(&rdev->mutex); 2380 rdev->deferred_disables++; 2381 mutex_unlock(&rdev->mutex); 2382 2383 ret = queue_delayed_work(system_power_efficient_wq, 2384 &rdev->disable_work, 2385 msecs_to_jiffies(ms)); 2386 if (ret < 0) 2387 return ret; 2388 else 2389 return 0; 2390} 2391EXPORT_SYMBOL_GPL(regulator_disable_deferred); 2392 2393static int _regulator_is_enabled(struct regulator_dev *rdev) 2394{ 2395 /* A GPIO control always takes precedence */ 2396 if (rdev->ena_pin) 2397 return rdev->ena_gpio_state; 2398 2399 /* If we don't know then assume that the regulator is always on */ 2400 if (!rdev->desc->ops->is_enabled) 2401 return 1; 2402 2403 return rdev->desc->ops->is_enabled(rdev); 2404} 2405 2406static int _regulator_list_voltage(struct regulator *regulator, 2407 unsigned selector, int lock) 2408{ 2409 struct regulator_dev *rdev = regulator->rdev; 2410 const struct regulator_ops *ops = rdev->desc->ops; 2411 int ret; 2412 2413 if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector) 2414 return rdev->desc->fixed_uV; 2415 2416 if (ops->list_voltage) { 2417 if (selector >= rdev->desc->n_voltages) 2418 return -EINVAL; 2419 if (lock) 2420 mutex_lock(&rdev->mutex); 2421 ret = ops->list_voltage(rdev, selector); 2422 if (lock) 2423 mutex_unlock(&rdev->mutex); 2424 } else if (rdev->supply) { 2425 ret = _regulator_list_voltage(rdev->supply, selector, lock); 2426 } else { 2427 return -EINVAL; 2428 } 2429 2430 if (ret > 0) { 2431 if (ret < rdev->constraints->min_uV) 2432 ret = 0; 2433 else if (ret > rdev->constraints->max_uV) 2434 ret = 0; 2435 } 2436 2437 return ret; 2438} 2439 2440/** 2441 * regulator_is_enabled - is the regulator output enabled 2442 * @regulator: regulator source 2443 * 2444 * Returns positive if the regulator driver backing the source/client 2445 * has requested that the device be enabled, zero if it hasn't, else a 2446 * negative errno code. 2447 * 2448 * Note that the device backing this regulator handle can have multiple 2449 * users, so it might be enabled even if regulator_enable() was never 2450 * called for this particular source. 2451 */ 2452int regulator_is_enabled(struct regulator *regulator) 2453{ 2454 int ret; 2455 2456 if (regulator->always_on) 2457 return 1; 2458 2459 mutex_lock(®ulator->rdev->mutex); 2460 ret = _regulator_is_enabled(regulator->rdev); 2461 mutex_unlock(®ulator->rdev->mutex); 2462 2463 return ret; 2464} 2465EXPORT_SYMBOL_GPL(regulator_is_enabled); 2466 2467/** 2468 * regulator_can_change_voltage - check if regulator can change voltage 2469 * @regulator: regulator source 2470 * 2471 * Returns positive if the regulator driver backing the source/client 2472 * can change its voltage, false otherwise. Useful for detecting fixed 2473 * or dummy regulators and disabling voltage change logic in the client 2474 * driver. 2475 */ 2476int regulator_can_change_voltage(struct regulator *regulator) 2477{ 2478 struct regulator_dev *rdev = regulator->rdev; 2479 2480 if (rdev->constraints && 2481 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2482 if (rdev->desc->n_voltages - rdev->desc->linear_min_sel > 1) 2483 return 1; 2484 2485 if (rdev->desc->continuous_voltage_range && 2486 rdev->constraints->min_uV && rdev->constraints->max_uV && 2487 rdev->constraints->min_uV != rdev->constraints->max_uV) 2488 return 1; 2489 } 2490 2491 return 0; 2492} 2493EXPORT_SYMBOL_GPL(regulator_can_change_voltage); 2494 2495/** 2496 * regulator_count_voltages - count regulator_list_voltage() selectors 2497 * @regulator: regulator source 2498 * 2499 * Returns number of selectors, or negative errno. Selectors are 2500 * numbered starting at zero, and typically correspond to bitfields 2501 * in hardware registers. 2502 */ 2503int regulator_count_voltages(struct regulator *regulator) 2504{ 2505 struct regulator_dev *rdev = regulator->rdev; 2506 2507 if (rdev->desc->n_voltages) 2508 return rdev->desc->n_voltages; 2509 2510 if (!rdev->supply) 2511 return -EINVAL; 2512 2513 return regulator_count_voltages(rdev->supply); 2514} 2515EXPORT_SYMBOL_GPL(regulator_count_voltages); 2516 2517/** 2518 * regulator_list_voltage - enumerate supported voltages 2519 * @regulator: regulator source 2520 * @selector: identify voltage to list 2521 * Context: can sleep 2522 * 2523 * Returns a voltage that can be passed to @regulator_set_voltage(), 2524 * zero if this selector code can't be used on this system, or a 2525 * negative errno. 2526 */ 2527int regulator_list_voltage(struct regulator *regulator, unsigned selector) 2528{ 2529 return _regulator_list_voltage(regulator, selector, 1); 2530} 2531EXPORT_SYMBOL_GPL(regulator_list_voltage); 2532 2533/** 2534 * regulator_get_regmap - get the regulator's register map 2535 * @regulator: regulator source 2536 * 2537 * Returns the register map for the given regulator, or an ERR_PTR value 2538 * if the regulator doesn't use regmap. 2539 */ 2540struct regmap *regulator_get_regmap(struct regulator *regulator) 2541{ 2542 struct regmap *map = regulator->rdev->regmap; 2543 2544 return map ? map : ERR_PTR(-EOPNOTSUPP); 2545} 2546 2547/** 2548 * regulator_get_hardware_vsel_register - get the HW voltage selector register 2549 * @regulator: regulator source 2550 * @vsel_reg: voltage selector register, output parameter 2551 * @vsel_mask: mask for voltage selector bitfield, output parameter 2552 * 2553 * Returns the hardware register offset and bitmask used for setting the 2554 * regulator voltage. This might be useful when configuring voltage-scaling 2555 * hardware or firmware that can make I2C requests behind the kernel's back, 2556 * for example. 2557 * 2558 * On success, the output parameters @vsel_reg and @vsel_mask are filled in 2559 * and 0 is returned, otherwise a negative errno is returned. 2560 */ 2561int regulator_get_hardware_vsel_register(struct regulator *regulator, 2562 unsigned *vsel_reg, 2563 unsigned *vsel_mask) 2564{ 2565 struct regulator_dev *rdev = regulator->rdev; 2566 const struct regulator_ops *ops = rdev->desc->ops; 2567 2568 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 2569 return -EOPNOTSUPP; 2570 2571 *vsel_reg = rdev->desc->vsel_reg; 2572 *vsel_mask = rdev->desc->vsel_mask; 2573 2574 return 0; 2575} 2576EXPORT_SYMBOL_GPL(regulator_get_hardware_vsel_register); 2577 2578/** 2579 * regulator_list_hardware_vsel - get the HW-specific register value for a selector 2580 * @regulator: regulator source 2581 * @selector: identify voltage to list 2582 * 2583 * Converts the selector to a hardware-specific voltage selector that can be 2584 * directly written to the regulator registers. The address of the voltage 2585 * register can be determined by calling @regulator_get_hardware_vsel_register. 2586 * 2587 * On error a negative errno is returned. 2588 */ 2589int regulator_list_hardware_vsel(struct regulator *regulator, 2590 unsigned selector) 2591{ 2592 struct regulator_dev *rdev = regulator->rdev; 2593 const struct regulator_ops *ops = rdev->desc->ops; 2594 2595 if (selector >= rdev->desc->n_voltages) 2596 return -EINVAL; 2597 if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) 2598 return -EOPNOTSUPP; 2599 2600 return selector; 2601} 2602EXPORT_SYMBOL_GPL(regulator_list_hardware_vsel); 2603 2604/** 2605 * regulator_get_linear_step - return the voltage step size between VSEL values 2606 * @regulator: regulator source 2607 * 2608 * Returns the voltage step size between VSEL values for linear 2609 * regulators, or return 0 if the regulator isn't a linear regulator. 2610 */ 2611unsigned int regulator_get_linear_step(struct regulator *regulator) 2612{ 2613 struct regulator_dev *rdev = regulator->rdev; 2614 2615 return rdev->desc->uV_step; 2616} 2617EXPORT_SYMBOL_GPL(regulator_get_linear_step); 2618 2619/** 2620 * regulator_is_supported_voltage - check if a voltage range can be supported 2621 * 2622 * @regulator: Regulator to check. 2623 * @min_uV: Minimum required voltage in uV. 2624 * @max_uV: Maximum required voltage in uV. 2625 * 2626 * Returns a boolean or a negative error code. 2627 */ 2628int regulator_is_supported_voltage(struct regulator *regulator, 2629 int min_uV, int max_uV) 2630{ 2631 struct regulator_dev *rdev = regulator->rdev; 2632 int i, voltages, ret; 2633 2634 /* If we can't change voltage check the current voltage */ 2635 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2636 ret = regulator_get_voltage(regulator); 2637 if (ret >= 0) 2638 return min_uV <= ret && ret <= max_uV; 2639 else 2640 return ret; 2641 } 2642 2643 /* Any voltage within constrains range is fine? */ 2644 if (rdev->desc->continuous_voltage_range) 2645 return min_uV >= rdev->constraints->min_uV && 2646 max_uV <= rdev->constraints->max_uV; 2647 2648 ret = regulator_count_voltages(regulator); 2649 if (ret < 0) 2650 return ret; 2651 voltages = ret; 2652 2653 for (i = 0; i < voltages; i++) { 2654 ret = regulator_list_voltage(regulator, i); 2655 2656 if (ret >= min_uV && ret <= max_uV) 2657 return 1; 2658 } 2659 2660 return 0; 2661} 2662EXPORT_SYMBOL_GPL(regulator_is_supported_voltage); 2663 2664static int regulator_map_voltage(struct regulator_dev *rdev, int min_uV, 2665 int max_uV) 2666{ 2667 const struct regulator_desc *desc = rdev->desc; 2668 2669 if (desc->ops->map_voltage) 2670 return desc->ops->map_voltage(rdev, min_uV, max_uV); 2671 2672 if (desc->ops->list_voltage == regulator_list_voltage_linear) 2673 return regulator_map_voltage_linear(rdev, min_uV, max_uV); 2674 2675 if (desc->ops->list_voltage == regulator_list_voltage_linear_range) 2676 return regulator_map_voltage_linear_range(rdev, min_uV, max_uV); 2677 2678 return regulator_map_voltage_iterate(rdev, min_uV, max_uV); 2679} 2680 2681static int _regulator_call_set_voltage(struct regulator_dev *rdev, 2682 int min_uV, int max_uV, 2683 unsigned *selector) 2684{ 2685 struct pre_voltage_change_data data; 2686 int ret; 2687 2688 data.old_uV = _regulator_get_voltage(rdev); 2689 data.min_uV = min_uV; 2690 data.max_uV = max_uV; 2691 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 2692 &data); 2693 if (ret & NOTIFY_STOP_MASK) 2694 return -EINVAL; 2695 2696 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, selector); 2697 if (ret >= 0) 2698 return ret; 2699 2700 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 2701 (void *)data.old_uV); 2702 2703 return ret; 2704} 2705 2706static int _regulator_call_set_voltage_sel(struct regulator_dev *rdev, 2707 int uV, unsigned selector) 2708{ 2709 struct pre_voltage_change_data data; 2710 int ret; 2711 2712 data.old_uV = _regulator_get_voltage(rdev); 2713 data.min_uV = uV; 2714 data.max_uV = uV; 2715 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, 2716 &data); 2717 if (ret & NOTIFY_STOP_MASK) 2718 return -EINVAL; 2719 2720 ret = rdev->desc->ops->set_voltage_sel(rdev, selector); 2721 if (ret >= 0) 2722 return ret; 2723 2724 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, 2725 (void *)data.old_uV); 2726 2727 return ret; 2728} 2729 2730static int _regulator_do_set_voltage(struct regulator_dev *rdev, 2731 int min_uV, int max_uV) 2732{ 2733 int ret; 2734 int delay = 0; 2735 int best_val = 0; 2736 unsigned int selector; 2737 int old_selector = -1; 2738 2739 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV); 2740 2741 min_uV += rdev->constraints->uV_offset; 2742 max_uV += rdev->constraints->uV_offset; 2743 2744 /* 2745 * If we can't obtain the old selector there is not enough 2746 * info to call set_voltage_time_sel(). 2747 */ 2748 if (_regulator_is_enabled(rdev) && 2749 rdev->desc->ops->set_voltage_time_sel && 2750 rdev->desc->ops->get_voltage_sel) { 2751 old_selector = rdev->desc->ops->get_voltage_sel(rdev); 2752 if (old_selector < 0) 2753 return old_selector; 2754 } 2755 2756 if (rdev->desc->ops->set_voltage) { 2757 ret = _regulator_call_set_voltage(rdev, min_uV, max_uV, 2758 &selector); 2759 2760 if (ret >= 0) { 2761 if (rdev->desc->ops->list_voltage) 2762 best_val = rdev->desc->ops->list_voltage(rdev, 2763 selector); 2764 else 2765 best_val = _regulator_get_voltage(rdev); 2766 } 2767 2768 } else if (rdev->desc->ops->set_voltage_sel) { 2769 ret = regulator_map_voltage(rdev, min_uV, max_uV); 2770 if (ret >= 0) { 2771 best_val = rdev->desc->ops->list_voltage(rdev, ret); 2772 if (min_uV <= best_val && max_uV >= best_val) { 2773 selector = ret; 2774 if (old_selector == selector) 2775 ret = 0; 2776 else 2777 ret = _regulator_call_set_voltage_sel( 2778 rdev, best_val, selector); 2779 } else { 2780 ret = -EINVAL; 2781 } 2782 } 2783 } else { 2784 ret = -EINVAL; 2785 } 2786 2787 /* Call set_voltage_time_sel if successfully obtained old_selector */ 2788 if (ret == 0 && !rdev->constraints->ramp_disable && old_selector >= 0 2789 && old_selector != selector) { 2790 2791 delay = rdev->desc->ops->set_voltage_time_sel(rdev, 2792 old_selector, selector); 2793 if (delay < 0) { 2794 rdev_warn(rdev, "set_voltage_time_sel() failed: %d\n", 2795 delay); 2796 delay = 0; 2797 } 2798 2799 /* Insert any necessary delays */ 2800 if (delay >= 1000) { 2801 mdelay(delay / 1000); 2802 udelay(delay % 1000); 2803 } else if (delay) { 2804 udelay(delay); 2805 } 2806 } 2807 2808 if (ret == 0 && best_val >= 0) { 2809 unsigned long data = best_val; 2810 2811 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, 2812 (void *)data); 2813 } 2814 2815 trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); 2816 2817 return ret; 2818} 2819 2820static int regulator_set_voltage_unlocked(struct regulator *regulator, 2821 int min_uV, int max_uV) 2822{ 2823 struct regulator_dev *rdev = regulator->rdev; 2824 int ret = 0; 2825 int old_min_uV, old_max_uV; 2826 int current_uV; 2827 int best_supply_uV = 0; 2828 int supply_change_uV = 0; 2829 2830 /* If we're setting the same range as last time the change 2831 * should be a noop (some cpufreq implementations use the same 2832 * voltage for multiple frequencies, for example). 2833 */ 2834 if (regulator->min_uV == min_uV && regulator->max_uV == max_uV) 2835 goto out; 2836 2837 /* If we're trying to set a range that overlaps the current voltage, 2838 * return successfully even though the regulator does not support 2839 * changing the voltage. 2840 */ 2841 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 2842 current_uV = _regulator_get_voltage(rdev); 2843 if (min_uV <= current_uV && current_uV <= max_uV) { 2844 regulator->min_uV = min_uV; 2845 regulator->max_uV = max_uV; 2846 goto out; 2847 } 2848 } 2849 2850 /* sanity check */ 2851 if (!rdev->desc->ops->set_voltage && 2852 !rdev->desc->ops->set_voltage_sel) { 2853 ret = -EINVAL; 2854 goto out; 2855 } 2856 2857 /* constraints check */ 2858 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 2859 if (ret < 0) 2860 goto out; 2861 2862 /* restore original values in case of error */ 2863 old_min_uV = regulator->min_uV; 2864 old_max_uV = regulator->max_uV; 2865 regulator->min_uV = min_uV; 2866 regulator->max_uV = max_uV; 2867 2868 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); 2869 if (ret < 0) 2870 goto out2; 2871 2872 if (rdev->supply && (rdev->desc->min_dropout_uV || 2873 !rdev->desc->ops->get_voltage)) { 2874 int current_supply_uV; 2875 int selector; 2876 2877 selector = regulator_map_voltage(rdev, min_uV, max_uV); 2878 if (selector < 0) { 2879 ret = selector; 2880 goto out2; 2881 } 2882 2883 best_supply_uV = _regulator_list_voltage(regulator, selector, 0); 2884 if (best_supply_uV < 0) { 2885 ret = best_supply_uV; 2886 goto out2; 2887 } 2888 2889 best_supply_uV += rdev->desc->min_dropout_uV; 2890 2891 current_supply_uV = _regulator_get_voltage(rdev->supply->rdev); 2892 if (current_supply_uV < 0) { 2893 ret = current_supply_uV; 2894 goto out2; 2895 } 2896 2897 supply_change_uV = best_supply_uV - current_supply_uV; 2898 } 2899 2900 if (supply_change_uV > 0) { 2901 ret = regulator_set_voltage_unlocked(rdev->supply, 2902 best_supply_uV, INT_MAX); 2903 if (ret) { 2904 dev_err(&rdev->dev, "Failed to increase supply voltage: %d\n", 2905 ret); 2906 goto out2; 2907 } 2908 } 2909 2910 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 2911 if (ret < 0) 2912 goto out2; 2913 2914 if (supply_change_uV < 0) { 2915 ret = regulator_set_voltage_unlocked(rdev->supply, 2916 best_supply_uV, INT_MAX); 2917 if (ret) 2918 dev_warn(&rdev->dev, "Failed to decrease supply voltage: %d\n", 2919 ret); 2920 /* No need to fail here */ 2921 ret = 0; 2922 } 2923 2924out: 2925 return ret; 2926out2: 2927 regulator->min_uV = old_min_uV; 2928 regulator->max_uV = old_max_uV; 2929 2930 return ret; 2931} 2932 2933/** 2934 * regulator_set_voltage - set regulator output voltage 2935 * @regulator: regulator source 2936 * @min_uV: Minimum required voltage in uV 2937 * @max_uV: Maximum acceptable voltage in uV 2938 * 2939 * Sets a voltage regulator to the desired output voltage. This can be set 2940 * during any regulator state. IOW, regulator can be disabled or enabled. 2941 * 2942 * If the regulator is enabled then the voltage will change to the new value 2943 * immediately otherwise if the regulator is disabled the regulator will 2944 * output at the new voltage when enabled. 2945 * 2946 * NOTE: If the regulator is shared between several devices then the lowest 2947 * request voltage that meets the system constraints will be used. 2948 * Regulator system constraints must be set for this regulator before 2949 * calling this function otherwise this call will fail. 2950 */ 2951int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) 2952{ 2953 int ret = 0; 2954 2955 regulator_lock_supply(regulator->rdev); 2956 2957 ret = regulator_set_voltage_unlocked(regulator, min_uV, max_uV); 2958 2959 regulator_unlock_supply(regulator->rdev); 2960 2961 return ret; 2962} 2963EXPORT_SYMBOL_GPL(regulator_set_voltage); 2964 2965/** 2966 * regulator_set_voltage_time - get raise/fall time 2967 * @regulator: regulator source 2968 * @old_uV: starting voltage in microvolts 2969 * @new_uV: target voltage in microvolts 2970 * 2971 * Provided with the starting and ending voltage, this function attempts to 2972 * calculate the time in microseconds required to rise or fall to this new 2973 * voltage. 2974 */ 2975int regulator_set_voltage_time(struct regulator *regulator, 2976 int old_uV, int new_uV) 2977{ 2978 struct regulator_dev *rdev = regulator->rdev; 2979 const struct regulator_ops *ops = rdev->desc->ops; 2980 int old_sel = -1; 2981 int new_sel = -1; 2982 int voltage; 2983 int i; 2984 2985 /* Currently requires operations to do this */ 2986 if (!ops->list_voltage || !ops->set_voltage_time_sel 2987 || !rdev->desc->n_voltages) 2988 return -EINVAL; 2989 2990 for (i = 0; i < rdev->desc->n_voltages; i++) { 2991 /* We only look for exact voltage matches here */ 2992 voltage = regulator_list_voltage(regulator, i); 2993 if (voltage < 0) 2994 return -EINVAL; 2995 if (voltage == 0) 2996 continue; 2997 if (voltage == old_uV) 2998 old_sel = i; 2999 if (voltage == new_uV) 3000 new_sel = i; 3001 } 3002 3003 if (old_sel < 0 || new_sel < 0) 3004 return -EINVAL; 3005 3006 return ops->set_voltage_time_sel(rdev, old_sel, new_sel); 3007} 3008EXPORT_SYMBOL_GPL(regulator_set_voltage_time); 3009 3010/** 3011 * regulator_set_voltage_time_sel - get raise/fall time 3012 * @rdev: regulator source device 3013 * @old_selector: selector for starting voltage 3014 * @new_selector: selector for target voltage 3015 * 3016 * Provided with the starting and target voltage selectors, this function 3017 * returns time in microseconds required to rise or fall to this new voltage 3018 * 3019 * Drivers providing ramp_delay in regulation_constraints can use this as their 3020 * set_voltage_time_sel() operation. 3021 */ 3022int regulator_set_voltage_time_sel(struct regulator_dev *rdev, 3023 unsigned int old_selector, 3024 unsigned int new_selector) 3025{ 3026 unsigned int ramp_delay = 0; 3027 int old_volt, new_volt; 3028 3029 if (rdev->constraints->ramp_delay) 3030 ramp_delay = rdev->constraints->ramp_delay; 3031 else if (rdev->desc->ramp_delay) 3032 ramp_delay = rdev->desc->ramp_delay; 3033 3034 if (ramp_delay == 0) { 3035 rdev_warn(rdev, "ramp_delay not set\n"); 3036 return 0; 3037 } 3038 3039 /* sanity check */ 3040 if (!rdev->desc->ops->list_voltage) 3041 return -EINVAL; 3042 3043 old_volt = rdev->desc->ops->list_voltage(rdev, old_selector); 3044 new_volt = rdev->desc->ops->list_voltage(rdev, new_selector); 3045 3046 return DIV_ROUND_UP(abs(new_volt - old_volt), ramp_delay); 3047} 3048EXPORT_SYMBOL_GPL(regulator_set_voltage_time_sel); 3049 3050/** 3051 * regulator_sync_voltage - re-apply last regulator output voltage 3052 * @regulator: regulator source 3053 * 3054 * Re-apply the last configured voltage. This is intended to be used 3055 * where some external control source the consumer is cooperating with 3056 * has caused the configured voltage to change. 3057 */ 3058int regulator_sync_voltage(struct regulator *regulator) 3059{ 3060 struct regulator_dev *rdev = regulator->rdev; 3061 int ret, min_uV, max_uV; 3062 3063 mutex_lock(&rdev->mutex); 3064 3065 if (!rdev->desc->ops->set_voltage && 3066 !rdev->desc->ops->set_voltage_sel) { 3067 ret = -EINVAL; 3068 goto out; 3069 } 3070 3071 /* This is only going to work if we've had a voltage configured. */ 3072 if (!regulator->min_uV && !regulator->max_uV) { 3073 ret = -EINVAL; 3074 goto out; 3075 } 3076 3077 min_uV = regulator->min_uV; 3078 max_uV = regulator->max_uV; 3079 3080 /* This should be a paranoia check... */ 3081 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); 3082 if (ret < 0) 3083 goto out; 3084 3085 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); 3086 if (ret < 0) 3087 goto out; 3088 3089 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); 3090 3091out: 3092 mutex_unlock(&rdev->mutex); 3093 return ret; 3094} 3095EXPORT_SYMBOL_GPL(regulator_sync_voltage); 3096 3097static int _regulator_get_voltage(struct regulator_dev *rdev) 3098{ 3099 int sel, ret; 3100 3101 if (rdev->desc->ops->get_voltage_sel) { 3102 sel = rdev->desc->ops->get_voltage_sel(rdev); 3103 if (sel < 0) 3104 return sel; 3105 ret = rdev->desc->ops->list_voltage(rdev, sel); 3106 } else if (rdev->desc->ops->get_voltage) { 3107 ret = rdev->desc->ops->get_voltage(rdev); 3108 } else if (rdev->desc->ops->list_voltage) { 3109 ret = rdev->desc->ops->list_voltage(rdev, 0); 3110 } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { 3111 ret = rdev->desc->fixed_uV; 3112 } else if (rdev->supply) { 3113 ret = _regulator_get_voltage(rdev->supply->rdev); 3114 } else { 3115 return -EINVAL; 3116 } 3117 3118 if (ret < 0) 3119 return ret; 3120 return ret - rdev->constraints->uV_offset; 3121} 3122 3123/** 3124 * regulator_get_voltage - get regulator output voltage 3125 * @regulator: regulator source 3126 * 3127 * This returns the current regulator voltage in uV. 3128 * 3129 * NOTE: If the regulator is disabled it will return the voltage value. This 3130 * function should not be used to determine regulator state. 3131 */ 3132int regulator_get_voltage(struct regulator *regulator) 3133{ 3134 int ret; 3135 3136 regulator_lock_supply(regulator->rdev); 3137 3138 ret = _regulator_get_voltage(regulator->rdev); 3139 3140 regulator_unlock_supply(regulator->rdev); 3141 3142 return ret; 3143} 3144EXPORT_SYMBOL_GPL(regulator_get_voltage); 3145 3146/** 3147 * regulator_set_current_limit - set regulator output current limit 3148 * @regulator: regulator source 3149 * @min_uA: Minimum supported current in uA 3150 * @max_uA: Maximum supported current in uA 3151 * 3152 * Sets current sink to the desired output current. This can be set during 3153 * any regulator state. IOW, regulator can be disabled or enabled. 3154 * 3155 * If the regulator is enabled then the current will change to the new value 3156 * immediately otherwise if the regulator is disabled the regulator will 3157 * output at the new current when enabled. 3158 * 3159 * NOTE: Regulator system constraints must be set for this regulator before 3160 * calling this function otherwise this call will fail. 3161 */ 3162int regulator_set_current_limit(struct regulator *regulator, 3163 int min_uA, int max_uA) 3164{ 3165 struct regulator_dev *rdev = regulator->rdev; 3166 int ret; 3167 3168 mutex_lock(&rdev->mutex); 3169 3170 /* sanity check */ 3171 if (!rdev->desc->ops->set_current_limit) { 3172 ret = -EINVAL; 3173 goto out; 3174 } 3175 3176 /* constraints check */ 3177 ret = regulator_check_current_limit(rdev, &min_uA, &max_uA); 3178 if (ret < 0) 3179 goto out; 3180 3181 ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA); 3182out: 3183 mutex_unlock(&rdev->mutex); 3184 return ret; 3185} 3186EXPORT_SYMBOL_GPL(regulator_set_current_limit); 3187 3188static int _regulator_get_current_limit(struct regulator_dev *rdev) 3189{ 3190 int ret; 3191 3192 mutex_lock(&rdev->mutex); 3193 3194 /* sanity check */ 3195 if (!rdev->desc->ops->get_current_limit) { 3196 ret = -EINVAL; 3197 goto out; 3198 } 3199 3200 ret = rdev->desc->ops->get_current_limit(rdev); 3201out: 3202 mutex_unlock(&rdev->mutex); 3203 return ret; 3204} 3205 3206/** 3207 * regulator_get_current_limit - get regulator output current 3208 * @regulator: regulator source 3209 * 3210 * This returns the current supplied by the specified current sink in uA. 3211 * 3212 * NOTE: If the regulator is disabled it will return the current value. This 3213 * function should not be used to determine regulator state. 3214 */ 3215int regulator_get_current_limit(struct regulator *regulator) 3216{ 3217 return _regulator_get_current_limit(regulator->rdev); 3218} 3219EXPORT_SYMBOL_GPL(regulator_get_current_limit); 3220 3221/** 3222 * regulator_set_mode - set regulator operating mode 3223 * @regulator: regulator source 3224 * @mode: operating mode - one of the REGULATOR_MODE constants 3225 * 3226 * Set regulator operating mode to increase regulator efficiency or improve 3227 * regulation performance. 3228 * 3229 * NOTE: Regulator system constraints must be set for this regulator before 3230 * calling this function otherwise this call will fail. 3231 */ 3232int regulator_set_mode(struct regulator *regulator, unsigned int mode) 3233{ 3234 struct regulator_dev *rdev = regulator->rdev; 3235 int ret; 3236 int regulator_curr_mode; 3237 3238 mutex_lock(&rdev->mutex); 3239 3240 /* sanity check */ 3241 if (!rdev->desc->ops->set_mode) { 3242 ret = -EINVAL; 3243 goto out; 3244 } 3245 3246 /* return if the same mode is requested */ 3247 if (rdev->desc->ops->get_mode) { 3248 regulator_curr_mode = rdev->desc->ops->get_mode(rdev); 3249 if (regulator_curr_mode == mode) { 3250 ret = 0; 3251 goto out; 3252 } 3253 } 3254 3255 /* constraints check */ 3256 ret = regulator_mode_constrain(rdev, &mode); 3257 if (ret < 0) 3258 goto out; 3259 3260 ret = rdev->desc->ops->set_mode(rdev, mode); 3261out: 3262 mutex_unlock(&rdev->mutex); 3263 return ret; 3264} 3265EXPORT_SYMBOL_GPL(regulator_set_mode); 3266 3267static unsigned int _regulator_get_mode(struct regulator_dev *rdev) 3268{ 3269 int ret; 3270 3271 mutex_lock(&rdev->mutex); 3272 3273 /* sanity check */ 3274 if (!rdev->desc->ops->get_mode) { 3275 ret = -EINVAL; 3276 goto out; 3277 } 3278 3279 ret = rdev->desc->ops->get_mode(rdev); 3280out: 3281 mutex_unlock(&rdev->mutex); 3282 return ret; 3283} 3284 3285/** 3286 * regulator_get_mode - get regulator operating mode 3287 * @regulator: regulator source 3288 * 3289 * Get the current regulator operating mode. 3290 */ 3291unsigned int regulator_get_mode(struct regulator *regulator) 3292{ 3293 return _regulator_get_mode(regulator->rdev); 3294} 3295EXPORT_SYMBOL_GPL(regulator_get_mode); 3296 3297/** 3298 * regulator_set_load - set regulator load 3299 * @regulator: regulator source 3300 * @uA_load: load current 3301 * 3302 * Notifies the regulator core of a new device load. This is then used by 3303 * DRMS (if enabled by constraints) to set the most efficient regulator 3304 * operating mode for the new regulator loading. 3305 * 3306 * Consumer devices notify their supply regulator of the maximum power 3307 * they will require (can be taken from device datasheet in the power 3308 * consumption tables) when they change operational status and hence power 3309 * state. Examples of operational state changes that can affect power 3310 * consumption are :- 3311 * 3312 * o Device is opened / closed. 3313 * o Device I/O is about to begin or has just finished. 3314 * o Device is idling in between work. 3315 * 3316 * This information is also exported via sysfs to userspace. 3317 * 3318 * DRMS will sum the total requested load on the regulator and change 3319 * to the most efficient operating mode if platform constraints allow. 3320 * 3321 * On error a negative errno is returned. 3322 */ 3323int regulator_set_load(struct regulator *regulator, int uA_load) 3324{ 3325 struct regulator_dev *rdev = regulator->rdev; 3326 int ret; 3327 3328 mutex_lock(&rdev->mutex); 3329 regulator->uA_load = uA_load; 3330 ret = drms_uA_update(rdev); 3331 mutex_unlock(&rdev->mutex); 3332 3333 return ret; 3334} 3335EXPORT_SYMBOL_GPL(regulator_set_load); 3336 3337/** 3338 * regulator_allow_bypass - allow the regulator to go into bypass mode 3339 * 3340 * @regulator: Regulator to configure 3341 * @enable: enable or disable bypass mode 3342 * 3343 * Allow the regulator to go into bypass mode if all other consumers 3344 * for the regulator also enable bypass mode and the machine 3345 * constraints allow this. Bypass mode means that the regulator is 3346 * simply passing the input directly to the output with no regulation. 3347 */ 3348int regulator_allow_bypass(struct regulator *regulator, bool enable) 3349{ 3350 struct regulator_dev *rdev = regulator->rdev; 3351 int ret = 0; 3352 3353 if (!rdev->desc->ops->set_bypass) 3354 return 0; 3355 3356 if (rdev->constraints && 3357 !(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_BYPASS)) 3358 return 0; 3359 3360 mutex_lock(&rdev->mutex); 3361 3362 if (enable && !regulator->bypass) { 3363 rdev->bypass_count++; 3364 3365 if (rdev->bypass_count == rdev->open_count) { 3366 ret = rdev->desc->ops->set_bypass(rdev, enable); 3367 if (ret != 0) 3368 rdev->bypass_count--; 3369 } 3370 3371 } else if (!enable && regulator->bypass) { 3372 rdev->bypass_count--; 3373 3374 if (rdev->bypass_count != rdev->open_count) { 3375 ret = rdev->desc->ops->set_bypass(rdev, enable); 3376 if (ret != 0) 3377 rdev->bypass_count++; 3378 } 3379 } 3380 3381 if (ret == 0) 3382 regulator->bypass = enable; 3383 3384 mutex_unlock(&rdev->mutex); 3385 3386 return ret; 3387} 3388EXPORT_SYMBOL_GPL(regulator_allow_bypass); 3389 3390/** 3391 * regulator_register_notifier - register regulator event notifier 3392 * @regulator: regulator source 3393 * @nb: notifier block 3394 * 3395 * Register notifier block to receive regulator events. 3396 */ 3397int regulator_register_notifier(struct regulator *regulator, 3398 struct notifier_block *nb) 3399{ 3400 return blocking_notifier_chain_register(®ulator->rdev->notifier, 3401 nb); 3402} 3403EXPORT_SYMBOL_GPL(regulator_register_notifier); 3404 3405/** 3406 * regulator_unregister_notifier - unregister regulator event notifier 3407 * @regulator: regulator source 3408 * @nb: notifier block 3409 * 3410 * Unregister regulator event notifier block. 3411 */ 3412int regulator_unregister_notifier(struct regulator *regulator, 3413 struct notifier_block *nb) 3414{ 3415 return blocking_notifier_chain_unregister(®ulator->rdev->notifier, 3416 nb); 3417} 3418EXPORT_SYMBOL_GPL(regulator_unregister_notifier); 3419 3420/* notify regulator consumers and downstream regulator consumers. 3421 * Note mutex must be held by caller. 3422 */ 3423static int _notifier_call_chain(struct regulator_dev *rdev, 3424 unsigned long event, void *data) 3425{ 3426 /* call rdev chain first */ 3427 return blocking_notifier_call_chain(&rdev->notifier, event, data); 3428} 3429 3430/** 3431 * regulator_bulk_get - get multiple regulator consumers 3432 * 3433 * @dev: Device to supply 3434 * @num_consumers: Number of consumers to register 3435 * @consumers: Configuration of consumers; clients are stored here. 3436 * 3437 * @return 0 on success, an errno on failure. 3438 * 3439 * This helper function allows drivers to get several regulator 3440 * consumers in one operation. If any of the regulators cannot be 3441 * acquired then any regulators that were allocated will be freed 3442 * before returning to the caller. 3443 */ 3444int regulator_bulk_get(struct device *dev, int num_consumers, 3445 struct regulator_bulk_data *consumers) 3446{ 3447 int i; 3448 int ret; 3449 3450 for (i = 0; i < num_consumers; i++) 3451 consumers[i].consumer = NULL; 3452 3453 for (i = 0; i < num_consumers; i++) { 3454 consumers[i].consumer = regulator_get(dev, 3455 consumers[i].supply); 3456 if (IS_ERR(consumers[i].consumer)) { 3457 ret = PTR_ERR(consumers[i].consumer); 3458 dev_err(dev, "Failed to get supply '%s': %d\n", 3459 consumers[i].supply, ret); 3460 consumers[i].consumer = NULL; 3461 goto err; 3462 } 3463 } 3464 3465 return 0; 3466 3467err: 3468 while (--i >= 0) 3469 regulator_put(consumers[i].consumer); 3470 3471 return ret; 3472} 3473EXPORT_SYMBOL_GPL(regulator_bulk_get); 3474 3475static void regulator_bulk_enable_async(void *data, async_cookie_t cookie) 3476{ 3477 struct regulator_bulk_data *bulk = data; 3478 3479 bulk->ret = regulator_enable(bulk->consumer); 3480} 3481 3482/** 3483 * regulator_bulk_enable - enable multiple regulator consumers 3484 * 3485 * @num_consumers: Number of consumers 3486 * @consumers: Consumer data; clients are stored here. 3487 * @return 0 on success, an errno on failure 3488 * 3489 * This convenience API allows consumers to enable multiple regulator 3490 * clients in a single API call. If any consumers cannot be enabled 3491 * then any others that were enabled will be disabled again prior to 3492 * return. 3493 */ 3494int regulator_bulk_enable(int num_consumers, 3495 struct regulator_bulk_data *consumers) 3496{ 3497 ASYNC_DOMAIN_EXCLUSIVE(async_domain); 3498 int i; 3499 int ret = 0; 3500 3501 for (i = 0; i < num_consumers; i++) { 3502 if (consumers[i].consumer->always_on) 3503 consumers[i].ret = 0; 3504 else 3505 async_schedule_domain(regulator_bulk_enable_async, 3506 &consumers[i], &async_domain); 3507 } 3508 3509 async_synchronize_full_domain(&async_domain); 3510 3511 /* If any consumer failed we need to unwind any that succeeded */ 3512 for (i = 0; i < num_consumers; i++) { 3513 if (consumers[i].ret != 0) { 3514 ret = consumers[i].ret; 3515 goto err; 3516 } 3517 } 3518 3519 return 0; 3520 3521err: 3522 for (i = 0; i < num_consumers; i++) { 3523 if (consumers[i].ret < 0) 3524 pr_err("Failed to enable %s: %d\n", consumers[i].supply, 3525 consumers[i].ret); 3526 else 3527 regulator_disable(consumers[i].consumer); 3528 } 3529 3530 return ret; 3531} 3532EXPORT_SYMBOL_GPL(regulator_bulk_enable); 3533 3534/** 3535 * regulator_bulk_disable - disable multiple regulator consumers 3536 * 3537 * @num_consumers: Number of consumers 3538 * @consumers: Consumer data; clients are stored here. 3539 * @return 0 on success, an errno on failure 3540 * 3541 * This convenience API allows consumers to disable multiple regulator 3542 * clients in a single API call. If any consumers cannot be disabled 3543 * then any others that were disabled will be enabled again prior to 3544 * return. 3545 */ 3546int regulator_bulk_disable(int num_consumers, 3547 struct regulator_bulk_data *consumers) 3548{ 3549 int i; 3550 int ret, r; 3551 3552 for (i = num_consumers - 1; i >= 0; --i) { 3553 ret = regulator_disable(consumers[i].consumer); 3554 if (ret != 0) 3555 goto err; 3556 } 3557 3558 return 0; 3559 3560err: 3561 pr_err("Failed to disable %s: %d\n", consumers[i].supply, ret); 3562 for (++i; i < num_consumers; ++i) { 3563 r = regulator_enable(consumers[i].consumer); 3564 if (r != 0) 3565 pr_err("Failed to reename %s: %d\n", 3566 consumers[i].supply, r); 3567 } 3568 3569 return ret; 3570} 3571EXPORT_SYMBOL_GPL(regulator_bulk_disable); 3572 3573/** 3574 * regulator_bulk_force_disable - force disable multiple regulator consumers 3575 * 3576 * @num_consumers: Number of consumers 3577 * @consumers: Consumer data; clients are stored here. 3578 * @return 0 on success, an errno on failure 3579 * 3580 * This convenience API allows consumers to forcibly disable multiple regulator 3581 * clients in a single API call. 3582 * NOTE: This should be used for situations when device damage will 3583 * likely occur if the regulators are not disabled (e.g. over temp). 3584 * Although regulator_force_disable function call for some consumers can 3585 * return error numbers, the function is called for all consumers. 3586 */ 3587int regulator_bulk_force_disable(int num_consumers, 3588 struct regulator_bulk_data *consumers) 3589{ 3590 int i; 3591 int ret; 3592 3593 for (i = 0; i < num_consumers; i++) 3594 consumers[i].ret = 3595 regulator_force_disable(consumers[i].consumer); 3596 3597 for (i = 0; i < num_consumers; i++) { 3598 if (consumers[i].ret != 0) { 3599 ret = consumers[i].ret; 3600 goto out; 3601 } 3602 } 3603 3604 return 0; 3605out: 3606 return ret; 3607} 3608EXPORT_SYMBOL_GPL(regulator_bulk_force_disable); 3609 3610/** 3611 * regulator_bulk_free - free multiple regulator consumers 3612 * 3613 * @num_consumers: Number of consumers 3614 * @consumers: Consumer data; clients are stored here. 3615 * 3616 * This convenience API allows consumers to free multiple regulator 3617 * clients in a single API call. 3618 */ 3619void regulator_bulk_free(int num_consumers, 3620 struct regulator_bulk_data *consumers) 3621{ 3622 int i; 3623 3624 for (i = 0; i < num_consumers; i++) { 3625 regulator_put(consumers[i].consumer); 3626 consumers[i].consumer = NULL; 3627 } 3628} 3629EXPORT_SYMBOL_GPL(regulator_bulk_free); 3630 3631/** 3632 * regulator_notifier_call_chain - call regulator event notifier 3633 * @rdev: regulator source 3634 * @event: notifier block 3635 * @data: callback-specific data. 3636 * 3637 * Called by regulator drivers to notify clients a regulator event has 3638 * occurred. We also notify regulator clients downstream. 3639 * Note lock must be held by caller. 3640 */ 3641int regulator_notifier_call_chain(struct regulator_dev *rdev, 3642 unsigned long event, void *data) 3643{ 3644 lockdep_assert_held_once(&rdev->mutex); 3645 3646 _notifier_call_chain(rdev, event, data); 3647 return NOTIFY_DONE; 3648 3649} 3650EXPORT_SYMBOL_GPL(regulator_notifier_call_chain); 3651 3652/** 3653 * regulator_mode_to_status - convert a regulator mode into a status 3654 * 3655 * @mode: Mode to convert 3656 * 3657 * Convert a regulator mode into a status. 3658 */ 3659int regulator_mode_to_status(unsigned int mode) 3660{ 3661 switch (mode) { 3662 case REGULATOR_MODE_FAST: 3663 return REGULATOR_STATUS_FAST; 3664 case REGULATOR_MODE_NORMAL: 3665 return REGULATOR_STATUS_NORMAL; 3666 case REGULATOR_MODE_IDLE: 3667 return REGULATOR_STATUS_IDLE; 3668 case REGULATOR_MODE_STANDBY: 3669 return REGULATOR_STATUS_STANDBY; 3670 default: 3671 return REGULATOR_STATUS_UNDEFINED; 3672 } 3673} 3674EXPORT_SYMBOL_GPL(regulator_mode_to_status); 3675 3676static struct attribute *regulator_dev_attrs[] = { 3677 &dev_attr_name.attr, 3678 &dev_attr_num_users.attr, 3679 &dev_attr_type.attr, 3680 &dev_attr_microvolts.attr, 3681 &dev_attr_microamps.attr, 3682 &dev_attr_opmode.attr, 3683 &dev_attr_state.attr, 3684 &dev_attr_status.attr, 3685 &dev_attr_bypass.attr, 3686 &dev_attr_requested_microamps.attr, 3687 &dev_attr_min_microvolts.attr, 3688 &dev_attr_max_microvolts.attr, 3689 &dev_attr_min_microamps.attr, 3690 &dev_attr_max_microamps.attr, 3691 &dev_attr_suspend_standby_state.attr, 3692 &dev_attr_suspend_mem_state.attr, 3693 &dev_attr_suspend_disk_state.attr, 3694 &dev_attr_suspend_standby_microvolts.attr, 3695 &dev_attr_suspend_mem_microvolts.attr, 3696 &dev_attr_suspend_disk_microvolts.attr, 3697 &dev_attr_suspend_standby_mode.attr, 3698 &dev_attr_suspend_mem_mode.attr, 3699 &dev_attr_suspend_disk_mode.attr, 3700 NULL 3701}; 3702 3703/* 3704 * To avoid cluttering sysfs (and memory) with useless state, only 3705 * create attributes that can be meaningfully displayed. 3706 */ 3707static umode_t regulator_attr_is_visible(struct kobject *kobj, 3708 struct attribute *attr, int idx) 3709{ 3710 struct device *dev = kobj_to_dev(kobj); 3711 struct regulator_dev *rdev = container_of(dev, struct regulator_dev, dev); 3712 const struct regulator_ops *ops = rdev->desc->ops; 3713 umode_t mode = attr->mode; 3714 3715 /* these three are always present */ 3716 if (attr == &dev_attr_name.attr || 3717 attr == &dev_attr_num_users.attr || 3718 attr == &dev_attr_type.attr) 3719 return mode; 3720 3721 /* some attributes need specific methods to be displayed */ 3722 if (attr == &dev_attr_microvolts.attr) { 3723 if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) || 3724 (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) || 3725 (ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) || 3726 (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1)) 3727 return mode; 3728 return 0; 3729 } 3730 3731 if (attr == &dev_attr_microamps.attr) 3732 return ops->get_current_limit ? mode : 0; 3733 3734 if (attr == &dev_attr_opmode.attr) 3735 return ops->get_mode ? mode : 0; 3736 3737 if (attr == &dev_attr_state.attr) 3738 return (rdev->ena_pin || ops->is_enabled) ? mode : 0; 3739 3740 if (attr == &dev_attr_status.attr) 3741 return ops->get_status ? mode : 0; 3742 3743 if (attr == &dev_attr_bypass.attr) 3744 return ops->get_bypass ? mode : 0; 3745 3746 /* some attributes are type-specific */ 3747 if (attr == &dev_attr_requested_microamps.attr) 3748 return rdev->desc->type == REGULATOR_CURRENT ? mode : 0; 3749 3750 /* constraints need specific supporting methods */ 3751 if (attr == &dev_attr_min_microvolts.attr || 3752 attr == &dev_attr_max_microvolts.attr) 3753 return (ops->set_voltage || ops->set_voltage_sel) ? mode : 0; 3754 3755 if (attr == &dev_attr_min_microamps.attr || 3756 attr == &dev_attr_max_microamps.attr) 3757 return ops->set_current_limit ? mode : 0; 3758 3759 if (attr == &dev_attr_suspend_standby_state.attr || 3760 attr == &dev_attr_suspend_mem_state.attr || 3761 attr == &dev_attr_suspend_disk_state.attr) 3762 return mode; 3763 3764 if (attr == &dev_attr_suspend_standby_microvolts.attr || 3765 attr == &dev_attr_suspend_mem_microvolts.attr || 3766 attr == &dev_attr_suspend_disk_microvolts.attr) 3767 return ops->set_suspend_voltage ? mode : 0; 3768 3769 if (attr == &dev_attr_suspend_standby_mode.attr || 3770 attr == &dev_attr_suspend_mem_mode.attr || 3771 attr == &dev_attr_suspend_disk_mode.attr) 3772 return ops->set_suspend_mode ? mode : 0; 3773 3774 return mode; 3775} 3776 3777static const struct attribute_group regulator_dev_group = { 3778 .attrs = regulator_dev_attrs, 3779 .is_visible = regulator_attr_is_visible, 3780}; 3781 3782static const struct attribute_group *regulator_dev_groups[] = { 3783 ®ulator_dev_group, 3784 NULL 3785}; 3786 3787static void regulator_dev_release(struct device *dev) 3788{ 3789 struct regulator_dev *rdev = dev_get_drvdata(dev); 3790 3791 kfree(rdev->constraints); 3792 of_node_put(rdev->dev.of_node); 3793 kfree(rdev); 3794} 3795 3796static struct class regulator_class = { 3797 .name = "regulator", 3798 .dev_release = regulator_dev_release, 3799 .dev_groups = regulator_dev_groups, 3800}; 3801 3802static void rdev_init_debugfs(struct regulator_dev *rdev) 3803{ 3804 struct device *parent = rdev->dev.parent; 3805 const char *rname = rdev_get_name(rdev); 3806 char name[NAME_MAX]; 3807 3808 /* Avoid duplicate debugfs directory names */ 3809 if (parent && rname == rdev->desc->name) { 3810 snprintf(name, sizeof(name), "%s-%s", dev_name(parent), 3811 rname); 3812 rname = name; 3813 } 3814 3815 rdev->debugfs = debugfs_create_dir(rname, debugfs_root); 3816 if (!rdev->debugfs) { 3817 rdev_warn(rdev, "Failed to create debugfs directory\n"); 3818 return; 3819 } 3820 3821 debugfs_create_u32("use_count", 0444, rdev->debugfs, 3822 &rdev->use_count); 3823 debugfs_create_u32("open_count", 0444, rdev->debugfs, 3824 &rdev->open_count); 3825 debugfs_create_u32("bypass_count", 0444, rdev->debugfs, 3826 &rdev->bypass_count); 3827} 3828 3829/** 3830 * regulator_register - register regulator 3831 * @regulator_desc: regulator to register 3832 * @cfg: runtime configuration for regulator 3833 * 3834 * Called by regulator drivers to register a regulator. 3835 * Returns a valid pointer to struct regulator_dev on success 3836 * or an ERR_PTR() on error. 3837 */ 3838struct regulator_dev * 3839regulator_register(const struct regulator_desc *regulator_desc, 3840 const struct regulator_config *cfg) 3841{ 3842 const struct regulation_constraints *constraints = NULL; 3843 const struct regulator_init_data *init_data; 3844 struct regulator_config *config = NULL; 3845 static atomic_t regulator_no = ATOMIC_INIT(-1); 3846 struct regulator_dev *rdev; 3847 struct device *dev; 3848 int ret, i; 3849 3850 if (regulator_desc == NULL || cfg == NULL) 3851 return ERR_PTR(-EINVAL); 3852 3853 dev = cfg->dev; 3854 WARN_ON(!dev); 3855 3856 if (regulator_desc->name == NULL || regulator_desc->ops == NULL) 3857 return ERR_PTR(-EINVAL); 3858 3859 if (regulator_desc->type != REGULATOR_VOLTAGE && 3860 regulator_desc->type != REGULATOR_CURRENT) 3861 return ERR_PTR(-EINVAL); 3862 3863 /* Only one of each should be implemented */ 3864 WARN_ON(regulator_desc->ops->get_voltage && 3865 regulator_desc->ops->get_voltage_sel); 3866 WARN_ON(regulator_desc->ops->set_voltage && 3867 regulator_desc->ops->set_voltage_sel); 3868 3869 /* If we're using selectors we must implement list_voltage. */ 3870 if (regulator_desc->ops->get_voltage_sel && 3871 !regulator_desc->ops->list_voltage) { 3872 return ERR_PTR(-EINVAL); 3873 } 3874 if (regulator_desc->ops->set_voltage_sel && 3875 !regulator_desc->ops->list_voltage) { 3876 return ERR_PTR(-EINVAL); 3877 } 3878 3879 rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL); 3880 if (rdev == NULL) 3881 return ERR_PTR(-ENOMEM); 3882 3883 /* 3884 * Duplicate the config so the driver could override it after 3885 * parsing init data. 3886 */ 3887 config = kmemdup(cfg, sizeof(*cfg), GFP_KERNEL); 3888 if (config == NULL) { 3889 kfree(rdev); 3890 return ERR_PTR(-ENOMEM); 3891 } 3892 3893 init_data = regulator_of_get_init_data(dev, regulator_desc, config, 3894 &rdev->dev.of_node); 3895 if (!init_data) { 3896 init_data = config->init_data; 3897 rdev->dev.of_node = of_node_get(config->of_node); 3898 } 3899 3900 mutex_lock(®ulator_list_mutex); 3901 3902 mutex_init(&rdev->mutex); 3903 rdev->reg_data = config->driver_data; 3904 rdev->owner = regulator_desc->owner; 3905 rdev->desc = regulator_desc; 3906 if (config->regmap) 3907 rdev->regmap = config->regmap; 3908 else if (dev_get_regmap(dev, NULL)) 3909 rdev->regmap = dev_get_regmap(dev, NULL); 3910 else if (dev->parent) 3911 rdev->regmap = dev_get_regmap(dev->parent, NULL); 3912 INIT_LIST_HEAD(&rdev->consumer_list); 3913 INIT_LIST_HEAD(&rdev->list); 3914 BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier); 3915 INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work); 3916 3917 /* preform any regulator specific init */ 3918 if (init_data && init_data->regulator_init) { 3919 ret = init_data->regulator_init(rdev->reg_data); 3920 if (ret < 0) 3921 goto clean; 3922 } 3923 3924 /* register with sysfs */ 3925 rdev->dev.class = ®ulator_class; 3926 rdev->dev.parent = dev; 3927 dev_set_name(&rdev->dev, "regulator.%lu", 3928 (unsigned long) atomic_inc_return(®ulator_no)); 3929 ret = device_register(&rdev->dev); 3930 if (ret != 0) { 3931 put_device(&rdev->dev); 3932 goto clean; 3933 } 3934 3935 dev_set_drvdata(&rdev->dev, rdev); 3936 3937 if ((config->ena_gpio || config->ena_gpio_initialized) && 3938 gpio_is_valid(config->ena_gpio)) { 3939 ret = regulator_ena_gpio_request(rdev, config); 3940 if (ret != 0) { 3941 rdev_err(rdev, "Failed to request enable GPIO%d: %d\n", 3942 config->ena_gpio, ret); 3943 goto wash; 3944 } 3945 } 3946 3947 /* set regulator constraints */ 3948 if (init_data) 3949 constraints = &init_data->constraints; 3950 3951 ret = set_machine_constraints(rdev, constraints); 3952 if (ret < 0) 3953 goto scrub; 3954 3955 if (init_data && init_data->supply_regulator) 3956 rdev->supply_name = init_data->supply_regulator; 3957 else if (regulator_desc->supply_name) 3958 rdev->supply_name = regulator_desc->supply_name; 3959 3960 /* add consumers devices */ 3961 if (init_data) { 3962 for (i = 0; i < init_data->num_consumer_supplies; i++) { 3963 ret = set_consumer_device_supply(rdev, 3964 init_data->consumer_supplies[i].dev_name, 3965 init_data->consumer_supplies[i].supply); 3966 if (ret < 0) { 3967 dev_err(dev, "Failed to set supply %s\n", 3968 init_data->consumer_supplies[i].supply); 3969 goto unset_supplies; 3970 } 3971 } 3972 } 3973 3974 rdev_init_debugfs(rdev); 3975out: 3976 mutex_unlock(®ulator_list_mutex); 3977 kfree(config); 3978 return rdev; 3979 3980unset_supplies: 3981 unset_regulator_supplies(rdev); 3982 3983scrub: 3984 regulator_ena_gpio_free(rdev); 3985 kfree(rdev->constraints); 3986wash: 3987 device_unregister(&rdev->dev); 3988 /* device core frees rdev */ 3989 rdev = ERR_PTR(ret); 3990 goto out; 3991 3992clean: 3993 kfree(rdev); 3994 rdev = ERR_PTR(ret); 3995 goto out; 3996} 3997EXPORT_SYMBOL_GPL(regulator_register); 3998 3999/** 4000 * regulator_unregister - unregister regulator 4001 * @rdev: regulator to unregister 4002 * 4003 * Called by regulator drivers to unregister a regulator. 4004 */ 4005void regulator_unregister(struct regulator_dev *rdev) 4006{ 4007 if (rdev == NULL) 4008 return; 4009 4010 if (rdev->supply) { 4011 while (rdev->use_count--) 4012 regulator_disable(rdev->supply); 4013 regulator_put(rdev->supply); 4014 } 4015 mutex_lock(®ulator_list_mutex); 4016 debugfs_remove_recursive(rdev->debugfs); 4017 flush_work(&rdev->disable_work.work); 4018 WARN_ON(rdev->open_count); 4019 unset_regulator_supplies(rdev); 4020 list_del(&rdev->list); 4021 mutex_unlock(®ulator_list_mutex); 4022 regulator_ena_gpio_free(rdev); 4023 device_unregister(&rdev->dev); 4024} 4025EXPORT_SYMBOL_GPL(regulator_unregister); 4026 4027static int _regulator_suspend_prepare(struct device *dev, void *data) 4028{ 4029 struct regulator_dev *rdev = dev_to_rdev(dev); 4030 const suspend_state_t *state = data; 4031 int ret; 4032 4033 mutex_lock(&rdev->mutex); 4034 ret = suspend_prepare(rdev, *state); 4035 mutex_unlock(&rdev->mutex); 4036 4037 return ret; 4038} 4039 4040/** 4041 * regulator_suspend_prepare - prepare regulators for system wide suspend 4042 * @state: system suspend state 4043 * 4044 * Configure each regulator with it's suspend operating parameters for state. 4045 * This will usually be called by machine suspend code prior to supending. 4046 */ 4047int regulator_suspend_prepare(suspend_state_t state) 4048{ 4049 /* ON is handled by regulator active state */ 4050 if (state == PM_SUSPEND_ON) 4051 return -EINVAL; 4052 4053 return class_for_each_device(®ulator_class, NULL, &state, 4054 _regulator_suspend_prepare); 4055} 4056EXPORT_SYMBOL_GPL(regulator_suspend_prepare); 4057 4058static int _regulator_suspend_finish(struct device *dev, void *data) 4059{ 4060 struct regulator_dev *rdev = dev_to_rdev(dev); 4061 int ret; 4062 4063 mutex_lock(&rdev->mutex); 4064 if (rdev->use_count > 0 || rdev->constraints->always_on) { 4065 if (!_regulator_is_enabled(rdev)) { 4066 ret = _regulator_do_enable(rdev); 4067 if (ret) 4068 dev_err(dev, 4069 "Failed to resume regulator %d\n", 4070 ret); 4071 } 4072 } else { 4073 if (!have_full_constraints()) 4074 goto unlock; 4075 if (!_regulator_is_enabled(rdev)) 4076 goto unlock; 4077 4078 ret = _regulator_do_disable(rdev); 4079 if (ret) 4080 dev_err(dev, "Failed to suspend regulator %d\n", ret); 4081 } 4082unlock: 4083 mutex_unlock(&rdev->mutex); 4084 4085 /* Keep processing regulators in spite of any errors */ 4086 return 0; 4087} 4088 4089/** 4090 * regulator_suspend_finish - resume regulators from system wide suspend 4091 * 4092 * Turn on regulators that might be turned off by regulator_suspend_prepare 4093 * and that should be turned on according to the regulators properties. 4094 */ 4095int regulator_suspend_finish(void) 4096{ 4097 return class_for_each_device(®ulator_class, NULL, NULL, 4098 _regulator_suspend_finish); 4099} 4100EXPORT_SYMBOL_GPL(regulator_suspend_finish); 4101 4102/** 4103 * regulator_has_full_constraints - the system has fully specified constraints 4104 * 4105 * Calling this function will cause the regulator API to disable all 4106 * regulators which have a zero use count and don't have an always_on 4107 * constraint in a late_initcall. 4108 * 4109 * The intention is that this will become the default behaviour in a 4110 * future kernel release so users are encouraged to use this facility 4111 * now. 4112 */ 4113void regulator_has_full_constraints(void) 4114{ 4115 has_full_constraints = 1; 4116} 4117EXPORT_SYMBOL_GPL(regulator_has_full_constraints); 4118 4119/** 4120 * rdev_get_drvdata - get rdev regulator driver data 4121 * @rdev: regulator 4122 * 4123 * Get rdev regulator driver private data. This call can be used in the 4124 * regulator driver context. 4125 */ 4126void *rdev_get_drvdata(struct regulator_dev *rdev) 4127{ 4128 return rdev->reg_data; 4129} 4130EXPORT_SYMBOL_GPL(rdev_get_drvdata); 4131 4132/** 4133 * regulator_get_drvdata - get regulator driver data 4134 * @regulator: regulator 4135 * 4136 * Get regulator driver private data. This call can be used in the consumer 4137 * driver context when non API regulator specific functions need to be called. 4138 */ 4139void *regulator_get_drvdata(struct regulator *regulator) 4140{ 4141 return regulator->rdev->reg_data; 4142} 4143EXPORT_SYMBOL_GPL(regulator_get_drvdata); 4144 4145/** 4146 * regulator_set_drvdata - set regulator driver data 4147 * @regulator: regulator 4148 * @data: data 4149 */ 4150void regulator_set_drvdata(struct regulator *regulator, void *data) 4151{ 4152 regulator->rdev->reg_data = data; 4153} 4154EXPORT_SYMBOL_GPL(regulator_set_drvdata); 4155 4156/** 4157 * regulator_get_id - get regulator ID 4158 * @rdev: regulator 4159 */ 4160int rdev_get_id(struct regulator_dev *rdev) 4161{ 4162 return rdev->desc->id; 4163} 4164EXPORT_SYMBOL_GPL(rdev_get_id); 4165 4166struct device *rdev_get_dev(struct regulator_dev *rdev) 4167{ 4168 return &rdev->dev; 4169} 4170EXPORT_SYMBOL_GPL(rdev_get_dev); 4171 4172void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data) 4173{ 4174 return reg_init_data->driver_data; 4175} 4176EXPORT_SYMBOL_GPL(regulator_get_init_drvdata); 4177 4178#ifdef CONFIG_DEBUG_FS 4179static ssize_t supply_map_read_file(struct file *file, char __user *user_buf, 4180 size_t count, loff_t *ppos) 4181{ 4182 char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL); 4183 ssize_t len, ret = 0; 4184 struct regulator_map *map; 4185 4186 if (!buf) 4187 return -ENOMEM; 4188 4189 list_for_each_entry(map, ®ulator_map_list, list) { 4190 len = snprintf(buf + ret, PAGE_SIZE - ret, 4191 "%s -> %s.%s\n", 4192 rdev_get_name(map->regulator), map->dev_name, 4193 map->supply); 4194 if (len >= 0) 4195 ret += len; 4196 if (ret > PAGE_SIZE) { 4197 ret = PAGE_SIZE; 4198 break; 4199 } 4200 } 4201 4202 ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); 4203 4204 kfree(buf); 4205 4206 return ret; 4207} 4208#endif 4209 4210static const struct file_operations supply_map_fops = { 4211#ifdef CONFIG_DEBUG_FS 4212 .read = supply_map_read_file, 4213 .llseek = default_llseek, 4214#endif 4215}; 4216 4217#ifdef CONFIG_DEBUG_FS 4218struct summary_data { 4219 struct seq_file *s; 4220 struct regulator_dev *parent; 4221 int level; 4222}; 4223 4224static void regulator_summary_show_subtree(struct seq_file *s, 4225 struct regulator_dev *rdev, 4226 int level); 4227 4228static int regulator_summary_show_children(struct device *dev, void *data) 4229{ 4230 struct regulator_dev *rdev = dev_to_rdev(dev); 4231 struct summary_data *summary_data = data; 4232 4233 if (rdev->supply && rdev->supply->rdev == summary_data->parent) 4234 regulator_summary_show_subtree(summary_data->s, rdev, 4235 summary_data->level + 1); 4236 4237 return 0; 4238} 4239 4240static void regulator_summary_show_subtree(struct seq_file *s, 4241 struct regulator_dev *rdev, 4242 int level) 4243{ 4244 struct regulation_constraints *c; 4245 struct regulator *consumer; 4246 struct summary_data summary_data; 4247 4248 if (!rdev) 4249 return; 4250 4251 seq_printf(s, "%*s%-*s %3d %4d %6d ", 4252 level * 3 + 1, "", 4253 30 - level * 3, rdev_get_name(rdev), 4254 rdev->use_count, rdev->open_count, rdev->bypass_count); 4255 4256 seq_printf(s, "%5dmV ", _regulator_get_voltage(rdev) / 1000); 4257 seq_printf(s, "%5dmA ", _regulator_get_current_limit(rdev) / 1000); 4258 4259 c = rdev->constraints; 4260 if (c) { 4261 switch (rdev->desc->type) { 4262 case REGULATOR_VOLTAGE: 4263 seq_printf(s, "%5dmV %5dmV ", 4264 c->min_uV / 1000, c->max_uV / 1000); 4265 break; 4266 case REGULATOR_CURRENT: 4267 seq_printf(s, "%5dmA %5dmA ", 4268 c->min_uA / 1000, c->max_uA / 1000); 4269 break; 4270 } 4271 } 4272 4273 seq_puts(s, "\n"); 4274 4275 list_for_each_entry(consumer, &rdev->consumer_list, list) { 4276 if (consumer->dev->class == ®ulator_class) 4277 continue; 4278 4279 seq_printf(s, "%*s%-*s ", 4280 (level + 1) * 3 + 1, "", 4281 30 - (level + 1) * 3, dev_name(consumer->dev)); 4282 4283 switch (rdev->desc->type) { 4284 case REGULATOR_VOLTAGE: 4285 seq_printf(s, "%37dmV %5dmV", 4286 consumer->min_uV / 1000, 4287 consumer->max_uV / 1000); 4288 break; 4289 case REGULATOR_CURRENT: 4290 break; 4291 } 4292 4293 seq_puts(s, "\n"); 4294 } 4295 4296 summary_data.s = s; 4297 summary_data.level = level; 4298 summary_data.parent = rdev; 4299 4300 class_for_each_device(®ulator_class, NULL, &summary_data, 4301 regulator_summary_show_children); 4302} 4303 4304static int regulator_summary_show_roots(struct device *dev, void *data) 4305{ 4306 struct regulator_dev *rdev = dev_to_rdev(dev); 4307 struct seq_file *s = data; 4308 4309 if (!rdev->supply) 4310 regulator_summary_show_subtree(s, rdev, 0); 4311 4312 return 0; 4313} 4314 4315static int regulator_summary_show(struct seq_file *s, void *data) 4316{ 4317 seq_puts(s, " regulator use open bypass voltage current min max\n"); 4318 seq_puts(s, "-------------------------------------------------------------------------------\n"); 4319 4320 class_for_each_device(®ulator_class, NULL, s, 4321 regulator_summary_show_roots); 4322 4323 return 0; 4324} 4325 4326static int regulator_summary_open(struct inode *inode, struct file *file) 4327{ 4328 return single_open(file, regulator_summary_show, inode->i_private); 4329} 4330#endif 4331 4332static const struct file_operations regulator_summary_fops = { 4333#ifdef CONFIG_DEBUG_FS 4334 .open = regulator_summary_open, 4335 .read = seq_read, 4336 .llseek = seq_lseek, 4337 .release = single_release, 4338#endif 4339}; 4340 4341static int __init regulator_init(void) 4342{ 4343 int ret; 4344 4345 ret = class_register(®ulator_class); 4346 4347 debugfs_root = debugfs_create_dir("regulator", NULL); 4348 if (!debugfs_root) 4349 pr_warn("regulator: Failed to create debugfs directory\n"); 4350 4351 debugfs_create_file("supply_map", 0444, debugfs_root, NULL, 4352 &supply_map_fops); 4353 4354 debugfs_create_file("regulator_summary", 0444, debugfs_root, 4355 NULL, ®ulator_summary_fops); 4356 4357 regulator_dummy_init(); 4358 4359 return ret; 4360} 4361 4362/* init early to allow our consumers to complete system booting */ 4363core_initcall(regulator_init); 4364 4365static int __init regulator_late_cleanup(struct device *dev, void *data) 4366{ 4367 struct regulator_dev *rdev = dev_to_rdev(dev); 4368 const struct regulator_ops *ops = rdev->desc->ops; 4369 struct regulation_constraints *c = rdev->constraints; 4370 int enabled, ret; 4371 4372 if (c && c->always_on) 4373 return 0; 4374 4375 if (c && !(c->valid_ops_mask & REGULATOR_CHANGE_STATUS)) 4376 return 0; 4377 4378 mutex_lock(&rdev->mutex); 4379 4380 if (rdev->use_count) 4381 goto unlock; 4382 4383 /* If we can't read the status assume it's on. */ 4384 if (ops->is_enabled) 4385 enabled = ops->is_enabled(rdev); 4386 else 4387 enabled = 1; 4388 4389 if (!enabled) 4390 goto unlock; 4391 4392 if (have_full_constraints()) { 4393 /* We log since this may kill the system if it goes 4394 * wrong. */ 4395 rdev_info(rdev, "disabling\n"); 4396 ret = _regulator_do_disable(rdev); 4397 if (ret != 0) 4398 rdev_err(rdev, "couldn't disable: %d\n", ret); 4399 } else { 4400 /* The intention is that in future we will 4401 * assume that full constraints are provided 4402 * so warn even if we aren't going to do 4403 * anything here. 4404 */ 4405 rdev_warn(rdev, "incomplete constraints, leaving on\n"); 4406 } 4407 4408unlock: 4409 mutex_unlock(&rdev->mutex); 4410 4411 return 0; 4412} 4413 4414static int __init regulator_init_complete(void) 4415{ 4416 /* 4417 * Since DT doesn't provide an idiomatic mechanism for 4418 * enabling full constraints and since it's much more natural 4419 * with DT to provide them just assume that a DT enabled 4420 * system has full constraints. 4421 */ 4422 if (of_have_populated_dt()) 4423 has_full_constraints = true; 4424 4425 /* If we have a full configuration then disable any regulators 4426 * we have permission to change the status for and which are 4427 * not in use or always_on. This is effectively the default 4428 * for DT and ACPI as they have full constraints. 4429 */ 4430 class_for_each_device(®ulator_class, NULL, NULL, 4431 regulator_late_cleanup); 4432 4433 return 0; 4434} 4435late_initcall_sync(regulator_init_complete); 4436