diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-10 15:33:20 +0100 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2008-10-13 21:51:53 +0100 |
commit | bc558a60b58f638ee0188affb627d4894a97b1c7 (patch) | |
tree | cbcf03b7f599dd182565be04b5f3d706f5de1c88 | |
parent | 42fad570b666256a3fd009e23e74cbb365a29ca8 (diff) |
regulator: Export regulator name via sysfs
Provide a new file 'name' in the regulator sysfs class with a human
readable name for the regulator for use in applications.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r-- | Documentation/ABI/testing/sysfs-class-regulator | 13 | ||||
-rw-r--r-- | drivers/regulator/core.c | 18 |
2 files changed, 31 insertions, 0 deletions
diff --git a/Documentation/ABI/testing/sysfs-class-regulator b/Documentation/ABI/testing/sysfs-class-regulator index 84e66fdad028..3731f6f29bcb 100644 --- a/Documentation/ABI/testing/sysfs-class-regulator +++ b/Documentation/ABI/testing/sysfs-class-regulator @@ -157,6 +157,19 @@ Description: platform code. +What: /sys/class/regulator/.../name +Date: October 2008 +KernelVersion: 2.6.28 +Contact: Liam Girdwood <lrg@slimlogic.co.uk> +Description: + Each regulator directory will contain a field called + name. This holds a string identifying the regulator for + display purposes. + + NOTE: this will be empty if no suitable name is provided + by platform or regulator drivers. + + What: /sys/class/regulator/.../num_users Date: April 2008 KernelVersion: 2.6.26 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 9a6757decd3d..02a774424e8d 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -241,6 +241,22 @@ static ssize_t regulator_uA_show(struct device *dev, return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev)); } +static ssize_t regulator_name_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct regulator_dev *rdev = dev_get_drvdata(dev); + const char *name; + + if (rdev->constraints->name) + name = rdev->constraints->name; + else if (rdev->desc->name) + name = rdev->desc->name; + else + name = ""; + + return sprintf(buf, "%s\n", name); +} + static ssize_t regulator_opmode_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -473,7 +489,9 @@ static ssize_t regulator_suspend_standby_state_show(struct device *dev, else return sprintf(buf, "disabled\n"); } + static struct device_attribute regulator_dev_attrs[] = { + __ATTR(name, 0444, regulator_name_show, NULL), __ATTR(microvolts, 0444, regulator_uV_show, NULL), __ATTR(microamps, 0444, regulator_uA_show, NULL), __ATTR(opmode, 0444, regulator_opmode_show, NULL), |