linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Alessandro Zummo <a.zummo@towertech.it>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>,
	linux-rtc@vger.kernel.org,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 1/8] rtc: isl12022: remove wrong warning for low battery level
Date: Mon, 12 Jun 2023 13:30:51 +0200	[thread overview]
Message-ID: <20230612113059.247275-2-linux@rasmusvillemoes.dk> (raw)
In-Reply-To: <20230612113059.247275-1-linux@rasmusvillemoes.dk>

There are multiple problems with this warning.

First of all, it triggers way too often, in fact nearly on every boot,
because the SR_LBAT85/SR_LBAT75 bits have another meaning when in
battery backup mode. Quoting from the data sheet:

  LOW BATTERY INDICATOR 85% BIT (LBAT85)

  In Normal Mode (VDD), this bit indicates when the battery level has
  dropped below the pre-selected trip levels. [...] The LBAT85
  detection happens automatically once every minute when seconds
  register reaches 59.

  In Battery Mode (VBAT), this bit indicates the device has entered
  into battery mode by polling once every 10 minutes. The LBAT85
  detection happens automatically once when the minute register
  reaches x9h or x0h minutes.

Similar wording applies to the LBAT75 bit.

This means that if the device is powered off for more than 10 minutes,
the LBAT85 bit is guaranteed to be set. Upon power-on, unless we're
close enough to the end of a minute and/or the boot is slow enough
that the second register passes 59, the LBAT85 bit is still set when
the kernel (or early userspace) reads the RTC to set the system's
wallclock time.

Another minor problem is with the bit logic. If the 75% level is
reached, logically we're also below 85%, so both bits would most
likely be set. So even if the battery is below 75%, the warning would
still say "voltage dropped below 85%".

A third problem is that the driver and current DT binding offer no way
to indicate the nominal battery level and/or settings of the Battery
Level Monitor Trip Bits. Since the default value of the VB85TP[2:0] and
VB75TP[2:0] bits are 000, this means the actual setting of the
LBAT85/LBAT75 bits in VDD mode doesn't happen until the battery is below
2.125V/1.875V, which for a standard 3V battery is way too late.

A fourth problem is emitting this warning from ->read_time:
util-linux' hwclock will, in the absence of support for getting an
interrupt when the seconds counter is updated, issue
ioctl(RTC_RD_TIME) in a busy-loop until it sees a change in the
seconds field. In that case, if the battery low bits are set (either
genuinely, more than a minute after boot, due to the battery actually
being low, or as above, bogusly shortly after boot), the kernel log is
swamped with hundreds of identical warnings.

Subsequent patches will add such bindings and driver support, and also
proper support for RTC_VL_READ. For now, remove the broken warning.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 drivers/rtc/rtc-isl12022.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/rtc/rtc-isl12022.c b/drivers/rtc/rtc-isl12022.c
index e68a79b5e00e..ebd66b835cef 100644
--- a/drivers/rtc/rtc-isl12022.c
+++ b/drivers/rtc/rtc-isl12022.c
@@ -141,12 +141,6 @@ static int isl12022_rtc_read_time(struct device *dev, struct rtc_time *tm)
 	if (ret)
 		return ret;
 
