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