xref: /openbmc/linux/Documentation/watchdog/mlx-wdt.rst (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
1cc2a2d19SMauro Carvalho Chehab=========================
2cc2a2d19SMauro Carvalho ChehabMellanox watchdog drivers
3cc2a2d19SMauro Carvalho Chehab=========================
4cc2a2d19SMauro Carvalho Chehab
5cc2a2d19SMauro Carvalho Chehabfor x86 based system switches
6cc2a2d19SMauro Carvalho Chehab=============================
7cc2a2d19SMauro Carvalho Chehab
8cc2a2d19SMauro Carvalho ChehabThis driver provides watchdog functionality for various Mellanox
9cc2a2d19SMauro Carvalho ChehabEthernet and Infiniband switch systems.
10cc2a2d19SMauro Carvalho Chehab
11cc2a2d19SMauro Carvalho ChehabMellanox watchdog device is implemented in a programmable logic device.
12cc2a2d19SMauro Carvalho Chehab
13cc2a2d19SMauro Carvalho ChehabThere are 2 types of HW watchdog implementations.
14cc2a2d19SMauro Carvalho Chehab
15cc2a2d19SMauro Carvalho ChehabType 1:
16cc2a2d19SMauro Carvalho Chehab  Actual HW timeout can be defined as a power of 2 msec.
17cc2a2d19SMauro Carvalho Chehab  e.g. timeout 20 sec will be rounded up to 32768 msec.
18cc2a2d19SMauro Carvalho Chehab  The maximum timeout period is 32 sec (32768 msec.),
19cc2a2d19SMauro Carvalho Chehab  Get time-left isn't supported
20cc2a2d19SMauro Carvalho Chehab
21cc2a2d19SMauro Carvalho ChehabType 2:
22cc2a2d19SMauro Carvalho Chehab  Actual HW timeout is defined in sec. and it's the same as
23cc2a2d19SMauro Carvalho Chehab  a user-defined timeout.
24cc2a2d19SMauro Carvalho Chehab  Maximum timeout is 255 sec.
25cc2a2d19SMauro Carvalho Chehab  Get time-left is supported.
26cc2a2d19SMauro Carvalho Chehab
27*d6e6d562SMichael ShychType 3:
28*d6e6d562SMichael Shych  Same as Type 2 with extended maximum timeout period.
29*d6e6d562SMichael Shych  Maximum timeout is 65535 sec.
30*d6e6d562SMichael Shych
31cc2a2d19SMauro Carvalho ChehabType 1 HW watchdog implementation exist in old systems and
32cc2a2d19SMauro Carvalho Chehaball new systems have type 2 HW watchdog.
33cc2a2d19SMauro Carvalho ChehabTwo types of HW implementation have also different register map.
34cc2a2d19SMauro Carvalho Chehab
35*d6e6d562SMichael ShychType 3 HW watchdog implementation can exist on all Mellanox systems
36*d6e6d562SMichael Shychwith new programmer logic device.
37*d6e6d562SMichael ShychIt's differentiated by WD capability bit.
38*d6e6d562SMichael ShychOld systems still have only one main watchdog.
39*d6e6d562SMichael Shych
40cc2a2d19SMauro Carvalho ChehabMellanox system can have 2 watchdogs: main and auxiliary.
41cc2a2d19SMauro Carvalho ChehabMain and auxiliary watchdog devices can be enabled together
42cc2a2d19SMauro Carvalho Chehabon the same system.
43cc2a2d19SMauro Carvalho ChehabThere are several actions that can be defined in the watchdog:
44cc2a2d19SMauro Carvalho Chehabsystem reset, start fans on full speed and increase register counter.
45cc2a2d19SMauro Carvalho ChehabThe last 2 actions are performed without a system reset.
46cc2a2d19SMauro Carvalho ChehabActions without reset are provided for auxiliary watchdog device,
47cc2a2d19SMauro Carvalho Chehabwhich is optional.
48cc2a2d19SMauro Carvalho ChehabWatchdog can be started during a probe, in this case it will be
49cc2a2d19SMauro Carvalho Chehabpinged by watchdog core before watchdog device will be opened by
50cc2a2d19SMauro Carvalho Chehabuser space application.
51cc2a2d19SMauro Carvalho ChehabWatchdog can be initialised in nowayout way, i.e. oncse started
52cc2a2d19SMauro Carvalho Chehabit can't be stopped.
53cc2a2d19SMauro Carvalho Chehab
54cc2a2d19SMauro Carvalho ChehabThis mlx-wdt driver supports both HW watchdog implementations.
55cc2a2d19SMauro Carvalho Chehab
56cc2a2d19SMauro Carvalho ChehabWatchdog driver is probed from the common mlx_platform driver.
57cc2a2d19SMauro Carvalho ChehabMlx_platform driver provides an appropriate set of registers for
58cc2a2d19SMauro Carvalho ChehabMellanox watchdog device, identity name (mlx-wdt-main or mlx-wdt-aux),
59cc2a2d19SMauro Carvalho Chehabinitial timeout, performed action in expiration and configuration flags.
60cc2a2d19SMauro Carvalho Chehabwatchdog configuration flags: nowayout and start_at_boot, hw watchdog
61cc2a2d19SMauro Carvalho Chehabversion - type1 or type2.
62cc2a2d19SMauro Carvalho ChehabThe driver checks during initialization if the previous system reset
63cc2a2d19SMauro Carvalho Chehabwas done by the watchdog. If yes, it makes a notification about this event.
64cc2a2d19SMauro Carvalho Chehab
65cc2a2d19SMauro Carvalho ChehabAccess to HW registers is performed through a generic regmap interface.
66*d6e6d562SMichael ShychProgrammable logic device registers have little-endian order.
67