On Tue Mar 28, 2023 at 11:29 AM CEST, Alexandre Belloni wrote: > Hello, > > On 28/03/2023 11:14:46+0200, Esteban Blanc wrote: > > + /* Start rtc */ > > + ret = regmap_set_bits(tps->regmap, TPS6594_REG_RTC_CTRL_1, > > + TPS6594_BIT_STOP_RTC); > > + if (ret < 0) > > + return ret; > > + > > + mdelay(100); > > + > > + /* > > + * RTC should be running now. Check if this is the case. > > + * If not it might be a missing oscillator. > > + */ > > + ret = regmap_test_bits(tps->regmap, TPS6594_REG_RTC_STATUS, > > + TPS6594_BIT_RUN); > > + if (ret < 0) > > + return ret; > > + if (ret == 0) > > + return -ENODEV; > > + > > + /* Stop RTC until first call to `tps6594_rtc_set_time */ > > + ret = regmap_clear_bits(tps->regmap, TPS6594_REG_RTC_CTRL_1, > > + TPS6594_BIT_STOP_RTC); > > + if (ret < 0) > > + return ret; > > + > > This whole block must not be executed when the RTC is already running, > else, you are stopping a perfectly running RTC. I'm not sure to get your point. You mean that during probe, the driver might encounter an RTC device that is already running with a correct timestamp? How would this be possible? A previous bootstage or the driver was removed then re-inserted again? Thanks for your time, -- Esteban Blanc BayLibre