xref: /utopia/UTPA2-700.0.x/mxlib/include/drvPCMCIA.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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