Re: [PATCH resubmit] rtc: ds1307: Detect oscillator fail on mcp794xx

From: Alexandre Belloni
Date: Thu Jun 27 2024 - 18:37:13 EST


Hello,

It is not clear to me why your resent this one but not the other one,
can you elaborate?

On 21/06/2024 10:05:13+0200, Csókás, Bence wrote:
> This patch enables the detection of the oscillator failure
> on mcp794xx chips.
>
> Co-developed-by: Szentendrei, Tamás <szentendrei.tamas@xxxxxxxxx>
> Signed-off-by: Szentendrei, Tamás <szentendrei.tamas@xxxxxxxxx>
> Signed-off-by: Csókás, Bence <csokas.bence@xxxxxxxxx>
> ---
> drivers/rtc/rtc-ds1307.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
> index 506b7d1c2397..bdb7b201a160 100644
> --- a/drivers/rtc/rtc-ds1307.c
> +++ b/drivers/rtc/rtc-ds1307.c
> @@ -65,6 +65,7 @@ enum ds_type {
> # define DS1340_BIT_CENTURY_EN 0x80 /* in REG_HOUR */
> # define DS1340_BIT_CENTURY 0x40 /* in REG_HOUR */
> #define DS1307_REG_WDAY 0x03 /* 01-07 */
> +# define MCP794XX_BIT_OSCRUN BIT(5)
> # define MCP794XX_BIT_VBATEN 0x08
> #define DS1307_REG_MDAY 0x04 /* 01-31 */
> #define DS1307_REG_MONTH 0x05 /* 01-12 */
> @@ -242,6 +243,10 @@ static int ds1307_get_time(struct device *dev, struct rtc_time *t)
> regs[DS1307_REG_MIN] & M41T0_BIT_OF) {
> dev_warn_once(dev, "oscillator failed, set time!\n");
> return -EINVAL;
> + } else if (ds1307->type == mcp794xx &&
> + !(regs[DS1307_REG_WDAY] & MCP794XX_BIT_OSCRUN)) {
> + dev_warn_once(dev, "oscillator failed, set time!\n");
> + return -EINVAL;
> }
>
> tmp = regs[DS1307_REG_SECS];
> --
> 2.34.1
>
>

--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com