rtc: sh: stop resetting time to epoch
authorAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 20 Mar 2019 11:30:08 +0000 (12:30 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 4 Apr 2019 08:07:09 +0000 (10:07 +0200)
There is no point in resetting the time to epoch as this means that
userspace will never get the valuable information that time is actually
invalid.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
[Anders Roxell <anders.roxell@linaro.org>: remove unused variable r]
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-sh.c

index d417b203cbc553eb25ab0cbf0eb493bcd84c9d46..7fffe6da947838b043ae90d1908f06996f6c9fd1 100644 (file)
@@ -276,6 +276,9 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
        struct sh_rtc *rtc = dev_get_drvdata(dev);
        unsigned int sec128, sec2, yr, yr100, cf_bit;
 
+       if (!(readb(rtc->regbase + RCR2) & RCR2_RTCEN))
+               return -EINVAL;
+
        do {
                unsigned int tmp;
 
@@ -466,7 +469,6 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
 {
        struct sh_rtc *rtc;
        struct resource *res;
-       struct rtc_time r;
        char clk_name[6];
        int clk_id, ret;
 
@@ -600,12 +602,6 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
 
        rtc->rtc_dev->max_user_freq = 256;
 
-       /* reset rtc to epoch 0 if time is invalid */
-       if (rtc_read_time(rtc->rtc_dev, &r) < 0) {
-               rtc_time_to_tm(0, &r);
-               rtc_set_time(rtc->rtc_dev, &r);
-       }
-
        device_init_wakeup(&pdev->dev, 1);
        return 0;