rtc: Set valid date after reset
authorMarek Vasut <marex@denx.de>
Thu, 9 Apr 2015 23:11:54 +0000 (01:11 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 23 Apr 2015 18:56:08 +0000 (14:56 -0400)
Some RTC chips tend to set garbage date after reset.
This patch sets the date to 2000-01-01 00:00 immediatelly
after the RTC chip reset is issued using the "date reset"
command.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@konsulko.com>
common/cmd_date.c

index e3491662bc5819bc837545d9ed953ff21937ad0c..4a653e5bcfab8e24c35608aa256c8c8161b2b291 100644 (file)
@@ -27,6 +27,8 @@ static const char * const weekdays[] = {
 
 int mk_date (const char *, struct rtc_time *);
 
+static struct rtc_time default_tm = { 0, 0, 0, 1, 1, 2000, 6, 0, 0 };
+
 static int do_date(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        struct rtc_time tm;
@@ -47,6 +49,9 @@ static int do_date(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (strcmp(argv[1],"reset") == 0) {
                        puts ("Reset RTC...\n");
                        rtc_reset ();
+                       rcode = rtc_set(&default_tm);
+                       if (rcode)
+                               puts("## Failed to set date after RTC reset\n");
                } else {
                        /* initialize tm with current time */
                        rcode = rtc_get (&tm);