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 // $Workfile: PCMCIA.h $ 81*53ee8cc1Swenshuai.xi // 82*53ee8cc1Swenshuai.xi // Author/Copyright Gero Kuehn / GkWare e.K. 83*53ee8cc1Swenshuai.xi // Humboldtstrasse 177 84*53ee8cc1Swenshuai.xi // 45149 Essen 85*53ee8cc1Swenshuai.xi // GERMANY 86*53ee8cc1Swenshuai.xi // Tel: +49 174 520 8026 87*53ee8cc1Swenshuai.xi // Email: support@gkware.com 88*53ee8cc1Swenshuai.xi // Web: http://www.gkware.com 89*53ee8cc1Swenshuai.xi // 90*53ee8cc1Swenshuai.xi // $Date: $ 91*53ee8cc1Swenshuai.xi // $Revision: $ 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi // ******************************************************** 94*53ee8cc1Swenshuai.xi // 95*53ee8cc1Swenshuai.xi // @file PCMCIA.h 96*53ee8cc1Swenshuai.xi // @brief This file contains the API of the PCMCIA CIS parser and the declaration 97*53ee8cc1Swenshuai.xi // for the PCMCIA driver API. PCMCIA drivers are expected to implement the functions starting with PCMCIA_ except for MDrv_PCMCIA_ReadAttribMem(), 98*53ee8cc1Swenshuai.xi // The MDrv_PCMCIA_ReadAttribMem() implementation is provided together with the GkWare CI Stack 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi /// 102*53ee8cc1Swenshuai.xi /// @file drvPCMCIA.h 103*53ee8cc1Swenshuai.xi /// @brief PCMCIA Driver Interface 104*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 105*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////// 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi //------------------------------------------------- 108*53ee8cc1Swenshuai.xi /*! \defgroup PCMCIA PCMCIA interface 109*53ee8cc1Swenshuai.xi \ingroup PCMCIA 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi \brief 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi PCMCIA I/O interface (EN50221) 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi <b> Operation Code Flow: </b> \n 116*53ee8cc1Swenshuai.xi \image html pcmcia.png 117*53ee8cc1Swenshuai.xi 118*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_General PCMCIA general functions 119*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_Task PCMCIA process related functions 122*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_INT PCMCIA interrupt functions 125*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_AttributeMem PCMCIA Attribute memory related functions. 128*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_IOMem PCMCIA IO memory related functions. 131*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_STR PCMCIA STR functions 134*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 135*53ee8cc1Swenshuai.xi 136*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_ToBeModified PCMCIA api to be modified 137*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 138*53ee8cc1Swenshuai.xi 139*53ee8cc1Swenshuai.xi *! \defgroup PCMCIA_ToBeRemove PCMCIA api to be removed 140*53ee8cc1Swenshuai.xi * \ingroup PCMCIA 141*53ee8cc1Swenshuai.xi */ 142*53ee8cc1Swenshuai.xi //------------------------------------------------- 143*53ee8cc1Swenshuai.xi 144*53ee8cc1Swenshuai.xi #ifndef _DRV_PCMCIA_H_ 145*53ee8cc1Swenshuai.xi #define _DRV_PCMCIA_H_ 146*53ee8cc1Swenshuai.xi 147*53ee8cc1Swenshuai.xi #include "MsTypes.h" 148*53ee8cc1Swenshuai.xi #include "MsDevice.h" 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi #include "ULog.h" 151*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 152*53ee8cc1Swenshuai.xi // Macro and Define 153*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 154*53ee8cc1Swenshuai.xi // PCMCIA 155*53ee8cc1Swenshuai.xi #define MAX_PCMCIA_CONFIGS 6 //!< The maximum number of configurations supported by a PCMCIA card 156*53ee8cc1Swenshuai.xi #define MAX_PCMCIA_STRLEN (64) //!< The maximum name of vendor/manufacturer/info strings 157*53ee8cc1Swenshuai.xi #define MAX_CIS_SIZE 0x100 //!< The maximum size of a CIS, that is understood by this driver 158*53ee8cc1Swenshuai.xi #define PCMCIA_HW_TIMEOUT 3000 159*53ee8cc1Swenshuai.xi #define PCMCIA_IRQ_ENABLE 1 160*53ee8cc1Swenshuai.xi 161*53ee8cc1Swenshuai.xi // IRQ_force status bits 162*53ee8cc1Swenshuai.xi #define PCMCIA_MEM_READY (0x04) //The same pin as IRQ in I/O mode 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi // Command Interface Hardware Registers 165*53ee8cc1Swenshuai.xi #define PCMCIA_PHYS_REG_DATA (0) 166*53ee8cc1Swenshuai.xi #define PCMCIA_PHYS_REG_COMMANDSTATUS (1) 167*53ee8cc1Swenshuai.xi #define PCMCIA_PHYS_REG_SIZELOW (2) 168*53ee8cc1Swenshuai.xi #define PCMCIA_PHYS_REG_SIZEHIGH (3) 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi // Status Register Bits 171*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_DATAAVAILABLE (0x80) //!< PCMCIA Status Register Bit - The module wants to send data 172*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_FREE (0x40) //!< PCMCIA Status Register Bit - The module can accept data 173*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_IIR (0x10) //!< PCMCIA Status Register Bit - IIR 174*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_RESERVEDBITS (0x2C) //!< PCMCIA Status Register Bits - reserved 175*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_WRITEERROR (0x02) //!< PCMCIA Status Register Bit - Write error 176*53ee8cc1Swenshuai.xi #define PCMCIA_STATUS_READERROR (0x01) //!< PCMCIA Status Register Bit - Read error 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi // Command Register Bits 179*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_DAIE (0x80) //!< PCMCIA Command register bit - DAIE 180*53ee8cc1Swenshuai.xi // when this bit is set, the module asserts IREQ# each time it has data to send 181*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_FRIE (0x40) //!< PCMCIA Command register bit - FRIE 182*53ee8cc1Swenshuai.xi // when this bit is set, the module asserts IREQ# each time it is free to receive data 183*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_RESERVEDBITS (0x30) //!< PCMCIA Command register bits - reserved 184*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_RESET (0x08) //!< PCMCIA Command register bit - Reset 185*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_SIZEREAD (0x04) //!< PCMCIA Command register bit - Size read 186*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_SIZEWRITE (0x02) //!< PCMCIA Command register bit - Size Write 187*53ee8cc1Swenshuai.xi #define PCMCIA_COMMAND_HOSTCONTROL (0x01) //!< PCMCIA Command register bit - Host control 188*53ee8cc1Swenshuai.xi 189*53ee8cc1Swenshuai.xi #define PCMCIAINFO_MANID_VALID (0x00000001) 190*53ee8cc1Swenshuai.xi #define PCMCIAINFO_VERS1_VALID (0x00000002) 191*53ee8cc1Swenshuai.xi #define PCMCIAINFO_FUNCID_VALID (0x00000004) 192*53ee8cc1Swenshuai.xi 193*53ee8cc1Swenshuai.xi #ifdef __cplusplus 194*53ee8cc1Swenshuai.xi extern "C" { 195*53ee8cc1Swenshuai.xi #endif 196*53ee8cc1Swenshuai.xi 197*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 198*53ee8cc1Swenshuai.xi // Constant & Macro Definition 199*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 200*53ee8cc1Swenshuai.xi /// Version string. 201*53ee8cc1Swenshuai.xi #define MSIF_PCMCIA_LIB_CODE {'P','C','M','_'} //Lib code 202*53ee8cc1Swenshuai.xi #define MSIF_PCMCIA_LIBVER {'0','1'} //LIB version 203*53ee8cc1Swenshuai.xi #define MSIF_PCMCIA_BUILDNUM {'0','1'} //Build Number 204*53ee8cc1Swenshuai.xi #define MSIF_PCMCIA_CHANGELIST {'0','0','2','5','8','4','9','3'} //P4 ChangeList Number 205*53ee8cc1Swenshuai.xi 206*53ee8cc1Swenshuai.xi #define PCMCIA_DRV_VERSION /* Character String for DRV/API version */ \ 207*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 208*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 209*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 210*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 211*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 212*53ee8cc1Swenshuai.xi MSIF_CPU, \ 213*53ee8cc1Swenshuai.xi MSIF_PCMCIA_LIB_CODE, /* IP */ \ 214*53ee8cc1Swenshuai.xi MSIF_PCMCIA_LIBVER, /* 00 ~ 99 */ \ 215*53ee8cc1Swenshuai.xi MSIF_PCMCIA_BUILDNUM, /* 00 ~ 99 */ \ 216*53ee8cc1Swenshuai.xi MSIF_PCMCIA_CHANGELIST, /* CL# */ \ 217*53ee8cc1Swenshuai.xi MSIF_OS 218*53ee8cc1Swenshuai.xi 219*53ee8cc1Swenshuai.xi typedef void (*IsrCallback)( void* wparam, void* lparam ); 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 222*53ee8cc1Swenshuai.xi // Enums 223*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 224*53ee8cc1Swenshuai.xi //! This enum contains the card types, that can be encoded in CISTPL_FUNCID (0x21) 225*53ee8cc1Swenshuai.xi typedef enum { 226*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_CUSTOM = 0, 227*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_MEMORY = 1, 228*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_SERIAL = 2, 229*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_PARALLEL = 3, 230*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_DRIVE = 4, 231*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_VIDEO = 5, 232*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_NETWORK = 6, 233*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_AIMS = 7, 234*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_SCSI = 8, 235*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_CARDBUS = 9, 236*53ee8cc1Swenshuai.xi E_PCMCIA_FUNC_MANUFACTURER = 0xFF // manifacturer designed purpose 237*53ee8cc1Swenshuai.xi } PCMCIA_FUNCTYPE; 238*53ee8cc1Swenshuai.xi 239*53ee8cc1Swenshuai.xi typedef enum { 240*53ee8cc1Swenshuai.xi E_PCMCIA_MODULE_A = 0, 241*53ee8cc1Swenshuai.xi E_PCMCIA_MODULE_B = 1, 242*53ee8cc1Swenshuai.xi E_PCMCIA_MODULE_MAX = 2 243*53ee8cc1Swenshuai.xi } PCMCIA_MODULE; 244*53ee8cc1Swenshuai.xi 245*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 246*53ee8cc1Swenshuai.xi // Structures 247*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 248*53ee8cc1Swenshuai.xi //! This structure contains information about exactly one possible PCMCIA card configuration. 249*53ee8cc1Swenshuai.xi typedef struct /* 13 Bytes */ 250*53ee8cc1Swenshuai.xi { 251*53ee8cc1Swenshuai.xi MS_U32 dwEAAddr; //!< EA-address 252*53ee8cc1Swenshuai.xi MS_U32 dwEALen; //!< size of the EA area (zero for none) 253*53ee8cc1Swenshuai.xi MS_U16 wIRQData; //!< supported IRQ number mask 254*53ee8cc1Swenshuai.xi MS_U8 bConfigIndex; //!< cor //!< The value of bConfigIndex has to be written into the card configuration register to activate this configuration. 255*53ee8cc1Swenshuai.xi MS_U8 bIRQDesc1; //!< Interrupt descriptor byte 256*53ee8cc1Swenshuai.xi MS_U8 fCITagsPresent; //!< Bitfield which is 0x03 if both required CI tags are present. 0x01 for DVB_HOST, 0x02 for DVB_CI_MODULE 257*53ee8cc1Swenshuai.xi } PCMCIA_CONFIG; 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi //! This structure provides simple access to the PCMCIA card information 260*53ee8cc1Swenshuai.xi //! after decoding of the Card Information Structure. This decoding is performed by MDrv_CI_PCMCIA_ReadAttribMem() 261*53ee8cc1Swenshuai.xi typedef struct 262*53ee8cc1Swenshuai.xi { 263*53ee8cc1Swenshuai.xi MS_U32 ConfigOffset; //!< Offset of the Configuration byte in the Attribute Memory 264*53ee8cc1Swenshuai.xi MS_U32 dwValidFlags; //!< Bitmask that defines which of the other fields are valid 265*53ee8cc1Swenshuai.xi MS_U16 wManufacturerId; //!< 16Bit Manufacturer ID (PCMCIAINFO_MANID_VALID) 266*53ee8cc1Swenshuai.xi MS_U16 wCardID; //!< 16Bit Card ID (PCMCIAINFO_MANID_VALID) 267*53ee8cc1Swenshuai.xi 268*53ee8cc1Swenshuai.xi /* 99 Bytes */ 269*53ee8cc1Swenshuai.xi MS_U16 wPCMCIAStdRev; //!< PCMCIA Standard version supported by the card (PCMCIAINFO_VERS1_VALID) 270*53ee8cc1Swenshuai.xi MS_U8 pszManufacturerName[MAX_PCMCIA_STRLEN]; //!< Name of the card manufacturer (PCMCIAINFO_VERS1_VALID) 271*53ee8cc1Swenshuai.xi MS_U8 pszProductName[MAX_PCMCIA_STRLEN]; //!< Product name (PCMCIAINFO_VERS1_VALID) 272*53ee8cc1Swenshuai.xi MS_U8 pszProductInfo1[MAX_PCMCIA_STRLEN]; //!< (PCMCIAINFO_VERS1_VALID) 273*53ee8cc1Swenshuai.xi MS_U8 pszProductInfo2[MAX_PCMCIA_STRLEN]; //!< (PCMCIAINFO_VERS1_VALID) 274*53ee8cc1Swenshuai.xi MS_U8 bCI_PLUS; //!< PCMCIA card CI Plus Compatibility Identification 275*53ee8cc1Swenshuai.xi 276*53ee8cc1Swenshuai.xi PCMCIA_FUNCTYPE FuncType; //!< Card function type (PCMCIAINFO_FUNCID_VALID) 277*53ee8cc1Swenshuai.xi MS_U8 bFuncIDSysInfo; //!< SysInitByte from the FuncID block (PCMCIAINFO_FUNCID_VALID) 278*53ee8cc1Swenshuai.xi 279*53ee8cc1Swenshuai.xi MS_U8 bINT; //!< PCMCIA card Support interrupt or not 280*53ee8cc1Swenshuai.xi MS_U8 bNumConfigs; 281*53ee8cc1Swenshuai.xi /* 13 * MAX_PCMCIA_CONFIGS(=10) = 130 Bytes*/ //!< The number of configurations supported by the card. Exactly bNumConfigs entries are valid in the Config array. 282*53ee8cc1Swenshuai.xi PCMCIA_CONFIG Config[MAX_PCMCIA_CONFIGS]; //!< The array of possible card configurations 283*53ee8cc1Swenshuai.xi } PCMCIA_INFO; 284*53ee8cc1Swenshuai.xi 285*53ee8cc1Swenshuai.xi //! This structure provides ISR data for upper layer 286*53ee8cc1Swenshuai.xi //! DO NOT change the current data member 287*53ee8cc1Swenshuai.xi //! Only allow to add new member in the tail of the structure 288*53ee8cc1Swenshuai.xi typedef struct { 289*53ee8cc1Swenshuai.xi MS_BOOL bISRCardInsert; 290*53ee8cc1Swenshuai.xi MS_BOOL bISRCardRemove; 291*53ee8cc1Swenshuai.xi MS_BOOL bISRCardData; 292*53ee8cc1Swenshuai.xi } PCMCIA_ISR; 293*53ee8cc1Swenshuai.xi 294*53ee8cc1Swenshuai.xi //! This file typedefs PCMCIA_HANDLE as void*. 295*53ee8cc1Swenshuai.xi //! Actual PCMCIA driver implementations can hide whatever they want inside this handle. 296*53ee8cc1Swenshuai.xi //! Higher level drivers pass 297*53ee8cc1Swenshuai.xi typedef void *PCMCIA_HANDLE; 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 300*53ee8cc1Swenshuai.xi // Global Variables 301*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 304*53ee8cc1Swenshuai.xi // Global Functions 305*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 306*53ee8cc1Swenshuai.xi // PCMCIA 307*53ee8cc1Swenshuai.xi 308*53ee8cc1Swenshuai.xi // revision history 309*53ee8cc1Swenshuai.xi // V2 310*53ee8cc1Swenshuai.xi // for multiple PCMCIA slot support 311*53ee8cc1Swenshuai.xi // 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi //----------------- 314*53ee8cc1Swenshuai.xi // PCMCIA_General 315*53ee8cc1Swenshuai.xi //----------------- 316*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 317*53ee8cc1Swenshuai.xi /// Initialize PCMCIA module. 318*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_General 319*53ee8cc1Swenshuai.xi /// @param bCD_Reverse \b IN: Set TRUE:High active, FALSE: Low active 320*53ee8cc1Swenshuai.xi /// @return None 321*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 322*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Init(MS_BOOL bCD_Reverse); 323*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 324*53ee8cc1Swenshuai.xi /// Get PCMCIA initial parameter. 325*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_General 326*53ee8cc1Swenshuai.xi /// @param pointer to bCD_Reverse \b IN: Set TRUE:High active, FALSE: Low active 327*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 328*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 329*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 330*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_GetConfig(MS_BOOL* bCD_Reverse); 331*53ee8cc1Swenshuai.xi //----------------- 332*53ee8cc1Swenshuai.xi // PCMCIA_STR 333*53ee8cc1Swenshuai.xi //----------------- 334*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 335*53ee8cc1Swenshuai.xi /// Control PCMCIA STR functions. 336*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_STR 337*53ee8cc1Swenshuai.xi /// @param u16PowerState \b IN: STR power mode. (to control STR suspend & resume case.) 338*53ee8cc1Swenshuai.xi /// @return : Utopia status - UTOPIA_STATUS_SUCCESS (Succeed) or UTOPIA_STATUS_FAIL (Fail) 339*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 340*53ee8cc1Swenshuai.xi MS_U32 MDrv_PCMCIA_SetPowerState(EN_POWER_MODE u16PowerState); 341*53ee8cc1Swenshuai.xi //----------------- 342*53ee8cc1Swenshuai.xi // PCMCIA_ToBeRemove 343*53ee8cc1Swenshuai.xi //----------------- 344*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 345*53ee8cc1Swenshuai.xi /// Check CI CAM is detect or not. (Still call MDrv_PCMCIA_DetectV2) 346*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 347*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 348*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed - CAM detect 349*53ee8cc1Swenshuai.xi /// @return FALSE : Fail - CAM not detect 350*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 351*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_PollingV2( PCMCIA_MODULE eModule ); 352*53ee8cc1Swenshuai.xi //----------------- 353*53ee8cc1Swenshuai.xi // PCMCIA_Task 354*53ee8cc1Swenshuai.xi //----------------- 355*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 356*53ee8cc1Swenshuai.xi /// Check CI CAM is detect or not. 357*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 358*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 359*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed - CAM detect 360*53ee8cc1Swenshuai.xi /// @return FALSE : Fail - CAM not detect 361*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 362*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_DetectV2( PCMCIA_MODULE eModule ); 363*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 364*53ee8cc1Swenshuai.xi /// Set reset HW duration. 365*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 366*53ee8cc1Swenshuai.xi /// @param u8HW_ResetDuration \b IN: Duration. 367*53ee8cc1Swenshuai.xi /// @return None 368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 369*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Set_HW_ResetDuration( MS_U8 u8HW_ResetDuration ); 370*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 371*53ee8cc1Swenshuai.xi /// Reset PCMCIA HW 372*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 373*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 374*53ee8cc1Swenshuai.xi /// @return None 375*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 376*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_ResetHW_V2( PCMCIA_MODULE eModule ); 377*53ee8cc1Swenshuai.xi //----------------- 378*53ee8cc1Swenshuai.xi // PCMCIA_AttributeMem 379*53ee8cc1Swenshuai.xi //----------------- 380*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 381*53ee8cc1Swenshuai.xi /// Copy data from attribute memory. 382*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_AttributeMem 383*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 384*53ee8cc1Swenshuai.xi /// @param u16Addr \b IN: Read address. 385*53ee8cc1Swenshuai.xi /// @param pDest \b OUT: Copyed buffer. 386*53ee8cc1Swenshuai.xi /// @return None 387*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 388*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_ReadAttribMemV2( PCMCIA_MODULE eModule, MS_U16 u16Addr, MS_U8 *pDest ); 389*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 390*53ee8cc1Swenshuai.xi /// Parse attribute memory data into an easily readable PCMCIA_INFO structure. 391*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_AttributeMem 392*53ee8cc1Swenshuai.xi /// @param pAttribMem \b IN: Attribute memory buffer. 393*53ee8cc1Swenshuai.xi /// @param dwLen \b IN: Data length. 394*53ee8cc1Swenshuai.xi /// @param pInfo \b OUT: PCMCIA information. 395*53ee8cc1Swenshuai.xi /// @return None 396*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 397*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_ParseAttribMem( MS_U8 *pAttribMem, MS_U16 dwLen, PCMCIA_INFO *pInfo ); 398*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 399*53ee8cc1Swenshuai.xi /// Write data to attribute memory. 400*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_AttributeMem 401*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 402*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Write address. 403*53ee8cc1Swenshuai.xi /// @param bData \b IN: Write data. 404*53ee8cc1Swenshuai.xi /// @return None 405*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 406*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteAttribMemV2( PCMCIA_MODULE eModule, MS_U16 wAddr, MS_U8 bData ); 407*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 408*53ee8cc1Swenshuai.xi /// Write data to IO memory. (Only write 1 byte) 409*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_IOMem 410*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 411*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Write address. 412*53ee8cc1Swenshuai.xi /// @param bData \b IN: Write data. 413*53ee8cc1Swenshuai.xi /// @return None 414*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 415*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteIOMemV2( PCMCIA_MODULE eModule, MS_U16 wAddr, MS_U8 bData ); 416*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 417*53ee8cc1Swenshuai.xi /// Write data to IO memory. (Write long size data to the IO memory) 418*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeModified 419*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 420*53ee8cc1Swenshuai.xi /// @param u16Addr \b IN: Write address. 421*53ee8cc1Swenshuai.xi /// @param u8Value \b IN: Write data. (Not used? It's use for 1 byte write) 422*53ee8cc1Swenshuai.xi /// @param u16DataLen \b IN: Write length. 423*53ee8cc1Swenshuai.xi /// @param u8pWriteBuffer \b IN: Write buffer. 424*53ee8cc1Swenshuai.xi /// @return None 425*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 426*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteIOMemLongV2( PCMCIA_MODULE eModule, MS_U16 u16Addr, MS_U8 u8Value, MS_U16 u16DataLen, MS_U8* u8pWriteBuffer); 427*53ee8cc1Swenshuai.xi //----------------- 428*53ee8cc1Swenshuai.xi // PCMCIA_IOMem 429*53ee8cc1Swenshuai.xi //----------------- 430*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 431*53ee8cc1Swenshuai.xi /// Read data from IO memory. (Only read 1 byte) 432*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_IOMem 433*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 434*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Read address. 435*53ee8cc1Swenshuai.xi /// @return: The data from PCMCIA IO memory. 436*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 437*53ee8cc1Swenshuai.xi MS_U8 MDrv_PCMCIA_ReadIOMemV2( PCMCIA_MODULE eModule, MS_U16 wAddr ); 438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 439*53ee8cc1Swenshuai.xi /// Check CI CAM still plug or not 440*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 441*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 442*53ee8cc1Swenshuai.xi /// @return TRUE : Still plug 443*53ee8cc1Swenshuai.xi /// @return FALSE : Already removed 444*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 445*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_IsModuleStillPluggedV2( PCMCIA_MODULE eModule ); 446*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 447*53ee8cc1Swenshuai.xi /// Set PCMCIA detect trigger is high active or low active 448*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 449*53ee8cc1Swenshuai.xi /// @param bActiveHigh \b IN: Set TRUE:High active, FALSE: Low active 450*53ee8cc1Swenshuai.xi /// @return None 451*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 452*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Set_Detect_Trigger( MS_BOOL bActiveHigh ); 453*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 454*53ee8cc1Swenshuai.xi /// Set PCMCIA detect function can work or not 455*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 456*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable:enable detect function, Disable: disable detect function 457*53ee8cc1Swenshuai.xi /// @return None 458*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 459*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Set_Detect_Enable( MS_BOOL bEnable ); 460*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 461*53ee8cc1Swenshuai.xi /// Get CAM detect interval time. 462*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 463*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 464*53ee8cc1Swenshuai.xi /// @return: The CAM detect interval time 465*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 466*53ee8cc1Swenshuai.xi MS_U32 MDrv_PCMCIA_Get_CD_IntervalV2( PCMCIA_MODULE eModule ); 467*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 468*53ee8cc1Swenshuai.xi /// Get PCMCIA driver library information 469*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_General 470*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: PCMCIA library version infomation 471*53ee8cc1Swenshuai.xi /// @return TRUE - Success 472*53ee8cc1Swenshuai.xi /// @return FALSE - Failure 473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------- 474*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_GetLibVer( const MSIF_Version **ppVersion ); 475*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 476*53ee8cc1Swenshuai.xi /// Set PCMCIA command. (IO memory?) 477*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 478*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 479*53ee8cc1Swenshuai.xi /// @param u8CommandBit \b IN: Command. 480*53ee8cc1Swenshuai.xi /// @param bValue \b IN: TRUE: enable command bit. FALSE: disable command bit. 481*53ee8cc1Swenshuai.xi /// @return None 482*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 483*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_SetCommandBitV2( PCMCIA_MODULE eModule, MS_U8 u8CommandBit, MS_BOOL bValue ); 484*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 485*53ee8cc1Swenshuai.xi /// Reset PCMCIA interface. Send reset flag (RS). 486*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 487*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 488*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 489*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 490*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 491*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_ResetInterfaceV2( PCMCIA_MODULE eModule ); 492*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 493*53ee8cc1Swenshuai.xi /// Check data is avaliable or not. (IO memory?) 494*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 495*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 496*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 497*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 498*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 499*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_IsDataAvailableV2( PCMCIA_MODULE eModule ); 500*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 501*53ee8cc1Swenshuai.xi /// Read data from CAM 502*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 503*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 504*53ee8cc1Swenshuai.xi /// @param u8pReadBuffer \b OUT: Read buffer. 505*53ee8cc1Swenshuai.xi /// @param u16ReadBufferSize \b IN: Buffer size. 506*53ee8cc1Swenshuai.xi /// @return : Read data length. 507*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 508*53ee8cc1Swenshuai.xi MS_U16 MDrv_PCMCIA_ReadDataV2( PCMCIA_MODULE eModule, MS_U8* u8pReadBuffer, MS_U16 u16ReadBufferSize ); 509*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 510*53ee8cc1Swenshuai.xi /// Write data to CAM 511*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 512*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 513*53ee8cc1Swenshuai.xi /// @param u8pWriteBuffer \b IN: Write buffer. 514*53ee8cc1Swenshuai.xi /// @param u16DataLen \b IN: Buffer size. 515*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 516*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 517*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 518*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_WriteDataV2( PCMCIA_MODULE eModule, MS_U8* u8pWriteBuffer, MS_U16 u16DataLen ); 519*53ee8cc1Swenshuai.xi 520*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 521*53ee8cc1Swenshuai.xi /// Switch to I/O mode. (Attribute memory !?) 522*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 523*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 524*53ee8cc1Swenshuai.xi /// @param pInfo \b IN: PCMCIA info: offset and offset index. 525*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 526*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 527*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 528*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_SwitchToIOmodeV2( PCMCIA_MODULE eModule, PCMCIA_INFO *pInfo ); 529*53ee8cc1Swenshuai.xi //----------------- 530*53ee8cc1Swenshuai.xi // PCMCIA_ToBeModified 531*53ee8cc1Swenshuai.xi //----------------- 532*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 533*53ee8cc1Swenshuai.xi /// Negotiate with PCMCIA biffer. Use size read (SR) to check. 534*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 535*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 536*53ee8cc1Swenshuai.xi /// @param pInfo \b IN: PCMCIA info (Not used) 537*53ee8cc1Swenshuai.xi /// @return : Buffer size. 538*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 539*53ee8cc1Swenshuai.xi MS_U16 MDrv_PCMCIA_NegotiateBufferSizeV2( PCMCIA_MODULE eModule, PCMCIA_INFO *pInfo ); 540*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 541*53ee8cc1Swenshuai.xi /// Write PCMCIA buffer size. 542*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 543*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 544*53ee8cc1Swenshuai.xi /// @param u16BufferSize \b IN: Buffer size 545*53ee8cc1Swenshuai.xi /// @return None 546*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 547*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteBufferSizeV2( PCMCIA_MODULE eModule, MS_U16 u16BufferSize ); 548*53ee8cc1Swenshuai.xi 549*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 550*53ee8cc1Swenshuai.xi /// Check status bit 551*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_Task 552*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 553*53ee8cc1Swenshuai.xi /// @param u8StatusBit \b IN: Status bit which you want to check. 554*53ee8cc1Swenshuai.xi /// @return TRUE : Status bit check success. 555*53ee8cc1Swenshuai.xi /// @return FALSE : Can't find the match status bit. 556*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 557*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_WaitForStatusBitV2( PCMCIA_MODULE eModule, MS_U8 u8StatusBit ); 558*53ee8cc1Swenshuai.xi 559*53ee8cc1Swenshuai.xi //----------------- 560*53ee8cc1Swenshuai.xi // PCMCIA_INT 561*53ee8cc1Swenshuai.xi //----------------- 562*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 563*53ee8cc1Swenshuai.xi /// Check interrupt status. 564*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_INT 565*53ee8cc1Swenshuai.xi /// @return : The register value of interrupt. 566*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 567*53ee8cc1Swenshuai.xi MS_U8 MDrv_PCMCIA_ReadyStatus( void ); 568*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 569*53ee8cc1Swenshuai.xi /// Finalize PCMCIA module 570*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_General 571*53ee8cc1Swenshuai.xi /// @return None 572*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 573*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Exit( void ); 574*53ee8cc1Swenshuai.xi 575*53ee8cc1Swenshuai.xi #if PCMCIA_IRQ_ENABLE 576*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 577*53ee8cc1Swenshuai.xi /// Enable PCMCIA interrupt. 578*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_INT 579*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 580*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable 581*53ee8cc1Swenshuai.xi /// @return None 582*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 583*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Enable_InterruptV2( PCMCIA_MODULE eModule, MS_BOOL bEnable ); 584*53ee8cc1Swenshuai.xi 585*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 586*53ee8cc1Swenshuai.xi /// Set PCMCIA IRQ Status. 587*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_INT 588*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 589*53ee8cc1Swenshuai.xi /// @param Status \b IN: TRUE/FALSE 590*53ee8cc1Swenshuai.xi /// @return None 591*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 592*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Set_InterruptStatusV2( PCMCIA_MODULE eModule, MS_BOOL Status ); 593*53ee8cc1Swenshuai.xi 594*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 595*53ee8cc1Swenshuai.xi /// Get PCMCIA IRQ Status. 596*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_INT 597*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 598*53ee8cc1Swenshuai.xi /// @return : PCMCIA IRQ Status (TRUE/FALSE) 599*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 600*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_Get_InterruptStatusV2( PCMCIA_MODULE eModule ); 601*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 602*53ee8cc1Swenshuai.xi /// Set PCMCIA callback function. 603*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 604*53ee8cc1Swenshuai.xi /// @param eModule \b IN: CAM module. 605*53ee8cc1Swenshuai.xi /// @param fnIsrCallback \b IN: Callback function. 606*53ee8cc1Swenshuai.xi /// @return : PCMCIA IRQ Status (TRUE/FALSE) 607*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 608*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_InstarllIsrCallbackV2( PCMCIA_MODULE eModule, IsrCallback fnIsrCallback ); 609*53ee8cc1Swenshuai.xi #endif 610*53ee8cc1Swenshuai.xi 611*53ee8cc1Swenshuai.xi 612*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 613*53ee8cc1Swenshuai.xi // Function define for backward compatible 614*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 615*53ee8cc1Swenshuai.xi #define PCMCIA_DEFAULT_MODULE E_PCMCIA_MODULE_A 616*53ee8cc1Swenshuai.xi #if 0 617*53ee8cc1Swenshuai.xi //#define MDrv_PCMCIA_Detect(p...) MDrv_PCMCIA_DetectV2(E_PCMCIA_MODULE_A) 618*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_Polling(p...) MDrv_PCMCIA_PollingV2(PCMCIA_DEFAULT_MODULE) 619*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_IsModuleStillPlugged(p...) MDrv_PCMCIA_IsModuleStillPluggedV2(PCMCIA_DEFAULT_MODULE) 620*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_SetCommandBit(p...) MDrv_PCMCIA_SetCommandBitV2(PCMCIA_DEFAULT_MODULE, p) 621*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_ResetInterface(p...) MDrv_PCMCIA_ResetInterfaceV2(PCMCIA_DEFAULT_MODULE) 622*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_IsDataAvailable(p...) MDrv_PCMCIA_IsDataAvailableV2(PCMCIA_DEFAULT_MODULE) 623*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_ReadData(p...) MDrv_PCMCIA_ReadDataV2(PCMCIA_DEFAULT_MODULE, p) 624*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WriteData(p...) MDrv_PCMCIA_WriteDataV2(PCMCIA_DEFAULT_MODULE, p) 625*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_SwitchToIOmode(p...) MDrv_PCMCIA_SwitchToIOmodeV2(PCMCIA_DEFAULT_MODULE, p) 626*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_NegotiateBufferSize(p...) MDrv_PCMCIA_NegotiateBufferSizeV2(PCMCIA_DEFAULT_MODULE, p) 627*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WriteBufferSize(p...) MDrv_PCMCIA_WriteBufferSizeV2(PCMCIA_DEFAULT_MODULE, p) 628*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WaitForStatusBit(p...) MDrv_PCMCIA_WaitForStatusBitV2(PCMCIA_DEFAULT_MODULE, p) 629*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_ResetHW(p...) MDrv_PCMCIA_ResetHW_V2(PCMCIA_DEFAULT_MODULE) 630*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WriteAttribMem(p...) MDrv_PCMCIA_WriteAttribMemV2(PCMCIA_DEFAULT_MODULE, p) 631*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_ReadAttribMem(p...) MDrv_PCMCIA_ReadAttribMemV2(PCMCIA_DEFAULT_MODULE, p) 632*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WriteIOMem(p...) MDrv_PCMCIA_WriteIOMemV2(PCMCIA_DEFAULT_MODULE, p) 633*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_WriteIOMemLong(p...) MDrv_PCMCIA_WriteIOMemLongV2(PCMCIA_DEFAULT_MODULE, p) 634*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_ReadIOMem(p...) MDrv_PCMCIA_ReadIOMemV2(PCMCIA_DEFAULT_MODULE, p) 635*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_Get_CD_Interval(p...) MDrv_PCMCIA_Get_CD_IntervalV2(PCMCIA_DEFAULT_MODULE) 636*53ee8cc1Swenshuai.xi 637*53ee8cc1Swenshuai.xi #if PCMCIA_IRQ_ENABLE 638*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_Enable_Interrupt(p...) MDrv_PCMCIA_Enable_InterruptV2(PCMCIA_DEFAULT_MODULE, p) 639*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_Set_InterruptStatus(p...) MDrv_PCMCIA_Set_InterruptStatusV2(PCMCIA_DEFAULT_MODULE, p) 640*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_Get_InterruptStatus(p...) MDrv_PCMCIA_Get_InterruptStatusV2(PCMCIA_DEFAULT_MODULE) 641*53ee8cc1Swenshuai.xi #define MDrv_PCMCIA_InstarllIsrCallback(p...) MDrv_PCMCIA_InstarllIsrCallbackV2(PCMCIA_DEFAULT_MODULE, p) 642*53ee8cc1Swenshuai.xi #endif 643*53ee8cc1Swenshuai.xi #else 644*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 645*53ee8cc1Swenshuai.xi /// Check CI CAM is detect or not. (use V2 version: for CAM module select) 646*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 647*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed - CAM detect 648*53ee8cc1Swenshuai.xi /// @return FALSE : Fail - CAM not detect 649*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 650*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_Polling( void ); 651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 652*53ee8cc1Swenshuai.xi /// Check CI CAM still plug or not. (use V2 version: for CAM module select) 653*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 654*53ee8cc1Swenshuai.xi /// @return TRUE : Still plug 655*53ee8cc1Swenshuai.xi /// @return FALSE : Already removed 656*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 657*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_IsModuleStillPlugged( void ); 658*53ee8cc1Swenshuai.xi 659*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 660*53ee8cc1Swenshuai.xi /// Set PCMCIA command. (use V2 version: for CAM module select) 661*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 662*53ee8cc1Swenshuai.xi /// @param u8CommandBit \b IN: Command. 663*53ee8cc1Swenshuai.xi /// @param bValue \b IN: TRUE: enable command bit. FALSE: disable command bit. 664*53ee8cc1Swenshuai.xi /// @return None 665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 666*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_SetCommandBit( MS_U8 u8CommandBit, MS_BOOL bValue ); 667*53ee8cc1Swenshuai.xi 668*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 669*53ee8cc1Swenshuai.xi /// Reset PCMCIA interface. Send reset flag (RS). (use V2 version: for CAM module select) 670*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 671*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 672*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 674*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_ResetInterface( void ); 675*53ee8cc1Swenshuai.xi 676*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 677*53ee8cc1Swenshuai.xi /// Check data is avaliable or not. (use V2 version: for CAM module select) 678*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 679*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 680*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 681*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 682*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_IsDataAvailable( void ); 683*53ee8cc1Swenshuai.xi 684*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 685*53ee8cc1Swenshuai.xi /// Read data from CAM. (use V2 version: for CAM module select) 686*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 687*53ee8cc1Swenshuai.xi /// @param u8pReadBuffer \b OUT: Read buffer. 688*53ee8cc1Swenshuai.xi /// @param u16ReadBufferSize \b IN: Buffer size. 689*53ee8cc1Swenshuai.xi /// @return : Read data length. 690*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 691*53ee8cc1Swenshuai.xi MS_U16 MDrv_PCMCIA_ReadData( MS_U8* u8pReadBuffer, MS_U16 u16ReadBufferSize ); 692*53ee8cc1Swenshuai.xi 693*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 694*53ee8cc1Swenshuai.xi /// Write data to CAM. (use V2 version: for CAM module select) 695*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 696*53ee8cc1Swenshuai.xi /// @param u8pWriteBuffer \b IN: Write buffer. 697*53ee8cc1Swenshuai.xi /// @param u16DataLen \b IN: Buffer size. 698*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 699*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 700*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 701*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_WriteData( MS_U8* u8pWriteBuffer, MS_U16 u16DataLen ); 702*53ee8cc1Swenshuai.xi 703*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 704*53ee8cc1Swenshuai.xi /// Switch to I/O mode. (use V2 version: for CAM module select) 705*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 706*53ee8cc1Swenshuai.xi /// @param pInfo \b IN: PCMCIA info: offset and offset index. 707*53ee8cc1Swenshuai.xi /// @return TRUE : Succeed 708*53ee8cc1Swenshuai.xi /// @return FALSE : Fail 709*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 710*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_SwitchToIOmode( PCMCIA_INFO *pInfo ); 711*53ee8cc1Swenshuai.xi 712*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 713*53ee8cc1Swenshuai.xi /// Negotiate with PCMCIA biffer. Use size read (SR) to check. (use V2 version: for CAM module select) 714*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 715*53ee8cc1Swenshuai.xi /// @param pInfo \b IN: PCMCIA info (Not used) 716*53ee8cc1Swenshuai.xi /// @return : Buffer size. 717*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 718*53ee8cc1Swenshuai.xi MS_U16 MDrv_PCMCIA_NegotiateBufferSize( PCMCIA_INFO *pInfo ); 719*53ee8cc1Swenshuai.xi 720*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 721*53ee8cc1Swenshuai.xi /// Write PCMCIA buffer size. (use V2 version: for CAM module select) 722*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 723*53ee8cc1Swenshuai.xi /// @param u16BufferSize \b IN: Buffer size 724*53ee8cc1Swenshuai.xi /// @return None 725*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 726*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteBufferSize( MS_U16 u16BufferSize ); 727*53ee8cc1Swenshuai.xi 728*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 729*53ee8cc1Swenshuai.xi /// Check status bit. (use V2 version: for CAM module select) 730*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 731*53ee8cc1Swenshuai.xi /// @param u8StatusBit \b IN: Status bit which you want to check. 732*53ee8cc1Swenshuai.xi /// @return TRUE : Status bit check success. 733*53ee8cc1Swenshuai.xi /// @return FALSE : Can't find the match status bit. 734*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 735*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_WaitForStatusBit( MS_U8 u8StatusBit ); 736*53ee8cc1Swenshuai.xi 737*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 738*53ee8cc1Swenshuai.xi /// Reset PCMCIA HW. (use V2 version: for CAM module select) 739*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 740*53ee8cc1Swenshuai.xi /// @return None 741*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 742*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_ResetHW( void ); 743*53ee8cc1Swenshuai.xi 744*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 745*53ee8cc1Swenshuai.xi /// Write data to attribute memory. (use V2 version: for CAM module select) 746*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 747*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Write address. 748*53ee8cc1Swenshuai.xi /// @param bData \b IN: Write data. 749*53ee8cc1Swenshuai.xi /// @return None 750*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 751*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteAttribMem( MS_U16 wAddr, MS_U8 bData ); 752*53ee8cc1Swenshuai.xi 753*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 754*53ee8cc1Swenshuai.xi /// Copy data from attribute memory. (use V2 version: for CAM module select) 755*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 756*53ee8cc1Swenshuai.xi /// @param u16Addr \b IN: Read address. 757*53ee8cc1Swenshuai.xi /// @param pDest \b OUT: Copyed buffer. 758*53ee8cc1Swenshuai.xi /// @return None 759*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 760*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_ReadAttribMem( MS_U16 u16Addr, MS_U8 *pDest ); 761*53ee8cc1Swenshuai.xi 762*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 763*53ee8cc1Swenshuai.xi /// Write data to IO memory. (Only write 1 byte) (use V2 version: for CAM module select) 764*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 765*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Write address. 766*53ee8cc1Swenshuai.xi /// @param bData \b IN: Write data. 767*53ee8cc1Swenshuai.xi /// @return None 768*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 769*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteIOMem( MS_U16 wAddr, MS_U8 bData ); 770*53ee8cc1Swenshuai.xi 771*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 772*53ee8cc1Swenshuai.xi /// Write data to IO memory. (Write long size data to the IO memory) (use V2 version: for CAM module select) 773*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 774*53ee8cc1Swenshuai.xi /// @param u16Addr \b IN: Write address. 775*53ee8cc1Swenshuai.xi /// @param u8Value \b IN: Write data. (Not used? It's use for 1 byte write) 776*53ee8cc1Swenshuai.xi /// @param u16DataLen \b IN: Write length. 777*53ee8cc1Swenshuai.xi /// @param u8pWriteBuffer \b IN: Write buffer. 778*53ee8cc1Swenshuai.xi /// @return None 779*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 780*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_WriteIOMemLong( MS_U16 u16Addr, MS_U8 u8Value, MS_U16 u16DataLen, MS_U8* u8pWriteBuffer); 781*53ee8cc1Swenshuai.xi 782*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 783*53ee8cc1Swenshuai.xi /// Read data from IO memory. (Only read 1 byte) (use V2 version: for CAM module select) 784*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 785*53ee8cc1Swenshuai.xi /// @param wAddr \b IN: Read address. 786*53ee8cc1Swenshuai.xi /// @return: The data from PCMCIA IO memory. 787*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 788*53ee8cc1Swenshuai.xi MS_U8 MDrv_PCMCIA_ReadIOMem( MS_U16 wAddr ); 789*53ee8cc1Swenshuai.xi 790*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 791*53ee8cc1Swenshuai.xi /// Get CAM detect interval time. (use V2 version: for CAM module select) 792*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 793*53ee8cc1Swenshuai.xi /// @return: The CAM detect interval time 794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 795*53ee8cc1Swenshuai.xi MS_U32 MDrv_PCMCIA_Get_CD_Interval( void ); 796*53ee8cc1Swenshuai.xi 797*53ee8cc1Swenshuai.xi #if PCMCIA_IRQ_ENABLE 798*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 799*53ee8cc1Swenshuai.xi /// Enable PCMCIA interrupt. (use V2 version: for CAM module select) 800*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 801*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable 802*53ee8cc1Swenshuai.xi /// @return None 803*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 804*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Enable_Interrupt( MS_BOOL bEnable ); 805*53ee8cc1Swenshuai.xi 806*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 807*53ee8cc1Swenshuai.xi /// Set PCMCIA IRQ Status. (use V2 version: for CAM module select) 808*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 809*53ee8cc1Swenshuai.xi /// @param Status \b IN: TRUE/FALSE 810*53ee8cc1Swenshuai.xi /// @return None 811*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 812*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_Set_InterruptStatus( MS_BOOL Status ); 813*53ee8cc1Swenshuai.xi 814*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 815*53ee8cc1Swenshuai.xi /// Get PCMCIA IRQ Status. (use V2 version: for CAM module select) 816*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 817*53ee8cc1Swenshuai.xi /// @return : PCMCIA IRQ Status (TRUE/FALSE) 818*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 819*53ee8cc1Swenshuai.xi MS_BOOL MDrv_PCMCIA_Get_InterruptStatus( void ); 820*53ee8cc1Swenshuai.xi 821*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 822*53ee8cc1Swenshuai.xi /// Set PCMCIA callback function. 823*53ee8cc1Swenshuai.xi /// @ingroup PCMCIA_ToBeRemove 824*53ee8cc1Swenshuai.xi /// @param fnIsrCallback \b IN: Callback function. 825*53ee8cc1Swenshuai.xi /// @return : PCMCIA IRQ Status (TRUE/FALSE) 826*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 827*53ee8cc1Swenshuai.xi void MDrv_PCMCIA_InstarllIsrCallback( IsrCallback fnIsrCallback ); 828*53ee8cc1Swenshuai.xi #endif 829*53ee8cc1Swenshuai.xi #endif 830*53ee8cc1Swenshuai.xi 831*53ee8cc1Swenshuai.xi #ifdef __cplusplus 832*53ee8cc1Swenshuai.xi } 833*53ee8cc1Swenshuai.xi #endif 834*53ee8cc1Swenshuai.xi 835*53ee8cc1Swenshuai.xi #endif // _DRV_PCMCIA_H_ 836