The sync_cmos_clock function in kernel/time/ntp.c first tries to update the internal clock of the cpu by calling the "update_persistent_clock64" architecture specific function. If this returns -ENODEV, it then tries to update an external RTC using "rtc_set_ntp_time". On the mips architecture, the weak implementation of the underlying function would return 0 if it wasn't overridden. This meant that the sync_cmos_clock function would never try to update an external RTC (if both CONFIG_GENERIC_CMOS_UPDATE and CONFIG_RTC_SYSTOHC are configured) Returning -ENODEV instead, means that an external RTC will be tried.
Unified · Split
| @@ -36,7 +36,7 @@ EXPORT_SYMBOL(rtc_lock); · 35 unmodified lines | |||
| 36 | 36 | ||
| 37 | int __weak rtc_mips_set_time(unsigned long sec) | 37 | int __weak rtc_mips_set_time(unsigned long sec) |
| 38 | { | 38 | { |
| 39 | return 0; | 39 | return -ENODEV; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | int __weak rtc_mips_set_mmss(unsigned long nowtime) | 42 | int __weak rtc_mips_set_mmss(unsigned long nowtime) |