Messages in this thread | | | Subject | Re: [PATCH v2 2/2] rtc: pcf2127: Run a OTP refresh if not done before | From | Philipp Rosenberger <> | Date | Thu, 14 Jan 2021 10:15:29 +0100 |
| |
On 14.01.21 09:06, Uwe Kleine-König wrote: > On Wed, Jan 13, 2021 at 12:27:42PM +0100, Philipp Rosenberger wrote: >> The datasheet of the PCF2127 states,it is recommended to process an OTP > > s/,/, /
ACK
> >> refresh once the power is up and the oscillator is operating stable. The >> OTP refresh takes less than 100 ms to complete. >> >> Signed-off-by: Philipp Rosenberger <p.rosenberger@kunbus.com> >> --- >> drivers/rtc/rtc-pcf2127.c | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c >> index 378b1ce812d6..ca56dba64e79 100644 >> --- a/drivers/rtc/rtc-pcf2127.c >> +++ b/drivers/rtc/rtc-pcf2127.c >> @@ -58,6 +58,9 @@ >> #define PCF2127_REG_ALARM_DM 0x0D >> #define PCF2127_REG_ALARM_DW 0x0E >> #define PCF2127_BIT_ALARM_AE BIT(7) >> +/* CLKOUT control register */ >> +#define PCF2127_REG_CLKOUT 0x0f >> +#define PCF2127_BIT_CLKOUT_OTPR BIT(5) >> /* Watchdog registers */ >> #define PCF2127_REG_WD_CTL 0x10 >> #define PCF2127_BIT_WD_CTL_TF0 BIT(0) >> @@ -630,6 +633,19 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap, >> dev_warn(dev, "Watchdog and alarm functions might not work properly\n"); >> } >> >> + /* >> + * Set the OTP refresh bit unconditionally. If an OTP refresh was >> + * already done the bit is already set and will not rerun the refresh >> + * operation. >> + */ >> + ret = regmap_set_bits(pcf2127->regmap, PCF2127_REG_CLKOUT, >> + PCF2127_BIT_CLKOUT_OTPR); >> + if (ret < 0) { >> + dev_err(dev, "%s: OTP refresh (clkout_ctrl) failed.\n", __func__); >> + return ret; >> + } >> + msleep(100); > > This unconditional sleep isn't so nice. Maybe it makes sense to only do > this when the chip reports a power loss?
Right, will change that
> Best regards > Uwe >
Best Regards, Philipp
| |