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