regulator: output current-limit for all regulators in summary

A patch from »regulator: output current-limit for all regulators in summary« in state Mainline for linux-kernel

From: Heiko Stuebner <heiko@...> Date: Fri, 10 Apr 2015 13:29:09 +0200

Commit-Message

Voltage regulators can have (unregulated) current limits too, so we should probably output both voltage and current for all regulators. Holding the rdev->mutex actually conflicts with _regulator_get_current_limit but also is not really necessary, as the global regulator_list_mutex already protects us from the regulator vanishing while we go through the list. On the rk3288-firefly the summary now looks like: regulator use open bypass voltage current min max ------------------------------------------------------------------------------- vcc_sys 0 12 0 5000mV 0mA 5000mV 5000mV vcc_lan 1 1 0 3300mV 0mA 3300mV 3300mV ff290000.ethernet 0mV 0mV vcca_33 0 0 0 3300mV 0mA 3300mV 3300mV vcca_18 0 0 0 1800mV 0mA 1800mV 1800mV vdd10_lcd 0 0 0 1000mV 0mA 1000mV 1000mV [...] Suggested-by: Mark Brown <broonie@...> Signed-off-by: Heiko Stuebner <heiko@...>

Patch-Comment

drivers/regulator/core.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-)

Statistics

  • 5 lines added
  • 19 lines removed

Changes

--------------------------- drivers/regulator/core.c ---------------------------
index fb2c8d5..2cf51f4 100644
@@ -3949,23 +3949,13 @@ static void regulator_summary_show_subtree(struct seq_file *s,
if (!rdev)
return;
- mutex_lock(&rdev->mutex);
-
seq_printf(s, "%*s%-*s %3d %4d %6d ",
level * 3 + 1, "",
30 - level * 3, rdev_get_name(rdev),
rdev->use_count, rdev->open_count, rdev->bypass_count);
- switch (rdev->desc->type) {
- case REGULATOR_VOLTAGE:
- seq_printf(s, "%5dmV ",
- _regulator_get_voltage(rdev) / 1000);
- break;
- case REGULATOR_CURRENT:
- seq_printf(s, "%5dmA ",
- _regulator_get_current_limit(rdev) / 1000);
- break;
- }
+ seq_printf(s, "%5dmV ", _regulator_get_voltage(rdev) / 1000);
+ seq_printf(s, "%5dmA ", _regulator_get_current_limit(rdev) / 1000);
c = rdev->constraints;
if (c) {
@@ -3993,21 +3983,17 @@ static void regulator_summary_show_subtree(struct seq_file *s,
switch (rdev->desc->type) {
case REGULATOR_VOLTAGE:
- seq_printf(s, "%29dmV %5dmV",
+ seq_printf(s, "%37dmV %5dmV",
consumer->min_uV / 1000,
consumer->max_uV / 1000);
break;
case REGULATOR_CURRENT:
- seq_printf(s, "%37dmA",
- regulator_get_current_limit(consumer) / 1000);
break;
}
seq_puts(s, "\n");
}
- mutex_unlock(&rdev->mutex);
-
list_for_each_entry(child, list, list) {
/* handle only non-root regulators supplied by current rdev */
if (!child->supply || child->supply->rdev != rdev)
@@ -4022,8 +4008,8 @@ static int regulator_summary_show(struct seq_file *s, void *data)
struct list_head *list = s->private;
struct regulator_dev *rdev;
- seq_puts(s, " regulator use open bypass value min max\n");
- seq_puts(s, "-----------------------------------------------------------------------\n");
+ seq_puts(s, " regulator use open bypass voltage current min max\n");
+ seq_puts(s, "-------------------------------------------------------------------------------\n");
mutex_lock(&regulator_list_mutex);
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...