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) 2009-2010 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 drvSAR.h 98*53ee8cc1Swenshuai.xi /// @brief SAR Driver Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup G_SAR SAR interface 103*53ee8cc1Swenshuai.xi * \ingroup G_PERIPHERAL 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi \brief 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi Successive Approximation Register controller 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi <b>Features</b> 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi - Keypa 112*53ee8cc1Swenshuai.xi - SCART control signal detection 113*53ee8cc1Swenshuai.xi - RF AGC level detection 114*53ee8cc1Swenshuai.xi - GPIO 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi <b>Successive approximation ADC Diagram</b> \n 117*53ee8cc1Swenshuai.xi \image html drvSAR_pic.png 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi \defgroup G_SAR_INIT Initialization Task relative 120*53ee8cc1Swenshuai.xi \ingroup G_SAR 121*53ee8cc1Swenshuai.xi \defgroup G_SAR_COMMON Common Task relative 122*53ee8cc1Swenshuai.xi \ingroup G_SAR 123*53ee8cc1Swenshuai.xi \defgroup G_SAR_CONTROL Control relative 124*53ee8cc1Swenshuai.xi \ingroup G_SAR 125*53ee8cc1Swenshuai.xi *\defgroup G_SAR_OTHER other relative 126*53ee8cc1Swenshuai.xi *\ingroup G_SAR 127*53ee8cc1Swenshuai.xi *\defgroup G_SAR_ToBeModified SAR api to be modified 128*53ee8cc1Swenshuai.xi *\ingroup G_SAR 129*53ee8cc1Swenshuai.xi \defgroup G_SAR_ToBeRemove SAR api to be removed 130*53ee8cc1Swenshuai.xi \ingroup G_SAR 131*53ee8cc1Swenshuai.xi */ 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi #ifndef _DRV_SAR_H_ 134*53ee8cc1Swenshuai.xi #define _DRV_SAR_H_ 135*53ee8cc1Swenshuai.xi 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi #ifdef __cplusplus 138*53ee8cc1Swenshuai.xi extern "C" 139*53ee8cc1Swenshuai.xi { 140*53ee8cc1Swenshuai.xi #endif 141*53ee8cc1Swenshuai.xi 142*53ee8cc1Swenshuai.xi #include "MsTypes.h" 143*53ee8cc1Swenshuai.xi #include "MsDevice.h" 144*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 145*53ee8cc1Swenshuai.xi // Driver Capability 146*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 150*53ee8cc1Swenshuai.xi // Macro and Define 151*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 152*53ee8cc1Swenshuai.xi /// define SAR library version 153*53ee8cc1Swenshuai.xi #define MSIF_SAR_LIB_CODE {'S','A','R','_'} 154*53ee8cc1Swenshuai.xi #define MSIF_SAR_LIBVER {'0','3'} 155*53ee8cc1Swenshuai.xi #define MSIF_SAR_BUILDNUM {'0','9'} 156*53ee8cc1Swenshuai.xi #define MSIF_SAR_CHANGELIST {'0','0','4','3','3','2','5','1'} 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi #define SAR_DRV_VERSION /* Character String for DRV/API version */ \ 159*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 160*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 161*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 162*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 163*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 164*53ee8cc1Swenshuai.xi MSIF_CPU, \ 165*53ee8cc1Swenshuai.xi MSIF_SAR_LIB_CODE, /* IP__ */ \ 166*53ee8cc1Swenshuai.xi MSIF_SAR_LIBVER, /* 0.0 ~ Z.Z */ \ 167*53ee8cc1Swenshuai.xi MSIF_SAR_BUILDNUM, /* 00 ~ 99 */ \ 168*53ee8cc1Swenshuai.xi MSIF_SAR_CHANGELIST, /* CL# */ \ 169*53ee8cc1Swenshuai.xi MSIF_OS 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi /// SAR driver 172*53ee8cc1Swenshuai.xi #define SAR_VERSION_STRING_MAX 33 173*53ee8cc1Swenshuai.xi #define SAR_DUMMY_KEY 0xFF 174*53ee8cc1Swenshuai.xi #define SAR_DUMMY_STATUS 0x00 175*53ee8cc1Swenshuai.xi #define SAR_VERSION 0x00000001 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 178*53ee8cc1Swenshuai.xi // Type and Structure 179*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 180*53ee8cc1Swenshuai.xi //################################## 181*53ee8cc1Swenshuai.xi // 182*53ee8cc1Swenshuai.xi // Access SAR settings by using Mailbox 183*53ee8cc1Swenshuai.xi // sent commands to PM 184*53ee8cc1Swenshuai.xi // 185*53ee8cc1Swenshuai.xi //################################## 186*53ee8cc1Swenshuai.xi /// define SAR driver info 187*53ee8cc1Swenshuai.xi typedef struct __attribute__((aligned (4096))) 188*53ee8cc1Swenshuai.xi { 189*53ee8cc1Swenshuai.xi MS_U8 u8TrigMode : 1; /// SAR trigger mode. 0: edge trigger, 1: level trigger 190*53ee8cc1Swenshuai.xi MS_U8 u8OprMode : 1; /// SAR operation mode. 0: one-shot, 1: free run 191*53ee8cc1Swenshuai.xi MS_U8 u8CfgdChs : 3; /// SAR configured channels 192*53ee8cc1Swenshuai.xi MS_U8 u8Reserved : 3; /// reserved for future 193*53ee8cc1Swenshuai.xi }SAR_DrvInfo; 194*53ee8cc1Swenshuai.xi 195*53ee8cc1Swenshuai.xi /// define SAR channel bound 196*53ee8cc1Swenshuai.xi typedef struct 197*53ee8cc1Swenshuai.xi { 198*53ee8cc1Swenshuai.xi MS_U8 u8UpBnd; ///upper bound 199*53ee8cc1Swenshuai.xi MS_U8 u8LoBnd; ///low bound 200*53ee8cc1Swenshuai.xi } SAR_BndCfg; 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi /// define SAR parameter configuration 203*53ee8cc1Swenshuai.xi typedef struct __attribute__((aligned (4096))) 204*53ee8cc1Swenshuai.xi { 205*53ee8cc1Swenshuai.xi MS_U8 u8SARChID; /// SAR channel ID: from 0 206*53ee8cc1Swenshuai.xi MS_U8 u8UpBnd; ///upper bound 207*53ee8cc1Swenshuai.xi MS_U8 u8LoBnd; ///low bound 208*53ee8cc1Swenshuai.xi MS_U8 u8KeyLevelNum; /// SAR key level number 209*53ee8cc1Swenshuai.xi MS_U8 u8KeyThreshold[8]; /// SAR key thresholds 210*53ee8cc1Swenshuai.xi MS_U8 u8KeyCode[8]; /// SAR key code 211*53ee8cc1Swenshuai.xi } SAR_RegCfg; 212*53ee8cc1Swenshuai.xi 213*53ee8cc1Swenshuai.xi /// emurate SAR fucntion return result 214*53ee8cc1Swenshuai.xi typedef enum 215*53ee8cc1Swenshuai.xi { 216*53ee8cc1Swenshuai.xi /// SAR result for failure 217*53ee8cc1Swenshuai.xi E_SAR_FAIL =0, 218*53ee8cc1Swenshuai.xi /// SAR result for OK 219*53ee8cc1Swenshuai.xi E_SAR_OK = 1, 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi } SAR_Result; 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi /// emurate SAR Level for 2.2V or 3.3V 224*53ee8cc1Swenshuai.xi typedef enum 225*53ee8cc1Swenshuai.xi { 226*53ee8cc1Swenshuai.xi /// SAR result for failure 227*53ee8cc1Swenshuai.xi E_SAR_20V =0, 228*53ee8cc1Swenshuai.xi /// SAR result for OK 229*53ee8cc1Swenshuai.xi E_SAR_33V = 1, 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi } SAR_LEVEL; 232*53ee8cc1Swenshuai.xi 233*53ee8cc1Swenshuai.xi 234*53ee8cc1Swenshuai.xi /// emurate SAR status 235*53ee8cc1Swenshuai.xi typedef enum 236*53ee8cc1Swenshuai.xi { 237*53ee8cc1Swenshuai.xi /// SAR Driver Status: Initialization OK 238*53ee8cc1Swenshuai.xi E_SAR_INIT_OK = (1<<0), 239*53ee8cc1Swenshuai.xi /// SAR Driver Status: Callback installed 240*53ee8cc1Swenshuai.xi E_SAR_INST_CLBK = (1<<1), 241*53ee8cc1Swenshuai.xi /// SAR Driver Status: Get key code 242*53ee8cc1Swenshuai.xi E_SAR_KEY_CODE = (1<<2), 243*53ee8cc1Swenshuai.xi /// SAR Driver Status: SAR is enabled 244*53ee8cc1Swenshuai.xi E_SAR_ENABLE = (1<<3), 245*53ee8cc1Swenshuai.xi /// SAR Driver Status: Maximum status 246*53ee8cc1Swenshuai.xi E_SAR_MAX_STATUS = 255 247*53ee8cc1Swenshuai.xi } SAR_Status; 248*53ee8cc1Swenshuai.xi 249*53ee8cc1Swenshuai.xi //------------------------------- 250*53ee8cc1Swenshuai.xi // Mailbox Class : SAR 251*53ee8cc1Swenshuai.xi //------------------------------- 252*53ee8cc1Swenshuai.xi /// emurate SAR mailbox commands from cpu to mcu51 253*53ee8cc1Swenshuai.xi typedef enum 254*53ee8cc1Swenshuai.xi { 255*53ee8cc1Swenshuai.xi /// mbx command for initialization 256*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_INIT=0x00, 257*53ee8cc1Swenshuai.xi /// mbx command for configuration 258*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_CONFIG, 259*53ee8cc1Swenshuai.xi /// mbx command for key code 260*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_KEYCODE, 261*53ee8cc1Swenshuai.xi /// mbx command for set callback 262*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_SETCLBK, 263*53ee8cc1Swenshuai.xi /// mbx command for library version 264*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_LIBVER, 265*53ee8cc1Swenshuai.xi /// mbx command for status 266*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_STATUS, 267*53ee8cc1Swenshuai.xi /// mbx command for enable 268*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_ENABLE, 269*53ee8cc1Swenshuai.xi /// mbx command for driver info 270*53ee8cc1Swenshuai.xi E_SAR_CPUTo51_CMD_INFO, 271*53ee8cc1Swenshuai.xi } SAR_CPUTo51CmdIdx; 272*53ee8cc1Swenshuai.xi 273*53ee8cc1Swenshuai.xi /// emurate SAR mailbox commands ack from mcu51 to cpu 274*53ee8cc1Swenshuai.xi typedef enum 275*53ee8cc1Swenshuai.xi { 276*53ee8cc1Swenshuai.xi //(1) Acknowledge from MCU51 277*53ee8cc1Swenshuai.xi /// ack mbx command for initialization 278*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_INIT=0x00, 279*53ee8cc1Swenshuai.xi /// ack mbx command for configuration 280*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_CONFIG, 281*53ee8cc1Swenshuai.xi /// ack mbx command for key code 282*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_KEYCODE, 283*53ee8cc1Swenshuai.xi /// ack mbx command for set callback 284*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_SETCLBK, 285*53ee8cc1Swenshuai.xi /// ack mbx command for library version 286*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_LIBVER, 287*53ee8cc1Swenshuai.xi ///ack mbx command for status 288*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_STATUS, 289*53ee8cc1Swenshuai.xi ///ack mbx command for enable 290*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_ENABLE, 291*53ee8cc1Swenshuai.xi ///ack mbx command for driver info 292*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_ACK_INFO, 293*53ee8cc1Swenshuai.xi 294*53ee8cc1Swenshuai.xi //(2) Notification from MCU51 295*53ee8cc1Swenshuai.xi ///notification mbx command for key code 296*53ee8cc1Swenshuai.xi E_SAR_51ToCPU_CMD_KEYCODE, 297*53ee8cc1Swenshuai.xi 298*53ee8cc1Swenshuai.xi } SAR_51ToCPUCmdIdx; 299*53ee8cc1Swenshuai.xi 300*53ee8cc1Swenshuai.xi /// emurate ack flags 301*53ee8cc1Swenshuai.xi typedef enum 302*53ee8cc1Swenshuai.xi { 303*53ee8cc1Swenshuai.xi /// ack flag for null 304*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_NULL = 0, 305*53ee8cc1Swenshuai.xi /// ack flag for wait initialization 306*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_INIT = (1<<0), 307*53ee8cc1Swenshuai.xi /// ack flag for wait configuration 308*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_CONFIG = (1<<1), 309*53ee8cc1Swenshuai.xi /// ack flag for wait key code 310*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_KEYCODE = (1<<2), 311*53ee8cc1Swenshuai.xi /// ack flag for wait set callback 312*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_SETCLBK = (1<<3), 313*53ee8cc1Swenshuai.xi /// ack flag for wait library version 314*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_LIBVER = (1<<4), 315*53ee8cc1Swenshuai.xi /// ack flag for wait status 316*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_STATUS = (1<<5), 317*53ee8cc1Swenshuai.xi /// ack flag for wait enable 318*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_ENABLE = (1<<6), 319*53ee8cc1Swenshuai.xi /// ack flag for wait driver info 320*53ee8cc1Swenshuai.xi E_SAR_ACKFLG_WAIT_INFO = (1<<7), 321*53ee8cc1Swenshuai.xi } SAR_AckFlags; 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi /// Callback function which is called in SAR ISR. 324*53ee8cc1Swenshuai.xi typedef void ( *SAR_Callback ) (MS_U8 u8Key, MS_U8 u8RepeatFlag); 325*53ee8cc1Swenshuai.xi 326*53ee8cc1Swenshuai.xi ///Define SAR debug level 327*53ee8cc1Swenshuai.xi typedef enum _SAR_DbgLvl 328*53ee8cc1Swenshuai.xi { 329*53ee8cc1Swenshuai.xi E_SAR_DBGLVL_NONE = 0, /// no debug message 330*53ee8cc1Swenshuai.xi E_SAR_DBGLVL_WARNING, /// show warning only 331*53ee8cc1Swenshuai.xi E_SAR_DBGLVL_ERROR, /// show error only 332*53ee8cc1Swenshuai.xi E_SAR_DBGLVL_INFO, /// show error & informaiton 333*53ee8cc1Swenshuai.xi E_SAR_DBGLVL_ALL, /// show error, information & funciton name 334*53ee8cc1Swenshuai.xi }SAR_DbgLvl; 335*53ee8cc1Swenshuai.xi 336*53ee8cc1Swenshuai.xi 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi //################################## 339*53ee8cc1Swenshuai.xi // 340*53ee8cc1Swenshuai.xi // Access SAR settings directly by RIU without 341*53ee8cc1Swenshuai.xi // using Mailbox sent commands to PM 342*53ee8cc1Swenshuai.xi // 343*53ee8cc1Swenshuai.xi //################################## 344*53ee8cc1Swenshuai.xi /// emurate SAR Kpd fucntion return result 345*53ee8cc1Swenshuai.xi typedef enum 346*53ee8cc1Swenshuai.xi { 347*53ee8cc1Swenshuai.xi /// SAR result for failure 348*53ee8cc1Swenshuai.xi E_SAR_KPD_FAIL =0, 349*53ee8cc1Swenshuai.xi /// SAR result for OK 350*53ee8cc1Swenshuai.xi E_SAR_KPD_OK = 1, 351*53ee8cc1Swenshuai.xi 352*53ee8cc1Swenshuai.xi } SAR_KpdResult; 353*53ee8cc1Swenshuai.xi 354*53ee8cc1Swenshuai.xi /// define SAR Kpd Bounds 355*53ee8cc1Swenshuai.xi typedef struct 356*53ee8cc1Swenshuai.xi { 357*53ee8cc1Swenshuai.xi MS_U8 u8UpBnd; //upper bound 358*53ee8cc1Swenshuai.xi MS_U8 u8LoBnd; //low bound 359*53ee8cc1Swenshuai.xi } SAR_KpdBndCfg; 360*53ee8cc1Swenshuai.xi 361*53ee8cc1Swenshuai.xi /// define SAR Kpd Configuration 362*53ee8cc1Swenshuai.xi typedef struct 363*53ee8cc1Swenshuai.xi { 364*53ee8cc1Swenshuai.xi MS_U8 u8SARChID; 365*53ee8cc1Swenshuai.xi SAR_KpdBndCfg tSARChBnd; 366*53ee8cc1Swenshuai.xi MS_U8 u8KeyLevelNum; 367*53ee8cc1Swenshuai.xi MS_U8 u8KeyThreshold[8]; 368*53ee8cc1Swenshuai.xi MS_U8 u8KeyCode[8]; 369*53ee8cc1Swenshuai.xi } SAR_KpdRegCfg; 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xi /// define SAR driver info 372*53ee8cc1Swenshuai.xi typedef struct 373*53ee8cc1Swenshuai.xi { 374*53ee8cc1Swenshuai.xi MS_U8 u8TrigMode : 1; /// SAR trigger mode. 0: edge trigger, 1: level trigger 375*53ee8cc1Swenshuai.xi MS_U8 u8SingleChEn : 1; /// SAR single channel enable 376*53ee8cc1Swenshuai.xi MS_U8 u8DigitOprMode : 1; /// SAR operation mode. 0: one-shot, 1: free run 377*53ee8cc1Swenshuai.xi MS_U8 u8AtopFreerun : 1; /// SAR atop freerun mode. 0: controlled by digital, 1: free run 378*53ee8cc1Swenshuai.xi MS_U8 u8DigitPwrDn : 1; /// SAR digital power down 379*53ee8cc1Swenshuai.xi MS_U8 u8AtopPwrDn : 1; /// SAR atop power down 380*53ee8cc1Swenshuai.xi MS_U8 u8HighChEn : 1; /// SAR high channel enable 381*53ee8cc1Swenshuai.xi MS_U8 u8InterruptEn : 1; /// SAR interrupt enable 382*53ee8cc1Swenshuai.xi 383*53ee8cc1Swenshuai.xi MS_U8 u8ConfigUsedChs : 3; /// SAR configured channels 384*53ee8cc1Swenshuai.xi MS_U8 u8MaxKpdSuppChs : 3; /// SAR IP max keypad channels supported 385*53ee8cc1Swenshuai.xi MS_U8 u8Reserved: 2;///RFU1 386*53ee8cc1Swenshuai.xi MS_U8 u8MaxKpdAvlbChs : 3; /// SAR driver max keypad channels provided 387*53ee8cc1Swenshuai.xi MS_U8 u8MaxKpdAvlbLvls: 5; // /SAR driver max keypad channel levels provided 388*53ee8cc1Swenshuai.xi } SAR_KpdDrvInfo; 389*53ee8cc1Swenshuai.xi 390*53ee8cc1Swenshuai.xi /// emurate SAR status 391*53ee8cc1Swenshuai.xi typedef enum 392*53ee8cc1Swenshuai.xi { 393*53ee8cc1Swenshuai.xi E_SAR_KPD_INVALID=0, 394*53ee8cc1Swenshuai.xi /// SAR Driver Status: Initialization OK 395*53ee8cc1Swenshuai.xi E_SAR_KPD_INIT_OK = (1<<0), 396*53ee8cc1Swenshuai.xi /// SAR Driver Status: Not Supported 397*53ee8cc1Swenshuai.xi E_SAR_KPD_NOT_SUP = (1<<1), 398*53ee8cc1Swenshuai.xi /// SAR Driver Status: Maximum status 399*53ee8cc1Swenshuai.xi E_SAR_KPD_MAX_STATUS = 255 400*53ee8cc1Swenshuai.xi } SAR_KpdStatus; 401*53ee8cc1Swenshuai.xi 402*53ee8cc1Swenshuai.xi 403*53ee8cc1Swenshuai.xi ///Define SAR debug level 404*53ee8cc1Swenshuai.xi typedef enum 405*53ee8cc1Swenshuai.xi { 406*53ee8cc1Swenshuai.xi E_SAR_KPD_DBGLVL_NONE = 0, /// no debug message 407*53ee8cc1Swenshuai.xi E_SAR_KPD_DBGLVL_WARNING, /// show warning only 408*53ee8cc1Swenshuai.xi E_SAR_KPD_DBGLVL_ERROR, /// show error only 409*53ee8cc1Swenshuai.xi E_SAR_KPD_DBGLVL_INFO, /// show error & informaiton 410*53ee8cc1Swenshuai.xi E_SAR_KPD_DBGLVL_ALL, /// show error, information & funciton name 411*53ee8cc1Swenshuai.xi }SAR_KpdDbgLvl; 412*53ee8cc1Swenshuai.xi 413*53ee8cc1Swenshuai.xi //################## 414*53ee8cc1Swenshuai.xi // 415*53ee8cc1Swenshuai.xi // For SAR ADC functions 416*53ee8cc1Swenshuai.xi // 417*53ee8cc1Swenshuai.xi //################## 418*53ee8cc1Swenshuai.xi /// emurate SAR ADC fucntion return result 419*53ee8cc1Swenshuai.xi typedef enum 420*53ee8cc1Swenshuai.xi { 421*53ee8cc1Swenshuai.xi /// SAR result for failure 422*53ee8cc1Swenshuai.xi E_SAR_ADC_FAIL =0, 423*53ee8cc1Swenshuai.xi /// SAR result for OK 424*53ee8cc1Swenshuai.xi E_SAR_ADC_OK = 1, 425*53ee8cc1Swenshuai.xi 426*53ee8cc1Swenshuai.xi } SAR_AdcResult; 427*53ee8cc1Swenshuai.xi 428*53ee8cc1Swenshuai.xi ///Define SAR ADC debug level 429*53ee8cc1Swenshuai.xi typedef enum 430*53ee8cc1Swenshuai.xi { 431*53ee8cc1Swenshuai.xi E_SAR_ADC_DBGLVL_NONE = 0, /// no debug message 432*53ee8cc1Swenshuai.xi E_SAR_ADC_DBGLVL_WARNING, /// show warning only 433*53ee8cc1Swenshuai.xi E_SAR_ADC_DBGLVL_ERROR, /// show error only 434*53ee8cc1Swenshuai.xi E_SAR_ADC_DBGLVL_INFO, /// show error & informaiton 435*53ee8cc1Swenshuai.xi E_SAR_ADC_DBGLVL_ALL, /// show error, information & funciton name 436*53ee8cc1Swenshuai.xi }SAR_AdcDbgLvl; 437*53ee8cc1Swenshuai.xi 438*53ee8cc1Swenshuai.xi ///Define RGB HSync ADC channel 439*53ee8cc1Swenshuai.xi typedef enum 440*53ee8cc1Swenshuai.xi { 441*53ee8cc1Swenshuai.xi E_SAR_ADC_HSYNC_CH0 = 0, /// ADC HSync channel 0 442*53ee8cc1Swenshuai.xi E_SAR_ADC_HSYNC_CH1, /// ADC HSync channel 1 443*53ee8cc1Swenshuai.xi E_SAR_ADC_HSYNC_CH2, /// ADC HSync channel 2 444*53ee8cc1Swenshuai.xi E_SAR_ADC_HSYNC_CH3, /// ADC HSync channel 3 445*53ee8cc1Swenshuai.xi E_SAR_ADC_HSYNC_CHMAX, /// ADC HSync channel max 446*53ee8cc1Swenshuai.xi }SAR_AdcHSyncCh; 447*53ee8cc1Swenshuai.xi 448*53ee8cc1Swenshuai.xi //################## 449*53ee8cc1Swenshuai.xi // 450*53ee8cc1Swenshuai.xi // For SAR GPIO functions 451*53ee8cc1Swenshuai.xi // 452*53ee8cc1Swenshuai.xi //################## 453*53ee8cc1Swenshuai.xi /// emurate SAR GPIO fucntion return result 454*53ee8cc1Swenshuai.xi typedef enum 455*53ee8cc1Swenshuai.xi { 456*53ee8cc1Swenshuai.xi /// SAR result for failure 457*53ee8cc1Swenshuai.xi E_SAR_GPIO_FAIL =0, 458*53ee8cc1Swenshuai.xi /// SAR result for OK 459*53ee8cc1Swenshuai.xi E_SAR_GPIO_OK = 1, 460*53ee8cc1Swenshuai.xi 461*53ee8cc1Swenshuai.xi } SAR_GpioResult; 462*53ee8cc1Swenshuai.xi 463*53ee8cc1Swenshuai.xi ///Define SAR GPIO debug level 464*53ee8cc1Swenshuai.xi typedef enum 465*53ee8cc1Swenshuai.xi { 466*53ee8cc1Swenshuai.xi E_SAR_GPIO_DBGLVL_NONE = 0, /// no debug message 467*53ee8cc1Swenshuai.xi E_SAR_GPIO_DBGLVL_WARNING, /// show warning only 468*53ee8cc1Swenshuai.xi E_SAR_GPIO_DBGLVL_ERROR, /// show error only 469*53ee8cc1Swenshuai.xi E_SAR_GPIO_DBGLVL_INFO, /// show error & informaiton 470*53ee8cc1Swenshuai.xi E_SAR_GPIO_DBGLVL_ALL, /// show error, information & funciton name 471*53ee8cc1Swenshuai.xi }SAR_GpioDbgLvl; 472*53ee8cc1Swenshuai.xi 473*53ee8cc1Swenshuai.xi //Define SAR GetKey Value Struct ========== 474*53ee8cc1Swenshuai.xi typedef struct _SAR_KeyValue_Data_Member 475*53ee8cc1Swenshuai.xi { 476*53ee8cc1Swenshuai.xi MS_U8 u8Channel; 477*53ee8cc1Swenshuai.xi MS_U8 u8Key; 478*53ee8cc1Swenshuai.xi MS_U8 u8Repeat; 479*53ee8cc1Swenshuai.xi }SAR_KeyValue_Data_Member; 480*53ee8cc1Swenshuai.xi 481*53ee8cc1Swenshuai.xi typedef union 482*53ee8cc1Swenshuai.xi { 483*53ee8cc1Swenshuai.xi SAR_KeyValue_Data_Member sData[16]; 484*53ee8cc1Swenshuai.xi } SAR_KeyValue_Data; 485*53ee8cc1Swenshuai.xi 486*53ee8cc1Swenshuai.xi typedef struct _SAR_KeyValue 487*53ee8cc1Swenshuai.xi { 488*53ee8cc1Swenshuai.xi MS_U32 u32Version; 489*53ee8cc1Swenshuai.xi SAR_KeyValue_Data unSarKeyData; 490*53ee8cc1Swenshuai.xi MS_U32 u32Num; //u32Num indicate number of current really getting SAR key 491*53ee8cc1Swenshuai.xi }SAR_KeyValue; 492*53ee8cc1Swenshuai.xi //=============================== 493*53ee8cc1Swenshuai.xi 494*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 495*53ee8cc1Swenshuai.xi // Function and Variable 496*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 497*53ee8cc1Swenshuai.xi //################################## 498*53ee8cc1Swenshuai.xi // 499*53ee8cc1Swenshuai.xi // Access SAR settings by using Mailbox 500*53ee8cc1Swenshuai.xi // sent commands to PM 501*53ee8cc1Swenshuai.xi // 502*53ee8cc1Swenshuai.xi //################################## 503*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 504*53ee8cc1Swenshuai.xi /// SAR Iinitialized function before using SAR to receive keys. (This sends command to PM51 using mailbox.) 505*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_INIT 506*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 507*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 508*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 509*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_Init(void); 510*53ee8cc1Swenshuai.xi 511*53ee8cc1Swenshuai.xi 512*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 513*53ee8cc1Swenshuai.xi /// SAR parameter configuration function. (This sends command to PM51 using mailbox.) 514*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 515*53ee8cc1Swenshuai.xi /// @param pSARRegCfg \b IN: pointer to the SAR configuration structure. 516*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 517*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 518*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 519*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_Config(SAR_RegCfg *pSARRegCfg); 520*53ee8cc1Swenshuai.xi 521*53ee8cc1Swenshuai.xi 522*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 523*53ee8cc1Swenshuai.xi /// SAR get key code function. (This sends command to PM51 using mailbox.) 524*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 525*53ee8cc1Swenshuai.xi /// @param pu8Key \b OUT: Get SAR key code 526*53ee8cc1Swenshuai.xi /// @param pu8Repeat \b OUT: Get SAR key repeat status 527*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 528*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 529*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 530*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_GetKeyCode(MS_U8 *pu8Key, MS_U8 *pu8Repeat); 531*53ee8cc1Swenshuai.xi 532*53ee8cc1Swenshuai.xi 533*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 534*53ee8cc1Swenshuai.xi /// Set SAR callback function when receive SAR key. Support only one callback. If call it twice, 535*53ee8cc1Swenshuai.xi /// the first callback does not be called. (This sends command to PM51 using mailbox.) 536*53ee8cc1Swenshuai.xi /// Note: The callback runs at interrupt mode. 537*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 538*53ee8cc1Swenshuai.xi /// @param pCallback \b IN: Set the callback function when generate SAR interrupt. 539*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 540*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 541*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 542*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_SetCallback(SAR_Callback pCallback); 543*53ee8cc1Swenshuai.xi 544*53ee8cc1Swenshuai.xi 545*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 546*53ee8cc1Swenshuai.xi /// Get SAR callback function which receive SAR key. 547*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 548*53ee8cc1Swenshuai.xi /// @return the callback function when generate SAR interrupt 549*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 550*53ee8cc1Swenshuai.xi // SAR_Callback MDrv_SAR_GetCallback(void); 551*53ee8cc1Swenshuai.xi 552*53ee8cc1Swenshuai.xi 553*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 554*53ee8cc1Swenshuai.xi /// Get SAR library version function. 555*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 556*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: pointer to library structure 557*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 558*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 559*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 560*53ee8cc1Swenshuai.xi // SAR_Result MDrv_SAR_GetLibVer(const MSIF_Version **ppVersion); 561*53ee8cc1Swenshuai.xi 562*53ee8cc1Swenshuai.xi 563*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 564*53ee8cc1Swenshuai.xi /// Get SAR status function. (This sends command to PM51 using mailbox.) 565*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 566*53ee8cc1Swenshuai.xi /// @param pu8SARStatus \b OUT: pointer to status structure 567*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 568*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 569*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 570*53ee8cc1Swenshuai.xi // SAR_Result MDrv_SAR_GetStatus(MS_U8 *pu8SARStatus); 571*53ee8cc1Swenshuai.xi 572*53ee8cc1Swenshuai.xi 573*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 574*53ee8cc1Swenshuai.xi /// Set SAR enable function. (This sends command to PM51 using mailbox.) 575*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 576*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable SAR, FALSE: disable SAR 577*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 578*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 579*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 580*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_Enable(MS_BOOL bEnable); 581*53ee8cc1Swenshuai.xi 582*53ee8cc1Swenshuai.xi 583*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 584*53ee8cc1Swenshuai.xi /// Get SAR driver information function. (This sends command to PM51 using mailbox.) 585*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 586*53ee8cc1Swenshuai.xi /// @return @ref SAR_DrvInfo structure 587*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 588*53ee8cc1Swenshuai.xi // const SAR_DrvInfo* MDrv_SAR_GetInfo(void); 589*53ee8cc1Swenshuai.xi 590*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 591*53ee8cc1Swenshuai.xi /// Set SAR debug function level. 592*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 593*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_SAR_DBGLVL_NONE/E_SAR_DBGLVL_WARNING/E_SAR_DBGLVL_ERROR/E_SAR_DBGLVL_INFO/E_SAR_DBGLVL_ALL 594*53ee8cc1Swenshuai.xi /// @return E_SAR_OK: Success 595*53ee8cc1Swenshuai.xi /// @return E_SAR_FAIL or other values: Failure 596*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 597*53ee8cc1Swenshuai.xi SAR_Result MDrv_SAR_SetDbgLevel(SAR_DbgLvl eLevel); 598*53ee8cc1Swenshuai.xi 599*53ee8cc1Swenshuai.xi 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi //################################## 602*53ee8cc1Swenshuai.xi // 603*53ee8cc1Swenshuai.xi // Access SAR settings directly by RIU without 604*53ee8cc1Swenshuai.xi // using Mailbox sent commands to PM 605*53ee8cc1Swenshuai.xi // 606*53ee8cc1Swenshuai.xi //################################## 607*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 608*53ee8cc1Swenshuai.xi /// Set SAR Keypad initialized function. 609*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_INIT 610*53ee8cc1Swenshuai.xi /// @param None: 611*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_OK: Success 612*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_FAIL or other values: Failure 613*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 614*53ee8cc1Swenshuai.xi SAR_KpdResult MDrv_SAR_Kpd_Init(void); 615*53ee8cc1Swenshuai.xi 616*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 617*53ee8cc1Swenshuai.xi /// Set SAR Keypad channel information function. 618*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 619*53ee8cc1Swenshuai.xi /// @param sarChInfo: sar channel info pointer 620*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_OK: Success 621*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_FAIL or other values: Failure 622*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 623*53ee8cc1Swenshuai.xi SAR_KpdResult MDrv_SAR_Kpd_SetChInfo(SAR_KpdRegCfg *sarChInfo); 624*53ee8cc1Swenshuai.xi 625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 626*53ee8cc1Swenshuai.xi /// Get SAR Keypad key code function. 627*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 628*53ee8cc1Swenshuai.xi /// @param pu8Key: key code pointer 629*53ee8cc1Swenshuai.xi /// @param pu8Repeat: key repeat pointer 630*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_OK: Success 631*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_FAIL or other values: Failure 632*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 633*53ee8cc1Swenshuai.xi SAR_KpdResult MDrv_SAR_Kpd_GetKeyCode(MS_U8 *pu8Key, MS_U8 *pu8Repeat); 634*53ee8cc1Swenshuai.xi 635*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 636*53ee8cc1Swenshuai.xi /// Get SAR Multi-Keypad key code function with every SAR channel 637*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 638*53ee8cc1Swenshuai.xi /// @param SAR_KeyValue: key code struct pointer 639*53ee8cc1Swenshuai.xi /// @param u32Size: Struct Size 640*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_OK: Success 641*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_FAIL or other values: Failure 642*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 643*53ee8cc1Swenshuai.xi // SAR_KpdResult MDrv_SAR_Kpd_GetMultiKeyCode(SAR_KeyValue *sSarKey, MS_U32 u32Size); 644*53ee8cc1Swenshuai.xi 645*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 646*53ee8cc1Swenshuai.xi /// Get SAR current status function. 647*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 648*53ee8cc1Swenshuai.xi /// @param None: 649*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_INIT_OK: Init OK 650*53ee8cc1Swenshuai.xi /// @return others: other status 651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 652*53ee8cc1Swenshuai.xi SAR_KpdStatus MDrv_SAR_Kpd_GetStatus(void); 653*53ee8cc1Swenshuai.xi 654*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 655*53ee8cc1Swenshuai.xi /// Get SAR Keypad driver information function. 656*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 657*53ee8cc1Swenshuai.xi /// @return @ref SAR_KpdDrvInfo structure 658*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 659*53ee8cc1Swenshuai.xi const SAR_KpdDrvInfo* MDrv_SAR_Kpd_GetInfo(void); 660*53ee8cc1Swenshuai.xi 661*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 662*53ee8cc1Swenshuai.xi /// Set SAR Keypad debug function level. 663*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 664*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_SAR_KPD_DBGLVL_NONE/E_SAR_KPD_DBGLVL_WARNING/E_SAR_KPD_DBGLVL_ERROR/E_SAR_KPD_DBGLVL_INFO/E_SAR_KPD_DBGLVL_ALL 665*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_OK: Success 666*53ee8cc1Swenshuai.xi /// @return E_SAR_KPD_FAIL or other values: Failure 667*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 668*53ee8cc1Swenshuai.xi // SAR_KpdResult MDrv_SAR_Kpd_SetDbgLevel(SAR_KpdDbgLvl eLevel); 669*53ee8cc1Swenshuai.xi 670*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 671*53ee8cc1Swenshuai.xi /// Set SAR as ADC channel. 672*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 673*53ee8cc1Swenshuai.xi /// @param u8Channel: sar ADC channel 0~7 674*53ee8cc1Swenshuai.xi /// @param bEnable: 1: configured as ADC, 0: configured as GPIO input 675*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_OK: Success 676*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_FAIL or other values: Failure 677*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 678*53ee8cc1Swenshuai.xi SAR_AdcResult MDrv_SAR_Adc_Config(MS_U8 u8Channel,MS_BOOL bEnable); 679*53ee8cc1Swenshuai.xi 680*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 681*53ee8cc1Swenshuai.xi /// Get ADC value function for each SAR channel. 682*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 683*53ee8cc1Swenshuai.xi /// @param u8Channel: sar ADC channel 0~7 684*53ee8cc1Swenshuai.xi /// @return MS_U8: ADC value 685*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 686*53ee8cc1Swenshuai.xi MS_U8 MDrv_SAR_Adc_GetValue(MS_U8 u8Channel); 687*53ee8cc1Swenshuai.xi 688*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 689*53ee8cc1Swenshuai.xi /// Set SAR High channel function for RGB HSync application 690*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 691*53ee8cc1Swenshuai.xi /// @param bEnable: 1: enable high channel, 0: disable high channel 692*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_OK: Success 693*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_FAIL or other values: Failure 694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 695*53ee8cc1Swenshuai.xi SAR_AdcResult MDrv_SAR_Adc_SetHSyncChEn(MS_BOOL bEnable); 696*53ee8cc1Swenshuai.xi 697*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 698*53ee8cc1Swenshuai.xi /// Switch RGB HSync MUX to direct signal to SAR High channel 699*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 700*53ee8cc1Swenshuai.xi /// @param u8HsynCh: HSync channel: 0, 1, 2, 3 701*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_OK: Success 702*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_FAIL or other values: Failure 703*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 704*53ee8cc1Swenshuai.xi SAR_AdcResult MDrv_SAR_Adc_SetHSyncCh(SAR_AdcHSyncCh eHSyncCh); 705*53ee8cc1Swenshuai.xi 706*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 707*53ee8cc1Swenshuai.xi /// Set SAR ADC debug function level. 708*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 709*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_SAR_ADC_DBGLVL_NONE/E_SAR_ADC_DBGLVL_WARNING/E_SAR_ADC_DBGLVL_ERROR/E_SAR_ADC_DBGLVL_INFO/E_SAR_ADC_DBGLVL_ALL 710*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_OK: Success 711*53ee8cc1Swenshuai.xi /// @return E_SAR_ADC_FAIL or other values: Failure 712*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 713*53ee8cc1Swenshuai.xi // SAR_AdcResult MDrv_SAR_Adc_SetDbgLevel(SAR_AdcDbgLvl eLevel); 714*53ee8cc1Swenshuai.xi 715*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 716*53ee8cc1Swenshuai.xi /// Set SAR as GPIO channel. 717*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 718*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 719*53ee8cc1Swenshuai.xi /// @param u8InOut: 1: Input, 0:output 720*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 721*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 723*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_Gpio_CfgDir(MS_U8 u8Channel,MS_BOOL u8InOut); 724*53ee8cc1Swenshuai.xi 725*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 726*53ee8cc1Swenshuai.xi /// Set SAR GPIO channel High/Low 727*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_CONTROL 728*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 729*53ee8cc1Swenshuai.xi /// @param bHighLow: 1: High, 0:low 730*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 731*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 732*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 733*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_Gpio_SetOutput(MS_U8 u8Channel,MS_BOOL bHighLow); 734*53ee8cc1Swenshuai.xi 735*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 736*53ee8cc1Swenshuai.xi /// Get SAR GPIO channel High/Low 737*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 738*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 739*53ee8cc1Swenshuai.xi /// @param pbResult: pointer to get Input level 740*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 741*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 742*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 743*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_Gpio_GetInput(MS_U8 u8Channel, MS_BOOL* pbResult); 744*53ee8cc1Swenshuai.xi 745*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 746*53ee8cc1Swenshuai.xi /// Set SAR GPIO debug function level. 747*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 748*53ee8cc1Swenshuai.xi /// @param eLevel \b IN: E_SAR_GPIO_DBGLVL_NONE/E_SAR_GPIO_DBGLVL_WARNING/E_SAR_GPIO_DBGLVL_ERROR/E_SAR_GPIO_DBGLVL_INFO/E_SAR_GPIO_DBGLVL_ALL 749*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 750*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 751*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 752*53ee8cc1Swenshuai.xi // SAR_GpioResult MDrv_SAR_Gpio_SetDbgLevel(SAR_GpioDbgLvl eLevel); 753*53ee8cc1Swenshuai.xi 754*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 755*53ee8cc1Swenshuai.xi /// Set SAR Interrupt mask 756*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 757*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 758*53ee8cc1Swenshuai.xi /// @param bEnable: 1: enable interrupt, 0: disable interrupt 759*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 760*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 761*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 762*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_CfgInterrupt(MS_U8 u8Channel, MS_BOOL bEnable); 763*53ee8cc1Swenshuai.xi 764*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 765*53ee8cc1Swenshuai.xi /// Set SAR Interrupt wakeup 766*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 767*53ee8cc1Swenshuai.xi /// @param bEnable: 1: enable interrupt, 0: disable interrupt 768*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 769*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 770*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 771*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_CfgPMWakeup(MS_BOOL bEnable); 772*53ee8cc1Swenshuai.xi 773*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 774*53ee8cc1Swenshuai.xi /// Set SAR Clear Interrupt Status 775*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_CONTROL 776*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 777*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: Success 778*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or other values: Failure 779*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 780*53ee8cc1Swenshuai.xi void MDrv_SAR_ClearInterrupt(MS_U8 u8Channel); 781*53ee8cc1Swenshuai.xi 782*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 783*53ee8cc1Swenshuai.xi /// Get SAR Status 784*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 785*53ee8cc1Swenshuai.xi /// @param u8Channel: sar GPIO channel 0~7 786*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_OK: trigger interrupt 787*53ee8cc1Swenshuai.xi /// @return E_SAR_GPIO_FAIL or interrrupt do not trigger 788*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 789*53ee8cc1Swenshuai.xi SAR_GpioResult MDrv_SAR_GetInterruptStatus(MS_U8 u8Channel); 790*53ee8cc1Swenshuai.xi 791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 792*53ee8cc1Swenshuai.xi /// MOBF Encrypt 793*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_ToBeRemove 794*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 795*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 796*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 797*53ee8cc1Swenshuai.xi /// @return Others : Fail 798*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 799*53ee8cc1Swenshuai.xi SAR_KpdResult MDrv_SAR_Kpd_MMIO_Init(void); 800*53ee8cc1Swenshuai.xi 801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 802*53ee8cc1Swenshuai.xi /// MOBF Encrypt 803*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 804*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 805*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 806*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 807*53ee8cc1Swenshuai.xi /// @return Others : Fail 808*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 809*53ee8cc1Swenshuai.xi // SAR_KpdResult MDrv_SAR_Kpd_CfgChannelBound(MS_U8 u8Channel, MS_U16 u16Upper, MS_U16 u16Lower); 810*53ee8cc1Swenshuai.xi 811*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 812*53ee8cc1Swenshuai.xi /// Set SAR 2.0V / 3.3V Level 813*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_COMMON 814*53ee8cc1Swenshuai.xi /// @param eSarLevel: E_SAR_33V: 3.3V, E_SAR_20V: 2.0V 815*53ee8cc1Swenshuai.xi /// @return Void 816*53ee8cc1Swenshuai.xi /// @return Void 817*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 818*53ee8cc1Swenshuai.xi void MDrv_SAR_SetLevel(SAR_LEVEL eSarLevel); 819*53ee8cc1Swenshuai.xi 820*53ee8cc1Swenshuai.xi 821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 822*53ee8cc1Swenshuai.xi // Utopia2.0 will call this function to register SAR module 823*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 824*53ee8cc1Swenshuai.xi 825*53ee8cc1Swenshuai.xi // void SARRegisterToUtopia(FUtopiaOpen ModuleType); 826*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 827*53ee8cc1Swenshuai.xi /// MOBF Encrypt 828*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_ToBeRemove 829*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 830*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 831*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 832*53ee8cc1Swenshuai.xi /// @return Others : Fail 833*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 834*53ee8cc1Swenshuai.xi MS_U32 SAROpen(void** pInstance, MS_U32 u32ModuleVersion, void* pAttribute); 835*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 836*53ee8cc1Swenshuai.xi /// MOBF Encrypt 837*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_ToBeRemove 838*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 839*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 840*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 841*53ee8cc1Swenshuai.xi /// @return Others : Fail 842*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 843*53ee8cc1Swenshuai.xi // MS_U32 SARClose(void* pInstance); 844*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 845*53ee8cc1Swenshuai.xi /// MOBF Encrypt 846*53ee8cc1Swenshuai.xi /// @ingroup G_SAR_ToBeRemove 847*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key 848*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE 849*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success 850*53ee8cc1Swenshuai.xi /// @return Others : Fail 851*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 852*53ee8cc1Swenshuai.xi // MS_U32 SARIoctl(void* pInstance, MS_U32 u32Cmd, void *pArgs); 853*53ee8cc1Swenshuai.xi 854*53ee8cc1Swenshuai.xi MS_U32 MDrv_SAR_SetPowerState(EN_POWER_MODE u16PowerState); 855*53ee8cc1Swenshuai.xi 856*53ee8cc1Swenshuai.xi 857*53ee8cc1Swenshuai.xi 858*53ee8cc1Swenshuai.xi 859*53ee8cc1Swenshuai.xi typedef enum { 860*53ee8cc1Swenshuai.xi MDrv_CMD_Kpd_GetKeyCode, 861*53ee8cc1Swenshuai.xi } eSARIoctlOpt; 862*53ee8cc1Swenshuai.xi 863*53ee8cc1Swenshuai.xi 864*53ee8cc1Swenshuai.xi 865*53ee8cc1Swenshuai.xi 866*53ee8cc1Swenshuai.xi 867*53ee8cc1Swenshuai.xi 868*53ee8cc1Swenshuai.xi 869*53ee8cc1Swenshuai.xi typedef struct _SAR_Kpd_GetKeyCode_PARAM 870*53ee8cc1Swenshuai.xi { 871*53ee8cc1Swenshuai.xi MS_U8 *pu8Key; 872*53ee8cc1Swenshuai.xi MS_U8 *pu8Repeat; 873*53ee8cc1Swenshuai.xi } SAR_Kpd_GetKeyCode_PARAM; 874*53ee8cc1Swenshuai.xi 875*53ee8cc1Swenshuai.xi 876*53ee8cc1Swenshuai.xi 877*53ee8cc1Swenshuai.xi 878*53ee8cc1Swenshuai.xi typedef SAR_KpdResult (*IOCTL_SAR_Kpd_GetKeyCode)(MS_U8 *pu8Key, MS_U8 *pu8Repeat); 879*53ee8cc1Swenshuai.xi 880*53ee8cc1Swenshuai.xi 881*53ee8cc1Swenshuai.xi typedef struct _SAR_INSTANT_PRIVATE 882*53ee8cc1Swenshuai.xi { 883*53ee8cc1Swenshuai.xi 884*53ee8cc1Swenshuai.xi IOCTL_SAR_Kpd_GetKeyCode fpSARKpdGetKeyCode; 885*53ee8cc1Swenshuai.xi 886*53ee8cc1Swenshuai.xi }SAR_INSTANT_PRIVATE; 887*53ee8cc1Swenshuai.xi 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xi //SAR_Private 890*53ee8cc1Swenshuai.xi typedef struct _SAR_RESOURCE_PRIVATE 891*53ee8cc1Swenshuai.xi { 892*53ee8cc1Swenshuai.xi MS_U32 Dummy; 893*53ee8cc1Swenshuai.xi }SAR_RESOURCE_PRIVATE; 894*53ee8cc1Swenshuai.xi 895*53ee8cc1Swenshuai.xi 896*53ee8cc1Swenshuai.xi #ifdef __cplusplus 897*53ee8cc1Swenshuai.xi } 898*53ee8cc1Swenshuai.xi #endif 899*53ee8cc1Swenshuai.xi 900*53ee8cc1Swenshuai.xi 901*53ee8cc1Swenshuai.xi #endif // _DRV_SAR_H_ 902*53ee8cc1Swenshuai.xi 903