Message ID | 20200207031812.14424-2-chris.packham@alliedtelesis.co.nz |
---|---|
State | Accepted |
Headers | show |
Series | [v1,1/2] rtc: ds1307: handle oscillator failure flags for ds1388 variant | expand |
On 07/02/2020 16:18:11+1300, Chris Packham wrote: > The FLAG register is at a different location to the other supported RTCs > so this requires an extra case in the existing switch statement. > > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > --- > drivers/rtc/rtc-ds1307.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > Applied, thanks.
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index 1f7e8aefc1eb..31a38d468378 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -144,6 +144,8 @@ enum ds_type { # define M41TXX_BIT_CALIB_SIGN BIT(5) # define M41TXX_M_CALIBRATION GENMASK(4, 0) +#define DS1388_REG_FLAG 0x0b +# define DS1388_BIT_OSF BIT(7) /* negative offset step is -2.034ppm */ #define M41TXX_NEG_OFFSET_STEP_PPB 2034 /* positive offset step is +4.068ppm */ @@ -252,6 +254,13 @@ static int ds1307_get_time(struct device *dev, struct rtc_time *t) if (tmp & DS1340_BIT_OSF) return -EINVAL; break; + case ds_1388: + ret = regmap_read(ds1307->regmap, DS1388_REG_FLAG, &tmp); + if (ret) + return ret; + if (tmp & DS1388_BIT_OSF) + return -EINVAL; + break; case mcp794xx: if (!(tmp & MCP794XX_BIT_ST)) return -EINVAL;
The FLAG register is at a different location to the other supported RTCs so this requires an extra case in the existing switch statement. Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> --- drivers/rtc/rtc-ds1307.c | 9 +++++++++ 1 file changed, 9 insertions(+)