diff options
author | Chris Packham <chris.packham@alliedtelesis.co.nz> | 2020-02-07 16:18:11 +1300 |
---|---|---|
committer | Alexandre Belloni <alexandre.belloni@bootlin.com> | 2020-03-22 21:40:01 +0100 |
commit | df11b323b16fce74d32571c2f80074df41df002d (patch) | |
tree | 76a8f39ba7f35ceeec05770dbb550b0bbcb55e12 /drivers/rtc | |
parent | 30a790653d8ac46d3116abe99ba745a7b0c27b8b (diff) | |
download | linux-df11b323b16fce74d32571c2f80074df41df002d.tar.bz2 |
rtc: ds1307: handle oscillator failure flags for ds1388 variant
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>
Link: https://lore.kernel.org/r/20200207031812.14424-2-chris.packham@alliedtelesis.co.nz
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r-- | drivers/rtc/rtc-ds1307.c | 9 |
1 files changed, 9 insertions, 0 deletions
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; |