diff mbox series

[v1,1/2] rtc: ds1307: handle oscillator failure flags for ds1388 variant

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

Commit Message

Chris Packham Feb. 7, 2020, 3:18 a.m. UTC
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(+)

Comments

Alexandre Belloni March 22, 2020, 8:40 p.m. UTC | #1
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 mbox series

Patch

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;