Thread (35 messages) flat view 35 messages, 6 authors, 2014-01-17
STALE4589d

[PATCH 01/15] watchdog: orion: Remove unneeded BRIDGE_CAUSE clear

From: Ezequiel Garcia <hidden>
Date: 2013-08-27 22:17:29

On Tue, Aug 27, 2013 at 03:02:48PM -0600, Jason Gunthorpe wrote:
On Tue, Aug 27, 2013 at 10:04:15PM +0200, Sebastian Hesselbarth wrote:
quoted
In the current use of watchdog even for non-DT boards, you do not
have to clear the interrupt cause. It will ultimately lead to a
reset in any way. Maybe it is not a big deal to remove it now
even without non-DT replacement.
But that is the likely reason..

AFAIK, to be immune to bootloader left over you must do these steps in
order:
 - Gain control of the WDT timer, so that it doesn't trigger
 - Clear the cause register
 - Enable the reset out function

Which is what orion_wdt_start does today.

If you fiddle with the order you risk creating an errant WDT trigger,
depending on what the bootloader did.

eg having cause asserted and then setting the reset out bit will
reboot the board.

Hoisting the reset out register write into board code now requires
that the bootloader left the WDT subsystem in some kind of sane state,
probably not great..
Hm... that's not nice. And it's just as important as solving the cause
register clear issue.

The problem is: how do we handle the reset out enable in the watchdog
driver, while removing the hard-coded register (and hence the mach-header)
*at the same* time?

Should we return to the previously proposed idea of putting that
in the reg property? IOW:

  watchdog {
    reg = <timer control>, <rstout>;
  };

If we *must* access the rstout register from the watchdog driver,
and we *cannot* have any mach-xxx headers to find base addresses,
then the only valid solution is to pass this information from the DT.

Right?
-- 
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help