/* SPDX-License-Identifier: GPL-2.0-only */ #ifndef _ASM_POWERPC_PAPR_WATCHDOG_H #define _ASM_POWERPC_PAPR_WATCHDOG_H /* * H_WATCHDOG Input * * R4: "flags": * * Bits 48-55: "operation" */ #define PSERIES_WDTF_OP_START 0x100UL /* start timer */ #define PSERIES_WDTF_OP_STOP 0x200UL /* stop timer */ #define PSERIES_WDTF_OP_QUERY 0x300UL /* query timer capabilities */ /* * Bits 56-63: "timeoutAction" (for "Start Watchdog" only) */ #define PSERIES_WDTF_ACTION_HARD_POWEROFF 0x1UL /* poweroff */ #define PSERIES_WDTF_ACTION_HARD_RESTART 0x2UL /* restart */ #define PSERIES_WDTF_ACTION_DUMP_RESTART 0x3UL /* dump + restart */ /* * R5: "watchdogNumber": * PAPR says use -1 (all ones) to stop all watchdogs. */ #define PSERIES_WDT_NUM_ALL ((unsigned long)-1) /* * H_WATCHDOG Output * * R3: Return code * * H_SUCCESS The operation completed. * * H_BUSY The hypervisor is too busy; retry the operation. * * H_PARAMETER The given "flags" are somehow invalid. Either the * "operation" or "timeoutAction" is invalid, or a * reserved bit is set. * * H_P2 The given "watchdogNumber" is zero or exceeds the * supported maximum value. * * H_P3 The given "timeoutInMs" is below the supported * minimum value. * * H_NOOP The given "watchdogNumber" is already stopped. * * H_HARDWARE The operation failed for ineffable reasons. * * H_FUNCTION The H_WATCHDOG hypercall is not supported by this * hypervisor. * * R4: * * - For the "Query Watchdog Capabilities" operation, a 64-bit * structure: */ #define PSERIES_WDTQ_MIN_TIMEOUT(cap) (((cap) >> 48) & 0xffff) #define PSERIES_WDTQ_MAX_NUMBER(cap) (((cap) >> 32) & 0xffff) #endif /* _ASM_POWERPC_PAPR_WATCHDOG_H */