On 11/06/2023 15:38:04+0200, Jan Kiszka wrote: > On 10.06.23 10:31, Alexandre Belloni wrote: > > Hello Jan, > > > > On 09/06/2023 23:04:12+0200, Jan Kiszka wrote: > >> From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > >> > >> The VL bit in the seconds register remains set only until seconds are > >> written under main power. As this often happens during boot-up after > >> picking up a network time, make sure to preserve the low battery state > >> across this, caching it and returning it via the RTC_VL_BACKUP_LOW bit. > >> > >> To permit userspace clearing this state during runtime, also implement > >> RTC_VL_CLR that works against the cached state. > >> > >> This is emulating RTCs which have a battery voltage check that works > >> under main power as well. > >> > > > > Emulating doesn't work well and I deliberately chose to not implement > > it. For example, in your scenario, if you boot twice without using > > VL_READ, you anyway have lost the information. This makes emulating > > unreliabl. The fix you need is in userspace where you have to ensure you > > read the status before setting the time. > > Then let's make sure the bit is also set in the hardware register. Then > also the reboot issue (which is practically a minor one) is solved. The > current situation is far from optimal. This doesn't work because then the time will be considered invalid. I'm not sure why you don't want to fix your userspace. -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com