LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
To: Alexandre Ghiti <alexandre.ghiti@canonical.com>,
	Support Opensource <Support.Opensource@diasemi.com>,
	Lee Jones <lee.jones@linaro.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH] drivers: mfd: da9063: Add restart notifier implementation
Date: Fri, 24 Sep 2021 15:04:00 +0000	[thread overview]
Message-ID: <DB9PR10MB465252461469340F60A8714780A49@DB9PR10MB4652.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <20210921053356.1705833-1-alexandre.ghiti@canonical.com>

On 21 September 2021 06:34, Alexandre Ghiti wrote:

> The SiFive Unmatched board uses the da9063 PMIC for reset: add a restart
> notifier that will execute a small i2c sequence allowing to reset the
> board.
> 
> The original implementation comes from Marcus Comstedt and Anders
> Montonen
> (https://forums.sifive.com/t/reboot-command/4721/28).
> 
> Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
> ---
>  drivers/mfd/da9063-core.c       | 25 +++++++++++++++++++++++++
>  include/linux/mfd/da9063/core.h |  3 +++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c
> index df407c3afce3..c87b8d611f20 100644
> --- a/drivers/mfd/da9063-core.c
> +++ b/drivers/mfd/da9063-core.c
> @@ -20,6 +20,7 @@
>  #include <linux/mutex.h>
>  #include <linux/mfd/core.h>
>  #include <linux/regmap.h>
> +#include <linux/reboot.h>
> 
>  #include <linux/mfd/da9063/core.h>
>  #include <linux/mfd/da9063/registers.h>
> @@ -158,6 +159,18 @@ static int da9063_clear_fault_log(struct da9063 *da9063)
>  	return ret;
>  }
> 
> +static int da9063_restart_notify(struct notifier_block *this,
> +				 unsigned long mode, void *cmd)
> +{
> +	struct da9063 *da9063 = container_of(this, struct da9063,
> restart_handler);
> +
> +	regmap_write(da9063->regmap, DA9063_REG_PAGE_CON, 0x00);
> +	regmap_write(da9063->regmap, DA9063_REG_CONTROL_F, 0x04);
> +	regmap_write(da9063->regmap, DA9063_REG_CONTROL_A, 0x68);
> +
> +	return NOTIFY_DONE;
> +}

I will talk with our HW team to clarify, but this sequence looks to be very
specific to the needs of the platform in question which doesn't feel right to
me. As was mentioned on another thread as well, the watchdog driver already has
a restart function to reset the device (and thus the system), so I don't believe
we should have multiple of these.

For board specific sequences, there are machine quirks I believe which can be
used to handle stuff like this, if this really isn't a generic solution to fit
all cases.


  parent reply	other threads:[~2021-09-24 15:04 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-21  5:33 Alexandre Ghiti
2021-09-21 10:16 ` Anup Patel
2021-09-21 11:20   ` Alexandre Ghiti
2021-09-21 10:25 ` Ben Dooks
2021-09-21 11:33   ` Alexandre Ghiti
2021-09-23 13:16     ` Alexandre Ghiti
2021-09-24 15:04 ` Adam Thomson [this message]
2021-09-24 16:17   ` Alexandre Ghiti
2021-09-29 13:33     ` Adam Thomson
2021-09-30  7:51       ` David Abdurachmanov
2021-09-30  9:28         ` Adam Thomson
2021-09-30 10:25         ` Alexandre Ghiti
2021-10-04 12:05           ` Alexandre Ghiti
2021-10-04 15:11             ` Adam Thomson
2021-10-05 13:43               ` Alexandre Ghiti
2021-10-06  9:30                 ` Adam Thomson
2021-10-06 11:35                   ` Alexandre Ghiti
2021-10-08  9:46                     ` Adam Thomson
2021-10-12 10:32                       ` Adam Thomson
2021-10-14 15:51                         ` Alexandre Ghiti
2021-10-15  8:47                           ` Adam Thomson
2021-09-30  9:37       ` Alexandre Ghiti
2021-09-30 10:47         ` Adam Thomson
2021-09-30  9:55       ` Alexandre Ghiti
2021-10-04 15:29         ` Adam Thomson

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=DB9PR10MB465252461469340F60A8714780A49@DB9PR10MB4652.EURPRD10.PROD.OUTLOOK.COM \
    --to=adam.thomson.opensource@diasemi.com \
    --cc=Support.Opensource@diasemi.com \
    --cc=alexandre.ghiti@canonical.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --subject='RE: [PATCH] drivers: mfd: da9063: Add restart notifier implementation' \
    /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

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).