All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Johannes Kirchmair <johannes.kirchmair@sigmatek.at>
Cc: linux-rtc@vger.kernel.org
Subject: Re: [PATCH] disable clkout for rv3028 by default
Date: Thu, 4 May 2023 11:12:50 +0200	[thread overview]
Message-ID: <202305040912507451f5a2@mail.local> (raw)
In-Reply-To: <20230504083217.2371933-1-johannes.kirchmair@sigmatek.at>

On 04/05/2023 10:32:17+0200, Johannes Kirchmair wrote:
> The rv3028 chip is kind of strange.
> The chip has two inputs one for the buffer battery
> (V_backup) and one for the main power supply (V_dd).
> By default a clk out of the chip is enabled, drawing a big amount of
> current, draining the buffer battery of our board in 3 days.
> There is a mode that would shut down the clk out if powered from
> V_backup, but that would have to be configured as well. In our
> application the battery is connected via V_dd. So disabling the clk by
> default is the way to go for us.
> 

You can't do that, this introduces a glitch in the clock output and will
break existing users. The clock should be disabled automatically by the
CCF when there are no users. Is your kernel built without
CONFIG_COMMON_CLK?

> Signed-off-by: Johannes Kirchmair <johannes.kirchmair@sigmatek.at>
> ---
>  drivers/rtc/rtc-rv3028.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/rtc/rtc-rv3028.c b/drivers/rtc/rtc-rv3028.c
> index 12c807306893..9e2aaa7a533e 100644
> --- a/drivers/rtc/rtc-rv3028.c
> +++ b/drivers/rtc/rtc-rv3028.c
> @@ -787,7 +787,7 @@ static const struct regmap_config regmap_config = {
>  static int rv3028_probe(struct i2c_client *client)
>  {
>  	struct rv3028_data *rv3028;
> -	int ret, status;
> +	int ret, status, buf;
>  	u32 ohms;
>  	struct nvmem_config nvmem_cfg = {
>  		.name = "rv3028_nvram",
> @@ -826,6 +826,16 @@ static int rv3028_probe(struct i2c_client *client)
>  	if (status & RV3028_STATUS_AF)
>  		dev_warn(&client->dev, "An alarm may have been missed.\n");
>  
> +	ret = regmap_read(rv3028->regmap, RV3028_CLKOUT, &buf);
> +	if (ret < 0)
> +		return ret;
> +
> +	if (buf != RV3028_CLKOUT_FD_MASK) {
> +		ret = rv3028_update_cfg(rv3028, RV3028_CLKOUT, 0xff, RV3028_CLKOUT_FD_MASK); // disable clk out
> +		if (ret < 0)
> +			return ret;
> +	}
> +
>  	rv3028->rtc = devm_rtc_allocate_device(&client->dev);
>  	if (IS_ERR(rv3028->rtc))
>  		return PTR_ERR(rv3028->rtc);
> -- 
> 2.25.1
> 

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

  reply	other threads:[~2023-05-04  9:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-04  8:32 [PATCH] disable clkout for rv3028 by default Johannes Kirchmair
2023-05-04  9:12 ` Alexandre Belloni [this message]
2023-05-05 10:31   ` Johannes Kirchmair
2023-05-05 11:31     ` 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=202305040912507451f5a2@mail.local \
    --to=alexandre.belloni@bootlin.com \
    --cc=johannes.kirchmair@sigmatek.at \
    --cc=linux-rtc@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.