source: svn/trunk/newcon3bcm2_21bu/magnum/portinginterface/scd/7552/bscd_priv.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 29.8 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2003-2011, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bscd_priv.h $
11 * $brcm_Revision: Hydra_Software_Devel/2 $
12 * $brcm_Date: 1/28/11 5:25p $
13 *
14 * Module Description: This file contains Broadcom smart card Porting
15 *                     Interface private data structures, enums,
16 *                     definitions and functions prototypes.           
17 *
18 * Revision History:
19 *
20 * $brcm_Log: /magnum/portinginterface/scd/7344/bscd_priv.h $
21 *
22 * Hydra_Software_Devel/2   1/28/11 5:25p qxie
23 * SW7346-23:add set clock api
24 *
25 * Hydra_Software_Devel/1   10/18/10 10:07a qxie
26 * SW7422-78: initial version
27 *
28 * Hydra_Software_Devel/20   11/19/09 5:44p qxie
29 * SW7125-113: add support to 7125
30 *
31 * Hydra_Software_Devel/19   11/19/09 4:54p qxie
32 * SW7125-113:Smartcard:add support to 7125
33 *
34 * Hydra_Software_Devel/18   8/27/09 1:54p qxie
35 * SW7125-18: add support for 7125A0 in SCD
36 *
37 * Hydra_Software_Devel/17   8/11/09 1:09a qxie
38 * PR57564: Smartcard: add support to 7340/7342
39 *
40 * Hydra_Software_Devel/16   7/13/09 3:19p qxie
41 * PR56770: Smartcard: move BSCD_Channel_P_DumpRegisters to public PI,
42 * changed name to BSCD_Channel_DumpRegisters
43 *
44 * Hydra_Software_Devel/15   2/23/09 10:03a qxie
45 * PR47804: add new clk divider sc_div=16
46 *
47 * Hydra_Software_Devel/14   4/28/08 12:03p qxie
48 * PR42234: Smartcard: add EMV2000 support under 36M external clock
49 *
50 * Hydra_Software_Devel/13   9/21/05 3:45p qcheng
51 * PR 17263:Exit BKNI_WaitForEvent() when card is removed
52 *
53 * Hydra_Software_Devel/12   9/9/04 12:46p btan
54 * PR 12504: support customized callback functions
55 *
56 * Hydra_Software_Devel/11   7/20/04 2:12p btan
57 * PR 10898: Pass EMV 2000 tests with either event interrupt or WWT to
58 * detect CWT +4
59 *
60 * Hydra_Software_Devel/10   5/26/04 8:46a dlwin
61 * PR 11189: Merging to Main Branch
62 *
63 * Hydra_Software_Devel/Refsw_Devel_7038_B0/2   5/17/04 4:54p btan
64 * PR 10898: Added support for 7038 B0.
65 *
66 * Hydra_Software_Devel/Refsw_Devel_7038_B0/1   4/29/04 5:38p btan
67 * PR 10898:Added support for 7038 B0
68 *
69 * Hydra_Software_Devel/9   11/26/03 5:00p btan
70 * Fixes for EMV T=0
71 *
72 * Hydra_Software_Devel/7   11/18/03 5:06p btan
73 * Fixed RLEN and TLEN addresses and split transmission into T0T1 and
74 * Irdeto,
75 *
76 * Hydra_Software_Devel/6   10/28/03 5:03p btan
77 * Fixed the bugs after the first round test.
78 *
79 * Hydra_Software_Devel/5   10/13/03 12:02p btan
80 * Updated to latest version.
81 *
82 * Hydra_Software_Devel/4   7/21/03 6:28p btan
83 * Updated after 1st review.
84 *
85 * Hydra_Software_Devel/2   6/10/03 5:56p btan
86 * Fixed some comments.
87 *
88 * Hydra_Software_Devel/1   6/5/03 4:58p btan
89 * Initial creation for 7038
90 *
91 ***************************************************************************/
92#ifndef BSCD_PRIV_H__
93#define BSCD_PRIV_H__
94
95#include "berr_ids.h"
96#include "bscd.h"
97
98#ifdef __cplusplus
99extern "C" {
100#endif
101
102
103/* Definitions */
104
105/**
106  Smart card D and F Table according to SC_PRESCALE Table, where F is Clock Rate
107  Conversion Factor and D is the Baud Rate Adjustment Factor.
108  This table contains the recommended set of values for the SC_PRESCALE and SC_CLK_CMD based
109  on the ATR TA1 byte. The resulting clock rate and baud rate will comply to ISO 7816-3.
110**/
111typedef struct
112{
113      unsigned char sc_clkdiv;         /* clk divider in SC_CLK_CMD register */
114      unsigned char sc_prescale;    /* prescale in SC_PRESCALE register */
115      unsigned char sc_bauddiv;     /* baud rate divider in SC_CLK_CMD register */
116      unsigned char sc_etuclkdiv;   /* etu clk divider in SC_CLK_CMD register */
117} BSCD_P_DFSmartCardStruct;
118
119
120
121#define BSCD_P_UART_CMD_1               0x00 /* SMART CARD UART COMMAND REGISTER */
122#define BSCD_P_UART_CMD_2               0x40 /* SMART CARD UART COMMAND REGISTER */
123#define BSCD_P_PROTO_CMD                0x0c /* SMART CARD PROTOCOL COMMAND REGISTER */
124#define BSCD_P_FLOW_CMD         0x28 /* SMART CARD FLOW CONTROL COMMAND REGISTER */
125#define BSCD_P_IF_CMD_1                 0x04 /* SMART CARD INTERFACE COMMAND REGISTER */
126#define BSCD_P_IF_CMD_2                 0x4c /* SMART CARD INTERFACE COMMAND REGISTER */
127#define BSCD_P_INTR_STAT_1              0x58 /* SMART CARD INTERRUPT STATUS REGISTER */
128#define BSCD_P_INTR_STAT_2              0x5c /* SMART CARD INTERRUPT STATUS REGISTER */
129#define BSCD_P_INTR_EN_1                0x50 /* SMART CARD INTERRUPT ENABLE REGISTER */
130#define BSCD_P_INTR_EN_2                0x54 /* SMART CARD INTERRUPT ENABLE REGISTER */
131#define BSCD_P_CLK_CMD                  0x08 /* SMART CARD CLOCK COMMAND */
132#if(BCHP_CHIP==7420) ||(BCHP_CHIP==7340) ||(BCHP_CHIP==7342)||(BCHP_CHIP==7125)
133#define BSCD_P_CLK_CMD_2                0x3c /* SMART CARD CLOCK COMMAND */
134#endif
135#define BSCD_P_PRESCALE                 0x10 /* SMART CARD CLOCK PRESCALE */
136#define BSCD_P_TIMER_CMD                0x48 /* SMART CARD TIMER COMMAND REGISTER */
137#define BSCD_P_BGT                              0x44 /* SMART CARD BLOCK GUARD TIME REGISTER */
138#define BSCD_P_TIMER_CNT_1              0x68 /* SMART CARD GENERAL PURPOSE TIMER COUNT REGISTER */
139#define BSCD_P_TIMER_CNT_2              0x6c /* SMART CARD GENERAL PURPOSE TIMER COUNT REGISTER */
140#define BSCD_P_TIMER_CMP_1              0x60 /* SMART CARD GENERAL PURPOSE TIMER COMPARE REGISTER */
141#define BSCD_P_TIMER_CMP_2              0x64 /* SMART CARD GENERAL PURPOSE TIMER COMPARE REGISTER */
142#define BSCD_P_WAIT_1                   0x70 /* SMART CARD WAITING TIMER REGISTER */
143#define BSCD_P_WAIT_2                   0x74 /* SMART CARD WAITING TIMER REGISTER */
144#define BSCD_P_WAIT_3                   0x78 /* SMART CARD WAITING TIMER REGISTER */
145#define BSCD_P_TGUARD                   0x14 /* SMART CARD TRANSMIT GUARD TIME REGISTER */
146#define BSCD_P_TRANSMIT                 0x18 /* SMART CARD TRANSMIT REGISTER */
147#define BSCD_P_RECEIVE                  0x1c /* SMART CARD RECEIVE REGISTER */
148#define BSCD_P_STATUS_1                 0x34 /* SMART CARD STATUS 1 REGISTER */
149#define BSCD_P_STATUS_2                 0x38 /* SMART CARD STATUS 2 REGISTER */
150#define BSCD_P_TLEN_2                   0x20 /* SMART CARD TRANSMIT LENGTH REGISTER */
151#define BSCD_P_TLEN_1                   0x24 /* SMART CARD TRANSMIT LENGTH REGISTER */
152#define BSCD_P_RLEN_2                   0x2c /* SMART CARD RECEIVE LENGTH REGISTER */
153#define BSCD_P_RLEN_1                   0x30 /* SMART CARD RECEIVE LENGTH REGISTER */
154#ifdef BSCD_EMV2000_CWT_PLUS_4_EVENT_INTR
155#define BSCD_P_EVENT1_CNT               0x80 /* SMART CARD EVENT 1 COUNT REGISTER */
156#define BSCD_P_EVENT1_CMP               0x88 /* SMART CARD EVENT 1 COMPARE REGISTER  */
157#define BSCD_P_EVENT1_CMD_1     0x90 /* SMART CARD EVENT 1 COMMAND 1 REGISTER */ 
158#define BSCD_P_EVENT1_CMD_2     0x94 /* SMART CARD EVENT 1 COMMAND 2 REGISTER  */
159#define BSCD_P_EVENT1_CMD_3     0x98/* SMART CARD EVENT 1 COMMAND 3 REGISTER  */
160#define BSCD_P_EVENT1_CMD_4     0x9c /* SMART CARD EVENT 1 COMMAND 4 REGISTER  */
161#define BSCD_P_EVENT2_CMP               0xa0 /* SMART CARD EVENT 2 COMPARE REGISTER  */
162#define BSCD_P_EVENT2_CNT               0xa8 /* SMART CARD EVENT 2 COUNT REGISTER  */
163#define BSCD_P_EVENT2_CMD_1     0xb0 /* SMART CARD EVENT 2 COMMAND 1 REGISTER */ 
164#define BSCD_P_EVENT2_CMD_2     0xb4 /* SMART CARD EVENT 2 COMMAND 2 REGISTER  */
165#define BSCD_P_EVENT2_CMD_3     0xb8 /* SMART CARD EVENT 2 COMMAND 3 REGISTER  */
166#define BSCD_P_EVENT2_CMD_4     0xbc /* SMART CARD EVENT 2 COMMAND 4 REGISTER  */
167#endif
168
169
170/* Smart Card Module Event source for Event interrupt */
171#ifdef BSCD_EMV2000_CWT_PLUS_4_EVENT_INTR
172#define  BSCD_P_EVENT1_INTR_EVENT_SRC           0x00
173#define  BSCD_P_TEMPTY_INTR_EVENT_SRC           0x01
174#define  BSCD_P_RETRY_INTR_EVENT_SRC            0x02
175#define  BSCD_P_TDONE_INTR_EVENT_SRC            0x03
176#define  BSCD_P_BGT_INTR_EVENT_SRC                      0x04
177#define  BSCD_P_PRES_INTR_EVENT_SRC                     0x05
178#define  BSCD_P_TIMER_INTR_EVENT_SRC            0x06
179#define  BSCD_P_TPAR_INTR_EVENT_SRC                     0x07
180#define  BSCD_P_RREADY_INTR_EVENT_SRC           0x08
181#define  BSCD_P_RCV_INTR_EVENT_SRC                      0x09
182#define  BSCD_P_EVENT2_INTR_EVENT_SRC           0x0a
183#define  BSCD_P_WAIT_INTR_EVENT_SRC             0x0b
184#define  BSCD_P_RLEN_INTR_EVENT_SRC                     0x0c
185#define  BSCD_P_CWT_INTR_EVENT_SRC                      0x0d
186#define  BSCD_P_ATRS_INTR_EVENT_SRC                     0x0e
187#define  BSCD_P_RPAR_INTR_EVENT_SRC                     0x0f
188#define  BSCD_P_RX_ETU_TICK_EVENT_SRC           0x10
189#define  BSCD_P_TX_ETU_TICK_EVENT_SRC           0x11
190#define  BSCD_P_HALF_TX_ETU_TICK_EVENT_SRC      0x12
191#define  BSCD_P_RX_START_BIT_EVENT_SRC          0x13
192#define  BSCD_P_TX_START_BIT_EVENT_SRC          0x14
193#define  BSCD_P_LAST_TX_START_BIT_BLOCK_EVENT_SRC               0x15
194#define  BSCD_P_ICC_FLOW_CTRL_ASSERTED_EVENT_SRC                        0x16
195#define  BSCD_P_ICC_FLOW_CTRL_DONE_EVENT_SRC    0x17
196#define  BSCD_P_START_IMMEDIATE_EVENT_SRC       0x1f
197#define  BSCD_P_DISABLE_COUNTING_EVENT_SRC      0x1f
198#define  BSCD_P_NO_EVENT_EVENT_SRC      0x1f
199#endif
200
201/* Smart Card Module magic number used to check if opaque handle is corrupt */
202#define BSCD_P_HANDLE_MAGIC_NUMBER           0xdeadbeef
203
204/* Smart Card Channel magic number used to check if opaque handle is corrupt */
205#define BSCD_P_CHANNEL_HANDLE_MAGIC_NUMBER   0xfeedbabe
206
207#if ((BCHP_CHIP==7125)&& (BCHP_VER<BCHP_VER_C0))
208#define BCHP_SCA_SC_UART_CMD_1 BCHP_SCB_SC_UART_CMD_1
209#define BCHP_SCA_SC_UART_CMD_2 BCHP_SCB_SC_UART_CMD2_
210#define BCHP_SCA_SC_STATUS_1_card_pres_MASK BCHP_SCB_SC_STATUS_1_card_pres_MASK
211#define BCHP_SCA_SC_IF_CMD_1_pres_pol_MASK BCHP_SCB_SC_IF_CMD_1_pres_pol_MASK
212#define BCHP_SCA_SC_CLK_CMD_clk_en_MASK BCHP_SCB_SC_CLK_CMD_1_clk_en_MASK
213#define BCHP_SCA_SC_CLK_CMD_bauddiv_MASK BCHP_SCB_SC_CLK_CMD_1_bauddiv_MASK
214#define BCHP_SCA_SC_UART_CMD_2_convention_MASK BCHP_SCB_SC_UART_CMD_2_convention_MASK
215#define BCHP_SCA_SC_UART_CMD_2_rpar_retry_SHIFT BCHP_SCB_SC_UART_CMD_2_rpar_retry_SHIFT
216#define BCHP_SCA_SC_PROTO_CMD_edc_en_MASK  BCHP_SCB_SC_PROTO_CMD_edc_en_MASK
217#define BCHP_SCA_SC_PROTO_CMD_crc_lrc_MASK BCHP_SCB_SC_PROTO_CMD_crc_lrc_MASK
218#define BCHP_SCA_SC_FLOW_CMD_flow_en_MASK  BCHP_SCB_SC_FLOW_CMD_flow_en_MASK
219#define BCHP_SCA_SC_IF_CMD_2_db_en_MASK  BCHP_SCB_SC_IF_CMD_2_db_en_MASK
220#define BCHP_SCA_SC_IF_CMD_2_db_mask_MASK  BCHP_SCB_SC_IF_CMD_2_db_mask_MASK
221#define BCHP_SCA_SC_IF_CMD_1_vcc_MASK BCHP_SCB_SC_IF_CMD_1_vcc_MASK
222#define BCHP_SCA_SC_IF_CMD_1_rst_MASK BCHP_SCB_SC_IF_CMD_1_rst_MASK
223#define BCHP_SCA_SC_IF_CMD_1_io_MASK BCHP_SCB_SC_IF_CMD_1_io_MASK
224#define BCHP_SCA_SC_PROTO_CMD_rbuf_rst_MASK  BCHP_SCB_SC_PROTO_CMD_rbuf_rst_MASK
225#define BCHP_SCA_SC_PROTO_CMD_tbuf_rst_MASK  BCHP_SCB_SC_PROTO_CMD_tbuf_rst_MASK
226#define BCHP_SCA_SC_UART_CMD_1_io_en_MASK  BCHP_SCB_SC_UART_CMD_1_io_en_MASK
227#define BCHP_SCA_SC_IF_CMD_1_auto_clk_MASK BCHP_SCB_SC_IF_CMD_1_auto_clk_MASK
228#define BCHP_SCA_SC_IF_CMD_1_auto_io_MASK BCHP_SCB_SC_IF_CMD_1_auto_io_MASK
229#define BCHP_SCA_SC_UART_CMD_1_uart_rst_MASK BCHP_SCB_SC_UART_CMD_1_uart_rst_MASK
230#define BCHP_SCA_SC_TIMER_CMD_timer_en_MASK BCHP_SCB_SC_TIMER_CMD_timer_en_MASK
231#define BCHP_SCA_SC_INTR_STAT_1_timer_intr_MASK BCHP_SCB_SC_INTR_STAT_1_timer_intr_MASK
232#define BCHP_SCA_SC_TIMER_CMD_timer_src_MASK BCHP_SCB_SC_TIMER_CMD_timer_src_MASK
233#define BCHP_SCA_SC_TIMER_CMD_timer_mode_MASK BCHP_SCB_SC_TIMER_CMD_timer_mode_MASK
234#define BCHP_SCA_SC_TIMER_CMD_wait_mode_MASK BCHP_SCB_SC_TIMER_CMD_wait_mode_MASK
235#define BCHP_SCA_SC_TIMER_CMD_wait_en_MASK BCHP_SCB_SC_TIMER_CMD_wait_en_MASK
236#define BCHP_SCA_SC_INTR_STAT_2_wait_intr_MASK BCHP_SCB_SC_INTR_STAT_2_wait_intr_MASK
237#define BCHP_SCA_SC_INTR_STAT_1_tpar_intr_MASK BCHP_SCB_SC_INTR_STAT_1_tpar_intr_MASK
238#define BCHP_SCA_SC_INTR_STAT_1_pres_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_pres_intr_MASK
239#define BCHP_SCA_SC_INTR_STAT_1_bgt_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_bgt_intr_MASK
240#define BCHP_SCA_SC_INTR_STAT_1_tdone_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_tdone_intr_MASK
241#define BCHP_SCA_SC_INTR_STAT_1_retry_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_retry_intr_MASK
242#define BCHP_SCA_SC_INTR_STAT_1_tempty_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_tempty_intr_MASK
243#define BCHP_SCA_SC_INTR_STAT_2_rpar_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_rpar_intr_MASK
244#define BCHP_SCA_SC_INTR_STAT_2_atrs_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_atrs_intr_MASK
245#define BCHP_SCA_SC_INTR_STAT_2_cwt_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_cwt_intr_MASK
246#define BCHP_SCA_SC_INTR_STAT_2_rcv_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_rcv_intr_MASK
247#define BCHP_SCA_SC_INTR_STAT_2_rready_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_rready_intr_MASK
248#define BCHP_SCA_SC_INTR_STAT_2_rlen_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_rlen_intr_MASK
249#define BCHP_SCA_SC_INTR_STAT_1_event1_intr_MASK  BCHP_SCB_SC_INTR_STAT_1_event1_intr_MASK
250#define BCHP_SCA_SC_INTR_STAT_2_event2_intr_MASK  BCHP_SCB_SC_INTR_STAT_2_event2_intr_MASK
251#define BCHP_SCA_SC_STATUS_2_rpar_err_MASK BCHP_SCB_SC_STATUS_2_rpar_err_MASK
252#define BCHP_SCA_SC_STATUS_2_rempty_MASK BCHP_SCB_SC_STATUS_2_rempty_MASK
253#define BCHP_SCA_SC_STATUS_1_tdone_MASK BCHP_SCB_SC_STATUS_1_tdone_MASK
254#define BCHP_SCA_SC_STATUS_2_roverflow_MASK BCHP_SCB_SC_STATUS_2_roverflow_MASK
255#define BCHP_SCA_SC_STATUS_2_rready_MASK BCHP_SCB_SC_STATUS_2_rready_MASK
256#define BCHP_SCA_SC_IF_CMD_1_auto_vcc_MASK BCHP_SCB_SC_IF_CMD_1_auto_vcc_MASK
257#define BCHP_SCA_SC_UART_CMD_1_get_atr_MASK BCHP_SCB_SC_UART_CMD_1_get_atr_MASK
258#define BCHP_SCA_SC_IF_CMD_1_auto_rst_MASK BCHP_SCB_SC_IF_CMD_1_auto_rst_MASK
259#define BCHP_SCA_SC_TIMER_CMD_cwt_en_MASK BCHP_SCB_SC_TIMER_CMD_cwt_en_MASK
260#define BCHP_SCA_SC_STATUS_2_edc_err_MASK  BCHP_SCB_SC_STATUS_2_edc_err_MASK
261#define BCHP_SCA_SC_INTR_EN_1_pres_ien_MASK BCHP_SCB_SC_INTR_EN_1_pres_ien_MASK
262#define BCHP_SCA_SC_INTR_EN_1_tpar_ien_MASK BCHP_SCB_SC_INTR_EN_1_tpar_ien_MASK
263#define BCHP_SCA_SC_INTR_EN_1_timer_ien_MASK BCHP_SCB_SC_INTR_EN_1_timer_ien_MASK
264#define BCHP_SCA_SC_INTR_EN_1_bgt_ien7_MASK BCHP_SCB_SC_INTR_EN_1_bgt_ien7_MASK
265#define BCHP_SCA_SC_INTR_EN_1_tdone_ien_MASK BCHP_SCB_SC_INTR_EN_1_tdone_ien_MASK
266#define BCHP_SCA_SC_INTR_EN_1_retry_ien_MASK BCHP_SCB_SC_INTR_EN_1_retry_ien_MASK
267#define BCHP_SCA_SC_INTR_EN_1_tempty_ien_MASK BCHP_SCB_SC_INTR_EN_1_tempty_ien_MASK
268#define BCHP_SCA_SC_INTR_EN_2_rpar_ien_MASK BCHP_SCB_SC_INTR_EN_2_rpar_ien_MASK
269#define BCHP_SCA_SC_INTR_EN_2_atrs_ien_MASK BCHP_SCB_SC_INTR_EN_2_atrs_ien_MASK
270#define BCHP_SCA_SC_INTR_EN_2_cwt_ien_MASK BCHP_SCB_SC_INTR_EN_2_cwt_ien_MASK
271#define BCHP_SCA_SC_INTR_EN_2_rlen_ien_MASK BCHP_SCB_SC_INTR_EN_2_rlen_ien_MASK
272#define BCHP_SCA_SC_INTR_EN_2_wait_ien_MASK BCHP_SCB_SC_INTR_EN_2_wait_ien_MASK
273#define BCHP_SCA_SC_INTR_EN_2_rcv_ien_MASK BCHP_SCB_SC_INTR_EN_2_rcv_ien_MASK
274#define BCHP_SCA_SC_INTR_EN_2_rready_ien_MASK BCHP_SCB_SC_INTR_EN_2_rready_ien_MASK
275#define BCHP_SCA_SC_UART_CMD_1_t_r_MASK BCHP_SCB_SC_UART_CMD_1_t_r_MASK
276#define BCHP_SCA_SC_UART_CMD_1_auto_rcv_MASK BCHP_SCB_SC_UART_CMD_1_auto_rcv_MASK
277#define BCHP_SCA_SC_UART_CMD_1_xmit_go_MASK BCHP_SCB_SC_UART_CMD_1_xmit_go_MASK
278#define BCHP_SCA_SC_BGT_r2t_MASK BCHP_SCB_SC_BGT_r2t_MASK
279#define BCHP_SCA_SC_UART_CMD_1_inv_par_MASK BCHP_SCB_SC_UART_CMD_1_inv_par_MASK
280#endif 
281
282/* End of Definitions */ 
283
284
285/* Enum Types */
286
287
288
289
290
291/* End of Enum Types */
292
293
294/* Smart Card Private Data Structures */
295
296/***************************************************************************
297Summary:
298Smart card event handle.
299
300Description:
301Upon receiving an interrupt, ISR shall signal this event to wake up the thread/task
302that is waiting for this event.
303
304See Also:
305BSCD_ChannelSettings, BSCD_Open()
306
307****************************************************************************/   
308typedef struct BSCD_P_WaitEvent {
309
310    BKNI_EventHandle cardWait;  /* card detection */
311    BKNI_EventHandle tdoneWait;  /* transmit done */
312    BKNI_EventHandle rcvWait;     /*receive at least one byte */
313    BKNI_EventHandle atrStart;   /* receive start bit of the ATR */
314    BKNI_EventHandle timerWait;   /* timer expired */
315    BKNI_EventHandle event1Wait;   /* timer expired */
316    BKNI_EventHandle event2Wait;   /* timer expired */ 
317
318} BSCD_P_WaitEvent;
319
320
321/***************************************************************************
322Summary:
323Structure that defines Smart card Baud Rate and Clock divisor.
324
325Description:
326Smart card D and F Table according to SC_PRESCALE Table, where F is Clock Rate
327Conversion Factor and D is the Baud Rate Adjustment Factor.
328This table contains the recommended set of values for the SC_PRESCALE and SC_CLK_CMD
329based  on the ATR TA1 byte. The resulting clock rate and baud rate will comply to
330ISO 7816-3.
331
332See Also:
333BSCD_OpenChannel()
334
335****************************************************************************/ 
336typedef struct
337{
338      uint8_t clkDiv;      /* clk divider in SC_CLK_CMD register */
339      uint8_t prescale;    /* prescale in SC_PRESCALE register */
340      uint8_t baudDiv;     /* baud rate divider in SC_CLK_CMD register */
341      uint8_t etuClkDiv;   /* etu clk divider in SC_CLK_CMD register */
342} BSCD_P_DFStruct;
343
344
345/***************************************************************************
346Summary:
347Structure that defines Smart card calback function.
348
349Description:
350Structure that defines Smart card calback function.
351
352See Also:
353
354
355****************************************************************************/ 
356typedef struct BSCD_P_IsrCallBackFunc
357{
358        /* CBFunc[0] is always for default CB function.  CBFunc[1] could be used for customized CB function */
359        BSCD_IsrCallbackFunc    tParityIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];             /* Interrupt Callback Function for Transmit Parity */
360        BSCD_IsrCallbackFunc    timerIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];               /* Interrupt Callback Function for eneral Purpose Timer */
361        BSCD_IsrCallbackFunc    cardInsertIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];          /* Interrupt Callback Function for Card Insertion */
362        BSCD_IsrCallbackFunc    cardRemoveIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];          /* Interrupt Callback Function for Card Removal */
363        BSCD_IsrCallbackFunc    bgtIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Interrupt Callback Function for Block Guard Time */
364        BSCD_IsrCallbackFunc    tDoneIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];               /* Interrupt Callback Function for Transmit Done */
365        BSCD_IsrCallbackFunc    retryIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];               /* Interrupt Callback Function for Transmit or Receive Retry Overflow */
366        BSCD_IsrCallbackFunc    tEmptyIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];              /* Interrupt Callback Function for Transmit Empty */
367        BSCD_IsrCallbackFunc    rParityIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];             /* Interrupt Callback Function for Receive Parity */
368        BSCD_IsrCallbackFunc    atrIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Interrupt Callback Function for ATR Start */
369        BSCD_IsrCallbackFunc    cwtIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Interrupt Callback Function for CWT */
370        BSCD_IsrCallbackFunc    rLenIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                /* Interrupt Callback Function for Receive Length Error */
371        BSCD_IsrCallbackFunc    waitIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                /* Interrupt Callback Function for Block or Work Waiting Time */
372        BSCD_IsrCallbackFunc    rcvIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Interrupt Callback Function for Receive Character */
373        BSCD_IsrCallbackFunc    rReadyIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];              /* Interrupt Callback Function for Receive Ready */
374        BSCD_IsrCallbackFunc    edcIsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Callback Function for EDC Error */
375        BSCD_IsrCallbackFunc    event1IsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Callback Function for Event1 inerrupt */
376        BSCD_IsrCallbackFunc    event2IsrCBFunc[BSCD_MAX_NUM_CALLBACK_FUNC];                 /* Callback Function for Event2 inerrupt */
377       
378} BSCD_P_IsrCallBackFunc;
379
380/***************************************************************************
381Summary:
382Structure that defines Smart card channel  handle.
383
384Description:
385Structure that defines Smart card channel  handle.
386
387See Also:
388BSCD_OpenChannel()
389
390****************************************************************************/ 
391typedef struct BSCD_P_ChannelHandle
392{
393        unsigned long                   ulMagicNumber; /* Must be  BSCD_P_CHANNEL_HANDLE_MAGIC_NUMBER */
394
395        BSCD_Handle             moduleHandle;   /* Module handle */
396
397        BSCD_ChannelSettings    currentChannelSettings;   /* current channel settings */
398
399        BINT_CallbackHandle     channelIntCallback;  /* Channel Interrupt Callback */
400
401        unsigned char                   ucChannelNumber;     /* channel number */
402
403        uint32_t                                ulStatus1;                      /* value of SC_STATUS_1 */
404
405        uint32_t                                ulStatus2;                      /* value of SC_STATUS_2 */
406
407        uint32_t                                ulIntrStatus1;                      /* value of SC_INTR_STATUS_1 */
408
409        uint32_t                                ulIntrStatus2;                      /* value of SC_INTR_STATUS_2 */
410
411        BSCD_P_WaitEvent                channelWaitEvent;    /* Wait event */
412
413        BSCD_ResetType          resetType;                      /* Need this for EMV ATR to determine if this is warmReset or coldReset */
414
415        BSCD_Status                     channelStatus;         /* Channel status that returned by BSCD_Channel_GetStatus */
416
417        bool                                    bIsOpen;    /* Is channel opened */
418
419        unsigned char                   aucTxBuf[BSCD_MAX_TX_SIZE];   /* transmission bytes */
420
421        unsigned long                   ulTxLen;                       /* number of transmission bytes */
422
423        unsigned char                   aucRxBuf[BSCD_MAX_RX_SIZE]; /*receiving bytes */
424
425        unsigned long                   ulRxLen;                   /* number receiving bytes */
426
427        unsigned long                   ulRegStartAddr;                   /* Start Address of this smart card  channel */
428
429        BSCD_P_IsrCallBackFunc  callBack;                       /* interrupt Callback functions */
430
431#ifdef BSCD_EMV2000_CWT_PLUS_4
432        bool                                    bIsReceive;    /* Is channel opened */
433#endif
434
435        bool                                    bIsCardRemoved;    /* Is the Card removed ? */
436                               
437} BSCD_P_ChannelHandle;
438
439
440/***************************************************************************
441Summary:
442Structure that defines Smart card module  handle.
443
444Description:
445Structure that defines Smart card module  handle.
446
447See Also:
448BSCD_Open()
449
450****************************************************************************/ 
451 typedef struct BSCD_P_Handle
452{
453        unsigned long                   ulMagicNumber; /* Must be  BSCD_P_HANDLE_MAGIC_NUMBER */
454
455        BSCD_ChannelHandle      channelHandles[BSCD_MAX_SUPPOTED_CHANNELS];
456
457        BSCD_Settings                   currentSettings;   /* current settings */
458
459        BREG_Handle                     regHandle;    /* register handle */
460        BCHP_Handle                     chipHandle;  /* chip handle */
461        BINT_Handle                     interruptHandle;   /* interrupt handle */
462
463        bool                                    bIsOpen;    /* Is Module opened */
464
465        uint16_t                chipId;
466        uint16_t                chipRev;               
467
468} BSCD_P_Handle;
469
470
471
472
473
474
475/* End of Smart Card Private Data Structures */
476
477
478/* Private Function */
479
480unsigned char BSCD_P_GetClkDiv(
481        BSCD_ChannelHandle      in_channelHandle, 
482      unsigned char in_ucDFactor,
483      unsigned char in_ucFFactor
484);
485
486unsigned char BSCD_P_GetETUClkDiv(
487        BSCD_ChannelHandle      in_channelHandle, 
488      unsigned char in_ucDFactor,
489      unsigned char in_ucFFactor
490);
491
492unsigned char BSCD_P_GetISOBaudRateAdjustor(
493      unsigned char in_ucDFactor
494);
495
496unsigned int BSCD_P_GetISOClockRateConversionFactor(
497      unsigned char in_ucFFactor
498);
499
500unsigned char BSCD_P_MapScClkDivToMaskValue(
501      unsigned char in_ucClkDiv
502);
503
504unsigned char BSCD_P_GetPrescale(
505        BSCD_ChannelHandle      in_channelHandle, 
506      unsigned char in_ucDFactor,
507      unsigned char in_ucFFactor
508);
509
510unsigned char BSCD_P_GetBaudDiv(
511        BSCD_ChannelHandle      in_channelHandle, 
512      unsigned char in_ucDFactor,
513      unsigned char in_ucFFactor
514);
515
516BERR_Code BSCD_P_FDAdjust(
517                BSCD_ChannelHandle      in_channelHandle, 
518                unsigned char                   in_ucFFactor, 
519                unsigned char                   in_ucDFactor
520);
521
522BERR_Code BSCD_P_AdjustWWT(
523                BSCD_ChannelHandle      in_channelHandle, 
524                unsigned char                   in_ucFFactor, 
525                unsigned char                   in_ucDFactor,
526                unsigned char                   in_ucWorkWaitTImeInteger
527);
528
529void BSCD_Channel_P_CardInsertCB_isr( 
530      BSCD_ChannelHandle        in_channelHandle, 
531      void                                      *inp_data
532) ;
533
534
535void  BSCD_Channel_P_CardRemoveCB_isr( 
536      BSCD_ChannelHandle        in_channelHandle, 
537      void                                      *inp_data 
538) ;
539
540void BSCD_Channel_P_RcvCB_isr( 
541      BSCD_ChannelHandle        in_channelHandle, 
542      void                                      *inp_data 
543);
544
545void BSCD_Channel_P_ATRCB_isr( 
546      BSCD_ChannelHandle        in_channelHandle, 
547      void                                      *inp_data 
548);
549
550void BSCD_Channel_P_WaitCB_isr( 
551      BSCD_ChannelHandle        in_channelHandle, 
552      void       *inp_data
553) ;
554
555void BSCD_Channel_P_TimerCB_isr( 
556      BSCD_ChannelHandle        in_channelHandle, 
557      void       *inp_data
558) ;
559
560void BSCD_Channel_P_RetryCB_isr( 
561      BSCD_ChannelHandle        in_channelHandle, 
562      void       *inp_data
563);
564
565void BSCD_Channel_P_TimerCB_isr( 
566      BSCD_ChannelHandle        in_channelHandle,
567      void       *inp_data
568);
569
570void BSCD_Channel_P_RParityCB_isr( 
571      BSCD_ChannelHandle        in_channelHandle,
572      void       *inp_data
573);
574
575void BSCD_Channel_P_TParityCB_isr(
576      BSCD_ChannelHandle        in_channelHandle,
577      void       *inp_data
578);
579
580void BSCD_Channel_P_CWTCB_isr( 
581      BSCD_ChannelHandle        in_channelHandle,
582      void       *inp_data
583);
584
585void BSCD_Channel_P_BGTCB_isr( 
586      BSCD_ChannelHandle        in_channelHandle,
587      void       *inp_data
588);
589
590void BSCD_Channel_P_RLenCB_isr( 
591      BSCD_ChannelHandle        in_channelHandle,
592      void       *inp_data
593);
594
595void BSCD_Channel_P_RReadyCB_isr( 
596      BSCD_ChannelHandle        in_channelHandle,
597      void       *inp_data
598);
599
600void BSCD_Channel_P_TDoneCB_isr( 
601      BSCD_ChannelHandle        in_channelHandle,
602      void       *inp_data
603);
604
605#ifdef BSCD_EMV2000_CWT_PLUS_4_EVENT_INTR
606void BSCD_Channel_P_Event1CB_isr( 
607      BSCD_ChannelHandle        in_channelHandle,
608      void       *inp_data
609);
610#endif
611
612void BSCD_Channel_P_Event2CB_isr( 
613      BSCD_ChannelHandle        in_channelHandle,
614      void       *inp_data
615);
616
617BERR_Code BSCD_Channel_P_WaitForCardInsertion(
618                BSCD_ChannelHandle      in_channelHandle
619);
620
621BERR_Code BSCD_Channel_P_WaitForCardRemove(
622                BSCD_ChannelHandle      in_channelHandle
623);
624
625BERR_Code BSCD_Channel_P_WaitForTimerEvent(
626                BSCD_ChannelHandle      in_channelHandle
627);
628
629BERR_Code BSCD_Channel_P_WaitForATRStart(
630                BSCD_ChannelHandle      in_channelHandle
631);
632
633BERR_Code BSCD_Channel_P_WaitForTDone(
634                BSCD_ChannelHandle      in_channelHandle
635);
636
637
638BERR_Code BSCD_Channel_P_WaitForRcv(
639                BSCD_ChannelHandle      in_channelHandle
640);
641
642BERR_Code BSCD_Channel_P_WaitForRReady(
643                BSCD_ChannelHandle      in_channelHandle
644);
645
646
647BERR_Code BSCD_Channel_P_Activating(
648                BSCD_ChannelHandle      in_channelHandle
649);
650
651
652void BSCD_P_HexDump(
653      char          *inp_cTitle, 
654      unsigned char *inp_ucBuf, 
655      unsigned int  in_unLen
656);
657
658BERR_Code BSCD_Channel_P_T0ReadData(
659                BSCD_ChannelHandle       in_channelHandle,
660                uint8_t                                 *outp_ucRcvData,
661                unsigned long                 *outp_unNumRcvBytes,
662                unsigned long                 in_unMaxReadBytes
663);
664
665BERR_Code BSCD_Channel_P_T1ReadData(
666                BSCD_ChannelHandle       in_channelHandle,
667                uint8_t                  *outp_ucRcvData,
668                unsigned long                  *outp_ulNumRcvBytes,
669                unsigned long                  in_ulMaxReadBytes
670);
671
672BERR_Code BSCD_Channel_P_ByteRead(
673                BSCD_ChannelHandle      in_channelHandle,
674                unsigned char *outp_ucData             
675);
676
677BERR_Code BSCD_Channel_P_EnableInterrupts_isr( 
678                BSCD_ChannelHandle      in_channelHandle
679);
680
681void BSCD_Channel_P_IntHandler_isr(
682        void *inp_param1,               /* Device channel handle */
683        int in_param2                           /* reserved */
684
685);
686
687BERR_Code BSCD_Channel_P_T0T1Transmit(         
688                BSCD_ChannelHandle          in_channelHandle,
689                uint8_t                     *inp_ucXmitData,
690                unsigned long                    in_ulNumXmitBytes
691);
692
693BERR_Code BSCD_Channel_P_T14IrdetoTransmit(             
694                BSCD_ChannelHandle          in_channelHandle,
695                uint8_t                     *inp_ucXmitData,
696                unsigned long                    in_ulNumXmitBytes
697);
698
699
700/*****************************************************************************
701Summary:
702This function creates the events that associated with the channel.
703
704Description:
705This function creates the events that associated with the channel.
706
707Calling Context:
708The function shall be called in BSCD_ChannelOpen .
709
710Performance and Timing:
711This is a synchronous function that will return when it is done.
712
713Input:
714in_channelHandle  - BSCD_ChannelHandle, a smart card
715                                        channel handle.
716
717Returns:
718BERR_SUCCESS - success
719To Do: Need more error code
720
721
722See Also:
723
724
725******************************************************************************/
726BERR_Code BSCD_P_CreateWaitEvent(
727      BSCD_ChannelHandle in_channelHandle
728);
729
730/*****************************************************************************
731Summary:
732This function destroys the events that associated with the channel.
733
734Description:
735This function destroys the events that associated with the channel.
736
737Calling Context:
738The function shall be called in BSCD_ChannelClose .
739
740Performance and Timing:
741This is a synchronous function that will return when it is done.
742
743Input:
744in_channelHandle  - BSCD_ChannelHandle, a smart card
745                                        channel handle.
746
747Returns:
748BERR_SUCCESS - success
749To Do: Need more error code
750
751
752See Also:
753
754
755******************************************************************************/
756BERR_Code BSCD_P_DestroyWaitEvent(
757      BSCD_ChannelHandle in_channelHandle
758);
759
760/*****************************************************************************
761Summary:
762This function control the state transition of smart card channel.
763
764Description:
765This function control the state transition of smart card channel.
766
767Calling Context:
768
769
770Performance and Timing:
771This is a synchronous function that will return when it is done.
772
773Input:
774in_event - BSCD_P_Event, state transition event.
775     
776Input/Output:
777in_channelHandle  - BSCD_ChannelHandle, a smart card
778                                        channel handle.
779
780Returns:
781BERR_SUCCESS - success
782To Do: Need more error code
783
784
785See Also:
786
787
788******************************************************************************/
789
790
791BERR_Code BSCD_Channel_P_ReceiveAndDecode(
792                BSCD_ChannelHandle      in_channelHandle
793);
794
795BERR_Code BSCD_Channel_P_SetStandard(
796                BSCD_ChannelHandle      in_channelHandle,
797                const BSCD_ChannelSettings      *inp_sSettings
798);
799
800
801BERR_Code BSCD_Channel_P_SetSrcClock(
802                BSCD_ChannelHandle      in_channelHandle,
803                const BSCD_ChannelSettings      *inp_sSettings
804);
805
806
807BERR_Code BSCD_Channel_P_SetFreq(
808                BSCD_ChannelHandle      in_channelHandle,
809                const BSCD_ChannelSettings      *inp_sSettings
810);
811
812BERR_Code BSCD_Channel_P_SetWaitTime(
813                BSCD_ChannelHandle      in_channelHandle,
814                const BSCD_ChannelSettings      *inp_sSettings
815);
816
817BERR_Code BSCD_Channel_P_SetGuardTime(
818                BSCD_ChannelHandle      in_channelHandle,
819                const BSCD_ChannelSettings      *inp_sSettings
820);
821
822BERR_Code BSCD_Channel_P_SetTransactionTimeout(
823                BSCD_ChannelHandle      in_channelHandle,
824                const BSCD_ChannelSettings      *inp_sSettings
825);
826
827BERR_Code BSCD_Channel_P_SetEdcParity(
828                BSCD_ChannelHandle      in_channelHandle,
829                const BSCD_ChannelSettings      *inp_sSettings
830);
831
832/* End of Private Function */
833
834#ifdef __cplusplus
835}
836#endif
837
838#endif /* BSCD_PRIV_H__ */
Note: See TracBrowser for help on using the repository browser.