Skip to content

Commit

Permalink
clocksource: Put nodes passed to CLOCKSOURCE_OF_DECLARE callbacks cen…
Browse files Browse the repository at this point in the history
…trally

Instead of letting each driver call of_node_put do it centrally in the
loop that also calls the CLOCKSOURCE_OF_DECLARE callbacks. This is less
prone to error and also moves getting and putting the references into the
same function.

Consequently all respective of_node_put calls in drivers are removed.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: David Brown <davidb@codeaurora.org>
  • Loading branch information
Uwe Kleine-König authored and Daniel Lezcano committed Oct 2, 2013
1 parent fa94bd5 commit 326e31e
Show file tree
Hide file tree
Showing 5 changed files with 1 addition and 9 deletions.
1 change: 0 additions & 1 deletion arch/arm/mach-msm/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,6 @@ static void __init msm_dt_timer_init(struct device_node *np)
pr_err("Unknown frequency\n");
return;
}
of_node_put(np);

event_base = base + 0x4;
sts_base = base + 0x88;
Expand Down
1 change: 1 addition & 0 deletions drivers/clocksource/clksrc-of.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@ void __init clocksource_of_init(void)
for_each_matching_node_and_match(np, __clksrc_of_table, &match) {
init_func = match->data;
init_func(np);
of_node_put(np);
}
}
2 changes: 0 additions & 2 deletions drivers/clocksource/dw_apb_timer_of.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,10 @@ static void __init dw_apb_timer_init(struct device_node *timer)
case 0:
pr_debug("%s: found clockevent timer\n", __func__);
add_clockevent(timer);
of_node_put(timer);
break;
case 1:
pr_debug("%s: found clocksource timer\n", __func__);
add_clocksource(timer);
of_node_put(timer);
init_sched_clock();
break;
default:
Expand Down
4 changes: 0 additions & 4 deletions drivers/clocksource/tegra20_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,6 @@ static void __init tegra20_init_timer(struct device_node *np)
rate = clk_get_rate(clk);
}

of_node_put(np);

switch (rate) {
case 12000000:
timer_writel(0x000b, TIMERUS_USEC_CFG);
Expand Down Expand Up @@ -241,8 +239,6 @@ static void __init tegra20_init_rtc(struct device_node *np)
else
clk_prepare_enable(clk);

of_node_put(np);

register_persistent_clock(NULL, tegra_read_persistent_clock);
}
CLOCKSOURCE_OF_DECLARE(tegra20_rtc, "nvidia,tegra20-rtc", tegra20_init_rtc);
Expand Down
2 changes: 0 additions & 2 deletions drivers/clocksource/vt8500_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,12 @@ static void __init vt8500_timer_init(struct device_node *np)
if (!regbase) {
pr_err("%s: Missing iobase description in Device Tree\n",
__func__);
of_node_put(np);
return;
}
timer_irq = irq_of_parse_and_map(np, 0);
if (!timer_irq) {
pr_err("%s: Missing irq description in Device Tree\n",
__func__);
of_node_put(np);
return;
}

Expand Down

0 comments on commit 326e31e

Please sign in to comment.