pinctrl: pinconf-generic: Print unsigned value if a format is registered
authorClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Wed, 5 Feb 2025 10:10:58 +0000 (12:10 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 6 Feb 2025 09:13:15 +0000 (10:13 +0100)
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>
Link: https://lore.kernel.org/20250205101058.2034860-1-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinconf-generic.c

index 0b13d7f17b32563ca82ef8c428920cea8bf14618..42547f64453e85b1d370a92b78e3af58752ae7e8 100644 (file)
@@ -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);
                }
        }
 }