Lines Matching refs:rdev

36 #define rdev_crit(rdev, fmt, ...)					\  argument
37 pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
38 #define rdev_err(rdev, fmt, ...) \ argument
39 pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
40 #define rdev_warn(rdev, fmt, ...) \ argument
41 pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
42 #define rdev_info(rdev, fmt, ...) \ argument
43 pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
44 #define rdev_dbg(rdev, fmt, ...) \ argument
45 pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
95 static int _regulator_is_enabled(struct regulator_dev *rdev);
97 static int _regulator_get_current_limit(struct regulator_dev *rdev);
98 static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
99 static int _notifier_call_chain(struct regulator_dev *rdev,
101 static int _regulator_do_set_voltage(struct regulator_dev *rdev,
103 static int regulator_balance_voltage(struct regulator_dev *rdev,
105 static struct regulator *create_regulator(struct regulator_dev *rdev,
111 const char *rdev_get_name(struct regulator_dev *rdev) in rdev_get_name() argument
113 if (rdev->constraints && rdev->constraints->name) in rdev_get_name()
114 return rdev->constraints->name; in rdev_get_name()
115 else if (rdev->desc->name) in rdev_get_name()
116 return rdev->desc->name; in rdev_get_name()
126 static bool regulator_ops_is_valid(struct regulator_dev *rdev, int ops) in regulator_ops_is_valid() argument
128 if (!rdev->constraints) { in regulator_ops_is_valid()
129 rdev_err(rdev, "no constraints\n"); in regulator_ops_is_valid()
133 if (rdev->constraints->valid_ops_mask & ops) in regulator_ops_is_valid()
150 static inline int regulator_lock_nested(struct regulator_dev *rdev, in regulator_lock_nested() argument
158 if (ww_ctx || !ww_mutex_trylock(&rdev->mutex)) { in regulator_lock_nested()
159 if (rdev->mutex_owner == current) in regulator_lock_nested()
160 rdev->ref_cnt++; in regulator_lock_nested()
166 ret = ww_mutex_lock(&rdev->mutex, ww_ctx); in regulator_lock_nested()
174 rdev->ref_cnt++; in regulator_lock_nested()
175 rdev->mutex_owner = current; in regulator_lock_nested()
193 static void regulator_lock(struct regulator_dev *rdev) in regulator_lock() argument
195 regulator_lock_nested(rdev, NULL); in regulator_lock()
205 static void regulator_unlock(struct regulator_dev *rdev) in regulator_unlock() argument
209 if (--rdev->ref_cnt == 0) { in regulator_unlock()
210 rdev->mutex_owner = NULL; in regulator_unlock()
211 ww_mutex_unlock(&rdev->mutex); in regulator_unlock()
214 WARN_ON_ONCE(rdev->ref_cnt < 0); in regulator_unlock()
219 static bool regulator_supply_is_couple(struct regulator_dev *rdev) in regulator_supply_is_couple() argument
224 for (i = 1; i < rdev->coupling_desc.n_coupled; i++) { in regulator_supply_is_couple()
225 c_rdev = rdev->coupling_desc.coupled_rdevs[i]; in regulator_supply_is_couple()
227 if (rdev->supply->rdev == c_rdev) in regulator_supply_is_couple()
234 static void regulator_unlock_recursive(struct regulator_dev *rdev, in regulator_unlock_recursive() argument
241 c_rdev = rdev->coupling_desc.coupled_rdevs[i - 1]; in regulator_unlock_recursive()
247 supply_rdev = c_rdev->supply->rdev; in regulator_unlock_recursive()
258 static int regulator_lock_recursive(struct regulator_dev *rdev, in regulator_lock_recursive() argument
266 for (i = 0; i < rdev->coupling_desc.n_coupled; i++) { in regulator_lock_recursive()
267 c_rdev = rdev->coupling_desc.coupled_rdevs[i]; in regulator_lock_recursive()
288 err = regulator_lock_recursive(c_rdev->supply->rdev, in regulator_lock_recursive()
302 regulator_unlock_recursive(rdev, i); in regulator_lock_recursive()
315 static void regulator_unlock_dependent(struct regulator_dev *rdev, in regulator_unlock_dependent() argument
318 regulator_unlock_recursive(rdev, rdev->coupling_desc.n_coupled); in regulator_unlock_dependent()
330 static void regulator_lock_dependent(struct regulator_dev *rdev, in regulator_lock_dependent() argument
348 err = regulator_lock_recursive(rdev, in regulator_lock_dependent()
430 int regulator_check_voltage(struct regulator_dev *rdev, in regulator_check_voltage() argument
435 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { in regulator_check_voltage()
436 rdev_err(rdev, "voltage operation not allowed\n"); in regulator_check_voltage()
440 if (*max_uV > rdev->constraints->max_uV) in regulator_check_voltage()
441 *max_uV = rdev->constraints->max_uV; in regulator_check_voltage()
442 if (*min_uV < rdev->constraints->min_uV) in regulator_check_voltage()
443 *min_uV = rdev->constraints->min_uV; in regulator_check_voltage()
446 rdev_err(rdev, "unsupportable voltage range: %d-%duV\n", in regulator_check_voltage()
463 int regulator_check_consumers(struct regulator_dev *rdev, in regulator_check_consumers() argument
470 list_for_each_entry(regulator, &rdev->consumer_list, list) { in regulator_check_consumers()
486 rdev_err(rdev, "Restricting voltage, %u-%uuV\n", in regulator_check_consumers()
495 static int regulator_check_current_limit(struct regulator_dev *rdev, in regulator_check_current_limit() argument
500 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_CURRENT)) { in regulator_check_current_limit()
501 rdev_err(rdev, "current operation not allowed\n"); in regulator_check_current_limit()
505 if (*max_uA > rdev->constraints->max_uA) in regulator_check_current_limit()
506 *max_uA = rdev->constraints->max_uA; in regulator_check_current_limit()
507 if (*min_uA < rdev->constraints->min_uA) in regulator_check_current_limit()
508 *min_uA = rdev->constraints->min_uA; in regulator_check_current_limit()
511 rdev_err(rdev, "unsupportable current range: %d-%duA\n", in regulator_check_current_limit()
520 static int regulator_mode_constrain(struct regulator_dev *rdev, in regulator_mode_constrain() argument
530 rdev_err(rdev, "invalid mode %x specified\n", *mode); in regulator_mode_constrain()
534 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_MODE)) { in regulator_mode_constrain()
535 rdev_err(rdev, "mode operation not allowed\n"); in regulator_mode_constrain()
543 if (rdev->constraints->valid_modes_mask & *mode) in regulator_mode_constrain()
552 regulator_get_suspend_state(struct regulator_dev *rdev, suspend_state_t state) in regulator_get_suspend_state() argument
554 if (rdev->constraints == NULL) in regulator_get_suspend_state()
559 return &rdev->constraints->state_standby; in regulator_get_suspend_state()
561 return &rdev->constraints->state_mem; in regulator_get_suspend_state()
563 return &rdev->constraints->state_disk; in regulator_get_suspend_state()
570 regulator_get_suspend_state_check(struct regulator_dev *rdev, suspend_state_t state) in regulator_get_suspend_state_check() argument
574 rstate = regulator_get_suspend_state(rdev, state); in regulator_get_suspend_state_check()
584 if (rdev->desc->ops->set_suspend_voltage || in regulator_get_suspend_state_check()
585 rdev->desc->ops->set_suspend_mode) in regulator_get_suspend_state_check()
586 rdev_warn(rdev, "No configuration\n"); in regulator_get_suspend_state_check()
596 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_uV_show() local
599 regulator_lock(rdev); in regulator_uV_show()
600 uV = regulator_get_voltage_rdev(rdev); in regulator_uV_show()
601 regulator_unlock(rdev); in regulator_uV_show()
612 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_uA_show() local
614 return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev)); in regulator_uA_show()
621 struct regulator_dev *rdev = dev_get_drvdata(dev); in name_show() local
623 return sprintf(buf, "%s\n", rdev_get_name(rdev)); in name_show()
650 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_opmode_show() local
652 return regulator_print_opmode(buf, _regulator_get_mode(rdev)); in regulator_opmode_show()
669 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_state_show() local
672 regulator_lock(rdev); in regulator_state_show()
673 ret = regulator_print_state(buf, _regulator_is_enabled(rdev)); in regulator_state_show()
674 regulator_unlock(rdev); in regulator_state_show()
683 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_status_show() local
687 status = rdev->desc->ops->get_status(rdev); in regulator_status_show()
730 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_min_uA_show() local
732 if (!rdev->constraints) in regulator_min_uA_show()
735 return sprintf(buf, "%d\n", rdev->constraints->min_uA); in regulator_min_uA_show()
742 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_max_uA_show() local
744 if (!rdev->constraints) in regulator_max_uA_show()
747 return sprintf(buf, "%d\n", rdev->constraints->max_uA); in regulator_max_uA_show()
754 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_min_uV_show() local
756 if (!rdev->constraints) in regulator_min_uV_show()
759 return sprintf(buf, "%d\n", rdev->constraints->min_uV); in regulator_min_uV_show()
766 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_max_uV_show() local
768 if (!rdev->constraints) in regulator_max_uV_show()
771 return sprintf(buf, "%d\n", rdev->constraints->max_uV); in regulator_max_uV_show()
778 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_total_uA_show() local
782 regulator_lock(rdev); in regulator_total_uA_show()
783 list_for_each_entry(regulator, &rdev->consumer_list, list) { in regulator_total_uA_show()
787 regulator_unlock(rdev); in regulator_total_uA_show()
795 struct regulator_dev *rdev = dev_get_drvdata(dev); in num_users_show() local
796 return sprintf(buf, "%d\n", rdev->use_count); in num_users_show()
803 struct regulator_dev *rdev = dev_get_drvdata(dev); in type_show() local
805 switch (rdev->desc->type) { in type_show()
818 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_uV_show() local
820 return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV); in regulator_suspend_mem_uV_show()
828 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_uV_show() local
830 return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV); in regulator_suspend_disk_uV_show()
838 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_uV_show() local
840 return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV); in regulator_suspend_standby_uV_show()
848 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_mode_show() local
851 rdev->constraints->state_mem.mode); in regulator_suspend_mem_mode_show()
859 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_mode_show() local
862 rdev->constraints->state_disk.mode); in regulator_suspend_disk_mode_show()
870 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_mode_show() local
873 rdev->constraints->state_standby.mode); in regulator_suspend_standby_mode_show()
881 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_mem_state_show() local
884 rdev->constraints->state_mem.enabled); in regulator_suspend_mem_state_show()
892 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_disk_state_show() local
895 rdev->constraints->state_disk.enabled); in regulator_suspend_disk_state_show()
903 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_suspend_standby_state_show() local
906 rdev->constraints->state_standby.enabled); in regulator_suspend_standby_state_show()
914 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_bypass_show() local
919 ret = rdev->desc->ops->get_bypass(rdev, &bypass); in regulator_bypass_show()
935 static int drms_uA_update(struct regulator_dev *rdev) in drms_uA_update() argument
945 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_DRMS)) { in drms_uA_update()
946 rdev_dbg(rdev, "DRMS operation not allowed\n"); in drms_uA_update()
950 if (!rdev->desc->ops->get_optimum_mode && in drms_uA_update()
951 !rdev->desc->ops->set_load) in drms_uA_update()
954 if (!rdev->desc->ops->set_mode && in drms_uA_update()
955 !rdev->desc->ops->set_load) in drms_uA_update()
959 list_for_each_entry(sibling, &rdev->consumer_list, list) { in drms_uA_update()
964 current_uA += rdev->constraints->system_load; in drms_uA_update()
966 if (rdev->desc->ops->set_load) { in drms_uA_update()
968 err = rdev->desc->ops->set_load(rdev, current_uA); in drms_uA_update()
970 rdev_err(rdev, "failed to set load %d: %pe\n", in drms_uA_update()
974 output_uV = regulator_get_voltage_rdev(rdev); in drms_uA_update()
976 rdev_err(rdev, "invalid output voltage found\n"); in drms_uA_update()
982 if (rdev->supply) in drms_uA_update()
983 input_uV = regulator_get_voltage(rdev->supply); in drms_uA_update()
985 input_uV = rdev->constraints->input_uV; in drms_uA_update()
987 rdev_err(rdev, "invalid input voltage found\n"); in drms_uA_update()
992 mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV, in drms_uA_update()
996 err = regulator_mode_constrain(rdev, &mode); in drms_uA_update()
998 rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV: %pe\n", in drms_uA_update()
1003 err = rdev->desc->ops->set_mode(rdev, mode); in drms_uA_update()
1005 rdev_err(rdev, "failed to set optimum mode %x: %pe\n", in drms_uA_update()
1012 static int __suspend_set_state(struct regulator_dev *rdev, in __suspend_set_state() argument
1018 rdev->desc->ops->set_suspend_enable) in __suspend_set_state()
1019 ret = rdev->desc->ops->set_suspend_enable(rdev); in __suspend_set_state()
1021 rdev->desc->ops->set_suspend_disable) in __suspend_set_state()
1022 ret = rdev->desc->ops->set_suspend_disable(rdev); in __suspend_set_state()
1027 rdev_err(rdev, "failed to enabled/disable: %pe\n", ERR_PTR(ret)); in __suspend_set_state()
1031 if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) { in __suspend_set_state()
1032 ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV); in __suspend_set_state()
1034 rdev_err(rdev, "failed to set voltage: %pe\n", ERR_PTR(ret)); in __suspend_set_state()
1039 if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) { in __suspend_set_state()
1040 ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode); in __suspend_set_state()
1042 rdev_err(rdev, "failed to set mode: %pe\n", ERR_PTR(ret)); in __suspend_set_state()
1050 static int suspend_set_initial_state(struct regulator_dev *rdev) in suspend_set_initial_state() argument
1054 rstate = regulator_get_suspend_state_check(rdev, in suspend_set_initial_state()
1055 rdev->constraints->initial_state); in suspend_set_initial_state()
1059 return __suspend_set_state(rdev, rstate); in suspend_set_initial_state()
1063 static void print_constraints_debug(struct regulator_dev *rdev) in print_constraints_debug() argument
1065 struct regulation_constraints *constraints = rdev->constraints; in print_constraints_debug()
1084 ret = regulator_get_voltage_rdev(rdev); in print_constraints_debug()
1107 ret = _regulator_get_current_limit(rdev); in print_constraints_debug()
1128 _regulator_is_enabled(rdev) ? "enabled" : "disabled"); in print_constraints_debug()
1130 rdev_dbg(rdev, "%s\n", buf); in print_constraints_debug()
1133 static inline void print_constraints_debug(struct regulator_dev *rdev) {} in print_constraints_debug() argument
1136 static void print_constraints(struct regulator_dev *rdev) in print_constraints() argument
1138 struct regulation_constraints *constraints = rdev->constraints; in print_constraints()
1140 print_constraints_debug(rdev); in print_constraints()
1143 !regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) in print_constraints()
1144 rdev_warn(rdev, in print_constraints()
1148 static int machine_constraints_voltage(struct regulator_dev *rdev, in machine_constraints_voltage() argument
1151 const struct regulator_ops *ops = rdev->desc->ops; in machine_constraints_voltage()
1155 if (rdev->constraints->apply_uV && in machine_constraints_voltage()
1156 rdev->constraints->min_uV && rdev->constraints->max_uV) { in machine_constraints_voltage()
1158 int current_uV = regulator_get_voltage_rdev(rdev); in machine_constraints_voltage()
1162 rdev_info(rdev, "Setting %d-%duV\n", in machine_constraints_voltage()
1163 rdev->constraints->min_uV, in machine_constraints_voltage()
1164 rdev->constraints->max_uV); in machine_constraints_voltage()
1165 _regulator_do_set_voltage(rdev, in machine_constraints_voltage()
1166 rdev->constraints->min_uV, in machine_constraints_voltage()
1167 rdev->constraints->max_uV); in machine_constraints_voltage()
1168 current_uV = regulator_get_voltage_rdev(rdev); in machine_constraints_voltage()
1172 rdev_err(rdev, in machine_constraints_voltage()
1186 if (current_uV < rdev->constraints->min_uV) { in machine_constraints_voltage()
1187 target_min = rdev->constraints->min_uV; in machine_constraints_voltage()
1188 target_max = rdev->constraints->min_uV; in machine_constraints_voltage()
1191 if (current_uV > rdev->constraints->max_uV) { in machine_constraints_voltage()
1192 target_min = rdev->constraints->max_uV; in machine_constraints_voltage()
1193 target_max = rdev->constraints->max_uV; in machine_constraints_voltage()
1197 rdev_info(rdev, "Bringing %duV into %d-%duV\n", in machine_constraints_voltage()
1200 rdev, target_min, target_max); in machine_constraints_voltage()
1202 rdev_err(rdev, in machine_constraints_voltage()
1213 if (ops->list_voltage && rdev->desc->n_voltages) { in machine_constraints_voltage()
1214 int count = rdev->desc->n_voltages; in machine_constraints_voltage()
1236 rdev_err(rdev, "invalid voltage constraints\n"); in machine_constraints_voltage()
1241 if (rdev->desc->continuous_voltage_range) in machine_constraints_voltage()
1248 value = ops->list_voltage(rdev, i); in machine_constraints_voltage()
1261 rdev_err(rdev, in machine_constraints_voltage()
1269 rdev_dbg(rdev, "override min_uV, %d -> %d\n", in machine_constraints_voltage()
1274 rdev_dbg(rdev, "override max_uV, %d -> %d\n", in machine_constraints_voltage()
1283 static int machine_constraints_current(struct regulator_dev *rdev, in machine_constraints_current() argument
1286 const struct regulator_ops *ops = rdev->desc->ops; in machine_constraints_current()
1293 rdev_err(rdev, "Invalid current constraints\n"); in machine_constraints_current()
1298 rdev_warn(rdev, "Operation of current configuration missing\n"); in machine_constraints_current()
1303 ret = ops->set_current_limit(rdev, constraints->min_uA, in machine_constraints_current()
1306 rdev_err(rdev, "Failed to set current constraint, %d\n", ret); in machine_constraints_current()
1313 static int _regulator_do_enable(struct regulator_dev *rdev);
1325 static int set_machine_constraints(struct regulator_dev *rdev) in set_machine_constraints() argument
1328 const struct regulator_ops *ops = rdev->desc->ops; in set_machine_constraints()
1330 ret = machine_constraints_voltage(rdev, rdev->constraints); in set_machine_constraints()
1334 ret = machine_constraints_current(rdev, rdev->constraints); in set_machine_constraints()
1338 if (rdev->constraints->ilim_uA && ops->set_input_current_limit) { in set_machine_constraints()
1339 ret = ops->set_input_current_limit(rdev, in set_machine_constraints()
1340 rdev->constraints->ilim_uA); in set_machine_constraints()
1342 rdev_err(rdev, "failed to set input limit: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1348 if (rdev->constraints->initial_state) { in set_machine_constraints()
1349 ret = suspend_set_initial_state(rdev); in set_machine_constraints()
1351 rdev_err(rdev, "failed to set suspend state: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1356 if (rdev->constraints->initial_mode) { in set_machine_constraints()
1358 rdev_err(rdev, "no set_mode operation\n"); in set_machine_constraints()
1362 ret = ops->set_mode(rdev, rdev->constraints->initial_mode); in set_machine_constraints()
1364 rdev_err(rdev, "failed to set initial mode: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1367 } else if (rdev->constraints->system_load) { in set_machine_constraints()
1372 drms_uA_update(rdev); in set_machine_constraints()
1375 if ((rdev->constraints->ramp_delay || rdev->constraints->ramp_disable) in set_machine_constraints()
1377 ret = ops->set_ramp_delay(rdev, rdev->constraints->ramp_delay); in set_machine_constraints()
1379 rdev_err(rdev, "failed to set ramp_delay: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1384 if (rdev->constraints->pull_down && ops->set_pull_down) { in set_machine_constraints()
1385 ret = ops->set_pull_down(rdev); in set_machine_constraints()
1387 rdev_err(rdev, "failed to set pull down: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1392 if (rdev->constraints->soft_start && ops->set_soft_start) { in set_machine_constraints()
1393 ret = ops->set_soft_start(rdev); in set_machine_constraints()
1395 rdev_err(rdev, "failed to set soft start: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1400 if (rdev->constraints->over_current_protection in set_machine_constraints()
1402 ret = ops->set_over_current_protection(rdev); in set_machine_constraints()
1404 rdev_err(rdev, "failed to set over current protection: %pe\n", in set_machine_constraints()
1410 if (rdev->constraints->active_discharge && ops->set_active_discharge) { in set_machine_constraints()
1411 bool ad_state = (rdev->constraints->active_discharge == in set_machine_constraints()
1414 ret = ops->set_active_discharge(rdev, ad_state); in set_machine_constraints()
1416 rdev_err(rdev, "failed to set active discharge: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1424 if (rdev->constraints->always_on || rdev->constraints->boot_on) { in set_machine_constraints()
1425 if (rdev->supply) { in set_machine_constraints()
1426 ret = regulator_enable(rdev->supply); in set_machine_constraints()
1428 _regulator_put(rdev->supply); in set_machine_constraints()
1429 rdev->supply = NULL; in set_machine_constraints()
1434 ret = _regulator_do_enable(rdev); in set_machine_constraints()
1436 rdev_err(rdev, "failed to enable: %pe\n", ERR_PTR(ret)); in set_machine_constraints()
1440 if (rdev->constraints->always_on) in set_machine_constraints()
1441 rdev->use_count++; in set_machine_constraints()
1444 print_constraints(rdev); in set_machine_constraints()
1457 static int set_supply(struct regulator_dev *rdev, in set_supply() argument
1462 rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev)); in set_supply()
1467 rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY"); in set_supply()
1468 if (rdev->supply == NULL) { in set_supply()
1488 static int set_consumer_device_supply(struct regulator_dev *rdev, in set_consumer_device_supply() argument
1507 new_node->regulator = rdev; in set_consumer_device_supply()
1535 dev_name(&rdev->dev), rdev_get_name(rdev)); in set_consumer_device_supply()
1551 static void unset_regulator_supplies(struct regulator_dev *rdev) in unset_regulator_supplies() argument
1556 if (rdev == node->regulator) { in unset_regulator_supplies()
1570 const struct regulation_constraints *c = regulator->rdev->constraints; in constraint_flags_read_file()
1615 static struct regulator *create_regulator(struct regulator_dev *rdev, in create_regulator() argument
1646 regulator->rdev = rdev; in create_regulator()
1649 regulator_lock(rdev); in create_regulator()
1650 list_add(&regulator->list, &rdev->consumer_list); in create_regulator()
1651 regulator_unlock(rdev); in create_regulator()
1657 err = sysfs_create_link_nowarn(&rdev->dev.kobj, &dev->kobj, in create_regulator()
1660 rdev_dbg(rdev, "could not add device link %s: %pe\n", in create_regulator()
1667 rdev->debugfs); in create_regulator()
1669 rdev_dbg(rdev, "Failed to create debugfs directory\n"); in create_regulator()
1687 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS) && in create_regulator()
1688 _regulator_is_enabled(rdev)) in create_regulator()
1694 static int _regulator_get_enable_time(struct regulator_dev *rdev) in _regulator_get_enable_time() argument
1696 if (rdev->constraints && rdev->constraints->enable_time) in _regulator_get_enable_time()
1697 return rdev->constraints->enable_time; in _regulator_get_enable_time()
1698 if (rdev->desc->ops->enable_time) in _regulator_get_enable_time()
1699 return rdev->desc->ops->enable_time(rdev); in _regulator_get_enable_time()
1700 return rdev->desc->enable_time; in _regulator_get_enable_time()
1812 static int regulator_resolve_supply(struct regulator_dev *rdev) in regulator_resolve_supply() argument
1815 struct device *dev = rdev->dev.parent; in regulator_resolve_supply()
1819 if (!rdev->supply_name) in regulator_resolve_supply()
1823 if (rdev->supply) in regulator_resolve_supply()
1826 r = regulator_dev_lookup(dev, rdev->supply_name); in regulator_resolve_supply()
1839 rdev->supply_name, rdev->desc->name); in regulator_resolve_supply()
1844 if (r == rdev) { in regulator_resolve_supply()
1846 rdev->desc->name, rdev->supply_name); in regulator_resolve_supply()
1859 if (r->dev.parent && r->dev.parent != rdev->dev.parent) { in regulator_resolve_supply()
1873 ret = set_supply(rdev, r); in regulator_resolve_supply()
1884 if (rdev->use_count) { in regulator_resolve_supply()
1885 ret = regulator_enable(rdev->supply); in regulator_resolve_supply()
1887 _regulator_put(rdev->supply); in regulator_resolve_supply()
1888 rdev->supply = NULL; in regulator_resolve_supply()
1900 struct regulator_dev *rdev; in _regulator_get() local
1915 rdev = regulator_dev_lookup(dev, id); in _regulator_get()
1916 if (IS_ERR(rdev)) { in _regulator_get()
1917 ret = PTR_ERR(rdev); in _regulator_get()
1940 rdev = dummy_regulator_rdev; in _regulator_get()
1941 get_device(&rdev->dev); in _regulator_get()
1954 if (rdev->exclusive) { in _regulator_get()
1956 put_device(&rdev->dev); in _regulator_get()
1960 if (get_type == EXCLUSIVE_GET && rdev->open_count) { in _regulator_get()
1962 put_device(&rdev->dev); in _regulator_get()
1967 ret = (rdev->coupling_desc.n_resolved != rdev->coupling_desc.n_coupled); in _regulator_get()
1972 put_device(&rdev->dev); in _regulator_get()
1976 ret = regulator_resolve_supply(rdev); in _regulator_get()
1979 put_device(&rdev->dev); in _regulator_get()
1983 if (!try_module_get(rdev->owner)) { in _regulator_get()
1985 put_device(&rdev->dev); in _regulator_get()
1989 regulator = create_regulator(rdev, dev, id); in _regulator_get()
1992 module_put(rdev->owner); in _regulator_get()
1993 put_device(&rdev->dev); in _regulator_get()
1997 rdev->open_count++; in _regulator_get()
1999 rdev->exclusive = 1; in _regulator_get()
2001 ret = _regulator_is_enabled(rdev); in _regulator_get()
2003 rdev->use_count = 1; in _regulator_get()
2005 rdev->use_count = 0; in _regulator_get()
2008 link = device_link_add(dev, &rdev->dev, DL_FLAG_STATELESS); in _regulator_get()
2089 struct regulator_dev *rdev = regulator->rdev; in destroy_regulator() local
2095 device_link_remove(regulator->dev, &rdev->dev); in destroy_regulator()
2098 sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); in destroy_regulator()
2101 regulator_lock(rdev); in destroy_regulator()
2104 rdev->open_count--; in destroy_regulator()
2105 rdev->exclusive = 0; in destroy_regulator()
2106 regulator_unlock(rdev); in destroy_regulator()
2115 struct regulator_dev *rdev; in _regulator_put() local
2125 rdev = regulator->rdev; in _regulator_put()
2129 module_put(rdev->owner); in _regulator_put()
2130 put_device(&rdev->dev); in _regulator_put()
2279 static int regulator_ena_gpio_request(struct regulator_dev *rdev, in regulator_ena_gpio_request() argument
2292 rdev_dbg(rdev, "GPIO is already used\n"); in regulator_ena_gpio_request()
2310 rdev->ena_pin = pin; in regulator_ena_gpio_request()
2318 static void regulator_ena_gpio_free(struct regulator_dev *rdev) in regulator_ena_gpio_free() argument
2322 if (!rdev->ena_pin) in regulator_ena_gpio_free()
2327 if (pin != rdev->ena_pin) in regulator_ena_gpio_free()
2339 rdev->ena_pin = NULL; in regulator_ena_gpio_free()
2350 static int regulator_ena_gpio_ctrl(struct regulator_dev *rdev, bool enable) in regulator_ena_gpio_ctrl() argument
2352 struct regulator_enable_gpio *pin = rdev->ena_pin; in regulator_ena_gpio_ctrl()
2430 static inline int _regulator_check_status_enabled(struct regulator_dev *rdev) in _regulator_check_status_enabled() argument
2432 int ret = rdev->desc->ops->get_status(rdev); in _regulator_check_status_enabled()
2435 rdev_info(rdev, "get_status returned error: %d\n", ret); in _regulator_check_status_enabled()
2449 static int _regulator_do_enable(struct regulator_dev *rdev) in _regulator_do_enable() argument
2454 ret = _regulator_get_enable_time(rdev); in _regulator_do_enable()
2458 rdev_warn(rdev, "enable_time() failed: %pe\n", ERR_PTR(ret)); in _regulator_do_enable()
2462 trace_regulator_enable(rdev_get_name(rdev)); in _regulator_do_enable()
2464 if (rdev->desc->off_on_delay) { in _regulator_do_enable()
2471 max_delay = usecs_to_jiffies(rdev->desc->off_on_delay); in _regulator_do_enable()
2472 intended = rdev->last_off_jiffy + max_delay; in _regulator_do_enable()
2489 if (rdev->ena_pin) { in _regulator_do_enable()
2490 if (!rdev->ena_gpio_state) { in _regulator_do_enable()
2491 ret = regulator_ena_gpio_ctrl(rdev, true); in _regulator_do_enable()
2494 rdev->ena_gpio_state = 1; in _regulator_do_enable()
2496 } else if (rdev->desc->ops->enable) { in _regulator_do_enable()
2497 ret = rdev->desc->ops->enable(rdev); in _regulator_do_enable()
2507 trace_regulator_enable_delay(rdev_get_name(rdev)); in _regulator_do_enable()
2515 if (rdev->desc->poll_enabled_time) { in _regulator_do_enable()
2519 _regulator_enable_delay(rdev->desc->poll_enabled_time); in _regulator_do_enable()
2521 if (rdev->desc->ops->get_status) { in _regulator_do_enable()
2522 ret = _regulator_check_status_enabled(rdev); in _regulator_do_enable()
2527 } else if (rdev->desc->ops->is_enabled(rdev)) in _regulator_do_enable()
2530 time_remaining -= rdev->desc->poll_enabled_time; in _regulator_do_enable()
2534 rdev_err(rdev, "Enabled check timed out\n"); in _regulator_do_enable()
2541 trace_regulator_enable_complete(rdev_get_name(rdev)); in _regulator_do_enable()
2568 struct regulator_dev *rdev = regulator->rdev; in _regulator_handle_consumer_enable() local
2570 lockdep_assert_held_once(&rdev->mutex.base); in _regulator_handle_consumer_enable()
2574 return drms_uA_update(rdev); in _regulator_handle_consumer_enable()
2589 struct regulator_dev *rdev = regulator->rdev; in _regulator_handle_consumer_disable() local
2591 lockdep_assert_held_once(&rdev->mutex.base); in _regulator_handle_consumer_disable()
2594 rdev_err(rdev, "Underflow of regulator enable count\n"); in _regulator_handle_consumer_disable()
2600 return drms_uA_update(rdev); in _regulator_handle_consumer_disable()
2608 struct regulator_dev *rdev = regulator->rdev; in _regulator_enable() local
2611 lockdep_assert_held_once(&rdev->mutex.base); in _regulator_enable()
2613 if (rdev->use_count == 0 && rdev->supply) { in _regulator_enable()
2614 ret = _regulator_enable(rdev->supply); in _regulator_enable()
2620 if (rdev->coupling_desc.n_coupled > 1) { in _regulator_enable()
2621 ret = regulator_balance_voltage(rdev, PM_SUSPEND_ON); in _regulator_enable()
2630 if (rdev->use_count == 0) { in _regulator_enable()
2632 ret = _regulator_is_enabled(rdev); in _regulator_enable()
2634 if (!regulator_ops_is_valid(rdev, in _regulator_enable()
2640 ret = _regulator_do_enable(rdev); in _regulator_enable()
2644 _notifier_call_chain(rdev, REGULATOR_EVENT_ENABLE, in _regulator_enable()
2647 rdev_err(rdev, "is_enabled() failed: %pe\n", ERR_PTR(ret)); in _regulator_enable()
2653 rdev->use_count++; in _regulator_enable()
2661 if (rdev->use_count == 0 && rdev->supply) in _regulator_enable()
2662 _regulator_disable(rdev->supply); in _regulator_enable()
2680 struct regulator_dev *rdev = regulator->rdev; in regulator_enable() local
2684 regulator_lock_dependent(rdev, &ww_ctx); in regulator_enable()
2686 regulator_unlock_dependent(rdev, &ww_ctx); in regulator_enable()
2692 static int _regulator_do_disable(struct regulator_dev *rdev) in _regulator_do_disable() argument
2696 trace_regulator_disable(rdev_get_name(rdev)); in _regulator_do_disable()
2698 if (rdev->ena_pin) { in _regulator_do_disable()
2699 if (rdev->ena_gpio_state) { in _regulator_do_disable()
2700 ret = regulator_ena_gpio_ctrl(rdev, false); in _regulator_do_disable()
2703 rdev->ena_gpio_state = 0; in _regulator_do_disable()
2706 } else if (rdev->desc->ops->disable) { in _regulator_do_disable()
2707 ret = rdev->desc->ops->disable(rdev); in _regulator_do_disable()
2715 if (rdev->desc->off_on_delay) in _regulator_do_disable()
2716 rdev->last_off_jiffy = jiffies; in _regulator_do_disable()
2718 trace_regulator_disable_complete(rdev_get_name(rdev)); in _regulator_do_disable()
2726 struct regulator_dev *rdev = regulator->rdev; in _regulator_disable() local
2729 lockdep_assert_held_once(&rdev->mutex.base); in _regulator_disable()
2731 if (WARN(rdev->use_count <= 0, in _regulator_disable()
2732 "unbalanced disables for %s\n", rdev_get_name(rdev))) in _regulator_disable()
2736 if (rdev->use_count == 1 && in _regulator_disable()
2737 (rdev->constraints && !rdev->constraints->always_on)) { in _regulator_disable()
2740 if (regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS)) { in _regulator_disable()
2741 ret = _notifier_call_chain(rdev, in _regulator_disable()
2747 ret = _regulator_do_disable(rdev); in _regulator_disable()
2749 rdev_err(rdev, "failed to disable: %pe\n", ERR_PTR(ret)); in _regulator_disable()
2750 _notifier_call_chain(rdev, in _regulator_disable()
2755 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, in _regulator_disable()
2759 rdev->use_count = 0; in _regulator_disable()
2760 } else if (rdev->use_count > 1) { in _regulator_disable()
2761 rdev->use_count--; in _regulator_disable()
2767 if (ret == 0 && rdev->coupling_desc.n_coupled > 1) in _regulator_disable()
2768 ret = regulator_balance_voltage(rdev, PM_SUSPEND_ON); in _regulator_disable()
2770 if (ret == 0 && rdev->use_count == 0 && rdev->supply) in _regulator_disable()
2771 ret = _regulator_disable(rdev->supply); in _regulator_disable()
2790 struct regulator_dev *rdev = regulator->rdev; in regulator_disable() local
2794 regulator_lock_dependent(rdev, &ww_ctx); in regulator_disable()
2796 regulator_unlock_dependent(rdev, &ww_ctx); in regulator_disable()
2803 static int _regulator_force_disable(struct regulator_dev *rdev) in _regulator_force_disable() argument
2807 lockdep_assert_held_once(&rdev->mutex.base); in _regulator_force_disable()
2809 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2814 ret = _regulator_do_disable(rdev); in _regulator_force_disable()
2816 rdev_err(rdev, "failed to force disable: %pe\n", ERR_PTR(ret)); in _regulator_force_disable()
2817 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2822 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | in _regulator_force_disable()
2839 struct regulator_dev *rdev = regulator->rdev; in regulator_force_disable() local
2843 regulator_lock_dependent(rdev, &ww_ctx); in regulator_force_disable()
2845 ret = _regulator_force_disable(regulator->rdev); in regulator_force_disable()
2847 if (rdev->coupling_desc.n_coupled > 1) in regulator_force_disable()
2848 regulator_balance_voltage(rdev, PM_SUSPEND_ON); in regulator_force_disable()
2852 ret = drms_uA_update(rdev); in regulator_force_disable()
2855 if (rdev->use_count != 0 && rdev->supply) in regulator_force_disable()
2856 _regulator_disable(rdev->supply); in regulator_force_disable()
2858 regulator_unlock_dependent(rdev, &ww_ctx); in regulator_force_disable()
2866 struct regulator_dev *rdev = container_of(work, struct regulator_dev, in regulator_disable_work() local
2873 regulator_lock_dependent(rdev, &ww_ctx); in regulator_disable_work()
2881 cancel_delayed_work(&rdev->disable_work); in regulator_disable_work()
2883 list_for_each_entry(regulator, &rdev->consumer_list, list) { in regulator_disable_work()
2895 rdev_err(rdev, "Deferred disable failed: %pe\n", in regulator_disable_work()
2901 if (rdev->coupling_desc.n_coupled > 1) in regulator_disable_work()
2902 regulator_balance_voltage(rdev, PM_SUSPEND_ON); in regulator_disable_work()
2904 regulator_unlock_dependent(rdev, &ww_ctx); in regulator_disable_work()
2921 struct regulator_dev *rdev = regulator->rdev; in regulator_disable_deferred() local
2926 regulator_lock(rdev); in regulator_disable_deferred()
2928 mod_delayed_work(system_power_efficient_wq, &rdev->disable_work, in regulator_disable_deferred()
2930 regulator_unlock(rdev); in regulator_disable_deferred()
2936 static int _regulator_is_enabled(struct regulator_dev *rdev) in _regulator_is_enabled() argument
2939 if (rdev->ena_pin) in _regulator_is_enabled()
2940 return rdev->ena_gpio_state; in _regulator_is_enabled()
2943 if (!rdev->desc->ops->is_enabled) in _regulator_is_enabled()
2946 return rdev->desc->ops->is_enabled(rdev); in _regulator_is_enabled()
2949 static int _regulator_list_voltage(struct regulator_dev *rdev, in _regulator_list_voltage() argument
2952 const struct regulator_ops *ops = rdev->desc->ops; in _regulator_list_voltage()
2955 if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector) in _regulator_list_voltage()
2956 return rdev->desc->fixed_uV; in _regulator_list_voltage()
2959 if (selector >= rdev->desc->n_voltages) in _regulator_list_voltage()
2962 regulator_lock(rdev); in _regulator_list_voltage()
2963 ret = ops->list_voltage(rdev, selector); in _regulator_list_voltage()
2965 regulator_unlock(rdev); in _regulator_list_voltage()
2966 } else if (rdev->is_switch && rdev->supply) { in _regulator_list_voltage()
2967 ret = _regulator_list_voltage(rdev->supply->rdev, in _regulator_list_voltage()
2974 if (ret < rdev->constraints->min_uV) in _regulator_list_voltage()
2976 else if (ret > rdev->constraints->max_uV) in _regulator_list_voltage()
3002 regulator_lock(regulator->rdev); in regulator_is_enabled()
3003 ret = _regulator_is_enabled(regulator->rdev); in regulator_is_enabled()
3004 regulator_unlock(regulator->rdev); in regulator_is_enabled()
3020 struct regulator_dev *rdev = regulator->rdev; in regulator_count_voltages() local
3022 if (rdev->desc->n_voltages) in regulator_count_voltages()
3023 return rdev->desc->n_voltages; in regulator_count_voltages()
3025 if (!rdev->is_switch || !rdev->supply) in regulator_count_voltages()
3028 return regulator_count_voltages(rdev->supply); in regulator_count_voltages()
3044 return _regulator_list_voltage(regulator->rdev, selector, 1); in regulator_list_voltage()
3057 struct regmap *map = regulator->rdev->regmap; in regulator_get_regmap()
3080 struct regulator_dev *rdev = regulator->rdev; in regulator_get_hardware_vsel_register() local
3081 const struct regulator_ops *ops = rdev->desc->ops; in regulator_get_hardware_vsel_register()
3086 *vsel_reg = rdev->desc->vsel_reg; in regulator_get_hardware_vsel_register()
3087 *vsel_mask = rdev->desc->vsel_mask; in regulator_get_hardware_vsel_register()
3107 struct regulator_dev *rdev = regulator->rdev; in regulator_list_hardware_vsel() local
3108 const struct regulator_ops *ops = rdev->desc->ops; in regulator_list_hardware_vsel()
3110 if (selector >= rdev->desc->n_voltages) in regulator_list_hardware_vsel()
3128 struct regulator_dev *rdev = regulator->rdev; in regulator_get_linear_step() local
3130 return rdev->desc->uV_step; in regulator_get_linear_step()
3146 struct regulator_dev *rdev = regulator->rdev; in regulator_is_supported_voltage() local
3150 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { in regulator_is_supported_voltage()
3159 if (rdev->desc->continuous_voltage_range) in regulator_is_supported_voltage()
3160 return min_uV >= rdev->constraints->min_uV && in regulator_is_supported_voltage()
3161 max_uV <= rdev->constraints->max_uV; in regulator_is_supported_voltage()
3179 static int regulator_map_voltage(struct regulator_dev *rdev, int min_uV, in regulator_map_voltage() argument
3182 const struct regulator_desc *desc = rdev->desc; in regulator_map_voltage()
3185 return desc->ops->map_voltage(rdev, min_uV, max_uV); in regulator_map_voltage()
3188 return regulator_map_voltage_linear(rdev, min_uV, max_uV); in regulator_map_voltage()
3191 return regulator_map_voltage_linear_range(rdev, min_uV, max_uV); in regulator_map_voltage()
3195 return regulator_map_voltage_pickable_linear_range(rdev, in regulator_map_voltage()
3198 return regulator_map_voltage_iterate(rdev, min_uV, max_uV); in regulator_map_voltage()
3201 static int _regulator_call_set_voltage(struct regulator_dev *rdev, in _regulator_call_set_voltage() argument
3208 data.old_uV = regulator_get_voltage_rdev(rdev); in _regulator_call_set_voltage()
3211 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, in _regulator_call_set_voltage()
3216 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, selector); in _regulator_call_set_voltage()
3220 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, in _regulator_call_set_voltage()
3226 static int _regulator_call_set_voltage_sel(struct regulator_dev *rdev, in _regulator_call_set_voltage_sel() argument
3232 data.old_uV = regulator_get_voltage_rdev(rdev); in _regulator_call_set_voltage_sel()
3235 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_PRE_VOLTAGE_CHANGE, in _regulator_call_set_voltage_sel()
3240 ret = rdev->desc->ops->set_voltage_sel(rdev, selector); in _regulator_call_set_voltage_sel()
3244 _notifier_call_chain(rdev, REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE, in _regulator_call_set_voltage_sel()
3250 static int _regulator_set_voltage_sel_step(struct regulator_dev *rdev, in _regulator_set_voltage_sel_step() argument
3253 const struct regulator_ops *ops = rdev->desc->ops; in _regulator_set_voltage_sel_step()
3257 if (!_regulator_is_enabled(rdev)) in _regulator_set_voltage_sel_step()
3263 old_sel = ops->get_voltage_sel(rdev); in _regulator_set_voltage_sel_step()
3273 for (curr_sel = old_sel + rdev->desc->vsel_step; in _regulator_set_voltage_sel_step()
3275 curr_sel += rdev->desc->vsel_step) { in _regulator_set_voltage_sel_step()
3282 ret = ops->set_voltage_sel(rdev, curr_sel); in _regulator_set_voltage_sel_step()
3288 for (curr_sel = old_sel - rdev->desc->vsel_step; in _regulator_set_voltage_sel_step()
3290 curr_sel -= rdev->desc->vsel_step) { in _regulator_set_voltage_sel_step()
3291 ret = ops->set_voltage_sel(rdev, curr_sel); in _regulator_set_voltage_sel_step()
3299 return _regulator_call_set_voltage_sel(rdev, uV, new_selector); in _regulator_set_voltage_sel_step()
3306 (void)ops->set_voltage_sel(rdev, old_sel); in _regulator_set_voltage_sel_step()
3310 static int _regulator_set_voltage_time(struct regulator_dev *rdev, in _regulator_set_voltage_time() argument
3315 if (rdev->constraints->ramp_delay) in _regulator_set_voltage_time()
3316 ramp_delay = rdev->constraints->ramp_delay; in _regulator_set_voltage_time()
3317 else if (rdev->desc->ramp_delay) in _regulator_set_voltage_time()
3318 ramp_delay = rdev->desc->ramp_delay; in _regulator_set_voltage_time()
3319 else if (rdev->constraints->settling_time) in _regulator_set_voltage_time()
3320 return rdev->constraints->settling_time; in _regulator_set_voltage_time()
3321 else if (rdev->constraints->settling_time_up && in _regulator_set_voltage_time()
3323 return rdev->constraints->settling_time_up; in _regulator_set_voltage_time()
3324 else if (rdev->constraints->settling_time_down && in _regulator_set_voltage_time()
3326 return rdev->constraints->settling_time_down; in _regulator_set_voltage_time()
3329 rdev_dbg(rdev, "ramp_delay not set\n"); in _regulator_set_voltage_time()
3336 static int _regulator_do_set_voltage(struct regulator_dev *rdev, in _regulator_do_set_voltage() argument
3344 const struct regulator_ops *ops = rdev->desc->ops; in _regulator_do_set_voltage()
3345 int old_uV = regulator_get_voltage_rdev(rdev); in _regulator_do_set_voltage()
3347 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV); in _regulator_do_set_voltage()
3349 min_uV += rdev->constraints->uV_offset; in _regulator_do_set_voltage()
3350 max_uV += rdev->constraints->uV_offset; in _regulator_do_set_voltage()
3356 if (_regulator_is_enabled(rdev) && in _regulator_do_set_voltage()
3358 old_selector = ops->get_voltage_sel(rdev); in _regulator_do_set_voltage()
3364 ret = _regulator_call_set_voltage(rdev, min_uV, max_uV, in _regulator_do_set_voltage()
3369 best_val = ops->list_voltage(rdev, in _regulator_do_set_voltage()
3372 best_val = regulator_get_voltage_rdev(rdev); in _regulator_do_set_voltage()
3376 ret = regulator_map_voltage(rdev, min_uV, max_uV); in _regulator_do_set_voltage()
3378 best_val = ops->list_voltage(rdev, ret); in _regulator_do_set_voltage()
3383 else if (rdev->desc->vsel_step) in _regulator_do_set_voltage()
3385 rdev, best_val, selector); in _regulator_do_set_voltage()
3388 rdev, best_val, selector); in _regulator_do_set_voltage()
3406 delay = ops->set_voltage_time_sel(rdev, old_selector, in _regulator_do_set_voltage()
3411 delay = ops->set_voltage_time(rdev, old_uV, in _regulator_do_set_voltage()
3414 delay = _regulator_set_voltage_time(rdev, in _regulator_do_set_voltage()
3421 rdev_warn(rdev, "failed to get delay: %pe\n", ERR_PTR(delay)); in _regulator_do_set_voltage()
3436 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, in _regulator_do_set_voltage()
3441 trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); in _regulator_do_set_voltage()
3446 static int _regulator_do_set_suspend_voltage(struct regulator_dev *rdev, in _regulator_do_set_suspend_voltage() argument
3452 rstate = regulator_get_suspend_state(rdev, state); in _regulator_do_set_suspend_voltage()
3461 sel = regulator_map_voltage(rdev, min_uV, max_uV); in _regulator_do_set_suspend_voltage()
3465 uV = rdev->desc->ops->list_voltage(rdev, sel); in _regulator_do_set_suspend_voltage()
3476 struct regulator_dev *rdev = regulator->rdev; in regulator_set_voltage_unlocked() local
3493 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_VOLTAGE)) { in regulator_set_voltage_unlocked()
3494 current_uV = regulator_get_voltage_rdev(rdev); in regulator_set_voltage_unlocked()
3503 if (!rdev->desc->ops->set_voltage && in regulator_set_voltage_unlocked()
3504 !rdev->desc->ops->set_voltage_sel) { in regulator_set_voltage_unlocked()
3510 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); in regulator_set_voltage_unlocked()
3521 ret = regulator_balance_voltage(rdev, state); in regulator_set_voltage_unlocked()
3531 int regulator_set_voltage_rdev(struct regulator_dev *rdev, int min_uV, in regulator_set_voltage_rdev() argument
3538 if (rdev->supply && in regulator_set_voltage_rdev()
3539 regulator_ops_is_valid(rdev->supply->rdev, in regulator_set_voltage_rdev()
3541 (rdev->desc->min_dropout_uV || !(rdev->desc->ops->get_voltage || in regulator_set_voltage_rdev()
3542 rdev->desc->ops->get_voltage_sel))) { in regulator_set_voltage_rdev()
3546 selector = regulator_map_voltage(rdev, min_uV, max_uV); in regulator_set_voltage_rdev()
3552 best_supply_uV = _regulator_list_voltage(rdev, selector, 0); in regulator_set_voltage_rdev()
3558 best_supply_uV += rdev->desc->min_dropout_uV; in regulator_set_voltage_rdev()
3560 current_supply_uV = regulator_get_voltage_rdev(rdev->supply->rdev); in regulator_set_voltage_rdev()
3570 ret = regulator_set_voltage_unlocked(rdev->supply, in regulator_set_voltage_rdev()
3573 dev_err(&rdev->dev, "Failed to increase supply voltage: %pe\n", in regulator_set_voltage_rdev()
3580 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); in regulator_set_voltage_rdev()
3582 ret = _regulator_do_set_suspend_voltage(rdev, min_uV, in regulator_set_voltage_rdev()
3588 ret = regulator_set_voltage_unlocked(rdev->supply, in regulator_set_voltage_rdev()
3591 dev_warn(&rdev->dev, "Failed to decrease supply voltage: %pe\n", in regulator_set_voltage_rdev()
3602 static int regulator_limit_voltage_step(struct regulator_dev *rdev, in regulator_limit_voltage_step() argument
3605 struct regulation_constraints *constraints = rdev->constraints; in regulator_limit_voltage_step()
3608 if (!constraints->max_uV_step || !_regulator_is_enabled(rdev)) in regulator_limit_voltage_step()
3612 *current_uV = regulator_get_voltage_rdev(rdev); in regulator_limit_voltage_step()
3632 static int regulator_get_optimal_voltage(struct regulator_dev *rdev, in regulator_get_optimal_voltage() argument
3638 struct coupling_desc *c_desc = &rdev->coupling_desc; in regulator_get_optimal_voltage()
3640 struct regulation_constraints *constraints = rdev->constraints; in regulator_get_optimal_voltage()
3661 ret = regulator_check_consumers(rdev, in regulator_get_optimal_voltage()
3746 ret = regulator_limit_voltage_step(rdev, current_uV, in regulator_get_optimal_voltage()
3758 if (_regulator_is_enabled(rdev)) { in regulator_get_optimal_voltage()
3759 ret = regulator_get_voltage_rdev(rdev); in regulator_get_optimal_voltage()
3775 int regulator_do_balance_voltage(struct regulator_dev *rdev, in regulator_do_balance_voltage() argument
3780 struct coupling_desc *c_desc = &rdev->coupling_desc; in regulator_do_balance_voltage()
3858 static int regulator_balance_voltage(struct regulator_dev *rdev, in regulator_balance_voltage() argument
3861 struct coupling_desc *c_desc = &rdev->coupling_desc; in regulator_balance_voltage()
3873 rdev_err(rdev, "Not all coupled regulators registered\n"); in regulator_balance_voltage()
3879 return coupler->balance_voltage(coupler, rdev, state); in regulator_balance_voltage()
3881 return regulator_do_balance_voltage(rdev, state, skip_coupled); in regulator_balance_voltage()
3907 regulator_lock_dependent(regulator->rdev, &ww_ctx); in regulator_set_voltage()
3912 regulator_unlock_dependent(regulator->rdev, &ww_ctx); in regulator_set_voltage()
3918 static inline int regulator_suspend_toggle(struct regulator_dev *rdev, in regulator_suspend_toggle() argument
3923 rstate = regulator_get_suspend_state(rdev, state); in regulator_suspend_toggle()
3935 int regulator_suspend_enable(struct regulator_dev *rdev, in regulator_suspend_enable() argument
3938 return regulator_suspend_toggle(rdev, state, true); in regulator_suspend_enable()
3942 int regulator_suspend_disable(struct regulator_dev *rdev, in regulator_suspend_disable() argument
3952 list_for_each_entry(regulator, &rdev->consumer_list, list) { in regulator_suspend_disable()
3958 return regulator_suspend_toggle(rdev, state, false); in regulator_suspend_disable()
3966 struct regulator_dev *rdev = regulator->rdev; in _regulator_set_suspend_voltage() local
3969 rstate = regulator_get_suspend_state(rdev, state); in _regulator_set_suspend_voltage()
3974 rdev_err(rdev, "The suspend voltage can't be changed!\n"); in _regulator_set_suspend_voltage()
3991 regulator_lock_dependent(regulator->rdev, &ww_ctx); in regulator_set_suspend_voltage()
3996 regulator_unlock_dependent(regulator->rdev, &ww_ctx); in regulator_set_suspend_voltage()
4015 struct regulator_dev *rdev = regulator->rdev; in regulator_set_voltage_time() local
4016 const struct regulator_ops *ops = rdev->desc->ops; in regulator_set_voltage_time()
4023 return ops->set_voltage_time(rdev, old_uV, new_uV); in regulator_set_voltage_time()
4025 return _regulator_set_voltage_time(rdev, old_uV, new_uV); in regulator_set_voltage_time()
4028 if (!ops->list_voltage || !rdev->desc->n_voltages) in regulator_set_voltage_time()
4031 for (i = 0; i < rdev->desc->n_voltages; i++) { in regulator_set_voltage_time()
4047 return ops->set_voltage_time_sel(rdev, old_sel, new_sel); in regulator_set_voltage_time()
4063 int regulator_set_voltage_time_sel(struct regulator_dev *rdev, in regulator_set_voltage_time_sel() argument
4070 if (!rdev->desc->ops->list_voltage) in regulator_set_voltage_time_sel()
4073 old_volt = rdev->desc->ops->list_voltage(rdev, old_selector); in regulator_set_voltage_time_sel()
4074 new_volt = rdev->desc->ops->list_voltage(rdev, new_selector); in regulator_set_voltage_time_sel()
4076 if (rdev->desc->ops->set_voltage_time) in regulator_set_voltage_time_sel()
4077 return rdev->desc->ops->set_voltage_time(rdev, old_volt, in regulator_set_voltage_time_sel()
4080 return _regulator_set_voltage_time(rdev, old_volt, new_volt); in regulator_set_voltage_time_sel()
4094 struct regulator_dev *rdev = regulator->rdev; in regulator_sync_voltage() local
4098 regulator_lock(rdev); in regulator_sync_voltage()
4100 if (!rdev->desc->ops->set_voltage && in regulator_sync_voltage()
4101 !rdev->desc->ops->set_voltage_sel) { in regulator_sync_voltage()
4116 ret = regulator_check_voltage(rdev, &min_uV, &max_uV); in regulator_sync_voltage()
4120 ret = regulator_check_consumers(rdev, &min_uV, &max_uV, 0); in regulator_sync_voltage()
4124 ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); in regulator_sync_voltage()
4127 regulator_unlock(rdev); in regulator_sync_voltage()
4132 int regulator_get_voltage_rdev(struct regulator_dev *rdev) in regulator_get_voltage_rdev() argument
4137 if (rdev->desc->ops->get_bypass) { in regulator_get_voltage_rdev()
4138 ret = rdev->desc->ops->get_bypass(rdev, &bypassed); in regulator_get_voltage_rdev()
4143 if (!rdev->supply) { in regulator_get_voltage_rdev()
4144 rdev_err(rdev, in regulator_get_voltage_rdev()
4149 return regulator_get_voltage_rdev(rdev->supply->rdev); in regulator_get_voltage_rdev()
4153 if (rdev->desc->ops->get_voltage_sel) { in regulator_get_voltage_rdev()
4154 sel = rdev->desc->ops->get_voltage_sel(rdev); in regulator_get_voltage_rdev()
4157 ret = rdev->desc->ops->list_voltage(rdev, sel); in regulator_get_voltage_rdev()
4158 } else if (rdev->desc->ops->get_voltage) { in regulator_get_voltage_rdev()
4159 ret = rdev->desc->ops->get_voltage(rdev); in regulator_get_voltage_rdev()
4160 } else if (rdev->desc->ops->list_voltage) { in regulator_get_voltage_rdev()
4161 ret = rdev->desc->ops->list_voltage(rdev, 0); in regulator_get_voltage_rdev()
4162 } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { in regulator_get_voltage_rdev()
4163 ret = rdev->desc->fixed_uV; in regulator_get_voltage_rdev()
4164 } else if (rdev->supply) { in regulator_get_voltage_rdev()
4165 ret = regulator_get_voltage_rdev(rdev->supply->rdev); in regulator_get_voltage_rdev()
4166 } else if (rdev->supply_name) { in regulator_get_voltage_rdev()
4174 return ret - rdev->constraints->uV_offset; in regulator_get_voltage_rdev()
4192 regulator_lock_dependent(regulator->rdev, &ww_ctx); in regulator_get_voltage()
4193 ret = regulator_get_voltage_rdev(regulator->rdev); in regulator_get_voltage()
4194 regulator_unlock_dependent(regulator->rdev, &ww_ctx); in regulator_get_voltage()
4219 struct regulator_dev *rdev = regulator->rdev; in regulator_set_current_limit() local
4222 regulator_lock(rdev); in regulator_set_current_limit()
4225 if (!rdev->desc->ops->set_current_limit) { in regulator_set_current_limit()
4231 ret = regulator_check_current_limit(rdev, &min_uA, &max_uA); in regulator_set_current_limit()
4235 ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA); in regulator_set_current_limit()
4237 regulator_unlock(rdev); in regulator_set_current_limit()
4242 static int _regulator_get_current_limit_unlocked(struct regulator_dev *rdev) in _regulator_get_current_limit_unlocked() argument
4245 if (!rdev->desc->ops->get_current_limit) in _regulator_get_current_limit_unlocked()
4248 return rdev->desc->ops->get_current_limit(rdev); in _regulator_get_current_limit_unlocked()
4251 static int _regulator_get_current_limit(struct regulator_dev *rdev) in _regulator_get_current_limit() argument
4255 regulator_lock(rdev); in _regulator_get_current_limit()
4256 ret = _regulator_get_current_limit_unlocked(rdev); in _regulator_get_current_limit()
4257 regulator_unlock(rdev); in _regulator_get_current_limit()
4273 return _regulator_get_current_limit(regulator->rdev); in regulator_get_current_limit()
4290 struct regulator_dev *rdev = regulator->rdev; in regulator_set_mode() local
4294 regulator_lock(rdev); in regulator_set_mode()
4297 if (!rdev->desc->ops->set_mode) { in regulator_set_mode()
4303 if (rdev->desc->ops->get_mode) { in regulator_set_mode()
4304 regulator_curr_mode = rdev->desc->ops->get_mode(rdev); in regulator_set_mode()
4312 ret = regulator_mode_constrain(rdev, &mode); in regulator_set_mode()
4316 ret = rdev->desc->ops->set_mode(rdev, mode); in regulator_set_mode()
4318 regulator_unlock(rdev); in regulator_set_mode()
4323 static unsigned int _regulator_get_mode_unlocked(struct regulator_dev *rdev) in _regulator_get_mode_unlocked() argument
4326 if (!rdev->desc->ops->get_mode) in _regulator_get_mode_unlocked()
4329 return rdev->desc->ops->get_mode(rdev); in _regulator_get_mode_unlocked()
4332 static unsigned int _regulator_get_mode(struct regulator_dev *rdev) in _regulator_get_mode() argument
4336 regulator_lock(rdev); in _regulator_get_mode()
4337 ret = _regulator_get_mode_unlocked(rdev); in _regulator_get_mode()
4338 regulator_unlock(rdev); in _regulator_get_mode()
4351 return _regulator_get_mode(regulator->rdev); in regulator_get_mode()
4355 static int _regulator_get_error_flags(struct regulator_dev *rdev, in _regulator_get_error_flags() argument
4360 regulator_lock(rdev); in _regulator_get_error_flags()
4363 if (!rdev->desc->ops->get_error_flags) { in _regulator_get_error_flags()
4368 ret = rdev->desc->ops->get_error_flags(rdev, flags); in _regulator_get_error_flags()
4370 regulator_unlock(rdev); in _regulator_get_error_flags()
4384 return _regulator_get_error_flags(regulator->rdev, flags); in regulator_get_error_flags()
4424 struct regulator_dev *rdev = regulator->rdev; in regulator_set_load() local
4428 regulator_lock(rdev); in regulator_set_load()
4432 ret = drms_uA_update(rdev); in regulator_set_load()
4436 regulator_unlock(rdev); in regulator_set_load()
4455 struct regulator_dev *rdev = regulator->rdev; in regulator_allow_bypass() local
4456 const char *name = rdev_get_name(rdev); in regulator_allow_bypass()
4459 if (!rdev->desc->ops->set_bypass) in regulator_allow_bypass()
4462 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_BYPASS)) in regulator_allow_bypass()
4465 regulator_lock(rdev); in regulator_allow_bypass()
4468 rdev->bypass_count++; in regulator_allow_bypass()
4470 if (rdev->bypass_count == rdev->open_count) { in regulator_allow_bypass()
4473 ret = rdev->desc->ops->set_bypass(rdev, enable); in regulator_allow_bypass()
4475 rdev->bypass_count--; in regulator_allow_bypass()
4481 rdev->bypass_count--; in regulator_allow_bypass()
4483 if (rdev->bypass_count != rdev->open_count) { in regulator_allow_bypass()
4486 ret = rdev->desc->ops->set_bypass(rdev, enable); in regulator_allow_bypass()
4488 rdev->bypass_count++; in regulator_allow_bypass()
4497 regulator_unlock(rdev); in regulator_allow_bypass()
4513 return blocking_notifier_chain_register(&regulator->rdev->notifier, in regulator_register_notifier()
4528 return blocking_notifier_chain_unregister(&regulator->rdev->notifier, in regulator_unregister_notifier()
4536 static int _notifier_call_chain(struct regulator_dev *rdev, in _notifier_call_chain() argument
4540 return blocking_notifier_call_chain(&rdev->notifier, event, data); in _notifier_call_chain()
4751 int regulator_notifier_call_chain(struct regulator_dev *rdev, in regulator_notifier_call_chain() argument
4754 _notifier_call_chain(rdev, event, data); in regulator_notifier_call_chain()
4819 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_attr_is_visible() local
4820 const struct regulator_ops *ops = rdev->desc->ops; in regulator_attr_is_visible()
4831 if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) || in regulator_attr_is_visible()
4832 (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0) || in regulator_attr_is_visible()
4833 (ops->list_voltage && ops->list_voltage(rdev, 0) >= 0) || in regulator_attr_is_visible()
4834 (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1)) in regulator_attr_is_visible()
4846 return (rdev->ena_pin || ops->is_enabled) ? mode : 0; in regulator_attr_is_visible()
4893 struct regulator_dev *rdev = dev_get_drvdata(dev); in regulator_dev_release() local
4895 kfree(rdev->constraints); in regulator_dev_release()
4896 of_node_put(rdev->dev.of_node); in regulator_dev_release()
4897 kfree(rdev); in regulator_dev_release()
4900 static void rdev_init_debugfs(struct regulator_dev *rdev) in rdev_init_debugfs() argument
4902 struct device *parent = rdev->dev.parent; in rdev_init_debugfs()
4903 const char *rname = rdev_get_name(rdev); in rdev_init_debugfs()
4907 if (parent && rname == rdev->desc->name) { in rdev_init_debugfs()
4913 rdev->debugfs = debugfs_create_dir(rname, debugfs_root); in rdev_init_debugfs()
4914 if (!rdev->debugfs) { in rdev_init_debugfs()
4915 rdev_warn(rdev, "Failed to create debugfs directory\n"); in rdev_init_debugfs()
4919 debugfs_create_u32("use_count", 0444, rdev->debugfs, in rdev_init_debugfs()
4920 &rdev->use_count); in rdev_init_debugfs()
4921 debugfs_create_u32("open_count", 0444, rdev->debugfs, in rdev_init_debugfs()
4922 &rdev->open_count); in rdev_init_debugfs()
4923 debugfs_create_u32("bypass_count", 0444, rdev->debugfs, in rdev_init_debugfs()
4924 &rdev->bypass_count); in rdev_init_debugfs()
4929 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_register_resolve_supply() local
4931 if (regulator_resolve_supply(rdev)) in regulator_register_resolve_supply()
4932 rdev_dbg(rdev, "unable to resolve supply\n"); in regulator_register_resolve_supply()
4947 regulator_find_coupler(struct regulator_dev *rdev) in regulator_find_coupler() argument
4958 err = coupler->attach_regulator(coupler, rdev); in regulator_find_coupler()
4961 rdev->coupling_desc.n_coupled > 2) in regulator_find_coupler()
4980 coupler->detach_regulator(coupler, rdev); in regulator_find_coupler()
4982 rdev_err(rdev, in regulator_find_coupler()
4988 static void regulator_resolve_coupling(struct regulator_dev *rdev) in regulator_resolve_coupling() argument
4990 struct regulator_coupler *coupler = rdev->coupling_desc.coupler; in regulator_resolve_coupling()
4991 struct coupling_desc *c_desc = &rdev->coupling_desc; in regulator_resolve_coupling()
5001 c_rdev = of_parse_coupled_regulator(rdev, i - 1); in regulator_resolve_coupling()
5007 rdev_err(rdev, "coupler mismatch with %s\n", in regulator_resolve_coupling()
5019 static void regulator_remove_coupling(struct regulator_dev *rdev) in regulator_remove_coupling() argument
5021 struct regulator_coupler *coupler = rdev->coupling_desc.coupler; in regulator_remove_coupling()
5022 struct coupling_desc *__c_desc, *c_desc = &rdev->coupling_desc; in regulator_remove_coupling()
5044 if (__c_rdev == rdev) { in regulator_remove_coupling()
5058 err = coupler->detach_regulator(coupler, rdev); in regulator_remove_coupling()
5060 rdev_err(rdev, "failed to detach from coupler: %pe\n", in regulator_remove_coupling()
5064 kfree(rdev->coupling_desc.coupled_rdevs); in regulator_remove_coupling()
5065 rdev->coupling_desc.coupled_rdevs = NULL; in regulator_remove_coupling()
5068 static int regulator_init_coupling(struct regulator_dev *rdev) in regulator_init_coupling() argument
5076 n_phandles = of_get_n_coupled(rdev); in regulator_init_coupling()
5082 rdev->coupling_desc.coupled_rdevs = coupled; in regulator_init_coupling()
5088 rdev->coupling_desc.coupled_rdevs[0] = rdev; in regulator_init_coupling()
5089 rdev->coupling_desc.n_coupled = n_phandles + 1; in regulator_init_coupling()
5090 rdev->coupling_desc.n_resolved++; in regulator_init_coupling()
5096 if (!of_check_coupling_data(rdev)) in regulator_init_coupling()
5100 rdev->coupling_desc.coupler = regulator_find_coupler(rdev); in regulator_init_coupling()
5103 if (IS_ERR(rdev->coupling_desc.coupler)) { in regulator_init_coupling()
5104 err = PTR_ERR(rdev->coupling_desc.coupler); in regulator_init_coupling()
5105 rdev_err(rdev, "failed to get coupler: %pe\n", ERR_PTR(err)); in regulator_init_coupling()
5113 struct regulator_dev *rdev) in generic_coupler_attach() argument
5115 if (rdev->coupling_desc.n_coupled > 2) { in generic_coupler_attach()
5116 rdev_err(rdev, in generic_coupler_attach()
5121 if (!rdev->constraints->always_on) { in generic_coupler_attach()
5122 rdev_err(rdev, in generic_coupler_attach()
5150 struct regulator_dev *rdev; in regulator_register() local
5197 rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL); in regulator_register()
5198 if (rdev == NULL) { in regulator_register()
5202 device_initialize(&rdev->dev); in regulator_register()
5215 &rdev->dev.of_node); in regulator_register()
5239 rdev->dev.of_node = of_node_get(config->of_node); in regulator_register()
5242 ww_mutex_init(&rdev->mutex, &regulator_ww_class); in regulator_register()
5243 rdev->reg_data = config->driver_data; in regulator_register()
5244 rdev->owner = regulator_desc->owner; in regulator_register()
5245 rdev->desc = regulator_desc; in regulator_register()
5247 rdev->regmap = config->regmap; in regulator_register()
5249 rdev->regmap = dev_get_regmap(dev, NULL); in regulator_register()
5251 rdev->regmap = dev_get_regmap(dev->parent, NULL); in regulator_register()
5252 INIT_LIST_HEAD(&rdev->consumer_list); in regulator_register()
5253 INIT_LIST_HEAD(&rdev->list); in regulator_register()
5254 BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier); in regulator_register()
5255 INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work); in regulator_register()
5259 ret = init_data->regulator_init(rdev->reg_data); in regulator_register()
5265 ret = regulator_ena_gpio_request(rdev, config); in regulator_register()
5267 rdev_err(rdev, "Failed to request enable GPIO: %pe\n", in regulator_register()
5277 rdev->dev.class = &regulator_class; in regulator_register()
5278 rdev->dev.parent = dev; in regulator_register()
5279 dev_set_name(&rdev->dev, "regulator.%lu", in regulator_register()
5281 dev_set_drvdata(&rdev->dev, rdev); in regulator_register()
5285 rdev->constraints = kmemdup(&init_data->constraints, in regulator_register()
5286 sizeof(*rdev->constraints), in regulator_register()
5289 rdev->constraints = kzalloc(sizeof(*rdev->constraints), in regulator_register()
5291 if (!rdev->constraints) { in regulator_register()
5297 rdev->supply_name = init_data->supply_regulator; in regulator_register()
5299 rdev->supply_name = regulator_desc->supply_name; in regulator_register()
5301 ret = set_machine_constraints(rdev); in regulator_register()
5308 ret = regulator_resolve_supply(rdev); in regulator_register()
5310 ret = set_machine_constraints(rdev); in regulator_register()
5312 rdev_dbg(rdev, "unable to resolve supply early: %pe\n", in regulator_register()
5318 ret = regulator_init_coupling(rdev); in regulator_register()
5325 ret = set_consumer_device_supply(rdev, in regulator_register()
5336 if (!rdev->desc->ops->get_voltage && in regulator_register()
5337 !rdev->desc->ops->list_voltage && in regulator_register()
5338 !rdev->desc->fixed_uV) in regulator_register()
5339 rdev->is_switch = true; in regulator_register()
5341 ret = device_add(&rdev->dev); in regulator_register()
5345 rdev_init_debugfs(rdev); in regulator_register()
5349 regulator_resolve_coupling(rdev); in regulator_register()
5356 return rdev; in regulator_register()
5360 unset_regulator_supplies(rdev); in regulator_register()
5361 regulator_remove_coupling(rdev); in regulator_register()
5364 kfree(rdev->coupling_desc.coupled_rdevs); in regulator_register()
5366 regulator_ena_gpio_free(rdev); in regulator_register()
5372 put_device(&rdev->dev); in regulator_register()
5386 void regulator_unregister(struct regulator_dev *rdev) in regulator_unregister() argument
5388 if (rdev == NULL) in regulator_unregister()
5391 if (rdev->supply) { in regulator_unregister()
5392 while (rdev->use_count--) in regulator_unregister()
5393 regulator_disable(rdev->supply); in regulator_unregister()
5394 regulator_put(rdev->supply); in regulator_unregister()
5397 flush_work(&rdev->disable_work.work); in regulator_unregister()
5401 debugfs_remove_recursive(rdev->debugfs); in regulator_unregister()
5402 WARN_ON(rdev->open_count); in regulator_unregister()
5403 regulator_remove_coupling(rdev); in regulator_unregister()
5404 unset_regulator_supplies(rdev); in regulator_unregister()
5405 list_del(&rdev->list); in regulator_unregister()
5406 regulator_ena_gpio_free(rdev); in regulator_unregister()
5407 device_unregister(&rdev->dev); in regulator_unregister()
5422 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_suspend() local
5427 rstate = regulator_get_suspend_state_check(rdev, state); in regulator_suspend()
5431 regulator_lock(rdev); in regulator_suspend()
5432 ret = __suspend_set_state(rdev, rstate); in regulator_suspend()
5433 regulator_unlock(rdev); in regulator_suspend()
5441 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_resume() local
5445 rstate = regulator_get_suspend_state(rdev, state); in regulator_resume()
5450 if (!rdev->desc->ops->resume) in regulator_resume()
5453 regulator_lock(rdev); in regulator_resume()
5457 ret = rdev->desc->ops->resume(rdev); in regulator_resume()
5459 regulator_unlock(rdev); in regulator_resume()
5509 void *rdev_get_drvdata(struct regulator_dev *rdev) in rdev_get_drvdata() argument
5511 return rdev->reg_data; in rdev_get_drvdata()
5524 return regulator->rdev->reg_data; in regulator_get_drvdata()
5535 regulator->rdev->reg_data = data; in regulator_set_drvdata()
5543 int rdev_get_id(struct regulator_dev *rdev) in rdev_get_id() argument
5545 return rdev->desc->id; in rdev_get_id()
5549 struct device *rdev_get_dev(struct regulator_dev *rdev) in rdev_get_dev() argument
5551 return &rdev->dev; in rdev_get_dev()
5555 struct regmap *rdev_get_regmap(struct regulator_dev *rdev) in rdev_get_regmap() argument
5557 return rdev->regmap; in rdev_get_regmap()
5589 struct regulator_dev *rdev,
5594 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_show_children() local
5597 if (rdev->supply && rdev->supply->rdev == summary_data->parent) in regulator_summary_show_children()
5598 regulator_summary_show_subtree(summary_data->s, rdev, in regulator_summary_show_children()
5605 struct regulator_dev *rdev, in regulator_summary_show_subtree() argument
5613 if (!rdev) in regulator_summary_show_subtree()
5616 opmode = _regulator_get_mode_unlocked(rdev); in regulator_summary_show_subtree()
5619 30 - level * 3, rdev_get_name(rdev), in regulator_summary_show_subtree()
5620 rdev->use_count, rdev->open_count, rdev->bypass_count, in regulator_summary_show_subtree()
5623 seq_printf(s, "%5dmV ", regulator_get_voltage_rdev(rdev) / 1000); in regulator_summary_show_subtree()
5625 _regulator_get_current_limit_unlocked(rdev) / 1000); in regulator_summary_show_subtree()
5627 c = rdev->constraints; in regulator_summary_show_subtree()
5629 switch (rdev->desc->type) { in regulator_summary_show_subtree()
5643 list_for_each_entry(consumer, &rdev->consumer_list, list) { in regulator_summary_show_subtree()
5653 switch (rdev->desc->type) { in regulator_summary_show_subtree()
5672 summary_data.parent = rdev; in regulator_summary_show_subtree()
5686 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_lock_one() local
5690 if (rdev != *lock_data->old_contended_rdev) { in regulator_summary_lock_one()
5691 ret = regulator_lock_nested(rdev, lock_data->ww_ctx); in regulator_summary_lock_one()
5694 *lock_data->new_contended_rdev = rdev; in regulator_summary_lock_one()
5706 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_unlock_one() local
5710 if (rdev == *lock_data->new_contended_rdev) in regulator_summary_unlock_one()
5714 regulator_unlock(rdev); in regulator_summary_unlock_one()
5779 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_summary_show_roots() local
5782 if (!rdev->supply) in regulator_summary_show_roots()
5783 regulator_summary_show_subtree(s, rdev, 0); in regulator_summary_show_roots()
5836 struct regulator_dev *rdev = dev_to_rdev(dev); in regulator_late_cleanup() local
5837 const struct regulator_ops *ops = rdev->desc->ops; in regulator_late_cleanup()
5838 struct regulation_constraints *c = rdev->constraints; in regulator_late_cleanup()
5844 if (!regulator_ops_is_valid(rdev, REGULATOR_CHANGE_STATUS)) in regulator_late_cleanup()
5847 regulator_lock(rdev); in regulator_late_cleanup()
5849 if (rdev->use_count) in regulator_late_cleanup()
5854 enabled = ops->is_enabled(rdev); in regulator_late_cleanup()
5865 rdev_info(rdev, "disabling\n"); in regulator_late_cleanup()
5866 ret = _regulator_do_disable(rdev); in regulator_late_cleanup()
5868 rdev_err(rdev, "couldn't disable: %pe\n", ERR_PTR(ret)); in regulator_late_cleanup()
5875 rdev_warn(rdev, "incomplete constraints, leaving on\n"); in regulator_late_cleanup()
5879 regulator_unlock(rdev); in regulator_late_cleanup()