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>,
	Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Cc: David Abdurachmanov <david.abdurachmanov@gmail.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, 15 Oct 2021 08:47:27 +0000	[thread overview]
Message-ID: <DB9PR10MB46526487C9F2B3C10027039A80B99@DB9PR10MB4652.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <CA+zEjCsFif-pT6aW-XwYiSuLsSbBTWVxme6S2rdSN0oQETnZiA@mail.gmail.com>

On 14 October 2021 16:51, Alexandre Ghiti wrote:

> > So having examined your sequence again it's now clearer as to what is
> happening.
> > With the sequence you provided this is only a partial reset whereby all of the
> > output rails are sequenced down then up again and restored to OTP voltages.
> > However the remainder of the chip settings aren't reset as this isn't a true
> > reset of the device going through full reload from OTP, so for example settings
> > of regulator mode GPIO states, or IRQ mask bits would persist on the restart,
> > which could have implications on system operation.
> 
> Ok, it's not perfect but I think those are settings that will get
> reinitialized by the corresponding drivers while booting, contrary to
> the RTC registers which are clobbered by the other method.

Well I guess that depends on which DA9063 drivers are being loaded and what is
populated in DT. This is something you'll need to consider now and with future
updates around this board to make sure nothing untoward is happening as a side
effect.

> 
> >
> > In addition the only bits of interest for you should be:
> >
> >  - CONTROL_F (0x13)
> >         WAKE_UP (BIT 2) = 1
> >  - CONTROL_A (0x0E)
> >         SYSTEM_EN (BIT 0) = 0
> >
> > Setting those two bits should be enough to trigger the partial reset sequence.
> > The other bits you had in your sequence don't seem to be necessary or
> relevant.
> >
> > One final caveat to this approach is that there is a 16s internal timer (as you
> > noted before, VDD_START) which is started when the device moves to ACTIVE
> mode.
> > When that 16s timer expires the device will clear the WAKE_UP bit
> automatically.
> > This means there's the outside chance that you could try the reset command
> > sequence above around the same time, and that could mean you set the
> WAKE_UP
> > bit, but it's immediately cleared again by this timer expiry before the
> > SYSTEM_EN bit is set low. In that case there would be a need for an external
> > event (e.g. ONKEY) to kick the system to start again.
> 
> Ok, the risk exists but the window is quite small.
> 
> After all, the solution I first proposed is not perfect, but now we
> know why it works and IMO it has less drawbacks than using the RTC
> registers, so I think we should go for this solution. I'll see if I
> can help Nikita implement this directly in openSBI.

Personally, if it was possible I think the RTC approach would be best as it's a
full reset and to me is far safer with regards to potential side effects, but as
that's not on the table then this seems the only other approach in your case.

> @Adam Thomson I had migrated the DA9063 device tree bindings to yaml,
> I'll push that soon. Thanks for all your help, much appreciated.

No problem and thanks for making that update. I'll take a look when the
changes are available.

  reply	other threads:[~2021-10-15  8:47 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
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 [this message]
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=DB9PR10MB46526487C9F2B3C10027039A80B99@DB9PR10MB4652.EURPRD10.PROD.OUTLOOK.COM \
    --to=adam.thomson.opensource@diasemi.com \
    --cc=Support.Opensource@diasemi.com \
    --cc=alexandre.ghiti@canonical.com \
    --cc=david.abdurachmanov@gmail.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).