On m41txx you can enable open-drain OUT pin to check if calibration is ok.
Enabling OUT pin with frequency-test bool property, OUT pin will tick
512 times faster than 1s tick base.

Enable FT bit on CONTROL register if calibration is active.

Signed-off-by: Giulio Benetti <giulio.bene...@micronovasrl.com>
---
 Documentation/devicetree/bindings/rtc/rtc-ds1307.txt | 3 +++
 drivers/rtc/rtc-ds1307.c                             | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt 
b/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt
index d3d70a5495c5..72a5f8cdc306 100644
--- a/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt
+++ b/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt
@@ -36,6 +36,9 @@ Optional properties:
        Should be given if internal trickle charger diode should be disabled
 - calibration: m41t0, m41t00, m41t11 only
        Set calibration value to correct external bias, ranging between (-31) 
and 31.
+- frequency-test: m41t0, m41t00, m41t11 only
+       Enable open-drain OUT pin 512 times faster than 1 second tick.
+       This allows to check calibration value.
 
 Example:
        rtc1: ds1339@68 {
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index 9cda52589c0f..a727ced157df 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -1485,6 +1485,10 @@ static int ds1307_probe(struct i2c_client *client,
                        if (calib >= 0)
                                out_byte |= M41TXX_BIT_CALIB_SIGN;
 
+                       if (of_property_read_bool(client->dev.of_node,
+                                       "frequency-test"))
+                               out_byte |= M41TXX_BIT_FT;
+
                        regmap_write(ds1307->regmap, M41TXX_REG_CONTROL,
                                        out_byte);
                }
-- 
2.17.0

Reply via email to