nfc_brcm_defs.h revision e9629bad30a9f478b336ab46b8e6e02f7f87af46
1/******************************************************************************
2 *
3 *  Copyright (C) 2012-2014 Broadcom Corporation
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19
20/******************************************************************************
21 *
22 *  This file contains the Broadcom-specific defintions that are shared
23 *  between HAL, nfc stack, adaptation layer and applications.
24 *
25 ******************************************************************************/
26
27#ifndef NFC_BRCM_DEFS_H
28#define NFC_BRCM_DEFS_H
29
30/*****************************************************************************
31** Broadcom HW ID definitions
32*****************************************************************************/
33#define BRCM_20791B3_ID             0x20791b03
34#define BRCM_20791B4_ID             0x20791b04
35#define BRCM_20791B5_ID             0x20791b05
36#define BRCM_43341B0_ID             0x43341b00
37#define BRCM_20795A0_ID             0x20795a00
38
39#define BRCM_NFC_GEN_MASK           0xFFFFF000  /* HW generation mask */
40#define BRCM_NFC_REV_MASK           0x00000FFF  /* HW revision mask   */
41#define BRCM_NFC_20791_GEN          0x20791000
42#define BRCM_NFC_20791_GEN_MAX_EE   3           /* HCI access and 2 UICCs */
43#define BRCM_NFC_43341_GEN          0x43341000
44#define BRCM_NFC_43341_GEN_MAX_EE   3           /* HCI access and 2 UICCs */
45#define BRCM_NFC_20795_GEN          0x20795000
46#define BRCM_NFC_20795_GEN_MAX_EE   4           /* HCI access and 3 UICCs */
47
48/*****************************************************************************
49** Broadcom-specific NCI definitions
50*****************************************************************************/
51
52/**********************************************
53 * NCI Message Proprietary  Group       - F
54 **********************************************/
55#define NCI_MSG_TAG_SET_MEM             0x00
56#define NCI_MSG_TAG_GET_MEM             0x01
57#define NCI_MSG_T1T_SET_HR              0x02
58#define NCI_MSG_SET_CLF_REGISTERS       0x03
59#define NCI_MSG_GET_BUILD_INFO          0x04
60#define NCI_MSG_HCI_NETWK               0x05
61#define NCI_MSG_SET_FWFSM               0x06
62#define NCI_MSG_SET_UICCRDRF            0x07
63#define NCI_MSG_POWER_LEVEL             0x08
64#define NCI_MSG_FRAME_LOG               0x09
65#define NCI_MSG_UICC_READER_ACTION      0x0A
66#define NCI_MSG_SET_PPSE_RESPONSE       0x0B
67#define NCI_MSG_PRBS_SET                0x0C
68#define NCI_MSG_RESET_ALL_UICC_CFG      0x0D    /* reset HCI network/close all pipes (S,D) register */
69#define NCI_MSG_GET_NFCEE_INFO          0x0E
70#define NCI_MSG_DISABLE_INIT_CHECK      0x0F
71#define NCI_MSG_ANTENNA_SELF_TEST       0x10
72#define NCI_MSG_SET_MAX_PKT_SIZE        0x11
73#define NCI_MSG_NCIP_CLK_REQ_OR_CAR_DET 0x12
74#define NCI_MSG_NCIP_CONFIG_DBUART      0x13
75#define NCI_MSG_NCIP_ENABLE_DVT_DRIVER  0x14
76#define NCI_MSG_SET_ASWP                0x15
77#define NCI_MSG_ENCAPSULATE_NCI         0x16
78#define NCI_MSG_CONFIGURE_ARM_JTAG      0x17
79#define NCI_MSG_STATISTICS              0x18
80#define NCI_MSG_SET_DSP_TABLE           0x19
81#define NCI_MSG_GET_DSP_TABLE           0x1a
82#define NCI_MSG_READY_RX_CMD            0x1b
83#define NCI_MSG_GET_VBAT                0x1c
84#define NCI_MSG_GET_XTAL_INDEX_FROM_DH  0x1d
85#define NCI_MSG_SWP_LOG                 0x1e
86#define NCI_MSG_GET_PWRLEVEL            0x1f
87#define NCI_MSG_SET_VBAT_MONITOR        0x20
88#define NCI_MSG_SET_TINT_MODE           0x21
89#define NCI_MSG_ACCESS_APP              0x22
90#define NCI_MSG_SET_SECURE_MODE         0x23
91#define NCI_MSG_GET_NV_DEVICE           0x24
92#define NCI_MSG_LPTD                    0x25
93#define NCI_MSG_SET_CE4_AS_SNOOZE       0x26
94#define NCI_MSG_NFCC_SEND_HCI           0x27
95#define NCI_MSG_CE4_PATCH_DOWNLOAD_DONE 0x28
96#define NCI_MSG_EEPROM_RW               0x29
97#define NCI_MSG_GET_CLF_REGISTERS       0x2A
98#define NCI_MSG_RF_TEST                 0x2B
99#define NCI_MSG_DEBUG_PRINT             0x2C
100#define NCI_MSG_GET_PATCH_VERSION       0x2D
101#define NCI_MSG_SECURE_PATCH_DOWNLOAD   0x2E
102#define NCI_MSG_SPD_FORMAT_NVM          0x2F
103#define NCI_MSG_SPD_READ_NVM            0x30
104#define NCI_MSG_SWP_BIST                0x31
105#define NCI_MSG_WLESS_DBG_MODE          0x32
106#define NCI_MSG_I2C_REQ_POLARITY        0x33
107
108
109/**********************************************
110 * Proprietary  NCI status codes
111 **********************************************/
112#define NCI_STATUS_SPD_ERROR_ORDER          0xE0
113#define NCI_STATUS_SPD_ERROR_DEST           0xE1
114#define NCI_STATUS_SPD_ERROR_PROJECTID      0xE2
115#define NCI_STATUS_SPD_ERROR_CHIPVER        0xE3
116#define NCI_STATUS_SPD_ERROR_MAJORVER       0xE4
117#define NCI_STATUS_SPD_ERROR_INVALID_PARAM  0xE5
118#define NCI_STATUS_SPD_ERROR_INVALID_SIG    0xE6
119#define NCI_STATUS_SPD_ERROR_NVM_CORRUPTED  0xE7
120#define NCI_STATUS_SPD_ERROR_PWR_MODE       0xE8
121#define NCI_STATUS_SPD_ERROR_MSG_LEN        0xE9
122#define NCI_STATUS_SPD_ERROR_PATCHSIZE      0xEA
123
124
125
126#define NCI_NV_DEVICE_NONE              0x00
127#define NCI_NV_DEVICE_EEPROM            0x08
128#define NCI_NV_DEVICE_UICC1             0x10
129
130/* The events reported on tNFC_VS_CBACK */
131/* The event is (NCI_NTF_BIT|oid) or (NCI_RSP_BIT|oid) */
132#define NFC_VS_HCI_NETWK_EVT            (NCI_NTF_BIT|NCI_MSG_HCI_NETWK)
133#define NFC_VS_HCI_NETWK_RSP            (NCI_RSP_BIT|NCI_MSG_HCI_NETWK)
134#define NFC_VS_UICC_READER_ACTION_EVT   (NCI_NTF_BIT|NCI_MSG_UICC_READER_ACTION)
135#define NFC_VS_POWER_LEVEL_RSP          (NCI_RSP_BIT|NCI_MSG_POWER_LEVEL)
136#define NFC_VS_GET_NV_DEVICE_EVT        (NCI_RSP_BIT|NCI_MSG_GET_NV_DEVICE)
137#define NFC_VS_LPTD_EVT                 (NCI_NTF_BIT|NCI_MSG_LPTD)
138#define NFC_VS_GET_BUILD_INFO_EVT       (NCI_RSP_BIT|NCI_MSG_GET_BUILD_INFO)
139#define NFC_VS_GET_PATCH_VERSION_EVT    (NCI_RSP_BIT|NCI_MSG_GET_PATCH_VERSION)
140#define NFC_VS_SEC_PATCH_DOWNLOAD_EVT   (NCI_RSP_BIT|NCI_MSG_SECURE_PATCH_DOWNLOAD)
141#define NFC_VS_SEC_PATCH_AUTH_EVT       (NCI_NTF_BIT|NCI_MSG_SECURE_PATCH_DOWNLOAD)
142
143#define NCI_GET_PATCH_VERSION_NVM_OFFSET    37
144
145
146#define NCI_NFCC_PIPE_INFO_NV_SIZE      24  /* Static and dynamic pipe id and status for each pipe to uicc0 and uicc1. */
147#define NCI_PERSONALITY_SLOT_SIZE       19
148#define NCI_DYNAMIC_PIPE_SIZE           8
149
150#define NCI_SWP_INTERFACE_TYPE          0xFF    /* Type of TLV in NCI_MSG_HCI_NETWK */
151#define NCI_HCI_GATE_TYPE               0xFE    /* Type of TLV in NCI_MSG_HCI_NETWK */
152
153/* Secure Patch Download definitions (patch type definitions) */
154#define NCI_SPD_TYPE_HEADER             0x00
155#define NCI_SPD_TYPE_SRAM               0x01
156#define NCI_SPD_TYPE_AON                0x02
157#define NCI_SPD_TYPE_PATCH_TABLE        0x03
158#define NCI_SPD_TYPE_SECURE_CONFIG      0x04
159#define NCI_SPD_TYPE_CONTROLLED_CONFIG  0x05
160#define NCI_SPD_TYPE_SIGNATURE          0x06
161#define NCI_SPD_TYPE_SIGCHEK            0x07
162
163/* Secure Patch Download definitions (NCI_SPD_TYPE_HEADER definitions) */
164#define NCI_SPD_HEADER_OFFSET_CHIPVERLEN    0x18
165#define NCI_SPD_HEADER_CHIPVER_LEN          16
166
167/* NVM Type (in GET_PATCH_VERSION RSP) */
168#define NCI_SPD_NVM_TYPE_NONE           0x00
169#define NCI_SPD_NVM_TYPE_EEPROM         0x01
170#define NCI_SPD_NVM_TYPE_UICC           0x02
171
172/**********************************************
173 * NCI NFCC proprietary features in octet 3
174 **********************************************/
175#define NCI_FEAT_SIGNED_PATCH           0x01000000
176
177/**********************************************
178 * NCI Interface Types
179 **********************************************/
180#define NCI_INTERFACE_VS_CALYPSO_CE     0x81
181#define NCI_INTERFACE_VS_T2T_CE         0x82    /* for Card Emulation side */
182#define NCI_INTERFACE_VS_15693          0x83    /* for both Reader/Writer and Card Emulation side */
183#define NCI_INTERFACE_VS_T1T_CE         0x84    /* for Card Emulation side */
184
185/**********************************************
186 * NCI Proprietary Parameter IDs
187 **********************************************/
188#define NCI_PARAM_ID_LA_FSDI            0xA0
189#define NCI_PARAM_ID_LB_FSDI            0xA1
190#define NCI_PARAM_ID_HOST_LISTEN_MASK   0xA2
191#define NCI_PARAM_ID_CHIP_TYPE          0xA3 /* NFCDEP */
192#define NCI_PARAM_ID_PA_ANTICOLL        0xA4
193#define NCI_PARAM_ID_CONTINUE_MODE      0xA5
194#define NCI_PARAM_ID_LBP                0xA6
195#define NCI_PARAM_ID_T1T_RDR_ONLY       0xA7
196#define NCI_PARAM_ID_LA_SENS_RES        0xA8
197#define NCI_PARAM_ID_PWR_SETTING_BITMAP 0xA9
198#define NCI_PARAM_ID_WI_NTF_ENABLE      0xAA
199#define NCI_PARAM_ID_LN_BITRATE         0xAB /* NFCDEP Listen Bitrate */
200#define NCI_PARAM_ID_LF_BITRATE         0xAC /* FeliCa */
201#define NCI_PARAM_ID_SWP_BITRATE_MASK   0xAD
202#define NCI_PARAM_ID_KOVIO              0xAE
203#define NCI_PARAM_ID_UICC_NTF_TO        0xAF
204#define NCI_PARAM_ID_NFCDEP             0xB0
205#define NCI_PARAM_ID_CLF_REGS_CFG       0xB1
206#define NCI_PARAM_ID_NFCDEP_TRANS_TIME  0xB2
207#define NCI_PARAM_ID_CREDIT_TIMER       0xB3
208#define NCI_PARAM_ID_CORRUPT_RX         0xB4
209#define NCI_PARAM_ID_ISODEP             0xB5
210#define NCI_PARAM_ID_LF_CONFIG          0xB6
211#define NCI_PARAM_ID_I93_DATARATE       0xB7
212#define NCI_PARAM_ID_CREDITS_THRESHOLD  0xB8
213#define NCI_PARAM_ID_TAGSNIFF_CFG       0xB9
214#define NCI_PARAM_ID_PA_FSDI            0xBA /* ISODEP */
215#define NCI_PARAM_ID_PB_FSDI            0xBB /* ISODEP */
216#define NCI_PARAM_ID_FRAME_INTF_RETXN   0xBC
217
218#define NCI_PARAM_ID_UICC_RDR_PRIORITY  0xBD
219#define NCI_PARAM_ID_GUARD_TIME         0xBE
220#define NCI_PARAM_ID_STDCONFIG          0xBF /* dont not use this config item */
221#define NCI_PARAM_ID_PROPCFG            0xC0 /* dont not use this config item  */
222#define NCI_PARAM_ID_MAXTRY2ACTIVATE    0xC1
223#define NCI_PARAM_ID_SWPCFG             0xC2
224#define NCI_PARAM_ID_CLF_LPM_CFG        0xC3
225#define NCI_PARAM_ID_DCLB               0xC4
226#define NCI_PARAM_ID_ACT_ORDER          0xC5
227#define NCI_PARAM_ID_DEP_DELAY_ACT      0xC6
228#define NCI_PARAM_ID_DH_PARITY_CRC_CTL  0xC7
229#define NCI_PARAM_ID_PREINIT_DSP_CFG    0xC8
230#define NCI_PARAM_ID_FW_WORKAROUND      0xC9
231#define NCI_PARAM_ID_RFU_CONFIG         0xCA
232#define NCI_PARAM_ID_EMVCO_ENABLE       0xCB
233#define NCI_PARAM_ID_ANTDRIVER_PARAM    0xCC
234#define NCI_PARAM_ID_PLL325_CFG_PARAM   0xCD
235#define NCI_PARAM_ID_OPNLP_ADPLL_ENABLE 0xCE
236#define NCI_PARAM_ID_CONFORMANCE_MODE   0xCF
237
238#define NCI_PARAM_ID_LPO_ON_OFF_ENABLE  0xD0
239#define NCI_PARAM_ID_FORCE_VANT         0xD1
240#define NCI_PARAM_ID_COEX_CONFIG        0xD2
241#define NCI_PARAM_ID_INTEL_MODE         0xD3
242
243#define NCI_PARAM_ID_AID                0xFF
244
245/**********************************************
246 * NCI Parameter ID Lens
247 **********************************************/
248#define NCI_PARAM_LEN_PWR_SETTING_BITMAP    3
249#define NCI_PARAM_LEN_HOST_LISTEN_MASK      2
250#define NCI_PARAM_LEN_PLL325_CFG_PARAM      14
251
252/**********************************************
253 * Snooze Mode
254 **********************************************/
255#define NFC_SNOOZE_MODE_NONE      0x00    /* Snooze mode disabled    */
256#define NFC_SNOOZE_MODE_UART      0x01    /* Snooze mode for UART    */
257#define NFC_SNOOZE_MODE_SPI_I2C   0x08    /* Snooze mode for SPI/I2C */
258
259#define NFC_SNOOZE_ACTIVE_LOW     0x00    /* high to low voltage is asserting */
260#define NFC_SNOOZE_ACTIVE_HIGH    0x01    /* low to high voltage is asserting */
261
262#endif  /* NFC_BRCM_DEFS_H */
263