clocksource: Convert to using %pOF instead of full_name
Subsystems (2)
PATCH 1/1 clocksource: Convert to using %pOF instead of full_name
Now that we have a custom printf format specifier, convert users of full_name to use %pOF instead. This is preparation to remove storing of the full path string for each node.
--- drivers/clocksource/tango_xtal.c | 6 +++--- drivers/clocksource/timer-of.c | 11 +++++------ drivers/clocksource/timer-probe.c | 3 +-- drivers/clocksource/timer-stm32.c | 8 ++++---- 4 files changed, 13 insertions(+), 15 deletions(-)
drivers/clocksource/tango_xtal.c +3 -3
@@ -26,13 +26,13 @@ static int __init tango_clocksource_init(struct device_node *np) xtal_in_cnt =of_iomap (np,0 );if (xtal_in_cnt ==NULL ) { -pr_err ("%s: invalid address\n" , np->full_name); +pr_err ("%pOF: invalid address\n" , np);return -ENXIO ; } clk =of_clk_get (np,0 );if (IS_ERR (clk)) { -pr_err ("%s: invalid clock\n" , np->full_name); +pr_err ("%pOF: invalid clock\n" , np);return PTR_ERR (clk); }
@@ -43,7 +43,7 @@ static int __init tango_clocksource_init(struct device_node *np) ret =clocksource_mmio_init (xtal_in_cnt,"tango-xtal" , xtal_freq,350 ,32 , clocksource_mmio_readl_up);if (ret) { -pr_err ("%s: registration failed\n" , np->full_name); +pr_err ("%pOF: registration failed\n" , np);return ret; }
drivers/clocksource/timer-of.c +5 -6
@@ -44,7 +44,7 @@ static __init int timer_irq_init(struct device_node *np, of_irq->irq = of_irq->name ?of_irq_get_byname (np, of_irq->name):irq_of_parse_and_map (np, of_irq->index);if (!of_irq->irq) { -pr_err ("Failed to map interrupt for %s\n" , np->full_name); +pr_err ("Failed to map interrupt for %pOF\n" , np);return -EINVAL ; }
@@ -55,8 +55,7 @@ static __init int timer_irq_init(struct device_node *np, of_irq->flags ? of_irq->flags :IRQF_TIMER , np->full_name, clkevt);if (ret) { -pr_err ("Failed to request irq %d for %s\n" , of_irq->irq, - np->full_name); +pr_err ("Failed to request irq %d for %pOF\n" , of_irq->irq, np);return ret; }
@@ -80,20 +79,20 @@ static __init int timer_clk_init(struct device_node *np, of_clk->clk = of_clk->name ?of_clk_get_by_name (np, of_clk->name) :of_clk_get (np, of_clk->index);if (IS_ERR (of_clk->clk)) { -pr_err ("Failed to get clock for %s\n" , np->full_name); +pr_err ("Failed to get clock for %pOF\n" , np);return PTR_ERR (of_clk->clk); } ret =clk_prepare_enable (of_clk->clk);if (ret) { -pr_err ("Failed for enable clock for %s\n" , np->full_name); +pr_err ("Failed for enable clock for %pOF\n" , np); goto out_clk_put; } of_clk->rate =clk_get_rate (of_clk->clk);if (!of_clk->rate) { ret = -EINVAL ; -pr_err ("Failed to get clock rate for %s\n" , np->full_name); +pr_err ("Failed to get clock rate for %pOF\n" , np); goto out_clk_disable; }
drivers/clocksource/timer-probe.c +1 -2
@@ -40,8 +40,7 @@ void __init timer_probe(void) ret =init_func_ret (np);if (ret) { -pr_err ("Failed to initialize '%s': %d\n" , -of_node_full_name (np), ret); +pr_err ("Failed to initialize '%pOF': %d\n" , np, ret);continue ; }
drivers/clocksource/timer-stm32.c +4 -4
@@ -138,7 +138,7 @@ static int __init stm32_clockevent_init(struct device_node *np) irq =irq_of_parse_and_map (np,0 );if (!irq) { ret = -EINVAL ; -pr_err ("%s: failed to get irq.\n" , np->full_name); +pr_err ("%pOF: failed to get irq.\n" , np); goto err_get_irq; }
@@ -168,12 +168,12 @@ static int __init stm32_clockevent_init(struct device_node *np) ret =request_irq (irq, stm32_clock_event_handler,IRQF_TIMER ,"stm32 clockevent" , data);if (ret) { -pr_err ("%s: failed to request irq.\n" , np->full_name); +pr_err ("%pOF: failed to request irq.\n" , np); goto err_get_irq; } -pr_info ("%s: STM32 clockevent driver initialized (%d bits)\n" , - np->full_name, bits); +pr_info ("%pOF: STM32 clockevent driver initialized (%d bits)\n" , + np, bits);return ret;
--
2.11.0
Quoted 3 lines · Rob Herring
Now that we have a custom printf format specifier, convert users of
full_nameto use %pOF instead. This is preparation to remove storing of the full path string for each node.
Nice. For my own reference:
http://elixir.free-electrons.com/linux/v4.13-rc1/source/Documentation/printk-formats.txt#L349
About removing the full path. Does this mean that ultimately %pOF will print just the name? And the 'f' spec will disappear?
Is this done to save memory?
Quoted 35 lines
Signed-off-by Rob Herring <[email protected]>Cc Daniel Lezcano <[email protected]>Cc Thomas Gleixner <[email protected]>Cc Marc Gonzalez <[email protected]>Cc Maxime Coquelin <[email protected]>Cc Alexandre Torgue <[email protected]>Cc linux-arm-kernel at lists.infradead.org--- drivers/clocksource/tango_xtal.c | 6 +++--- drivers/clocksource/timer-of.c | 11 +++++------ drivers/clocksource/timer-probe.c | 3 +-- drivers/clocksource/timer-stm32.c | 8 ++++---- 4 files changed, 13 insertions(+), 15 deletions(-)drivers/clocksource/tango_xtal.c +2
-2@@ -26,13 +26,13 @@ static int __init tango_clocksource_init(struct device_node *np) xtal_in_cnt =of_iomap (np,0 );if (xtal_in_cnt ==NULL ) { -pr_err ("%s: invalid address\n" , np->full_name); +pr_err ("%pOF: invalid address\n" , np);return -ENXIO ; } clk =of_clk_get (np,0 );if (IS_ERR (clk)) { -pr_err ("%s: invalid clock\n" , np->full_name); +pr_err ("%pOF: invalid clock\n" , np);return PTR_ERR (clk); }
drivers/clocksource/tango_xtal.c static int __init tango_clocksource_init(struct device_node *np) · line 48
Quoted 7 lines
drivers/clocksource/tango_xtal.c +1
-1@@ -43,7 +43,7 @@ static int __init tango_clocksource_init(struct device_node *np) ret =clocksource_mmio_init (xtal_in_cnt,"tango-xtal" , xtal_freq,350 ,32 , clocksource_mmio_readl_up);if (ret) { -pr_err ("%s: registration failed\n" , np->full_name); +pr_err ("%pOF: registration failed\n" , np);return ret; }
For drivers/clocksource/tango_xtal.c
Regards.
Quoted 11 lines · Marc Gonzalez
Quoted 3 lines · Rob Herring
Now that we have a custom printf format specifier, convert users of
full_nameto use %pOF instead. This is preparation to remove storing of the full path string for each node.Nice. For my own reference:
http://elixir.free-electrons.com/linux/v4.13-rc1/source/Documentation/printk-formats.txt#L349About removing the full path. Does this mean that ultimately %pOF will print just the name? And the 'f' spec will disappear?
No, the vsprintf code is already designed to print the full path whether full_name is the full path or just the basename. %pOF is just the default. "f" is needed so you can combine it with the other specifiers.
Quoted 1 line
Is this done to save memory?
Yes. That's the next step.
Rob
Hi Rob,
Quoted 11 lines · Rob Herring
Now that we have a custom printf format specifier, convert users of
full_nameto use %pOF instead. This is preparation to remove storing of the full path string for each node.Signed-off-by Rob Herring <[email protected]>Cc Daniel Lezcano <[email protected]>Cc Thomas Gleixner <[email protected]>Cc Marc Gonzalez <[email protected]>Cc Maxime Coquelin <[email protected]>Cc Alexandre Torgue <[email protected]>Cc linux-arm-kernel at lists.infradead.org
Quoted 6 lines
--- drivers/clocksource/tango_xtal.c | 6 +++--- drivers/clocksource/timer-of.c | 11 +++++------ drivers/clocksource/timer-probe.c | 3 +-- drivers/clocksource/timer-stm32.c | 8 ++++---- 4 files changed, 13 insertions(+), 15 deletions(-)
For timer-stm32:
regards
Alex
Quoted 123 lines
drivers/clocksource/tango_xtal.c +3
-3@@ -26,13 +26,13 @@ static int __init tango_clocksource_init(struct device_node *np) xtal_in_cnt =of_iomap (np,0 );if (xtal_in_cnt ==NULL ) { -pr_err ("%s: invalid address\n" , np->full_name); +pr_err ("%pOF: invalid address\n" , np);return -ENXIO ; } clk =of_clk_get (np,0 );if (IS_ERR (clk)) { -pr_err ("%s: invalid clock\n" , np->full_name); +pr_err ("%pOF: invalid clock\n" , np);return PTR_ERR (clk); }@@ -43,7 +43,7 @@ static int __init tango_clocksource_init(struct device_node *np) ret =clocksource_mmio_init (xtal_in_cnt,"tango-xtal" , xtal_freq,350 ,32 , clocksource_mmio_readl_up);if (ret) { -pr_err ("%s: registration failed\n" , np->full_name); +pr_err ("%pOF: registration failed\n" , np);return ret; }drivers/clocksource/timer-of.c +5
-6@@ -44,7 +44,7 @@ static __init int timer_irq_init(struct device_node *np, of_irq->irq = of_irq->name ?of_irq_get_byname (np, of_irq->name):irq_of_parse_and_map (np, of_irq->index);if (!of_irq->irq) { -pr_err ("Failed to map interrupt for %s\n" , np->full_name); +pr_err ("Failed to map interrupt for %pOF\n" , np);return -EINVAL ; }@@ -55,8 +55,7 @@ static __init int timer_irq_init(struct device_node *np, of_irq->flags ? of_irq->flags :IRQF_TIMER , np->full_name, clkevt);if (ret) { -pr_err ("Failed to request irq %d for %s\n" , of_irq->irq, - np->full_name); +pr_err ("Failed to request irq %d for %pOF\n" , of_irq->irq, np);return ret; }@@ -80,20 +79,20 @@ static __init int timer_clk_init(struct device_node *np, of_clk->clk = of_clk->name ?of_clk_get_by_name (np, of_clk->name) :of_clk_get (np, of_clk->index);if (IS_ERR (of_clk->clk)) { -pr_err ("Failed to get clock for %s\n" , np->full_name); +pr_err ("Failed to get clock for %pOF\n" , np);return PTR_ERR (of_clk->clk); } ret =clk_prepare_enable (of_clk->clk);if (ret) { -pr_err ("Failed for enable clock for %s\n" , np->full_name); +pr_err ("Failed for enable clock for %pOF\n" , np); goto out_clk_put; } of_clk->rate =clk_get_rate (of_clk->clk);if (!of_clk->rate) { ret = -EINVAL ; -pr_err ("Failed to get clock rate for %s\n" , np->full_name); +pr_err ("Failed to get clock rate for %pOF\n" , np); goto out_clk_disable; }drivers/clocksource/timer-probe.c +1
-2@@ -40,8 +40,7 @@ void __init timer_probe(void) ret =init_func_ret (np);if (ret) { -pr_err ("Failed to initialize '%s': %d\n" , -of_node_full_name (np), ret); +pr_err ("Failed to initialize '%pOF': %d\n" , np, ret);continue ; }drivers/clocksource/timer-stm32.c +4
-5@@ -138,7 +138,7 @@ static int __init stm32_clockevent_init(struct device_node *np) irq =irq_of_parse_and_map (np,0 );if (!irq) { ret = -EINVAL ; -pr_err ("%s: failed to get irq.\n" , np->full_name); +pr_err ("%pOF: failed to get irq.\n" , np); goto err_get_irq; }@@ -168,12 +168,12 @@ static int __init stm32_clockevent_init(struct device_node *np) ret =request_irq (irq, stm32_clock_event_handler,IRQF_TIMER ,"stm32 clockevent" , data);if (ret) { -pr_err ("%s: failed to request irq.\n" , np->full_name); +pr_err ("%pOF: failed to request irq.\n" , np); goto err_get_irq; } -pr_info ("%s: STM32 clockevent driver initialized (%d bits)\n" , - np->full_name, bits); +pr_info ("%pOF: STM32 clockevent driver initialized (%d bits)\n" , + np, bits);return ret; --2.11.0