MA-9554[Android_6DL_SD]RTC: Sometimes the RTC reset to the initial time 1970 after...
authorZhang Bo <bo.zhang@nxp.com>
Thu, 7 Sep 2017 10:57:57 +0000 (18:57 +0800)
committerJason Liu <jason.hui.liu@nxp.com>
Thu, 2 Nov 2017 18:37:17 +0000 (02:37 +0800)
RTC timer is default disabled after power off and bootup again. it will be
enabled in kernel rtc driver init. But rtc time is shorter than system clock,
so rtc time cannot update to system clock in rtc_hctosys(), and the sysfs
file /sys/class/rtc/rtc0/hctosys cat result is 0. Android AlarmManagerService
cannot work normally when hctosys is 0.
Enable RTC in u-boot so the time in RTC timer is longer than system clock.

Change-Id: Ie8b1c1b36e5ab48031efe44dd06468ac35ca3d3b
Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
arch/arm/cpu/armv7/mx6/soc.c
arch/arm/cpu/armv7/mx7/soc.c
arch/arm/cpu/armv7/mx7ulp/soc.c

index 86090b6..d2db736 100644 (file)
@@ -810,6 +810,10 @@ void s_init(void)
        u32 mask528;
        u32 reg, periph1, periph2;
 
+#if defined(CONFIG_ANDROID_SUPPORT)
+        /* Enable RTC */
+        writel(0x21, 0x020cc038);
+#endif
        if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sll())
                return;
 
index 58fceae..3fea6df 100644 (file)
@@ -483,6 +483,10 @@ void s_init(void)
        /* clock configuration. */
        clock_init();
 
+#if defined(CONFIG_ANDROID_SUPPORT)
+        /* Enable RTC */
+        writel(0x21, 0x30370038);
+#endif
        return;
 }
 
index 2cd16c8..888aacc 100644 (file)
@@ -151,6 +151,10 @@ void s_init(void)
        /* enable dumb pmic */
        writel((readl(SNVS_LP_LPCR) | 0x20), SNVS_LP_LPCR);
 
+#if defined(CONFIG_ANDROID_SUPPORT)
+        /* Enable RTC */
+        writel(0x21, 0x40230038);
+#endif
        return;
 }