xref: /linux/arch/powerpc/include/asm/papr-watchdog.h (revision 1200d84f4c0a929a0780180d25063d93773be79c)
1516a2549SSourabh Jain /* SPDX-License-Identifier: GPL-2.0-only */
2516a2549SSourabh Jain 
3516a2549SSourabh Jain #ifndef _ASM_POWERPC_PAPR_WATCHDOG_H
4516a2549SSourabh Jain #define _ASM_POWERPC_PAPR_WATCHDOG_H
5516a2549SSourabh Jain 
6516a2549SSourabh Jain /*
7516a2549SSourabh Jain  * H_WATCHDOG Input
8516a2549SSourabh Jain  *
9516a2549SSourabh Jain  * R4: "flags":
10516a2549SSourabh Jain  *
11516a2549SSourabh Jain  *         Bits 48-55: "operation"
12516a2549SSourabh Jain  */
13516a2549SSourabh Jain #define PSERIES_WDTF_OP_START	0x100UL		/* start timer */
14516a2549SSourabh Jain #define PSERIES_WDTF_OP_STOP	0x200UL		/* stop timer */
15516a2549SSourabh Jain #define PSERIES_WDTF_OP_QUERY	0x300UL		/* query timer capabilities */
16516a2549SSourabh Jain 
17516a2549SSourabh Jain /*
18516a2549SSourabh Jain  *         Bits 56-63: "timeoutAction" (for "Start Watchdog" only)
19516a2549SSourabh Jain  */
20516a2549SSourabh Jain #define PSERIES_WDTF_ACTION_HARD_POWEROFF	0x1UL	/* poweroff */
21516a2549SSourabh Jain #define PSERIES_WDTF_ACTION_HARD_RESTART	0x2UL	/* restart */
22516a2549SSourabh Jain #define PSERIES_WDTF_ACTION_DUMP_RESTART	0x3UL	/* dump + restart */
23516a2549SSourabh Jain 
24516a2549SSourabh Jain /*
25*fb43ba42SSourabh Jain  * R5: "watchdogNumber":
26*fb43ba42SSourabh Jain  *       PAPR says use -1 (all ones) to stop all watchdogs.
27*fb43ba42SSourabh Jain  */
28*fb43ba42SSourabh Jain #define PSERIES_WDT_NUM_ALL	((unsigned long)-1)
29*fb43ba42SSourabh Jain 
30*fb43ba42SSourabh Jain /*
31516a2549SSourabh Jain  * H_WATCHDOG Output
32516a2549SSourabh Jain  *
33516a2549SSourabh Jain  * R3: Return code
34516a2549SSourabh Jain  *
35516a2549SSourabh Jain  *     H_SUCCESS    The operation completed.
36516a2549SSourabh Jain  *
37516a2549SSourabh Jain  *     H_BUSY	    The hypervisor is too busy; retry the operation.
38516a2549SSourabh Jain  *
39516a2549SSourabh Jain  *     H_PARAMETER  The given "flags" are somehow invalid.  Either the
40516a2549SSourabh Jain  *                  "operation" or "timeoutAction" is invalid, or a
41516a2549SSourabh Jain  *                  reserved bit is set.
42516a2549SSourabh Jain  *
43516a2549SSourabh Jain  *     H_P2         The given "watchdogNumber" is zero or exceeds the
44516a2549SSourabh Jain  *                  supported maximum value.
45516a2549SSourabh Jain  *
46516a2549SSourabh Jain  *     H_P3         The given "timeoutInMs" is below the supported
47516a2549SSourabh Jain  *                  minimum value.
48516a2549SSourabh Jain  *
49516a2549SSourabh Jain  *     H_NOOP       The given "watchdogNumber" is already stopped.
50516a2549SSourabh Jain  *
51516a2549SSourabh Jain  *     H_HARDWARE   The operation failed for ineffable reasons.
52516a2549SSourabh Jain  *
53516a2549SSourabh Jain  *     H_FUNCTION   The H_WATCHDOG hypercall is not supported by this
54516a2549SSourabh Jain  *                  hypervisor.
55516a2549SSourabh Jain  *
56516a2549SSourabh Jain  * R4:
57516a2549SSourabh Jain  *
58516a2549SSourabh Jain  * - For the "Query Watchdog Capabilities" operation, a 64-bit
59516a2549SSourabh Jain  *   structure:
60516a2549SSourabh Jain  */
61516a2549SSourabh Jain #define PSERIES_WDTQ_MIN_TIMEOUT(cap)	(((cap) >> 48) & 0xffff)
62516a2549SSourabh Jain #define PSERIES_WDTQ_MAX_NUMBER(cap)	(((cap) >> 32) & 0xffff)
63516a2549SSourabh Jain 
64516a2549SSourabh Jain #endif /* _ASM_POWERPC_PAPR_WATCHDOG_H */
65