-	if (buf[ISL12022_REG_SR] & (ISL12022_SR_LBAT85 | ISL12022_SR_LBAT75)) {
-		dev_warn(dev,
-			 "voltage dropped below %u%%, date and time is not reliable.\n",
-			 buf[ISL12022_REG_SR] & ISL12022_SR_LBAT85 ? 85 : 75);
-	}
-
 	dev_dbg(dev,
 		"raw data is sec=%02x, min=%02x, hr=%02x, mday=%02x, mon=%02x, year=%02x, wday=%02x, sr=%02x, int=%02x",
 		buf[ISL12022_REG_SC],
-- 
2.37.2


  reply	other threads:[~2023-06-12 11:39 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-12 11:30 [PATCH 0/8] rtc: isl12022: battery backup voltage and clock support Rasmus Villemoes
2023-06-12 11:30 ` Rasmus Villemoes [this message]
2023-06-12 11:30 ` [PATCH 2/8] dt-bindings: rtc: Move isil,isl12022 from trivial-rtc.yaml into own schema file Rasmus Villemoes
2023-06-12 12:26   ` Rob Herring
2023-06-12 12:36     ` Rasmus Villemoes
2023-06-12 13:54       ` Alexandre Belloni
2023-06-12 14:20       ` Rob Herring
2023-06-13  8:13         ` Rasmus Villemoes
2023-06-12 11:30 ` [PATCH 3/8] dt-bindings: rtc: isl12022: add bindings for battery alarm trip levels Rasmus Villemoes
2023-06-12 11:30 ` [PATCH 4/8] rtc: isl12022: add support for trip level DT bindings Rasmus Villemoes
2023-06-12 15:44   ` Andy Shevchenko
2023-06-12 18:10   ` kernel test robot
2023-06-12 18:58   ` kernel test robot
2023-06-12 11:30 ` [PATCH 5/8] rtc: isl12022: implement RTC_VL_READ and RTC_VL_CLR ioctls Rasmus Villemoes
2023-06-12 14:07   ` Alexandre Belloni
2023-06-13  7:27     ` Rasmus Villemoes
2023-06-12 15:48   ` Andy Shevchenko
2023-06-12 16:10     ` Alexandre Belloni
2023-06-13  7:53       ` Rasmus Villemoes
2023-06-13  9:00         ` Alexandre Belloni
2023-06-12 11:30 ` [PATCH 6/8] rtc: isl12022: trigger battery level detection during probe Rasmus Villemoes
2023-06-12 12:30   ` Rasmus Villemoes
2023-06-12 14:17     ` Alexandre Belloni
2023-06-13  7:51       ` Rasmus Villemoes
2023-06-12 14:15   ` Alexandre Belloni
2023-06-13  7:44     ` Rasmus Villemoes
2023-06-13  8:58       ` Alexandre Belloni
2023-06-12 11:30 ` [PATCH 7/8] dt-bindings: rtc: isl12022: add #clock-cells property Rasmus Villemoes
2023-06-13  7:41   ` Krzysztof Kozlowski
2023-06-12 11:30 ` [PATCH 8/8] rtc: isl12022: implement support for the #clock-cells DT property Rasmus Villemoes
2023-06-13 13:00 ` [PATCH v2 0/8] rtc: isl12022: battery backup voltage and clock support Rasmus Villemoes
2023-06-13 13:00   ` [PATCH v2 1/8] rtc: isl12022: remove wrong warning for low battery level Rasmus Villemoes
2023-06-13 13:00   ` [PATCH v2 2/8] dt-bindings: rtc: Move isil,isl12022 from trivial-rtc.yaml into own schema file Rasmus Villemoes
2023-06-13 19:06     ` Krzysztof Kozlowski
2023-06-13 13:00   ` [PATCH v2 3/8] dt-bindings: rtc: isl12022: add bindings for battery alarm trip levels Rasmus Villemoes
2023-06-13 19:09     ` Krzysztof Kozlowski
2023-06-13 19:51       ` Rasmus Villemoes
2023-06-13 21:37         ` Krzysztof Kozlowski
2023-06-13 13:00   ` [PATCH v2 4/8] rtc: isl12022: add support for trip level DT bindings Rasmus Villemoes
2023-06-13 13:00   ` [PATCH v2 5/8] rtc: isl12022: implement RTC_VL_READ ioctl Rasmus Villemoes
2023-06-13 15:20     ` Andy Shevchenko
2023-06-13 21:26       ` Alexandre Belloni
2023-06-14 12:16         ` Andy Shevchenko
2023-06-14 13:50           ` Alexandre Belloni
2023-06-14 15:13             ` Andy Shevchenko
2023-06-15 10:53               ` Rasmus Villemoes
2023-06-15 10:58                 ` Andy Shevchenko
2023-06-13 13:00   ` [PATCH v2 6/8] rtc: isl12022: trigger battery level detection during probe Rasmus Villemoes
2023-06-13 13:00   ` [PATCH v2 7/8] dt-bindings: rtc: isl12022: add #clock-cells property Rasmus Villemoes
2023-06-13 19:10     ` Krzysztof Kozlowski
2023-06-13 20:25       ` Rasmus Villemoes
2023-06-13 21:38         ` Krzysztof Kozlowski
2023-06-13 13:00   ` [PATCH v2 8/8] rtc: isl12022: implement support for the #clock-cells DT property Rasmus Villemoes
2023-06-13 15:25     ` Andy Shevchenko
2023-06-14 10:51       ` Rasmus Villemoes
2023-06-14 12:13         ` Andy Shevchenko
2023-06-13 19:10     ` kernel test robot
2023-06-14  5:27     ` kernel test robot
2023-06-13 15:26   ` [PATCH v2 0/8] rtc: isl12022: battery backup voltage and clock support Andy Shevchenko
2023-06-13 19:06   ` Krzysztof Kozlowski
2023-06-15 11:03     ` Rasmus Villemoes
2023-06-15 10:58 ` [PATCH v3 " Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 1/8] rtc: isl12022: remove wrong warning for low battery level Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 2/8] dt-bindings: rtc: Move isil,isl12022 from trivial-rtc.yaml into own schema file Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 3/8] dt-bindings: rtc: isl12022: add bindings for battery alarm trip levels Rasmus Villemoes
2023-06-17  8:12     ` Krzysztof Kozlowski
2023-06-15 10:58   ` [PATCH v3 4/8] rtc: isl12022: add support for trip level DT binding Rasmus Villemoes
2023-06-15 11:11     ` Andy Shevchenko
2023-06-19  7:27       ` Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 5/8] rtc: isl12022: implement RTC_VL_READ ioctl Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 6/8] rtc: isl12022: trigger battery level detection during probe Rasmus Villemoes
2023-06-15 10:58   ` [PATCH v3 7/8] dt-bindings: rtc: isl12022: add #clock-cells property Rasmus Villemoes
2023-06-17  8:13     ` Krzysztof Kozlowski
2023-06-15 10:58   ` [PATCH v3 8/8] rtc: isl12022: implement support for the #clock-cells DT property Rasmus Villemoes
2023-07-28 14:31   ` [PATCH v3 0/8] rtc: isl12022: battery backup voltage and clock support Rasmus Villemoes
2023-08-03  6:45     ` Rasmus Villemoes
2023-08-09 12:28       ` Rasmus Villemoes
2023-08-15 23:28   ` Alexandre Belloni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230612113059.247275-2-linux@rasmusvillemoes.dk \
    --to=linux@rasmusvillemoes.dk \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).