[PATCH 1/2] timer: vt8500: Move system timer to clocksource
Joe Perches
joe at perches.com
Thu Jan 3 02:45:14 EST 2013
On Wed, 2013-01-02 at 23:35 -0800, Dmitry Torokhov wrote:
> On Thu, Jan 03, 2013 at 04:25:09PM +1300, Tony Prisk wrote:
> > +static void __init vt8500_timer_init(void)
> > +{
> > + struct device_node *np;
> > + int timer_irq;
> > +
> > + np = of_find_matching_node(NULL, vt8500_timer_ids);
> > + if (!np) {
> > + pr_err("%s: Timer description missing from Device Tree\n",
> > + __func__);
> > + return;
> > + }
> > + regbase = of_iomap(np, 0);
> > + 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;
>
> You are forgetting to unmap the regbase here.
Also I think it'd be nicer to write something like:
struct device_node *np;
int timer_irq;
const char *reason;
np = of_find_matching_node(NULL, vt8500_timer_ids);
if (!np) {
reason = "timer";
goto error;
}
regbase = of_iomap(np, 0);
if (!regbase) {
reason = "iobase";
goto error_put;
}
timer_irq = irq_of_parse_and_map(np, 0);
if (!timer_irq) {
reason = "irq";
goto error_remap;
}
...
error_remap:
unmap...;
error_put:
of_node_put(np);
error:
pr_err("%s: Missing %s description in Device Tree\n",
__func__, reason);
return;
More information about the linux-arm-kernel
mailing list