drivers/rtc/rtc-twl.c: fix rtc_reg_map initialization
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Wed, 3 Jul 2013 22:07:55 +0000 (15:07 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Jul 2013 23:08:00 +0000 (16:08 -0700)
Initialize the rtc_reg_map in platform_driver's probe function instead at
module_init time.  This way we can make sure that the twl-core has been
already probed and initialized (twl_priv->twl_id is valid) since the
platform device for the RTC driver will be created by the twl-core after
it finished its init.

Reported-by: Christoph Fritz <chf.fritz@googlemail.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Kevin Hilman <khilman@linaro.org>
Tested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/rtc/rtc-twl.c

index 3614874..8a04044 100644 (file)
@@ -481,6 +481,12 @@ static int twl_rtc_probe(struct platform_device *pdev)
        if (irq <= 0)
                goto out1;
 
+       /* Initialize the register map */
+       if (twl_class_is_4030())
+               rtc_reg_map = (u8 *)twl4030_rtc_reg_map;
+       else
+               rtc_reg_map = (u8 *)twl6030_rtc_reg_map;
+
        ret = twl_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG);
        if (ret < 0)
                goto out1;
@@ -622,11 +628,6 @@ static struct platform_driver twl4030rtc_driver = {
 
 static int __init twl_rtc_init(void)
 {
-       if (twl_class_is_4030())
-               rtc_reg_map = (u8 *) twl4030_rtc_reg_map;
-       else
-               rtc_reg_map = (u8 *) twl6030_rtc_reg_map;
-
        return platform_driver_register(&twl4030rtc_driver);
 }
 module_init(twl_rtc_init);