Loading drivers/regulator/core.c +26 −18 Original line number Diff line number Diff line Loading @@ -323,13 +323,14 @@ static ssize_t regulator_uA_show(struct device *dev, } static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); static ssize_t regulator_name_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t name_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); return sprintf(buf, "%s\n", rdev_get_name(rdev)); } static DEVICE_ATTR_RO(name); static ssize_t regulator_print_opmode(char *buf, int mode) { Loading Loading @@ -489,15 +490,16 @@ static ssize_t regulator_total_uA_show(struct device *dev, } static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); static ssize_t regulator_num_users_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t num_users_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); return sprintf(buf, "%d\n", rdev->use_count); } static DEVICE_ATTR_RO(num_users); static ssize_t regulator_type_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t type_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); Loading @@ -509,6 +511,7 @@ static ssize_t regulator_type_show(struct device *dev, } return sprintf(buf, "unknown\n"); } static DEVICE_ATTR_RO(type); static ssize_t regulator_suspend_mem_uV_show(struct device *dev, struct device_attribute *attr, char *buf) Loading Loading @@ -632,12 +635,13 @@ static DEVICE_ATTR(bypass, 0444, * These are the only attributes are present for all regulators. * Other attributes are a function of regulator functionality. */ static struct device_attribute regulator_dev_attrs[] = { __ATTR(name, 0444, regulator_name_show, NULL), __ATTR(num_users, 0444, regulator_num_users_show, NULL), __ATTR(type, 0444, regulator_type_show, NULL), __ATTR_NULL, static struct attribute *regulator_dev_attrs[] = { &dev_attr_name.attr, &dev_attr_num_users.attr, &dev_attr_type.attr, NULL, }; ATTRIBUTE_GROUPS(regulator_dev); static void regulator_dev_release(struct device *dev) { Loading @@ -648,7 +652,7 @@ static void regulator_dev_release(struct device *dev) static struct class regulator_class = { .name = "regulator", .dev_release = regulator_dev_release, .dev_attrs = regulator_dev_attrs, .dev_groups = regulator_dev_groups, }; /* Calculate the new optimum regulator operating mode based on the new total Loading Loading @@ -1238,7 +1242,7 @@ static struct regulator_dev *regulator_dev_lookup(struct device *dev, /* Internal regulator request function */ static struct regulator *_regulator_get(struct device *dev, const char *id, int exclusive) bool exclusive) { struct regulator_dev *rdev; struct regulator *regulator = ERR_PTR(-EPROBE_DEFER); Loading Loading @@ -1344,7 +1348,7 @@ static struct regulator *_regulator_get(struct device *dev, const char *id, */ struct regulator *regulator_get(struct device *dev, const char *id) { return _regulator_get(dev, id, 0); return _regulator_get(dev, id, false); } EXPORT_SYMBOL_GPL(regulator_get); Loading Loading @@ -1405,7 +1409,7 @@ EXPORT_SYMBOL_GPL(devm_regulator_get); */ struct regulator *regulator_get_exclusive(struct device *dev, const char *id) { return _regulator_get(dev, id, 1); return _regulator_get(dev, id, true); } EXPORT_SYMBOL_GPL(regulator_get_exclusive); Loading Loading @@ -1890,7 +1894,8 @@ int regulator_disable_deferred(struct regulator *regulator, int ms) rdev->deferred_disables++; mutex_unlock(&rdev->mutex); ret = schedule_delayed_work(&rdev->disable_work, ret = queue_delayed_work(system_power_efficient_wq, &rdev->disable_work, msecs_to_jiffies(ms)); if (ret < 0) return ret; Loading Loading @@ -3835,8 +3840,11 @@ void regulator_unregister(struct regulator_dev *rdev) if (rdev == NULL) return; if (rdev->supply) if (rdev->supply) { while (rdev->use_count--) regulator_disable(rdev->supply); regulator_put(rdev->supply); } mutex_lock(®ulator_list_mutex); debugfs_remove_recursive(rdev->debugfs); flush_work(&rdev->disable_work.work); Loading include/linux/regulator/consumer.h +5 −2 Original line number Diff line number Diff line Loading @@ -369,6 +369,9 @@ static inline int regulator_count_voltages(struct regulator *regulator) static inline int regulator_set_voltage_tol(struct regulator *regulator, int new_uV, int tol_uV) { if (regulator_set_voltage(regulator, new_uV, new_uV + tol_uV) == 0) return 0; else return regulator_set_voltage(regulator, new_uV - tol_uV, new_uV + tol_uV); } Loading Loading
drivers/regulator/core.c +26 −18 Original line number Diff line number Diff line Loading @@ -323,13 +323,14 @@ static ssize_t regulator_uA_show(struct device *dev, } static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); static ssize_t regulator_name_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t name_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); return sprintf(buf, "%s\n", rdev_get_name(rdev)); } static DEVICE_ATTR_RO(name); static ssize_t regulator_print_opmode(char *buf, int mode) { Loading Loading @@ -489,15 +490,16 @@ static ssize_t regulator_total_uA_show(struct device *dev, } static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); static ssize_t regulator_num_users_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t num_users_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); return sprintf(buf, "%d\n", rdev->use_count); } static DEVICE_ATTR_RO(num_users); static ssize_t regulator_type_show(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t type_show(struct device *dev, struct device_attribute *attr, char *buf) { struct regulator_dev *rdev = dev_get_drvdata(dev); Loading @@ -509,6 +511,7 @@ static ssize_t regulator_type_show(struct device *dev, } return sprintf(buf, "unknown\n"); } static DEVICE_ATTR_RO(type); static ssize_t regulator_suspend_mem_uV_show(struct device *dev, struct device_attribute *attr, char *buf) Loading Loading @@ -632,12 +635,13 @@ static DEVICE_ATTR(bypass, 0444, * These are the only attributes are present for all regulators. * Other attributes are a function of regulator functionality. */ static struct device_attribute regulator_dev_attrs[] = { __ATTR(name, 0444, regulator_name_show, NULL), __ATTR(num_users, 0444, regulator_num_users_show, NULL), __ATTR(type, 0444, regulator_type_show, NULL), __ATTR_NULL, static struct attribute *regulator_dev_attrs[] = { &dev_attr_name.attr, &dev_attr_num_users.attr, &dev_attr_type.attr, NULL, }; ATTRIBUTE_GROUPS(regulator_dev); static void regulator_dev_release(struct device *dev) { Loading @@ -648,7 +652,7 @@ static void regulator_dev_release(struct device *dev) static struct class regulator_class = { .name = "regulator", .dev_release = regulator_dev_release, .dev_attrs = regulator_dev_attrs, .dev_groups = regulator_dev_groups, }; /* Calculate the new optimum regulator operating mode based on the new total Loading Loading @@ -1238,7 +1242,7 @@ static struct regulator_dev *regulator_dev_lookup(struct device *dev, /* Internal regulator request function */ static struct regulator *_regulator_get(struct device *dev, const char *id, int exclusive) bool exclusive) { struct regulator_dev *rdev; struct regulator *regulator = ERR_PTR(-EPROBE_DEFER); Loading Loading @@ -1344,7 +1348,7 @@ static struct regulator *_regulator_get(struct device *dev, const char *id, */ struct regulator *regulator_get(struct device *dev, const char *id) { return _regulator_get(dev, id, 0); return _regulator_get(dev, id, false); } EXPORT_SYMBOL_GPL(regulator_get); Loading Loading @@ -1405,7 +1409,7 @@ EXPORT_SYMBOL_GPL(devm_regulator_get); */ struct regulator *regulator_get_exclusive(struct device *dev, const char *id) { return _regulator_get(dev, id, 1); return _regulator_get(dev, id, true); } EXPORT_SYMBOL_GPL(regulator_get_exclusive); Loading Loading @@ -1890,7 +1894,8 @@ int regulator_disable_deferred(struct regulator *regulator, int ms) rdev->deferred_disables++; mutex_unlock(&rdev->mutex); ret = schedule_delayed_work(&rdev->disable_work, ret = queue_delayed_work(system_power_efficient_wq, &rdev->disable_work, msecs_to_jiffies(ms)); if (ret < 0) return ret; Loading Loading @@ -3835,8 +3840,11 @@ void regulator_unregister(struct regulator_dev *rdev) if (rdev == NULL) return; if (rdev->supply) if (rdev->supply) { while (rdev->use_count--) regulator_disable(rdev->supply); regulator_put(rdev->supply); } mutex_lock(®ulator_list_mutex); debugfs_remove_recursive(rdev->debugfs); flush_work(&rdev->disable_work.work); Loading
include/linux/regulator/consumer.h +5 −2 Original line number Diff line number Diff line Loading @@ -369,6 +369,9 @@ static inline int regulator_count_voltages(struct regulator *regulator) static inline int regulator_set_voltage_tol(struct regulator *regulator, int new_uV, int tol_uV) { if (regulator_set_voltage(regulator, new_uV, new_uV + tol_uV) == 0) return 0; else return regulator_set_voltage(regulator, new_uV - tol_uV, new_uV + tol_uV); } Loading