On 2019/10/20 6:04, Alexandre Belloni wrote: > On 15/10/2019 16:08:27+0800, Jinke Fan wrote: >> save_freq_select = CMOS_READ(RTC_FREQ_SELECT); >> - CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT); >> + >> +#ifdef CONFIG_X86 >> + if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD || >> + boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) >> + CMOS_WRITE((save_freq_select & (~RTC_DV0)), RTC_FREQ_SELECT); > > This should probably use ~RTC_DIV_RESET2. Yes, ~RTC_DIV_RESET2 can actually achieve the same effect, because of bit5-bit6 is defined as reserved. >> + else >> + CMOS_WRITE((save_freq_select | RTC_DIV_RESET2), RTC_FREQ_SELECT); >> +#else >> + CMOS_WRITE((save_freq_select | RTC_DIV_RESET2), RTC_FREQ_SELECT); >> +#endif > > Also, later you have: > > CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); > > This may write bit4 again which would make mc146818_get_time fail so you > probably want to update save_freq_select. Yes, thanks for reminding me. -- Best Regards, Jinke Fan.