11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef _LINUX_WATCHDOG_H
171bd4fe43Sopenharmony_ci#define _LINUX_WATCHDOG_H
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include <linux/types.h>
201bd4fe43Sopenharmony_ci
211bd4fe43Sopenharmony_ci#ifdef __cplusplus
221bd4fe43Sopenharmony_ciextern "C" {
231bd4fe43Sopenharmony_ci#endif /* __cplusplus */
241bd4fe43Sopenharmony_ci
251bd4fe43Sopenharmony_ci#define hi_wtdg_unused(x) (void)(x)
261bd4fe43Sopenharmony_ci
271bd4fe43Sopenharmony_ciint watchdog_init(void);
281bd4fe43Sopenharmony_civoid watchdog_exit(void);
291bd4fe43Sopenharmony_ci
301bd4fe43Sopenharmony_ci#define    WATCHDOG_IOCTL_BASE    'W'
311bd4fe43Sopenharmony_ci
321bd4fe43Sopenharmony_cistruct watchdog_info {
331bd4fe43Sopenharmony_ci    unsigned int options;             /* Options the card/driver supports */
341bd4fe43Sopenharmony_ci    unsigned int firmware_version;    /* Firmware version of the card */
351bd4fe43Sopenharmony_ci    unsigned char identity[32];       /* 32 bit Identity of the board */
361bd4fe43Sopenharmony_ci};
371bd4fe43Sopenharmony_ci
381bd4fe43Sopenharmony_ci#define WDIOC_GETSUPPORT     _IOR(WATCHDOG_IOCTL_BASE, 0, struct watchdog_info)
391bd4fe43Sopenharmony_ci#define WDIOC_GETSTATUS      _IOR(WATCHDOG_IOCTL_BASE, 1, int)
401bd4fe43Sopenharmony_ci#define WDIOC_GETBOOTSTATUS  _IOR(WATCHDOG_IOCTL_BASE, 2, int)
411bd4fe43Sopenharmony_ci
421bd4fe43Sopenharmony_ci#define WDIOC_SETOPTIONS     _IOWR(WATCHDOG_IOCTL_BASE, 4, int)
431bd4fe43Sopenharmony_ci#define WDIOC_KEEPALIVE      _IO(WATCHDOG_IOCTL_BASE, 5)
441bd4fe43Sopenharmony_ci#define WDIOC_SETTIMEOUT     _IOWR(WATCHDOG_IOCTL_BASE, 6, int)
451bd4fe43Sopenharmony_ci#define WDIOC_GETTIMEOUT     _IOR(WATCHDOG_IOCTL_BASE, 7, int)
461bd4fe43Sopenharmony_ci
471bd4fe43Sopenharmony_ci#define WDIOF_UNKNOWN        (-1)    /* Unknown flag error */
481bd4fe43Sopenharmony_ci#define WDIOS_UNKNOWN        (-1)    /* Unknown status error */
491bd4fe43Sopenharmony_ci
501bd4fe43Sopenharmony_ci#define WDIOF_OVERHEAT       0x0001    /* Reset due to CPU overheat */
511bd4fe43Sopenharmony_ci#define WDIOF_FANFAULT       0x0002    /* Fan failed */
521bd4fe43Sopenharmony_ci#define WDIOF_EXTERN1        0x0004    /* External relay 1 */
531bd4fe43Sopenharmony_ci#define WDIOF_EXTERN2        0x0008    /* External relay 2 */
541bd4fe43Sopenharmony_ci#define WDIOF_POWERUNDER     0x0010    /* Power bad/power fault */
551bd4fe43Sopenharmony_ci#define WDIOF_CARDRESET      0x0020    /* Card previously reset the CPU */
561bd4fe43Sopenharmony_ci#define WDIOF_POWEROVER      0x0040    /* Power over voltage */
571bd4fe43Sopenharmony_ci#define WDIOF_SETTIMEOUT     0x0080    /* Set timeout (in seconds) */
581bd4fe43Sopenharmony_ci#define WDIOF_MAGICCLOSE     0x0100    /* Supports magic close char */
591bd4fe43Sopenharmony_ci#define WDIOF_PRETIMEOUT     0x0200    /* Pretimeout (in seconds), get/set */
601bd4fe43Sopenharmony_ci#define WDIOF_KEEPALIVEPING  0x8000    /* Keep alive ping reply */
611bd4fe43Sopenharmony_ci
621bd4fe43Sopenharmony_ci#define WDIOS_DISABLECARD    0x0001    /* Turn off the watchdog timer */
631bd4fe43Sopenharmony_ci#define WDIOS_ENABLECARD     0x0002    /* Turn on the watchdog timer */
641bd4fe43Sopenharmony_ci#define WDIOS_TEMPPANIC      0x0004    /* Kernel panic on temperature trip */
651bd4fe43Sopenharmony_ci
661bd4fe43Sopenharmony_ci#ifdef __cplusplus
671bd4fe43Sopenharmony_ci}
681bd4fe43Sopenharmony_ci#endif /* __cplusplus */
691bd4fe43Sopenharmony_ci
701bd4fe43Sopenharmony_ci#endif
71