Hi, On 08/11/2017 at 17:16:15 +0800, Baolin Wang wrote: > +static int sprd_rtc_read_time(struct device *dev, struct rtc_time *tm) > +{ > + struct sprd_rtc *rtc = dev_get_drvdata(dev); > + time64_t secs; > + int ret; > + I would have expected a check for SPRD_RTC_POWER_RESET_FLAG here. > + ret = sprd_rtc_get_secs(rtc, SPRD_RTC_TIME, &secs); > + if (ret) > + return ret; > + > + rtc_time64_to_tm(secs, tm); > + return rtc_valid_tm(tm); > +} > + > +static int sprd_rtc_set_time(struct device *dev, struct rtc_time *tm) > +{ > + struct sprd_rtc *rtc = dev_get_drvdata(dev); > + time64_t secs = rtc_tm_to_time64(tm); > + And you need to reset SPRD_RTC_POWER_RESET_FLAG here > + return sprd_rtc_set_secs(rtc, SPRD_RTC_TIME, secs); > +} > + -- Alexandre Belloni, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html