clocksource: sh_cmt: Initialize 'max_match_value' and 'lock' in sh_cmt_setup()
authorMagnus Damm <damm@opensource.se>
Fri, 14 Dec 2012 05:53:41 +0000 (14:53 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Tue, 12 Mar 2013 17:24:36 +0000 (02:24 +0900)
Move the setup of spinlock and max_match_value to sh_cmt_setup().
There's no need to defer those steps until sh_cmt_register().

Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com>
Signed-off-by: Magnus Damm <damm@opensource.se>
Acked-by: John Stultz <john.stultz@linaro.org>
Tested-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
drivers/clocksource/sh_cmt.c

index 4b8d296..2e49684 100644 (file)
@@ -625,14 +625,6 @@ static int sh_cmt_register(struct sh_cmt_priv *p, char *name,
                           unsigned long clockevent_rating,
                           unsigned long clocksource_rating)
 {
-       if (p->width == (sizeof(p->max_match_value) * 8))
-               p->max_match_value = ~0;
-       else
-               p->max_match_value = (1 << p->width) - 1;
-
-       p->match_value = p->max_match_value;
-       raw_spin_lock_init(&p->lock);
-
        if (clockevent_rating)
                sh_cmt_register_clockevent(p, name, clockevent_rating);
 
@@ -703,6 +695,14 @@ static int sh_cmt_setup(struct sh_cmt_priv *p, struct platform_device *pdev)
                p->clear_bits = ~0xc000;
        }
 
+       if (p->width == (sizeof(p->max_match_value) * 8))
+               p->max_match_value = ~0;
+       else
+               p->max_match_value = (1 << p->width) - 1;
+
+       p->match_value = p->max_match_value;
+       raw_spin_lock_init(&p->lock);
+
        ret = sh_cmt_register(p, (char *)dev_name(&p->pdev->dev),
                              cfg->clockevent_rating,
                              cfg->clocksource_rating);