• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file watchdog.h
3  *
4  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef __BSP_INC_WATCHDOG_H__
19 #define __BSP_INC_WATCHDOG_H__
20 
21 #include <hi3861_platform_base.h>
22 #include <hi_watchdog.h>
23 
24 /**
25 * @ingroup  hct_watchdog
26 * @brief Watchdog callback function. CNcomment:看门狗到期回调函数。CNend
27 *
28 * @par 描述:
29 *           Watchdog callback function. CNcomment:看门狗到期回调函数。CNend
30 *
31 * @attention None.
32 * @param  data [IN] type #hi_u32,Callback function parameter passing.CNcomment:回调函数参数传递。CNend
33 *
34 * @retval None.
35 * @par 依赖:
36 *            @li watchdog.h:文件用于描述看门狗相关接口。
37 * @see 无。
38 */
39 typedef hi_void (*hi_watchdog_func)(hi_u32 data);
40 
41 /**
42  * @ingroup hct_watchdog
43  *
44  * Watchdog mode. CNcomment:看门狗模式。CNend
45  */
46 typedef enum {
47     HI_WDG_MODE_NORMAL = 0,
48     HI_WDG_MODE_INTER = 1,
49     HI_WDG_MODE_ERR,
50 } hi_wdg_mode;
51 
52 /**
53 * @ingroup  hct_watchdog
54 * @brief  Clear the watchdog interrupt.CNcomment:清除看门狗中断。CNend
55 *
56 * @par 描述:
57 *           Clear the watchdog interrupt.CNcomment:清除看门狗中断。CNend
58 *
59 * @attention 无。
60 * @param  无。
61 *
62 * @retval 无。
63 * @par 依赖:
64 *            @li watchdog.h:文件用于描述看门狗相关接口。
65 * @see  无。
66 */
67 HI_EXTERN hi_void hi_watchdog_int_clear(hi_void);
68 
69 /**
70 * @ingroup  hct_watchdog
71 * @brief  Configure to enable the watchdog. CNcomment:配置使能看门狗。CNend
72 *
73 * @par 描述:
74 *           Configure to enable the watchdog. CNcomment:配置使能看门狗。CNend
75 *
76 * @attention 无。
77 * @param  mode         [IN] type #hi_wdg_mode ,Watchdog mode. CNcomment:看门狗模式。CNend
78 * @param  p_func       [IN] type #hi_watchdog_func,Configure the watchdog to interrupt mode and the function will be
79 called to notify the user when the watchdog first expires.
80 CNcomment:配置看门狗为中断模式时,看门狗第一次到期时会调用该函数通知用户。CNend
81 * @param  data         [IN] type #hi_u32 Callback function enter parameter. CNcomment:回调函数入参。CNend
82 * @param  over_time_ms [IN] type #hi_u32,Watchdog expiration time (unit: ms).
83                         Expiration time calculation method: expiration time t = 2^(top+16)*1000/wd_clk,
84                         where wd_clk is the watchdog clock frequency and top range is 0~15.
85                         Therefore, there is a certain error between the expected expiration time and
86                         the actual expiration time.
87                         CNcomment:看门狗到期时间(单位:ms)。
88 *                           到期时间计算方法:到期时间t = 2^(top+16)*1000/wd_clk,其中wd_clk为看门狗时钟频率,top取值为0~15。
89 *                           因此期望的到期时间与实际到期时间有一定误差。CNend
90 *
91 * @retval #0           Sunccess.
92 * @retval #非0         Failure. For details, see hi_errno.h.
93 * @par 依赖:
94 *            @li watchdog.h:文件用于描述看门狗相关接口。
95 * @see  无。
96 */
97 HI_EXTERN hi_u32 hi_watchdog_register(hi_wdg_mode mode, hi_watchdog_func p_func, hi_u32 data, hi_u32 over_time_ms);
98 
99 HI_EXTERN hi_void watchdog_irq_handler(hi_u32 data);
100 
101 #endif
102 
103