[PATCH v2] clk: make use of %pC format specifier for printing name
Ahmad Fatoum
a.fatoum at barebox.org
Tue Jun 10 00:23:24 PDT 2025
Linux has supported this format specifier for 10 years now.
So let's add support for it in barebox proper as well.
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
v1 -> v2:
- wrap struct clk * dereference into #ifdef, because definition
isn't defined globally (Sascha)
---
arch/arm/mach-at91/clock.c | 2 +-
drivers/clk/clk-divider.c | 4 ++--
drivers/clk/clk-stm32f4.c | 2 +-
drivers/clk/clk.c | 14 +++++++-------
drivers/clk/imx/clk-pll14xx.c | 4 ++--
drivers/clk/tegra/clk.c | 12 ++++++------
drivers/firmware/arm_scmi/clock.c | 4 ++--
drivers/net/macb.c | 2 +-
drivers/video/imx-ipu-v3/ipu-di.c | 4 ++--
lib/vsprintf.c | 18 +++++++++++++++++-
10 files changed, 41 insertions(+), 25 deletions(-)
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c
index a3071189bb8f..6482aa93c0bf 100644
--- a/arch/arm/mach-at91/clock.c
+++ b/arch/arm/mach-at91/clock.c
@@ -858,7 +858,7 @@ static int at91_clock_reset(void)
if (clk->mode == pmc_sys_mode)
scdr |= clk->pmc_mask;
- pr_debug("Clocks: disable unused %s\n", clk->name);
+ pr_debug("Clocks: disable unused %pC\n", clk);
}
at91_pmc_write(AT91_PMC_PCDR, pcdr);
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
index b0df34e85847..62d63ef39c7e 100644
--- a/drivers/clk/clk-divider.c
+++ b/drivers/clk/clk-divider.c
@@ -90,8 +90,8 @@ unsigned long divider_recalc_rate(struct clk *clk, unsigned long parent_rate,
div = _get_div(table, val, flags, width);
if (!div) {
WARN(!(flags & CLK_DIVIDER_ALLOW_ZERO),
- "%s: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set\n",
- clk->name);
+ "%pC: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set\n",
+ clk);
return parent_rate;
}
diff --git a/drivers/clk/clk-stm32f4.c b/drivers/clk/clk-stm32f4.c
index 22c47656c411..343ee0e6e9b5 100644
--- a/drivers/clk/clk-stm32f4.c
+++ b/drivers/clk/clk-stm32f4.c
@@ -1879,7 +1879,7 @@ static void __init stm32f4_rcc_init(struct device_node *np)
&stm32f4_clk_lock);
if (IS_ERR(hw)) {
- pr_warn("Unable to register %s clk\n", aux_clk->name);
+ pr_warn("Unable to register %pC clk\n", aux_clk);
continue;
}
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 9b21d0650b6c..ec8c06b61bfb 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -80,7 +80,7 @@ void clk_disable(struct clk *clk)
return;
if (clk->enable_count == 1 && clk->flags & CLK_IS_CRITICAL) {
- pr_warn("Disabling critical clock %s\n", clk->name);
+ pr_warn("Disabling critical clock %pC\n", clk);
return;
}
@@ -446,8 +446,8 @@ static int __bclk_register(struct clk *clk)
list_for_each_entry(c, &clks, list) {
if (!strcmp(c->name, clk->name)) {
- pr_err("%s clk %s is already registered, skipping!\n",
- __func__, clk->name);
+ pr_err("%s clk %pC is already registered, skipping!\n",
+ __func__, clk);
return -EBUSY;
}
}
@@ -1046,8 +1046,8 @@ static void dump_one_summary(struct clk *clk, int flags, int indent)
else
stat = "enabled";
- printf("%*s%s (rate %lu, enable_count: %d, %s)\n", indent * 4, "",
- clk->name,
+ printf("%*s%pC (rate %lu, enable_count: %d, %s)\n", indent * 4, "",
+ clk,
clk_get_rate(clk),
clk->enable_count,
hwstat);
@@ -1066,8 +1066,8 @@ static void dump_one_summary(struct clk *clk, int flags, int indent)
static void dump_one_json(struct clk *clk, int flags, int indent)
{
- printf("\"%s\": { \"rate\": %lu,\"enable_count\": %d",
- clk->name,
+ printf("\"%pC\": { \"rate\": %lu,\"enable_count\": %d",
+ clk,
clk_get_rate(clk),
clk->enable_count);
}
diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
index 86286448e9ef..6716a6f55560 100644
--- a/drivers/clk/imx/clk-pll14xx.c
+++ b/drivers/clk/imx/clk-pll14xx.c
@@ -261,8 +261,8 @@ static int clk_pll1443x_set_rate(struct clk_hw *hw, unsigned long drate,
rate = imx_get_pll_settings(pll, drate);
if (!rate) {
- pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
- drate, clk->name);
+ pr_err("%s: Invalid rate : %lu for pll clk %pC\n", __func__,
+ drate, clk);
return -EINVAL;
}
diff --git a/drivers/clk/tegra/clk.c b/drivers/clk/tegra/clk.c
index ad384d8d4d53..90f66f4daf87 100644
--- a/drivers/clk/tegra/clk.c
+++ b/drivers/clk/tegra/clk.c
@@ -117,23 +117,23 @@ void tegra_init_from_table(struct tegra_clk_init_table *tbl,
if (tbl->parent_id < clk_max) {
struct clk *parent = clks[tbl->parent_id];
if (clk_set_parent(clk, parent)) {
- pr_err("%s: Failed to set parent %s of %s\n",
- __func__, parent->name, clk->name);
+ pr_err("%s: Failed to set parent %pC of %pC\n",
+ __func__, parent, clk);
WARN_ON(1);
}
}
if (tbl->rate)
if (clk_set_rate(clk, tbl->rate)) {
- pr_err("%s: Failed to set rate %lu of %s\n",
- __func__, tbl->rate, clk->name);
+ pr_err("%s: Failed to set rate %lu of %pC\n",
+ __func__, tbl->rate, clk);
WARN_ON(1);
}
if (tbl->state)
if (clk_enable(clk)) {
- pr_err("%s: Failed to enable %s\n", __func__,
- clk->name);
+ pr_err("%s: Failed to enable %pC\n", __func__,
+ clk);
WARN_ON(1);
}
}
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index 2c902835a0ec..7e1e9f023496 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -197,8 +197,8 @@ iter_clk_describe_update_state(struct scmi_iterator_state *st,
if (!p->clk->rate_discrete &&
(st->num_returned != 3 || st->num_remaining != 0)) {
dev_warn(p->dev,
- "Out-of-spec CLOCK_DESCRIBE_RATES reply for %s - returned:%d remaining:%d rx_len:%zd\n",
- p->clk->name, st->num_returned, st->num_remaining,
+ "Out-of-spec CLOCK_DESCRIBE_RATES reply for %pC - returned:%d remaining:%d rx_len:%zd\n",
+ p->clk, st->num_returned, st->num_remaining,
st->rx_len);
/*
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 205e3169f17b..26bc3130bf59 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -772,7 +772,7 @@ static int fu540_c000_txclk_init(struct device *dev, struct clk **tx_clk)
return err;
}
- dev_info(dev, "Registered clk switch '%s'\n", clk->name);
+ dev_info(dev, "Registered clk switch '%pC'\n", clk);
return 0;
}
#else
diff --git a/drivers/video/imx-ipu-v3/ipu-di.c b/drivers/video/imx-ipu-v3/ipu-di.c
index 7653d512969f..80c0276ec96f 100644
--- a/drivers/video/imx-ipu-v3/ipu-di.c
+++ b/drivers/video/imx-ipu-v3/ipu-di.c
@@ -542,8 +542,8 @@ int ipu_di_init_sync_panel(struct ipu_di *di, struct ipu_di_signal_cfg *sig)
ret = clk_set_parent(&di->clk_di_pixel, parent);
if (ret) {
dev_err(di->ipu->dev,
- "setting pixel clock to parent %s failed with %d\n",
- parent->name, ret);
+ "setting pixel clock to parent %pC failed with %d\n",
+ parent, ret);
return ret;
}
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index ba87f6c210d2..409a8f02dec9 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -16,6 +16,7 @@
#include <linux/string.h>
#include <linux/ctype.h>
#include <linux/math64.h>
+#include <linux/clk.h>
#include <malloc.h>
#include <kallsyms.h>
#include <wchar.h>
@@ -310,7 +311,7 @@ char *ip4_addr_string(char *buf, const char *end, const u8 *addr, int field_widt
}
static
-char *error_string(char *buf, const char *end, const u8 *errptr, int field_width,
+char *error_string(char *buf, const char *end, const void *errptr, int field_width,
int precision, int flags, const char *fmt)
{
if (!IS_ERR(errptr))
@@ -477,6 +478,18 @@ char *device_node_string(char *buf, const char *end, const struct device_node *n
precision, flags);
}
+static noinline_for_stack
+char *clock(char *buf, const char *end, const struct clk *clk,
+ int field_width, int precision, int flags, const char *fmt)
+{
+#ifdef CONFIG_COMMON_CLK
+ if (!IS_ERR_OR_NULL(clk))
+ return string(buf, end, clk->name, field_width, precision, flags);
+#endif
+
+ return error_string(buf, end, clk, field_width, precision, flags, fmt);
+}
+
/*
* Show a '%p' thing. A kernel extension is that the '%p' is followed
* by an extra set of alphanumeric characters that are extended format
@@ -515,6 +528,7 @@ char *device_node_string(char *buf, const char *end, const struct device_node *n
* N no separator
* - 'M' For a 6-byte MAC address, it prints the address in the
* usual colon-separated hex notation
+ * - 'C' For a clock, it prints the name in the Common Clock Framework
*
* Additionally, we support following barebox-specific format specifiers:
*
@@ -575,6 +589,8 @@ static char *pointer(const char *fmt, char *buf, const char *end, const void *pt
if (IS_ENABLED(CONFIG_EFI_DEVICEPATH))
return device_path_string(buf, end, ptr, field_width, precision, flags);
break;
+ case 'C':
+ return clock(buf, end, ptr, field_width, precision, flags, fmt);
}
return raw_pointer(buf, end, ptr, field_width, precision, flags);
--
2.39.5
More information about the barebox
mailing list