drivers/rtc/rtc-tps65910.c: enable RTC power domain on initialization
authorKim, Milo <Milo.Kim@ti.com>
Tue, 18 Dec 2012 00:02:51 +0000 (16:02 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Dec 2012 01:15:21 +0000 (17:15 -0800)
Enabling RTC HW block depends on the default value of TPS65910 register.
In some mode, RTC block is disabled by default.(eg.  AM3517 Craneboard) In
this case, RTC_PWDN(RTC power down) bit should be cleared to enable the
RTC HW block.

This patch also works in case that RTC block is active by default, because
there is no side effect even if the bit is updated again.

Tested on AM3517 Craneboard.

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Acked-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Sivaram Nair <sivaramn@nvidia.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/rtc/rtc-tps65910.c

index 687006f..22eb4eb 100644 (file)
@@ -247,6 +247,13 @@ static int __devinit tps65910_rtc_probe(struct platform_device *pdev)
                return ret;
 
        dev_dbg(&pdev->dev, "Enabling rtc-tps65910.\n");
+
+       /* Enable RTC digital power domain */
+       ret = regmap_update_bits(tps65910->regmap, TPS65910_DEVCTRL,
+               DEVCTRL_RTC_PWDN_MASK, 0 << DEVCTRL_RTC_PWDN_SHIFT);
+       if (ret < 0)
+               return ret;
+
        rtc_reg = TPS65910_RTC_CTRL_STOP_RTC;
        ret = regmap_write(tps65910->regmap, TPS65910_RTC_CTRL, rtc_reg);
        if (ret < 0)