diff options
-rw-r--r-- | drivers/rtc/rtc-armada38x.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c index 713fa0d077cd..1e9fb2876677 100644 --- a/drivers/rtc/rtc-armada38x.c +++ b/drivers/rtc/rtc-armada38x.c @@ -447,6 +447,15 @@ static int armada38x_rtc_set_offset(struct device *dev, long offset) return 0; } +static void armada38x_rtc_pre_register(struct rtc_device *rtc) +{ + /* + * The Armada 388 resets the prescaler when we write the time. + * Validated on clearfog. + */ + rtc->set_offset_nsec = 0; +} + static const struct rtc_class_ops armada38x_rtc_ops = { .read_time = armada38x_rtc_read_time, .set_time = armada38x_rtc_set_time, @@ -455,6 +464,7 @@ static const struct rtc_class_ops armada38x_rtc_ops = { .alarm_irq_enable = armada38x_rtc_alarm_irq_enable, .read_offset = armada38x_rtc_read_offset, .set_offset = armada38x_rtc_set_offset, + .pre_register = armada38x_rtc_pre_register, }; static const struct armada38x_rtc_data armada38x_data = { |