1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file drvWDT.h 98*53ee8cc1Swenshuai.xi /// @brief Piu Watch Dog Timer Driver Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! 103*53ee8cc1Swenshuai.xi \defgroup G_WDT WDT interface 104*53ee8cc1Swenshuai.xi \ingroup G_PERIPHERAL 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi WDT(WatchDog) is a program to moniter every registered programs, and will restart these programs while thy are up and down. 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi <b> Features </b> 109*53ee8cc1Swenshuai.xi - 32-bit counter; 110*53ee8cc1Swenshuai.xi - WDT clock uses live crystal clock; 111*53ee8cc1Swenshuai.xi - Adjustable length of the WDT reset; 112*53ee8cc1Swenshuai.xi - Interrupt asserted (if enabled) when counter hits the reg_wdt_int?? 113*53ee8cc1Swenshuai.xi - A flag for WDT tracking (un-touchable by global IP reset). 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi \image html WDT.png 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi <b> Usage </b> 118*53ee8cc1Swenshuai.xi -# WDT on/off/restart: 119*53ee8cc1Swenshuai.xi WDT will be enabled after system is turned-on; 120*53ee8cc1Swenshuai.xi WDT will be disabled when set reg_wdt_max??to zero; 121*53ee8cc1Swenshuai.xi WDT will be re-started when set reg_wdt_clr?? 122*53ee8cc1Swenshuai.xi -# Set reg_wdt_max??for length of WDT period; 123*53ee8cc1Swenshuai.xi -# Set reg_wdt_int??to enable interrupt if needed; 124*53ee8cc1Swenshuai.xi Interrupt asserted when "WDT counter [31:16]" is equal to reg_wdt_int??and "WDT counter[15:0]" is equal to 0x0000 125*53ee8cc1Swenshuai.xi -# Set reg_wdt_rst_len??to adjust the length of WDT reset. 126*53ee8cc1Swenshuai.xi -# Read reg_wdt_rst_flag??to see if WDT reset ever happened. 127*53ee8cc1Swenshuai.xi 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi \defgroup G_WDT_INIT Initialization Task relative 130*53ee8cc1Swenshuai.xi \ingroup G_WDT 131*53ee8cc1Swenshuai.xi \defgroup G_WDT_COMMON Common Task relative 132*53ee8cc1Swenshuai.xi \ingroup G_WDT 133*53ee8cc1Swenshuai.xi \defgroup G_WDT_CONTROL Control relative 134*53ee8cc1Swenshuai.xi \ingroup G_WDT 135*53ee8cc1Swenshuai.xi \defgroup G_WDT_OTHER other relative 136*53ee8cc1Swenshuai.xi \ingroup G_WDT 137*53ee8cc1Swenshuai.xi \defgroup G_WDT_ToBeModified WDT api to be modified 138*53ee8cc1Swenshuai.xi \ingroup G_WDT 139*53ee8cc1Swenshuai.xi \defgroup G_WDT_ToBeRemove WDT api to be removed 140*53ee8cc1Swenshuai.xi \ingroup G_WDT 141*53ee8cc1Swenshuai.xi */ 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi #ifndef _DRV_WDT_H_ 144*53ee8cc1Swenshuai.xi #define _DRV_WDT_H_ 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi #ifdef __cplusplus 149*53ee8cc1Swenshuai.xi extern "C" 150*53ee8cc1Swenshuai.xi { 151*53ee8cc1Swenshuai.xi #endif 152*53ee8cc1Swenshuai.xi 153*53ee8cc1Swenshuai.xi #include "MsTypes.h" 154*53ee8cc1Swenshuai.xi #include "MsDevice.h" 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 157*53ee8cc1Swenshuai.xi // Type and Structure 158*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 159*53ee8cc1Swenshuai.xi #define MSIF_WDT_LIB_CODE {'W','D','T','_'} //Lib code 160*53ee8cc1Swenshuai.xi #define MSIF_WDT_LIBVER {'0','1'} //LIB version 161*53ee8cc1Swenshuai.xi #define MSIF_WDT_BUILDNUM {'0','4'} //Build Number 162*53ee8cc1Swenshuai.xi #define MSIF_WDT_CHANGELIST {'0','0','3','8','2','1','7','1'} //P4 ChangeList Number 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi #define WDT_DRV_VERSION /* Character String for DRV/API version */ \ 165*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 166*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 167*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 168*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 169*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 170*53ee8cc1Swenshuai.xi MSIF_CPU, \ 171*53ee8cc1Swenshuai.xi MSIF_WDT_LIB_CODE, /* IP__ */ \ 172*53ee8cc1Swenshuai.xi MSIF_WDT_LIBVER, /* 0.0 ~ Z.Z */ \ 173*53ee8cc1Swenshuai.xi MSIF_WDT_BUILDNUM, /* 00 ~ 99 */ \ 174*53ee8cc1Swenshuai.xi MSIF_WDT_CHANGELIST, /* CL# */ \ 175*53ee8cc1Swenshuai.xi MSIF_OS 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi #define MAX_TIMER_NUM 2 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi typedef enum _WDT_DbgLv 180*53ee8cc1Swenshuai.xi { 181*53ee8cc1Swenshuai.xi E_WDT_DBGLV_NONE, /* no debug message */ 182*53ee8cc1Swenshuai.xi E_WDT_DBGLV_ERR_ONLY, /* show error only */ 183*53ee8cc1Swenshuai.xi E_WDT_DBGLV_INFO, /* show error & informaiton */ 184*53ee8cc1Swenshuai.xi E_WDT_DBGLV_ALL /* show error, information & funciton name */ 185*53ee8cc1Swenshuai.xi }WDT_DbgLv; 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi typedef enum 188*53ee8cc1Swenshuai.xi { 189*53ee8cc1Swenshuai.xi E_WDT_FAIL, 190*53ee8cc1Swenshuai.xi E_WDT_OK, 191*53ee8cc1Swenshuai.xi } WDT_Result; 192*53ee8cc1Swenshuai.xi 193*53ee8cc1Swenshuai.xi typedef enum _E_PIU_Timer 194*53ee8cc1Swenshuai.xi { 195*53ee8cc1Swenshuai.xi E_TIMER_0, 196*53ee8cc1Swenshuai.xi E_TIMER_1, 197*53ee8cc1Swenshuai.xi } E_PIU_Timer; 198*53ee8cc1Swenshuai.xi 199*53ee8cc1Swenshuai.xi typedef struct _tmr_interrupt { 200*53ee8cc1Swenshuai.xi MS_U32 u32TmrInit; /* Initial value of timer */ 201*53ee8cc1Swenshuai.xi MS_U32 u32TmrMax; /* Max value of timer */ 202*53ee8cc1Swenshuai.xi void (*TmrFnct)(void *, void *, void *); /* Function to execute when timer times out */ 203*53ee8cc1Swenshuai.xi void *TmrFnctArg0; /* Arguments supplied to user defined function */ 204*53ee8cc1Swenshuai.xi void *TmrFnctArg1; /* Arguments supplied to user defined function */ 205*53ee8cc1Swenshuai.xi void *TmrFnctArg2; /* Arguments supplied to user defined function */ 206*53ee8cc1Swenshuai.xi MS_BOOL bTmrEn; /* Flag indicating whether timer is enable */ 207*53ee8cc1Swenshuai.xi }tmr_interrupt; 208*53ee8cc1Swenshuai.xi 209*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 210*53ee8cc1Swenshuai.xi // Function and Variable 211*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 212*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 213*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_GetLibVer 214*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Show the WDT driver version 215*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 216*53ee8cc1Swenshuai.xi /// @param <IN> \b None: 217*53ee8cc1Swenshuai.xi /// @param <OUT> \b **pVerString : output WDT driver version 218*53ee8cc1Swenshuai.xi /// @param <RET> \b eRETCODE : 219*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b VER: Library version string 220*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 221*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_GetLibVer(const MSIF_Version **ppVersion); 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 224*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_Init 225*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Init and Start WDT 226*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_INIT 227*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 228*53ee8cc1Swenshuai.xi /// @param <OUT> \b None: 229*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Initial FALSE: Not initial 230*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 231*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 232*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_Init(WDT_DbgLv eLevel); 233*53ee8cc1Swenshuai.xi 234*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 235*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_Stop 236*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Init WDT Stop 237*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 238*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 239*53ee8cc1Swenshuai.xi /// @param <OUT> \b None : 240*53ee8cc1Swenshuai.xi /// @param <RET> \b WDT_Result 241*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 242*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 243*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_Stop(WDT_DbgLv eLevel); 244*53ee8cc1Swenshuai.xi 245*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 246*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_Clear 247*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: clear WDT. 248*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 249*53ee8cc1Swenshuai.xi /// @param <IN> \b None: 250*53ee8cc1Swenshuai.xi /// @param <OUT> \b None: 251*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Initial FALSE: Not initial 252*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 253*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 254*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_Clear(void); 255*53ee8cc1Swenshuai.xi 256*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 257*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_ClearRstFlag 258*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: clear WDT reset flag. 259*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 260*53ee8cc1Swenshuai.xi /// @param <IN> \b None: 261*53ee8cc1Swenshuai.xi /// @param <OUT> \b None: 262*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Initial FALSE: Not initial 263*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 264*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 265*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_ClearRstFlag(void); 266*53ee8cc1Swenshuai.xi 267*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 268*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_IsReset 269*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: check if WDT is reset 270*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 271*53ee8cc1Swenshuai.xi /// @param <IN> \b None: 272*53ee8cc1Swenshuai.xi /// @param <OUT> \b None: 273*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Initial FALSE: Not initial 274*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 275*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 276*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_IsReset(void); 277*53ee8cc1Swenshuai.xi 278*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 279*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_IsEnable 280*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: check if WDT is Enable 281*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 282*53ee8cc1Swenshuai.xi /// @param <IN> \b None: 283*53ee8cc1Swenshuai.xi /// @param <OUT> \b None: 284*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Initial FALSE: Not initial 285*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 286*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 287*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_IsEnable(void); 288*53ee8cc1Swenshuai.xi 289*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 290*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_SetTimer 291*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Set Timer 292*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 293*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 294*53ee8cc1Swenshuai.xi /// @param <IN> \b MS_U16: sec 295*53ee8cc1Swenshuai.xi /// @param <OUT> \b None : 296*53ee8cc1Swenshuai.xi /// @param <RET> \b WDT_Result 297*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 298*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 299*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_SetTimer(WDT_DbgLv eLevel, MS_U16 sec); 300*53ee8cc1Swenshuai.xi 301*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 302*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_SetTimer_ms 303*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Set Timer 304*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 305*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 306*53ee8cc1Swenshuai.xi /// @param <IN> \b MS_U16: msec 307*53ee8cc1Swenshuai.xi /// @param <OUT> \b None : 308*53ee8cc1Swenshuai.xi /// @param <RET> \b WDT_Result 309*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 310*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 311*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_SetTimer_ms(WDT_DbgLv eLevel, MS_U16 msec); 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 314*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_SetTimer_us 315*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Set Timer 316*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 317*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 318*53ee8cc1Swenshuai.xi /// @param <IN> \b MS_U16: msec 319*53ee8cc1Swenshuai.xi /// @param <OUT> \b None : 320*53ee8cc1Swenshuai.xi /// @param <RET> \b WDT_Result 321*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 322*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 323*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_SetTimer_us(WDT_DbgLv eLevel, MS_U16 usec); 324*53ee8cc1Swenshuai.xi 325*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 326*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_WDT_SetIntTimer 327*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Set INT Timer 328*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_CONTROL 329*53ee8cc1Swenshuai.xi /// @param <IN> \b eLevel: E_WDT_DBGLV_NONE/E_WDT_DBGLV_ERR_ONLY/E_WDT_DBGLV_INFO/E_WDT_DBGLV_ALL 330*53ee8cc1Swenshuai.xi /// @param <IN> \b MS_U16: sec 331*53ee8cc1Swenshuai.xi /// @param <OUT> \b None : 332*53ee8cc1Swenshuai.xi /// @param <RET> \b WDT_Result 333*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None : 334*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 335*53ee8cc1Swenshuai.xi WDT_Result MDrv_WDT_SetIntTimer(WDT_DbgLv eLevel, MS_U16 sec); 336*53ee8cc1Swenshuai.xi 337*53ee8cc1Swenshuai.xi //Attribute 338*53ee8cc1Swenshuai.xi //muti-paremeter 339*53ee8cc1Swenshuai.xi //------- ------------------------------------------------------------------------------------------ 340*53ee8cc1Swenshuai.xi /// Description : Store and resume WDT initial status for fast booting. 341*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_INIT 342*53ee8cc1Swenshuai.xi /// @param EN_POWER_MODE \b IN: The mode of power on/off 343*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 344*53ee8cc1Swenshuai.xi /// @return FALSE : failed 345*53ee8cc1Swenshuai.xi /// @return 1: Resume OK; 2: Suspend OK; 3: Suspend failed 346*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 347*53ee8cc1Swenshuai.xi void MDrv_TIMER_Init(void); 348*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 349*53ee8cc1Swenshuai.xi /// MOBF Encrypt 350*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 351*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 352*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 353*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 354*53ee8cc1Swenshuai.xi /// @return Others : Fail 355*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 356*53ee8cc1Swenshuai.xi void MDrv_TIMER_CfgFnct(E_PIU_Timer eTimer, void (*fnct)(void *, void *, void *), void *arg0, void *arg1, void *arg2 ); 357*53ee8cc1Swenshuai.xi //------- ------------------------------------------------------------------------------------------ 358*53ee8cc1Swenshuai.xi /// Description : Store and resume WDT initial status for fast booting. 359*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 360*53ee8cc1Swenshuai.xi /// @param EN_POWER_MODE \b IN: The mode of power on/off 361*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 362*53ee8cc1Swenshuai.xi /// @return FALSE : failed 363*53ee8cc1Swenshuai.xi /// @return 1: Resume OK; 2: Suspend OK; 3: Suspend failed 364*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 365*53ee8cc1Swenshuai.xi void MDrv_TIMER_Count(E_PIU_Timer eTimer, MS_BOOL bEnable); 366*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 367*53ee8cc1Swenshuai.xi /// MOBF Encrypt 368*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 369*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 370*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 371*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 372*53ee8cc1Swenshuai.xi /// @return Others : Fail 373*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 374*53ee8cc1Swenshuai.xi void MDrv_TIMER_INT(E_PIU_Timer eTimer, MS_BOOL bEnable); 375*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 376*53ee8cc1Swenshuai.xi /// MOBF Encrypt 377*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 378*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 379*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 380*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 381*53ee8cc1Swenshuai.xi /// @return Others : Fail 382*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 383*53ee8cc1Swenshuai.xi void MDrv_TIMER_Rst(E_PIU_Timer eTimer); 384*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 385*53ee8cc1Swenshuai.xi /// MOBF Encrypt 386*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 387*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 388*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 389*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 390*53ee8cc1Swenshuai.xi /// @return Others : Fail 391*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 392*53ee8cc1Swenshuai.xi void MDrv_TIMER_SetMaxMatch(E_PIU_Timer eTimer, MS_U32 u32MaxTimer); 393*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 394*53ee8cc1Swenshuai.xi /// MOBF Encrypt 395*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 396*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 397*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 398*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 399*53ee8cc1Swenshuai.xi /// @return Others : Fail 400*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 401*53ee8cc1Swenshuai.xi MS_BOOL MDrv_TIMER_HitMaxMatch(E_PIU_Timer eTimer); 402*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 403*53ee8cc1Swenshuai.xi /// MOBF Encrypt 404*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 405*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 406*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 407*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 408*53ee8cc1Swenshuai.xi /// @return Others : Fail 409*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 410*53ee8cc1Swenshuai.xi MS_U32 MDrv_TIMER_GetMaxMatch(E_PIU_Timer eTimer); 411*53ee8cc1Swenshuai.xi //------- ------------------------------------------------------------------------------------------ 412*53ee8cc1Swenshuai.xi /// Description : Store and resume WDT initial status for fast booting. 413*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 414*53ee8cc1Swenshuai.xi /// @param EN_POWER_MODE \b IN: The mode of power on/off 415*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 416*53ee8cc1Swenshuai.xi /// @return FALSE : failed 417*53ee8cc1Swenshuai.xi /// @return 1: Resume OK; 2: Suspend OK; 3: Suspend failed 418*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 419*53ee8cc1Swenshuai.xi MS_U32 MDrv_TIMER_GetCounter(E_PIU_Timer eTimer); 420*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 421*53ee8cc1Swenshuai.xi /// MOBF Encrypt 422*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 423*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 424*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 425*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 426*53ee8cc1Swenshuai.xi /// @return Others : Fail 427*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 428*53ee8cc1Swenshuai.xi MS_U32 MDrv_TIMER_GetSecond(E_PIU_Timer eTimer); 429*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 430*53ee8cc1Swenshuai.xi /// MOBF Encrypt 431*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 432*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 433*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 434*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 435*53ee8cc1Swenshuai.xi /// @return Others : Fail 436*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 437*53ee8cc1Swenshuai.xi MS_U32 MDrv_TIMER_GetMs(E_PIU_Timer eTimer); 438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 439*53ee8cc1Swenshuai.xi /// MOBF Encrypt 440*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 441*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 442*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 443*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 444*53ee8cc1Swenshuai.xi /// @return Others : Fail 445*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 446*53ee8cc1Swenshuai.xi MS_U32 MDrv_TIMER_GetUs(E_PIU_Timer eTimer); 447*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 448*53ee8cc1Swenshuai.xi /// MOBF Encrypt 449*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 450*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 451*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 452*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 453*53ee8cc1Swenshuai.xi /// @return Others : Fail 454*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 455*53ee8cc1Swenshuai.xi void MDrv_TIMER_Delay(E_PIU_Timer eTimer, MS_U32 u32Second); 456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 457*53ee8cc1Swenshuai.xi /// MOBF Encrypt 458*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 459*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 460*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 461*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 462*53ee8cc1Swenshuai.xi /// @return Others : Fail 463*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 464*53ee8cc1Swenshuai.xi void MDrv_TIMER_DelayMs(E_PIU_Timer eTimer, MS_U32 u32MS); 465*53ee8cc1Swenshuai.xi /// MOBF Encrypt 466*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_ToBeRemove 467*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 468*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 469*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 470*53ee8cc1Swenshuai.xi /// @return Others : Fail 471*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 472*53ee8cc1Swenshuai.xi void MDrv_TIMER_DelayUs(E_PIU_Timer eTimer, MS_U32 u32US); 473*53ee8cc1Swenshuai.xi //------- ------------------------------------------------------------------------------------------ 474*53ee8cc1Swenshuai.xi /// Description : Store and resume WDT initial status for fast booting. 475*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 476*53ee8cc1Swenshuai.xi /// @param EN_POWER_MODE \b IN: The mode of power on/off 477*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 478*53ee8cc1Swenshuai.xi /// @return FALSE : failed 479*53ee8cc1Swenshuai.xi /// @return 1: Resume OK; 2: Suspend OK; 3: Suspend failed 480*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 481*53ee8cc1Swenshuai.xi void MDrv_TIMER_Exit(void); 482*53ee8cc1Swenshuai.xi 483*53ee8cc1Swenshuai.xi //------- ------------------------------------------------------------------------------------------ 484*53ee8cc1Swenshuai.xi /// Description : Store and resume WDT initial status for fast booting. 485*53ee8cc1Swenshuai.xi /// @ingroup G_WDT_COMMON 486*53ee8cc1Swenshuai.xi /// @param EN_POWER_MODE \b IN: The mode of power on/off 487*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 488*53ee8cc1Swenshuai.xi /// @return FALSE : failed 489*53ee8cc1Swenshuai.xi /// @return 1: Resume OK; 2: Suspend OK; 3: Suspend failed 490*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 491*53ee8cc1Swenshuai.xi MS_U16 MDrv_WDT_SetPowerState(EN_POWER_MODE u16PowerState); 492*53ee8cc1Swenshuai.xi 493*53ee8cc1Swenshuai.xi #ifdef __cplusplus 494*53ee8cc1Swenshuai.xi } 495*53ee8cc1Swenshuai.xi #endif 496*53ee8cc1Swenshuai.xi 497*53ee8cc1Swenshuai.xi 498*53ee8cc1Swenshuai.xi #endif // _DRV_WDT_H_ 499*53ee8cc1Swenshuai.xi 500