From 23296099e70854a272fc369bab8ddcc57f27f97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Heiko=20St=C3=BCbner?= Date: Fri, 10 Apr 2015 13:48:41 +0200 Subject: regulator: output current-limit for all regulators in summary 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 Signed-off-by: Heiko Stuebner Signed-off-by: Mark Brown --- drivers/regulator/core.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'drivers/regulator') diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 5aae1bd..0ea0a01 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3967,23 +3967,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) { @@ -4011,21 +4001,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) @@ -4040,8 +4026,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(®ulator_list_mutex); -- cgit v1.1