Lines Matching refs:rdev

42 #define rdev_crit(rdev, fmt, ...)					\  argument
43 pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
44 #define rdev_err(rdev, fmt, ...) \ argument
45 pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
46 #define rdev_warn(rdev, fmt, ...) \ argument
47 pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
48 #define rdev_info(rdev, fmt, ...) \ argument
49 pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
50 #define rdev_dbg(rdev, fmt, ...) \ argument
51 pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
101 static int _regulator_is_enabled(struct regulator_dev *rdev);
102 static int _regulator_disable(struct regulator_dev *rdev);
103 static int _regulator_get_voltage(struct regulator_dev *rdev);
104 static int _regulator_get_current_limit(struct regulator_dev *rdev);
105 static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
106 static int _notifier_call_chain(struct regulator_dev *rdev,
108 static int _regulator_do_set_voltage(struct regulator_dev *rdev,
110 static struct regulator *create_regulator(struct regulator_dev *rdev,
120 static const char *rdev_get_name(struct regulator_dev *rdev) in rdev_get_name() argument
122 if (rdev->constraints && rdev->constraints->name) in rdev_get_name()
123 return rdev->constraints->name; in rdev_get_name()
124 else if (rdev->desc->name) in rdev_get_name()
125 return rdev->desc->name; in rdev_get_name()
135 static inline struct regulator_dev *rdev_get_supply(struct regulator_dev *rdev) in rdev_get_supply() argument
137 if (rdev && rdev->supply) in rdev_get_supply()
138 return rdev->supply->rdev; in rdev_get_supply()
147 static void regulator_lock_supply(struct regulator_dev *rdev) in regulator_lock_supply() argument
151 for (i = 0; rdev; rdev = rdev_get_supply(rdev), i++) in regulator_lock_supply()
152 mutex_lock_nested(&rdev->mutex, i); in regulator_lock_supply()
159 static void regulator_unlock_supply(struct regulator_dev *rdev) in regulator_unlock_supply() argument
164 mutex_unlock(&rdev->mutex); in regulator_unlock_supply()
165 supply = rdev->supply; in regulator_unlock_supply()
167 if (!rdev->supply) in regulator_unlock_supply()
170 rdev = supply->rdev; in regulator_unlock_supply()
201 static int _regulator_can_change_status(struct regulator_dev *rdev) in _regulator_can_change_status() argument
203 if (!rdev->constraints) in _regulator_can_change_status()
206 if (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_STATUS) in _regulator_can_change_status()
213 static int regulator_check_voltage(struct regulator_dev *rdev, in regulator_check_voltage() argument
218 if (!rdev->constraints) { in regulator_check_voltage()
219 rdev_err(rdev, "no constraints\n"); in regulator_check_voltage()
222 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { in regulator_check_voltage()
223 rdev_err(rdev, "voltage operation not allowed\n"); in regulator_check_voltage()
227 if (*max_uV > rdev->constraints->max_uV) in regulator_check_voltage()
228 *max_uV = rdev->constraints->max_uV; in regulator_check_voltage()
229 if (*min_uV < rdev->constraints->min_uV) in regulator_check_voltage()
230 *min_uV = rdev->constraints->min_uV; in regulator_check_voltage()
233 rdev_err(rdev, "unsupportable voltage range: %d-%duV\n", in regulator_check_voltage()
244 static int regulator_check_consumers(struct regulator_dev *rdev, in regulator_check_consumers() argument
249 list_for_each_entry(regulator, &rdev->consumer_list, list) { in regulator_check_consumers()
264 rdev_err(rdev, "Restricting voltage, %u-%uuV\n", in regulator_check_consumers()
273 static int regulator_check_current_limit(struct regulator_dev *rdev, in regulator_check_current_limit() argument
278 if (!rdev->constraints) { in regulator_check_current_limit()
279 rdev_err(rdev, "no constraints\n"); in regulator_check_current_limit()
282 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) { in regulator_check_current_limit()
283 rdev_err(rdev, "current operation not allowed\n"); in regulator_check_current_limit()
287 if (*max_uA > rdev->constraints->max_uA) in regulator_check_current_limit()
288 *max_uA = rdev->constraints->max_uA; in regulator_check_current_limit()
289 if (*min_uA < rdev->constraints->min_uA) in regulator_check_current_limit()
290 *min_uA = rdev->constraints->min_uA; in regulator_check_current_limit()
293 rdev_err(rdev, "unsupportable current range: %d-%duA\n", in regulator_check_current_limit()
302 static int regulator_mode_constrain(struct regulator_dev *rdev, int *mode) in regulator_mode_constrain() argument
311 rdev_err(rdev, "invalid mode %x specified\n", *mode); in regulator_mode_constrain()
315 if (!rdev->constraints) { in regulator_mode_constrain()
316 rdev_err(rdev, "no constraints\n"); in regulator_mode_constrain()
319 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) { in regulator_mode_constrain()
320 rdev_err(rdev, "mode operation not allowed\n"); in regulator_mode_constrain()
328 if (rdev->constraints->valid_modes_mask & *mode) in regulator_mode_constrain()
337 static int regulator_check_drms(struct regulator_dev *rdev) in regulator_check_drms() argument
339 if (!rdev->constraints) { in regulator_check_drms()
340 rdev_err(rdev, "no constraints\n"); in regulator_check_drms()
343 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) { in regulator_check_drms()
344 rdev_dbg(rdev, "drms operation not allowed\n"); in regulator_check_drms()
353 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_uV_show() local
356 mutex_lock(&rdev->mutex); in regulator_uV_show()
357 ret = sprintf(buf, "%d\n", _regulator_get_voltage(rdev)); in regulator_uV_show()
358 mutex_unlock(&rdev->mutex); in regulator_uV_show()
367 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_uA_show() local
369 return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev)); in regulator_uA_show()
376 struct regulator_dev *rdev = dev_get_drvdata(dev); in name_show() local
378 return sprintf(buf, "%s\n", rdev_get_name(rdev)); in name_show()
400 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_opmode_show() local
402 return regulator_print_opmode(buf, _regulator_get_mode(rdev)); in regulator_opmode_show()
419 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_state_show() local
422 mutex_lock(&rdev->mutex); in regulator_state_show()
423 ret = regulator_print_state(buf, _regulator_is_enabled(rdev)); in regulator_state_show()
424 mutex_unlock(&rdev->mutex); in regulator_state_show()
433 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_status_show() local
437 status = rdev->desc->ops->get_status(rdev); in regulator_status_show()
480 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_min_uA_show() local
482 if (!rdev->constraints) in regulator_min_uA_show()
485 return sprintf(buf, "%d\n", rdev->constraints->min_uA); in regulator_min_uA_show()
492 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_max_uA_show() local
494 if (!rdev->constraints) in regulator_max_uA_show()
497 return sprintf(buf, "%d\n", rdev->constraints->max_uA); in regulator_max_uA_show()
504 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_min_uV_show() local
506 if (!rdev->constraints) in regulator_min_uV_show()
509 return sprintf(buf, "%d\n", rdev->constraints->min_uV); in regulator_min_uV_show()
516 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_max_uV_show() local
518 if (!rdev->constraints) in regulator_max_uV_show()
521 return sprintf(buf, "%d\n", rdev->constraints->max_uV); in regulator_max_uV_show()
528 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_total_uA_show() local
532 mutex_lock(&rdev->mutex); in regulator_total_uA_show()
533 list_for_each_entry(regulator, &rdev->consumer_list, list) in regulator_total_uA_show()
535 mutex_unlock(&rdev->mutex); in regulator_total_uA_show()
543 struct regulator_dev *rdev = dev_get_drvdata(dev); in num_users_show() local
544 return sprintf(buf, "%d\n", rdev->use_count); in num_users_show()
551 struct regulator_dev *rdev = dev_get_drvdata(dev); in type_show() local
553 switch (rdev->desc->type) { in type_show()
566 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_uV_show() local
568 return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV); in regulator_suspend_mem_uV_show()
576 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_uV_show() local
578 return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV); in regulator_suspend_disk_uV_show()
586 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_uV_show() local
588 return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV); in regulator_suspend_standby_uV_show()
596 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_mode_show() local
599 rdev->constraints->state_mem.mode); in regulator_suspend_mem_mode_show()
607 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_mode_show() local
610 rdev->constraints->state_disk.mode); in regulator_suspend_disk_mode_show()
618 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_mode_show() local
621 rdev->constraints->state_standby.mode); in regulator_suspend_standby_mode_show()
629 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_state_show() local
632 rdev->constraints->state_mem.enabled); in regulator_suspend_mem_state_show()
640 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_state_show() local
643 rdev->constraints->state_disk.enabled); in regulator_suspend_disk_state_show()
651 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_state_show() local
654 rdev->constraints->state_standby.enabled); in regulator_suspend_standby_state_show()
662 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_bypass_show() local
667 ret = rdev->desc->ops->get_bypass(rdev, &bypass); in regulator_bypass_show()
683 static int drms_uA_update(struct regulator_dev *rdev) in drms_uA_update() argument
689 lockdep_assert_held_once(&rdev->mutex); in drms_uA_update()
695 err = regulator_check_drms(rdev); in drms_uA_update()
699 if (!rdev->desc->ops->get_optimum_mode && in drms_uA_update()
700 !rdev->desc->ops->set_load) in drms_uA_update()
703 if (!rdev->desc->ops->set_mode && in drms_uA_update()
704 !rdev->desc->ops->set_load) in drms_uA_update()
708 output_uV = _regulator_get_voltage(rdev); in drms_uA_update()
710 rdev_err(rdev, "invalid output voltage found\n"); in drms_uA_update()
716 if (rdev->supply) in drms_uA_update()
717 input_uV = regulator_get_voltage(rdev->supply); in drms_uA_update()
719 input_uV = rdev->constraints->input_uV; in drms_uA_update()
721 rdev_err(rdev, "invalid input voltage found\n"); in drms_uA_update()
726 list_for_each_entry(sibling, &rdev->consumer_list, list) in drms_uA_update()
729 current_uA += rdev->constraints->system_load; in drms_uA_update()
731 if (rdev->desc->ops->set_load) { in drms_uA_update()
733 err = rdev->desc->ops->set_load(rdev, current_uA); in drms_uA_update()
735 rdev_err(rdev, "failed to set load %d\n", current_uA); in drms_uA_update()
738 mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV, in drms_uA_update()
742 err = regulator_mode_constrain(rdev, &mode); in drms_uA_update()
744 rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n", in drms_uA_update()
749 err = rdev->desc->ops->set_mode(rdev, mode); in drms_uA_update()
751 rdev_err(rdev, "failed to set optimum mode %x\n", mode); in drms_uA_update()
757 static int suspend_set_state(struct regulator_dev *rdev, in suspend_set_state() argument
767 if (rdev->desc->ops->set_suspend_voltage || in suspend_set_state()
768 rdev->desc->ops->set_suspend_mode) in suspend_set_state()
769 rdev_warn(rdev, "No configuration\n"); in suspend_set_state()
774 rdev_err(rdev, "invalid configuration\n"); in suspend_set_state()
778 if (rstate->enabled && rdev->desc->ops->set_suspend_enable) in suspend_set_state()
779 ret = rdev->desc->ops->set_suspend_enable(rdev); in suspend_set_state()
780 else if (rstate->disabled && rdev->desc->ops->set_suspend_disable) in suspend_set_state()
781 ret = rdev->desc->ops->set_suspend_disable(rdev); in suspend_set_state()
786 rdev_err(rdev, "failed to enabled/disable\n"); in suspend_set_state()
790 if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) { in suspend_set_state()
791 ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV); in suspend_set_state()
793 rdev_err(rdev, "failed to set voltage\n"); in suspend_set_state()
798 if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) { in suspend_set_state()
799 ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode); in suspend_set_state()
801 rdev_err(rdev, "failed to set mode\n"); in suspend_set_state()
809 static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state) in suspend_prepare() argument
811 lockdep_assert_held_once(&rdev->mutex); in suspend_prepare()
813 if (!rdev->constraints) in suspend_prepare()
818 return suspend_set_state(rdev, in suspend_prepare()
819 &rdev->constraints->state_standby); in suspend_prepare()
821 return suspend_set_state(rdev, in suspend_prepare()
822 &rdev->constraints->state_mem); in suspend_prepare()
824 return suspend_set_state(rdev, in suspend_prepare()
825 &rdev->constraints->state_disk); in suspend_prepare()
831 static void print_constraints(struct regulator_dev *rdev) in print_constraints() argument
833 struct regulation_constraints *constraints = rdev->constraints; in print_constraints()
852 ret = _regulator_get_voltage(rdev); in print_constraints()
875 ret = _regulator_get_current_limit(rdev); in print_constraints()
893 rdev_dbg(rdev, "%s\n", buf); in print_constraints()
897 rdev_warn(rdev, in print_constraints()
901 static int machine_constraints_voltage(struct regulator_dev *rdev, in machine_constraints_voltage() argument
904 const struct regulator_ops *ops = rdev->desc->ops; in machine_constraints_voltage()
908 if (rdev->constraints->apply_uV && in machine_constraints_voltage()
909 rdev->constraints->min_uV == rdev->constraints->max_uV) { in machine_constraints_voltage()
910 int current_uV = _regulator_get_voltage(rdev); in machine_constraints_voltage()
912 rdev_err(rdev, in machine_constraints_voltage()
917 if (current_uV < rdev->constraints->min_uV || in machine_constraints_voltage()
918 current_uV > rdev->constraints->max_uV) { in machine_constraints_voltage()
920 rdev, rdev->constraints->min_uV, in machine_constraints_voltage()
921 rdev->constraints->max_uV); in machine_constraints_voltage()
923 rdev_err(rdev, in machine_constraints_voltage()
925 rdev->constraints->min_uV, ret); in machine_constraints_voltage()
934 if (ops->list_voltage && rdev->desc->n_voltages) { in machine_constraints_voltage()
935 int count = rdev->desc->n_voltages; in machine_constraints_voltage()
957 rdev_err(rdev, "invalid voltage constraints\n"); in machine_constraints_voltage()
965 value = ops->list_voltage(rdev, i); in machine_constraints_voltage()
978 rdev_err(rdev, in machine_constraints_voltage()
986 rdev_dbg(rdev, "override min_uV, %d -> %d\n", in machine_constraints_voltage()
991 rdev_dbg(rdev, "override max_uV, %d -> %d\n", in machine_constraints_voltage()
1000 static int machine_constraints_current(struct regulator_dev *rdev, in machine_constraints_current() argument
1003 const struct regulator_ops *ops = rdev->desc->ops; in machine_constraints_current()
1010 rdev_err(rdev, "Invalid current constraints\n"); in machine_constraints_current()
1015 rdev_warn(rdev, "Operation of current configuration missing\n"); in machine_constraints_current()
1020 ret = ops->set_current_limit(rdev, constraints->min_uA, in machine_constraints_current()
1023 rdev_err(rdev, "Failed to set current constraint, %d\n", ret); in machine_constraints_current()
1030 static int _regulator_do_enable(struct regulator_dev *rdev);
1043 static int set_machine_constraints(struct regulator_dev *rdev, in set_machine_constraints() argument
1047 const struct regulator_ops *ops = rdev->desc->ops; in set_machine_constraints()
1050 rdev->constraints = kmemdup(constraints, sizeof(*constraints), in set_machine_constraints()
1053 rdev->constraints = kzalloc(sizeof(*constraints), in set_machine_constraints()
1055 if (!rdev->constraints) in set_machine_constraints()
1058 ret = machine_constraints_voltage(rdev, rdev->constraints); in set_machine_constraints()
1062 ret = machine_constraints_current(rdev, rdev->constraints); in set_machine_constraints()
1066 if (rdev->constraints->ilim_uA && ops->set_input_current_limit) { in set_machine_constraints()
1067 ret = ops->set_input_current_limit(rdev, in set_machine_constraints()
1068 rdev->constraints->ilim_uA); in set_machine_constraints()
1070 rdev_err(rdev, "failed to set input limit\n"); in set_machine_constraints()
1076 if (rdev->constraints->initial_state) { in set_machine_constraints()
1077 ret = suspend_prepare(rdev, rdev->constraints->initial_state); in set_machine_constraints()
1079 rdev_err(rdev, "failed to set suspend state\n"); in set_machine_constraints()
1084 if (rdev->constraints->initial_mode) { in set_machine_constraints()
1086 rdev_err(rdev, "no set_mode operation\n"); in set_machine_constraints()
1091 ret = ops->set_mode(rdev, rdev->constraints->initial_mode); in set_machine_constraints()
1093 rdev_err(rdev, "failed to set initial mode: %d\n", ret); in set_machine_constraints()
1101 if (rdev->constraints->always_on || rdev->constraints->boot_on) { in set_machine_constraints()
1102 ret = _regulator_do_enable(rdev); in set_machine_constraints()
1104 rdev_err(rdev, "failed to enable\n"); in set_machine_constraints()
1109 if ((rdev->constraints->ramp_delay || rdev->constraints->ramp_disable) in set_machine_constraints()
1111 ret = ops->set_ramp_delay(rdev, rdev->constraints->ramp_delay); in set_machine_constraints()
1113 rdev_err(rdev, "failed to set ramp_delay\n"); in set_machine_constraints()
1118 if (rdev->constraints->pull_down && ops->set_pull_down) { in set_machine_constraints()
1119 ret = ops->set_pull_down(rdev); in set_machine_constraints()
1121 rdev_err(rdev, "failed to set pull down\n"); in set_machine_constraints()
1126 if (rdev->constraints->soft_start && ops->set_soft_start) { in set_machine_constraints()
1127 ret = ops->set_soft_start(rdev); in set_machine_constraints()
1129 rdev_err(rdev, "failed to set soft start\n"); in set_machine_constraints()
1134 if (rdev->constraints->over_current_protection in set_machine_constraints()
1136 ret = ops->set_over_current_protection(rdev); in set_machine_constraints()
1138 rdev_err(rdev, "failed to set over current protection\n"); in set_machine_constraints()
1143 print_constraints(rdev); in set_machine_constraints()
1146 kfree(rdev->constraints); in set_machine_constraints()
1147 rdev->constraints = NULL; in set_machine_constraints()
1160 static int set_supply(struct regulator_dev *rdev, in set_supply() argument
1165 rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev)); in set_supply()
1170 rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY"); in set_supply()
1171 if (rdev->supply == NULL) { in set_supply()
1191 static int set_consumer_device_supply(struct regulator_dev *rdev, in set_consumer_device_supply() argument
1222 dev_name(&rdev->dev), rdev_get_name(rdev)); in set_consumer_device_supply()
1230 node->regulator = rdev; in set_consumer_device_supply()
1245 static void unset_regulator_supplies(struct regulator_dev *rdev) in unset_regulator_supplies() argument
1250 if (rdev == node->regulator) { in unset_regulator_supplies()
1260 static struct regulator *create_regulator(struct regulator_dev *rdev, in create_regulator() argument
1272 mutex_lock(&rdev->mutex); in create_regulator()
1273 regulator->rdev = rdev; in create_regulator()
1274 list_add(&regulator->list, &rdev->consumer_list); in create_regulator()
1289 err = sysfs_create_link_nowarn(&rdev->dev.kobj, &dev->kobj, in create_regulator()
1292 rdev_dbg(rdev, "could not add device link %s err %d\n", in create_regulator()
1303 rdev->debugfs); in create_regulator()
1305 rdev_dbg(rdev, "Failed to create debugfs directory\n"); in create_regulator()
1320 if (!_regulator_can_change_status(rdev) && in create_regulator()
1321 _regulator_is_enabled(rdev)) in create_regulator()
1324 mutex_unlock(&rdev->mutex); in create_regulator()
1329 mutex_unlock(&rdev->mutex); in create_regulator()
1333 static int _regulator_get_enable_time(struct regulator_dev *rdev) in _regulator_get_enable_time() argument
1335 if (rdev->constraints && rdev->constraints->enable_time) in _regulator_get_enable_time()
1336 return rdev->constraints->enable_time; in _regulator_get_enable_time()
1337 if (!rdev->desc->ops->enable_time) in _regulator_get_enable_time()
1338 return rdev->desc->enable_time; in _regulator_get_enable_time()
1339 return rdev->desc->ops->enable_time(rdev); in _regulator_get_enable_time()
1466 static int regulator_resolve_supply(struct regulator_dev *rdev) in regulator_resolve_supply() argument
1469 struct device *dev = rdev->dev.parent; in regulator_resolve_supply()
1473 if (!rdev->supply_name) in regulator_resolve_supply()
1477 if (rdev->supply) in regulator_resolve_supply()
1480 r = regulator_dev_lookup(dev, rdev->supply_name, &ret); in regulator_resolve_supply()
1499 rdev->supply_name, rdev->desc->name); in regulator_resolve_supply()
1511 ret = set_supply(rdev, r); in regulator_resolve_supply()
1518 if (_regulator_is_enabled(rdev) && rdev->supply) { in regulator_resolve_supply()
1519 ret = regulator_enable(rdev->supply); in regulator_resolve_supply()
1521 _regulator_put(rdev->supply); in regulator_resolve_supply()
1533 struct regulator_dev *rdev; in _regulator_get() local
1551 rdev = regulator_dev_lookup(dev, id, &ret); in _regulator_get()
1552 if (rdev) in _regulator_get()
1575 rdev = dummy_regulator_rdev; in _regulator_get()
1576 get_device(&rdev->dev); in _regulator_get()
1586 if (rdev->exclusive) { in _regulator_get()
1588 put_device(&rdev->dev); in _regulator_get()
1592 if (exclusive && rdev->open_count) { in _regulator_get()
1594 put_device(&rdev->dev); in _regulator_get()
1598 ret = regulator_resolve_supply(rdev); in _regulator_get()
1601 put_device(&rdev->dev); in _regulator_get()
1605 if (!try_module_get(rdev->owner)) { in _regulator_get()
1606 put_device(&rdev->dev); in _regulator_get()
1610 regulator = create_regulator(rdev, dev, id); in _regulator_get()
1613 put_device(&rdev->dev); in _regulator_get()
1614 module_put(rdev->owner); in _regulator_get()
1618 rdev->open_count++; in _regulator_get()
1620 rdev->exclusive = 1; in _regulator_get()
1622 ret = _regulator_is_enabled(rdev); in _regulator_get()
1624 rdev->use_count = 1; in _regulator_get()
1626 rdev->use_count = 0; in _regulator_get()
1707 struct regulator_dev *rdev; in _regulator_put() local
1714 rdev = regulator->rdev; in _regulator_put()
1720 sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); in _regulator_put()
1721 mutex_lock(&rdev->mutex); in _regulator_put()
1724 rdev->open_count--; in _regulator_put()
1725 rdev->exclusive = 0; in _regulator_put()
1726 put_device(&rdev->dev); in _regulator_put()
1727 mutex_unlock(&rdev->mutex); in _regulator_put()
1732 module_put(rdev->owner); in _regulator_put()
1881 static int regulator_ena_gpio_request(struct regulator_dev *rdev, in regulator_ena_gpio_request() argument
1892 rdev_dbg(rdev, "GPIO %d is already used\n", in regulator_ena_gpio_request()
1900 rdev_get_name(rdev)); in regulator_ena_gpio_request()
1916 rdev->ena_pin = pin; in regulator_ena_gpio_request()
1920 static void regulator_ena_gpio_free(struct regulator_dev *rdev) in regulator_ena_gpio_free() argument
1924 if (!rdev->ena_pin) in regulator_ena_gpio_free()
1929 if (pin->gpiod == rdev->ena_pin->gpiod) { in regulator_ena_gpio_free()
1935 rdev->ena_pin = NULL; in regulator_ena_gpio_free()
1952 static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable) in regulator_ena_gpio_ctrl() argument
1954 struct regulator_enable_gpio *pin = rdev->ena_pin; in regulator_ena_gpio_ctrl()
2022 static int _regulator_do_enable(struct regulator_dev *rdev) in _regulator_do_enable() argument
2027 ret = _regulator_get_enable_time(rdev); in _regulator_do_enable()
2031 rdev_warn(rdev, "enable_time() failed: %d\n", ret); in _regulator_do_enable()
2035 trace_regulator_enable(rdev_get_name(rdev)); in _regulator_do_enable()
2037 if (rdev->desc->off_on_delay) { in _regulator_do_enable()
2044 max_delay = usecs_to_jiffies(rdev->desc->off_on_delay); in _regulator_do_enable()
2045 intended = rdev->last_off_jiffy + max_delay; in _regulator_do_enable()
2062 if (rdev->ena_pin) { in _regulator_do_enable()
2063 if (!rdev->ena_gpio_state) { in _regulator_do_enable()
2064 ret = regulator_ena_gpio_ctrl(rdev, true); in _regulator_do_enable()
2067 rdev->ena_gpio_state = 1; in _regulator_do_enable()
2069 } else if (rdev->desc->ops->enable) { in _regulator_do_enable()
2070 ret = rdev->desc->ops->enable(rdev); in _regulator_do_enable()
2080 trace_regulator_enable_delay(rdev_get_name(rdev)); in _regulator_do_enable()
2084 trace_regulator_enable_complete(rdev_get_name(rdev)); in _regulator_do_enable()
2090 static int _regulator_enable(struct regulator_dev *rdev) in _regulator_enable() argument
2094 lockdep_assert_held_once(&rdev->mutex); in _regulator_enable()
2097 if (rdev->constraints && in _regulator_enable()
2098 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) in _regulator_enable()
2099 drms_uA_update(rdev); in _regulator_enable()
2101 if (rdev->use_count == 0) { in _regulator_enable()
2103 ret = _regulator_is_enabled(rdev); in _regulator_enable()
2105 if (!_regulator_can_change_status(rdev)) in _regulator_enable()
2108 ret = _regulator_do_enable(rdev); in _regulator_enable()
2113 rdev_err(rdev, "is_enabled() failed: %d\n", ret); in _regulator_enable()
2119 rdev->use_count++; in _regulator_enable()
2137 struct regulator_dev *rdev = regulator->rdev; in regulator_enable() local
2143 if (rdev->supply) { in regulator_enable()
2144 ret = regulator_enable(rdev->supply); in regulator_enable()
2149 mutex_lock(&rdev->mutex); in regulator_enable()
2150 ret = _regulator_enable(rdev); in regulator_enable()
2151 mutex_unlock(&rdev->mutex); in regulator_enable()
2153 if (ret != 0 && rdev->supply) in regulator_enable()
2154 regulator_disable(rdev->supply); in regulator_enable()
2160 static int _regulator_do_disable(struct regulator_dev *rdev) in _regulator_do_disable() argument
2164 trace_regulator_disable(rdev_get_name(rdev)); in _regulator_do_disable()
2166 if (rdev->ena_pin) { in _regulator_do_disable()
2167 if (rdev->ena_gpio_state) { in _regulator_do_disable()
2168 ret = regulator_ena_gpio_ctrl(rdev, false); in _regulator_do_disable()
2171 rdev->ena_gpio_state = 0; in _regulator_do_disable()
2174 } else if (rdev->desc->ops->disable) { in _regulator_do_disable()
2175 ret = rdev->desc->ops->disable(rdev); in _regulator_do_disable()
2183 if (rdev->desc->off_on_delay) in _regulator_do_disable()
2184 rdev->last_off_jiffy = jiffies; in _regulator_do_disable()
2186 trace_regulator_disable_complete(rdev_get_name(rdev)); in _regulator_do_disable()
2192 static int _regulator_disable(struct regulator_dev *rdev) in _regulator_disable() argument
2196 lockdep_assert_held_once(&rdev->mutex); in _regulator_disable()
2198 if (WARN(rdev->use_count <= 0, in _regulator_disable()
2199 "unbalanced disables for %s\n", rdev_get_name(rdev))) in _regulator_disable()
2203 if (rdev->use_count == 1 && in _regulator_disable()
2204 (rdev->constraints && !rdev->constraints->always_on)) { in _regulator_disable()
2207 if (_regulator_can_change_status(rdev)) { in _regulator_disable()
2208 ret = _notifier_call_chain(rdev, in _regulator_disable()
2214 ret = _regulator_do_disable(rdev); in _regulator_disable()
2216 rdev_err(rdev, "failed to disable\n"); in _regulator_disable()
2217 _notifier_call_chain(rdev, in _regulator_disable()
2222 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, in _regulator_disable()
2226 rdev->use_count = 0; in _regulator_disable()
2227 } else if (rdev->use_count > 1) { in _regulator_disable()
2229 if (rdev->constraints && in _regulator_disable()
2230 (rdev->constraints->valid_ops_mask & in _regulator_disable()
2232 drms_uA_update(rdev); in _regulator_disable()
2234 rdev->use_count--; in _regulator_disable()
2254 struct regulator_dev *rdev = regulator->rdev; in regulator_disable() local
2260 mutex_lock(&rdev->mutex); in regulator_disable()
2261 ret = _regulator_disable(rdev); in regulator_disable()
2262 mutex_unlock(&rdev->mutex); in regulator_disable()
2264 if (ret == 0 && rdev->supply) in regulator_disable()
2265 regulator_disable(rdev->supply); in regulator_disable()
2272 static int _regulator_force_disable(struct regulator_dev *rdev) in _regulator_force_disable() argument
2276 lockdep_assert_held_once(&rdev->mutex); in _regulator_force_disable()
2278 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2283 ret = _regulator_do_disable(rdev); in _regulator_force_disable()
2285 rdev_err(rdev, "failed to force disable\n"); in _regulator_force_disable()
2286 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2291 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2308 struct regulator_dev *rdev = regulator->rdev; in regulator_force_disable() local
2311 mutex_lock(&rdev->mutex); in regulator_force_disable()
2313 ret = _regulator_force_disable(regulator->rdev); in regulator_force_disable()
2314 mutex_unlock(&rdev->mutex); in regulator_force_disable()
2316 if (rdev->supply) in regulator_force_disable()
2317 while (rdev->open_count--) in regulator_force_disable()
2318 regulator_disable(rdev->supply); in regulator_force_disable()
2326 struct regulator_dev *rdev = container_of(work, struct regulator_dev, in regulator_disable_work() local
2330 mutex_lock(&rdev->mutex); in regulator_disable_work()
2332 BUG_ON(!rdev->deferred_disables); in regulator_disable_work()
2334 count = rdev->deferred_disables; in regulator_disable_work()
2335 rdev->deferred_disables = 0; in regulator_disable_work()
2338 ret = _regulator_disable(rdev); in regulator_disable_work()
2340 rdev_err(rdev, "Deferred disable failed: %d\n", ret); in regulator_disable_work()
2343 mutex_unlock(&rdev->mutex); in regulator_disable_work()
2345 if (rdev->supply) { in regulator_disable_work()
2347 ret = regulator_disable(rdev->supply); in regulator_disable_work()
2349 rdev_err(rdev, in regulator_disable_work()
2370 struct regulator_dev *rdev = regulator->rdev; in regulator_disable_deferred() local
2379 mutex_lock(&rdev->mutex); in regulator_disable_deferred()
2380 rdev->deferred_disables++; in regulator_disable_deferred()
2381 mutex_unlock(&rdev->mutex); in regulator_disable_deferred()
2384 &rdev->disable_work, in regulator_disable_deferred()
2393 static int _regulator_is_enabled(struct regulator_dev *rdev) in _regulator_is_enabled() argument
2396 if (rdev->ena_pin) in _regulator_is_enabled()
2397 return rdev->ena_gpio_state; in _regulator_is_enabled()
2400 if (!rdev->desc->ops->is_enabled) in _regulator_is_enabled()
2403 return rdev->desc->ops->is_enabled(rdev); in _regulator_is_enabled()
2409 struct regulator_dev *rdev = regulator->rdev; in _regulator_list_voltage() local
2410 const struct regulator_ops *ops = rdev->desc->ops; in _regulator_list_voltage()
2413 if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector) in _regulator_list_voltage()
2414 return rdev->desc->fixed_uV; in _regulator_list_voltage()
2417 if (selector >= rdev->desc->n_voltages) in _regulator_list_voltage()
2420 mutex_lock(&rdev->mutex); in _regulator_list_voltage()
2421 ret = ops->list_voltage(rdev, selector); in _regulator_list_voltage()
2423 mutex_unlock(&rdev->mutex); in _regulator_list_voltage()
2424 } else if (rdev->supply) { in _regulator_list_voltage()
2425 ret = _regulator_list_voltage(rdev->supply, selector, lock); in _regulator_list_voltage()
2431 if (ret < rdev->constraints->min_uV) in _regulator_list_voltage()
2433 else if (ret > rdev->constraints->max_uV) in _regulator_list_voltage()
2459 mutex_lock(&regulator->rdev->mutex); in regulator_is_enabled()
2460 ret = _regulator_is_enabled(regulator->rdev); in regulator_is_enabled()
2461 mutex_unlock(&regulator->rdev->mutex); in regulator_is_enabled()
2478 struct regulator_dev *rdev = regulator->rdev; in regulator_can_change_voltage() local
2480 if (rdev->constraints && in regulator_can_change_voltage()
2481 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { in regulator_can_change_voltage()
2482 if (rdev->desc->n_voltages - rdev->desc->linear_min_sel > 1) in regulator_can_change_voltage()
2485 if (rdev->desc->continuous_voltage_range && in regulator_can_change_voltage()
2486 rdev->constraints->min_uV && rdev->constraints->max_uV && in regulator_can_change_voltage()
2487 rdev->constraints->min_uV != rdev->constraints->max_uV) in regulator_can_change_voltage()
2505 struct regulator_dev *rdev = regulator->rdev; in regulator_count_voltages() local
2507 if (rdev->desc->n_voltages) in regulator_count_voltages()
2508 return rdev->desc->n_voltages; in regulator_count_voltages()
2510 if (!rdev->supply) in regulator_count_voltages()
2513 return regulator_count_voltages(rdev->supply); in regulator_count_voltages()
2542 struct regmap *map = regulator->rdev->regmap; in regulator_get_regmap()
2565 struct regulator_dev *rdev = regulator->rdev; in regulator_get_hardware_vsel_register() local
2566 const struct regulator_ops *ops = rdev->desc->ops; in regulator_get_hardware_vsel_register()
2571 *vsel_reg = rdev->desc->vsel_reg; in regulator_get_hardware_vsel_register()
2572 *vsel_mask = rdev->desc->vsel_mask; in regulator_get_hardware_vsel_register()
2592 struct regulator_dev *rdev = regulator->rdev; in regulator_list_hardware_vsel() local
2593 const struct regulator_ops *ops = rdev->desc->ops; in regulator_list_hardware_vsel()
2595 if (selector >= rdev->desc->n_voltages) in regulator_list_hardware_vsel()
2613 struct regulator_dev *rdev = regulator->rdev; in regulator_get_linear_step() local
2615 return rdev->desc->uV_step; in regulator_get_linear_step()
2631 struct regulator_dev *rdev = regulator->rdev; in regulator_is_supported_voltage() local
2635 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { in regulator_is_supported_voltage()
2644 if (rdev->desc->continuous_voltage_range) in regulator_is_supported_voltage()
2645 return min_uV >= rdev->constraints->min_uV && in regulator_is_supported_voltage()
2646 max_uV <= rdev->constraints->max_uV; in regulator_is_supported_voltage()
2664 static int regulator_map_voltage(struct regulator_dev *rdev, int min_uV, in regulator_map_voltage() argument
2667 const struct regulator_desc *desc = rdev->desc; in regulator_map_voltage()
2670 return desc->ops->map_voltage(rdev, min_uV, max_uV); in regulator_map_voltage()
2673 return regulator_map_voltage_linear(rdev, min_uV, max_uV); in regulator_map_voltage()
2676 return regulator_map_voltage_linear_range(rdev, min_uV, max_uV); in regulator_map_voltage()
2678 return regulator_map_voltage_iterate(rdev, min_uV, max_uV); in regulator_map_voltage()
2681 static int _regulator_call_set_voltage(struct regulator_dev *rdev, in _regulator_call_set_voltage() argument
2688 data.old_uV = _regulator_get_voltage(rdev); in _regulator_call_set_voltage()
2691 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, in _regulator_call_set_voltage()
2696 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, selector); in _regulator_call_set_voltage()
2700 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, in _regulator_call_set_voltage()
2706 static int _regulator_call_set_voltage_sel(struct regulator_dev *rdev, in _regulator_call_set_voltage_sel() argument
2712 data.old_uV = _regulator_get_voltage(rdev); in _regulator_call_set_voltage_sel()
2715 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, in _regulator_call_set_voltage_sel()
2720 ret = rdev->desc->ops->set_voltage_sel(rdev, selector); in _regulator_call_set_voltage_sel()
2724 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, in _regulator_call_set_voltage_sel()
2730 static int _regulator_do_set_voltage(struct regulator_dev *rdev, in _regulator_do_set_voltage() argument
2739 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV); in _regulator_do_set_voltage()
2741 min_uV += rdev->constraints->uV_offset; in _regulator_do_set_voltage()
2742 max_uV += rdev->constraints->uV_offset; in _regulator_do_set_voltage()
2748 if (_regulator_is_enabled(rdev) && in _regulator_do_set_voltage()
2749 rdev->desc->ops->set_voltage_time_sel && in _regulator_do_set_voltage()
2750 rdev->desc->ops->get_voltage_sel) { in _regulator_do_set_voltage()
2751 old_selector = rdev->desc->ops->get_voltage_sel(rdev); in _regulator_do_set_voltage()
2756 if (rdev->desc->ops->set_voltage) { in _regulator_do_set_voltage()
2757 ret = _regulator_call_set_voltage(rdev, min_uV, max_uV, in _regulator_do_set_voltage()
2761 if (rdev->desc->ops->list_voltage) in _regulator_do_set_voltage()
2762 best_val = rdev->desc->ops->list_voltage(rdev, in _regulator_do_set_voltage()
2765 best_val = _regulator_get_voltage(rdev); in _regulator_do_set_voltage()
2768 } else if (rdev->desc->ops->set_voltage_sel) { in _regulator_do_set_voltage()
2769 ret = regulator_map_voltage(rdev, min_uV, max_uV); in _regulator_do_set_voltage()
2771 best_val = rdev->desc->ops->list_voltage(rdev, ret); in _regulator_do_set_voltage()
2778 rdev, best_val, selector); in _regulator_do_set_voltage()
2788 if (ret == 0 && !rdev->constraints->ramp_disable && old_selector >= 0 in _regulator_do_set_voltage()
2791 delay = rdev->desc->ops->set_voltage_time_sel(rdev, in _regulator_do_set_voltage()
2794 rdev_warn(rdev, "set_voltage_time_sel() failed: %d\n", in _regulator_do_set_voltage()
2811 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, in _regulator_do_set_voltage()
2815 trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); in _regulator_do_set_voltage()
2823 struct regulator_dev *rdev = regulator->rdev; in regulator_set_voltage_unlocked() local
2841 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { in regulator_set_voltage_unlocked()
2842 current_uV = _regulator_get_voltage(rdev); in regulator_set_voltage_unlocked()
2851 if (!rdev->desc->ops->set_voltage && in regulator_set_voltage_unlocked()
2852 !rdev->desc->ops->set_voltage_sel) { in regulator_set_voltage_unlocked()
2858 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); in regulator_set_voltage_unlocked()
2868 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); in regulator_set_voltage_unlocked()
2872 if (rdev->supply && (rdev->desc->min_dropout_uV || in regulator_set_voltage_unlocked()
2873 !rdev->desc->ops->get_voltage)) { in regulator_set_voltage_unlocked()
2877 selector = regulator_map_voltage(rdev, min_uV, max_uV); in regulator_set_voltage_unlocked()
2889 best_supply_uV += rdev->desc->min_dropout_uV; in regulator_set_voltage_unlocked()
2891 current_supply_uV = _regulator_get_voltage(rdev->supply->rdev); in regulator_set_voltage_unlocked()
2901 ret = regulator_set_voltage_unlocked(rdev->supply, in regulator_set_voltage_unlocked()
2904 dev_err(&rdev->dev, "Failed to increase supply voltage: %d\n", in regulator_set_voltage_unlocked()
2910 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); in regulator_set_voltage_unlocked()
2915 ret = regulator_set_voltage_unlocked(rdev->supply, in regulator_set_voltage_unlocked()
2918 dev_warn(&rdev->dev, "Failed to decrease supply voltage: %d\n", in regulator_set_voltage_unlocked()
2955 regulator_lock_supply(regulator->rdev); in regulator_set_voltage()
2959 regulator_unlock_supply(regulator->rdev); in regulator_set_voltage()
2978 struct regulator_dev *rdev = regulator->rdev; in regulator_set_voltage_time() local
2979 const struct regulator_ops *ops = rdev->desc->ops; in regulator_set_voltage_time()
2987 || !rdev->desc->n_voltages) in regulator_set_voltage_time()
2990 for (i = 0; i < rdev->desc->n_voltages; i++) { in regulator_set_voltage_time()
3006 return ops->set_voltage_time_sel(rdev, old_sel, new_sel); in regulator_set_voltage_time()
3022 int regulator_set_voltage_time_sel(struct regulator_dev *rdev, in regulator_set_voltage_time_sel() argument
3029 if (rdev->constraints->ramp_delay) in regulator_set_voltage_time_sel()
3030 ramp_delay = rdev->constraints->ramp_delay; in regulator_set_voltage_time_sel()
3031 else if (rdev->desc->ramp_delay) in regulator_set_voltage_time_sel()
3032 ramp_delay = rdev->desc->ramp_delay; in regulator_set_voltage_time_sel()
3035 rdev_warn(rdev, "ramp_delay not set\n"); in regulator_set_voltage_time_sel()
3040 if (!rdev->desc->ops->list_voltage) in regulator_set_voltage_time_sel()
3043 old_volt = rdev->desc->ops->list_voltage(rdev, old_selector); in regulator_set_voltage_time_sel()
3044 new_volt = rdev->desc->ops->list_voltage(rdev, new_selector); in regulator_set_voltage_time_sel()
3060 struct regulator_dev *rdev = regulator->rdev; in regulator_sync_voltage() local
3063 mutex_lock(&rdev->mutex); in regulator_sync_voltage()
3065 if (!rdev->desc->ops->set_voltage && in regulator_sync_voltage()
3066 !rdev->desc->ops->set_voltage_sel) { in regulator_sync_voltage()
3081 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); in regulator_sync_voltage()
3085 ret = regulator_check_consumers(rdev, &min_uV, &max_uV); in regulator_sync_voltage()
3089 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); in regulator_sync_voltage()
3092 mutex_unlock(&rdev->mutex); in regulator_sync_voltage()
3097 static int _regulator_get_voltage(struct regulator_dev *rdev) in _regulator_get_voltage() argument
3101 if (rdev->desc->ops->get_voltage_sel) { in _regulator_get_voltage()
3102 sel = rdev->desc->ops->get_voltage_sel(rdev); in _regulator_get_voltage()
3105 ret = rdev->desc->ops->list_voltage(rdev, sel); in _regulator_get_voltage()
3106 } else if (rdev->desc->ops->get_voltage) { in _regulator_get_voltage()
3107 ret = rdev->desc->ops->get_voltage(rdev); in _regulator_get_voltage()
3108 } else if (rdev->desc->ops->list_voltage) { in _regulator_get_voltage()
3109 ret = rdev->desc->ops->list_voltage(rdev, 0); in _regulator_get_voltage()
3110 } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { in _regulator_get_voltage()
3111 ret = rdev->desc->fixed_uV; in _regulator_get_voltage()
3112 } else if (rdev->supply) { in _regulator_get_voltage()
3113 ret = _regulator_get_voltage(rdev->supply->rdev); in _regulator_get_voltage()
3120 return ret - rdev->constraints->uV_offset; in _regulator_get_voltage()
3136 regulator_lock_supply(regulator->rdev); in regulator_get_voltage()
3138 ret = _regulator_get_voltage(regulator->rdev); in regulator_get_voltage()
3140 regulator_unlock_supply(regulator->rdev); in regulator_get_voltage()
3165 struct regulator_dev *rdev = regulator->rdev; in regulator_set_current_limit() local
3168 mutex_lock(&rdev->mutex); in regulator_set_current_limit()
3171 if (!rdev->desc->ops->set_current_limit) { in regulator_set_current_limit()
3177 ret = regulator_check_current_limit(rdev, &min_uA, &max_uA); in regulator_set_current_limit()
3181 ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA); in regulator_set_current_limit()
3183 mutex_unlock(&rdev->mutex); in regulator_set_current_limit()
3188 static int _regulator_get_current_limit(struct regulator_dev *rdev) in _regulator_get_current_limit() argument
3192 mutex_lock(&rdev->mutex); in _regulator_get_current_limit()
3195 if (!rdev->desc->ops->get_current_limit) { in _regulator_get_current_limit()
3200 ret = rdev->desc->ops->get_current_limit(rdev); in _regulator_get_current_limit()
3202 mutex_unlock(&rdev->mutex); in _regulator_get_current_limit()
3217 return _regulator_get_current_limit(regulator->rdev); in regulator_get_current_limit()
3234 struct regulator_dev *rdev = regulator->rdev; in regulator_set_mode() local
3238 mutex_lock(&rdev->mutex); in regulator_set_mode()
3241 if (!rdev->desc->ops->set_mode) { in regulator_set_mode()
3247 if (rdev->desc->ops->get_mode) { in regulator_set_mode()
3248 regulator_curr_mode = rdev->desc->ops->get_mode(rdev); in regulator_set_mode()
3256 ret = regulator_mode_constrain(rdev, &mode); in regulator_set_mode()
3260 ret = rdev->desc->ops->set_mode(rdev, mode); in regulator_set_mode()
3262 mutex_unlock(&rdev->mutex); in regulator_set_mode()
3267 static unsigned int _regulator_get_mode(struct regulator_dev *rdev) in _regulator_get_mode() argument
3271 mutex_lock(&rdev->mutex); in _regulator_get_mode()
3274 if (!rdev->desc->ops->get_mode) { in _regulator_get_mode()
3279 ret = rdev->desc->ops->get_mode(rdev); in _regulator_get_mode()
3281 mutex_unlock(&rdev->mutex); in _regulator_get_mode()
3293 return _regulator_get_mode(regulator->rdev); in regulator_get_mode()
3325 struct regulator_dev *rdev = regulator->rdev; in regulator_set_load() local
3328 mutex_lock(&rdev->mutex); in regulator_set_load()
3330 ret = drms_uA_update(rdev); in regulator_set_load()
3331 mutex_unlock(&rdev->mutex); in regulator_set_load()
3350 struct regulator_dev *rdev = regulator->rdev; in regulator_allow_bypass() local
3353 if (!rdev->desc->ops->set_bypass) in regulator_allow_bypass()
3356 if (rdev->constraints && in regulator_allow_bypass()
3357 !(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_BYPASS)) in regulator_allow_bypass()
3360 mutex_lock(&rdev->mutex); in regulator_allow_bypass()
3363 rdev->bypass_count++; in regulator_allow_bypass()
3365 if (rdev->bypass_count == rdev->open_count) { in regulator_allow_bypass()
3366 ret = rdev->desc->ops->set_bypass(rdev, enable); in regulator_allow_bypass()
3368 rdev->bypass_count--; in regulator_allow_bypass()
3372 rdev->bypass_count--; in regulator_allow_bypass()
3374 if (rdev->bypass_count != rdev->open_count) { in regulator_allow_bypass()
3375 ret = rdev->desc->ops->set_bypass(rdev, enable); in regulator_allow_bypass()
3377 rdev->bypass_count++; in regulator_allow_bypass()
3384 mutex_unlock(&rdev->mutex); in regulator_allow_bypass()
3400 return blocking_notifier_chain_register(&regulator->rdev->notifier, in regulator_register_notifier()
3415 return blocking_notifier_chain_unregister(&regulator->rdev->notifier, in regulator_unregister_notifier()
3423 static int _notifier_call_chain(struct regulator_dev *rdev, in _notifier_call_chain() argument
3427 return blocking_notifier_call_chain(&rdev->notifier, event, data); in _notifier_call_chain()
3641 int regulator_notifier_call_chain(struct regulator_dev *rdev, in regulator_notifier_call_chain() argument
3644 lockdep_assert_held_once(&rdev->mutex); in regulator_notifier_call_chain()
3646 _notifier_call_chain(rdev, event, data); in regulator_notifier_call_chain()
3711 struct regulator_dev *rdev = container_of(dev, struct regulator_dev, dev); in regulator_attr_is_visible() local
3712 const struct regulator_ops *ops = rdev->desc->ops; in regulator_attr_is_visible()
3723 if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) || in regulator_attr_is_visible()
3724 (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) || in regulator_attr_is_visible()
3725 (ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) || in regulator_attr_is_visible()
3726 (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1)) in regulator_attr_is_visible()
3738 return (rdev->ena_pin || ops->is_enabled) ? mode : 0; in regulator_attr_is_visible()
3748 return rdev->desc->type == REGULATOR_CURRENT ? mode : 0; in regulator_attr_is_visible()
3789 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_dev_release() local
3791 kfree(rdev->constraints); in regulator_dev_release()
3792 of_node_put(rdev->dev.of_node); in regulator_dev_release()
3793 kfree(rdev); in regulator_dev_release()
3802 static void rdev_init_debugfs(struct regulator_dev *rdev) in rdev_init_debugfs() argument
3804 struct device *parent = rdev->dev.parent; in rdev_init_debugfs()
3805 const char *rname = rdev_get_name(rdev); in rdev_init_debugfs()
3809 if (parent && rname == rdev->desc->name) { in rdev_init_debugfs()
3815 rdev->debugfs = debugfs_create_dir(rname, debugfs_root); in rdev_init_debugfs()
3816 if (!rdev->debugfs) { in rdev_init_debugfs()
3817 rdev_warn(rdev, "Failed to create debugfs directory\n"); in rdev_init_debugfs()
3821 debugfs_create_u32("use_count", 0444, rdev->debugfs, in rdev_init_debugfs()
3822 &rdev->use_count); in rdev_init_debugfs()
3823 debugfs_create_u32("open_count", 0444, rdev->debugfs, in rdev_init_debugfs()
3824 &rdev->open_count); in rdev_init_debugfs()
3825 debugfs_create_u32("bypass_count", 0444, rdev->debugfs, in rdev_init_debugfs()
3826 &rdev->bypass_count); in rdev_init_debugfs()
3846 struct regulator_dev *rdev; in regulator_register() local
3879 rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL); in regulator_register()
3880 if (rdev == NULL) in regulator_register()
3889 kfree(rdev); in regulator_register()
3894 &rdev->dev.of_node); in regulator_register()
3897 rdev->dev.of_node = of_node_get(config->of_node); in regulator_register()
3902 mutex_init(&rdev->mutex); in regulator_register()
3903 rdev->reg_data = config->driver_data; in regulator_register()
3904 rdev->owner = regulator_desc->owner; in regulator_register()
3905 rdev->desc = regulator_desc; in regulator_register()
3907 rdev->regmap = config->regmap; in regulator_register()
3909 rdev->regmap = dev_get_regmap(dev, NULL); in regulator_register()
3911 rdev->regmap = dev_get_regmap(dev->parent, NULL); in regulator_register()
3912 INIT_LIST_HEAD(&rdev->consumer_list); in regulator_register()
3913 INIT_LIST_HEAD(&rdev->list); in regulator_register()
3914 BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier); in regulator_register()
3915 INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work); in regulator_register()
3919 ret = init_data->regulator_init(rdev->reg_data); in regulator_register()
3925 rdev->dev.class = &regulator_class; in regulator_register()
3926 rdev->dev.parent = dev; in regulator_register()
3927 dev_set_name(&rdev->dev, "regulator.%lu", in regulator_register()
3929 ret = device_register(&rdev->dev); in regulator_register()
3931 put_device(&rdev->dev); in regulator_register()
3935 dev_set_drvdata(&rdev->dev, rdev); in regulator_register()
3939 ret = regulator_ena_gpio_request(rdev, config); in regulator_register()
3941 rdev_err(rdev, "Failed to request enable GPIO%d: %d\n", in regulator_register()
3951 ret = set_machine_constraints(rdev, constraints); in regulator_register()
3956 rdev->supply_name = init_data->supply_regulator; in regulator_register()
3958 rdev->supply_name = regulator_desc->supply_name; in regulator_register()
3963 ret = set_consumer_device_supply(rdev, in regulator_register()
3974 rdev_init_debugfs(rdev); in regulator_register()
3978 return rdev; in regulator_register()
3981 unset_regulator_supplies(rdev); in regulator_register()
3984 regulator_ena_gpio_free(rdev); in regulator_register()
3985 kfree(rdev->constraints); in regulator_register()
3987 device_unregister(&rdev->dev); in regulator_register()
3989 rdev = ERR_PTR(ret); in regulator_register()
3993 kfree(rdev); in regulator_register()
3994 rdev = ERR_PTR(ret); in regulator_register()
4005 void regulator_unregister(struct regulator_dev *rdev) in regulator_unregister() argument
4007 if (rdev == NULL) in regulator_unregister()
4010 if (rdev->supply) { in regulator_unregister()
4011 while (rdev->use_count--) in regulator_unregister()
4012 regulator_disable(rdev->supply); in regulator_unregister()
4013 regulator_put(rdev->supply); in regulator_unregister()
4016 debugfs_remove_recursive(rdev->debugfs); in regulator_unregister()
4017 flush_work(&rdev->disable_work.work); in regulator_unregister()
4018 WARN_ON(rdev->open_count); in regulator_unregister()
4019 unset_regulator_supplies(rdev); in regulator_unregister()
4020 list_del(&rdev->list); in regulator_unregister()
4022 regulator_ena_gpio_free(rdev); in regulator_unregister()
4023 device_unregister(&rdev->dev); in regulator_unregister()
4029 struct regulator_dev *rdev = dev_to_rdev(dev); in _regulator_suspend_prepare() local
4033 mutex_lock(&rdev->mutex); in _regulator_suspend_prepare()
4034 ret = suspend_prepare(rdev, *state); in _regulator_suspend_prepare()
4035 mutex_unlock(&rdev->mutex); in _regulator_suspend_prepare()
4060 struct regulator_dev *rdev = dev_to_rdev(dev); in _regulator_suspend_finish() local
4063 mutex_lock(&rdev->mutex); in _regulator_suspend_finish()
4064 if (rdev->use_count > 0 || rdev->constraints->always_on) { in _regulator_suspend_finish()
4065 if (!_regulator_is_enabled(rdev)) { in _regulator_suspend_finish()
4066 ret = _regulator_do_enable(rdev); in _regulator_suspend_finish()
4075 if (!_regulator_is_enabled(rdev)) in _regulator_suspend_finish()
4078 ret = _regulator_do_disable(rdev); in _regulator_suspend_finish()
4083 mutex_unlock(&rdev->mutex); in _regulator_suspend_finish()
4126 void *rdev_get_drvdata(struct regulator_dev *rdev) in rdev_get_drvdata() argument
4128 return rdev->reg_data; in rdev_get_drvdata()
4141 return regulator->rdev->reg_data; in regulator_get_drvdata()
4152 regulator->rdev->reg_data = data; in regulator_set_drvdata()
4160 int rdev_get_id(struct regulator_dev *rdev) in rdev_get_id() argument
4162 return rdev->desc->id; in rdev_get_id()
4166 struct device *rdev_get_dev(struct regulator_dev *rdev) in rdev_get_dev() argument
4168 return &rdev->dev; in rdev_get_dev()
4225 struct regulator_dev *rdev,
4230 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_show_children() local
4233 if (rdev->supply && rdev->supply->rdev == summary_data->parent) in regulator_summary_show_children()
4234 regulator_summary_show_subtree(summary_data->s, rdev, in regulator_summary_show_children()
4241 struct regulator_dev *rdev, in regulator_summary_show_subtree() argument
4248 if (!rdev) in regulator_summary_show_subtree()
4253 30 - level * 3, rdev_get_name(rdev), in regulator_summary_show_subtree()
4254 rdev->use_count, rdev->open_count, rdev->bypass_count); in regulator_summary_show_subtree()
4256 seq_printf(s, "%5dmV ", _regulator_get_voltage(rdev) / 1000); in regulator_summary_show_subtree()
4257 seq_printf(s, "%5dmA ", _regulator_get_current_limit(rdev) / 1000); in regulator_summary_show_subtree()
4259 c = rdev->constraints; in regulator_summary_show_subtree()
4261 switch (rdev->desc->type) { in regulator_summary_show_subtree()
4275 list_for_each_entry(consumer, &rdev->consumer_list, list) { in regulator_summary_show_subtree()
4283 switch (rdev->desc->type) { in regulator_summary_show_subtree()
4298 summary_data.parent = rdev; in regulator_summary_show_subtree()
4306 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_show_roots() local
4309 if (!rdev->supply) in regulator_summary_show_roots()
4310 regulator_summary_show_subtree(s, rdev, 0); in regulator_summary_show_roots()
4367 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_late_cleanup() local
4368 const struct regulator_ops *ops = rdev->desc->ops; in regulator_late_cleanup()
4369 struct regulation_constraints *c = rdev->constraints; in regulator_late_cleanup()
4378 mutex_lock(&rdev->mutex); in regulator_late_cleanup()
4380 if (rdev->use_count) in regulator_late_cleanup()
4385 enabled = ops->is_enabled(rdev); in regulator_late_cleanup()
4395 rdev_info(rdev, "disabling\n"); in regulator_late_cleanup()
4396 ret = _regulator_do_disable(rdev); in regulator_late_cleanup()
4398 rdev_err(rdev, "couldn't disable: %d\n", ret); in regulator_late_cleanup()
4405 rdev_warn(rdev, "incomplete constraints, leaving on\n"); in regulator_late_cleanup()
4409 mutex_unlock(&rdev->mutex); in regulator_late_cleanup()