[PATCH] pinctrl: pinconf-generic: Print unsigned value if a format is registered

Claudiu posted 1 patch 1 year ago
drivers/pinctrl/pinconf-generic.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] pinctrl: pinconf-generic: Print unsigned value if a format is registered
Posted by Claudiu 1 year ago
From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>

Commit 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")
unconditionally switched to printing hex values in
pinconf_generic_dump_one(). However, if a dump format is registered for the
dumped pin, the hex value is printed as well. This hex value does not
necessarily correspond 1:1 with the hardware register value (as noted by
commit 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")). As a
result, user-facing output may include information like:
output drive strength (0x100 uA).

To address this, check if a dump format is registered for the dumped
property, and print the unsigned value instead when applicable.

Fixes: 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
---
 drivers/pinctrl/pinconf-generic.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c
index 0b13d7f17b32..42547f64453e 100644
--- a/drivers/pinctrl/pinconf-generic.c
+++ b/drivers/pinctrl/pinconf-generic.c
@@ -89,12 +89,12 @@ static void pinconf_generic_dump_one(struct pinctrl_dev *pctldev,
 		seq_puts(s, items[i].display);
 		/* Print unit if available */
 		if (items[i].has_arg) {
-			seq_printf(s, " (0x%x",
-				   pinconf_to_config_argument(config));
+			u32 val = pinconf_to_config_argument(config);
+
 			if (items[i].format)
-				seq_printf(s, " %s)", items[i].format);
+				seq_printf(s, " (%u %s)", val, items[i].format);
 			else
-				seq_puts(s, ")");
+				seq_printf(s, " (0x%x)", val);
 		}
 	}
 }
-- 
2.43.0
Re: [PATCH] pinctrl: pinconf-generic: Print unsigned value if a format is registered
Posted by Linus Walleij 1 year ago
On Wed, Feb 5, 2025 at 11:11 AM Claudiu <claudiu.beznea@tuxon.dev> wrote:

> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>
> Commit 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")
> unconditionally switched to printing hex values in
> pinconf_generic_dump_one(). However, if a dump format is registered for the
> dumped pin, the hex value is printed as well. This hex value does not
> necessarily correspond 1:1 with the hardware register value (as noted by
> commit 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")). As a
> result, user-facing output may include information like:
> output drive strength (0x100 uA).
>
> To address this, check if a dump format is registered for the dumped
> property, and print the unsigned value instead when applicable.
>
> Fixes: 3ba11e684d16 ("pinctrl: pinconf-generic: print hex value")
> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>

Patch applied!

Yours,
Linus Walleij