nfc_hal_dm_cfg.c revision e9df6ba5a8fcccf306a80b1670b423be8fe7746a
1/******************************************************************************
2 *
3 *  Copyright (C) 2011-2012 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 *  This file contains compile-time configurable constants for BRCM HAL
22 *  modules
23 *
24 ******************************************************************************/
25#include "nfc_hal_int.h"
26#include "nci_defs.h"
27#include "nfc_brcm_defs.h"
28
29/* the SetConfig at start up*/
30UINT8 nfc_hal_start_up_cfg[] = {
31    /* TLV len */   28,
32    /* B0 */        NCI_PARAM_ID_EMVCO_ENABLE,
33    /* B1 */        1,
34    /* B2 */        1,     /* (1 = enable emvco mode, 0 = disable emvco mode) Default = 0.*/
35    /* B3 */        NCI_PARAM_ID_CONTINUE_MODE, /* NFCC will restart discovery after deactivated */
36    /* B4 */        1,
37    /* B5 */        1,     /* (1 = enable, 0 = disable) Default = 0.*/
38    /* B6 */        NCI_PARAM_ID_RFU_CONFIG,
39    /* B7 */        0x14,
40    /* B8 */        0x00,
41    /* B9 */        0x00,
42    /* B10*/        0x00,
43    /* B11*/        0x00,
44    /* B12*/        0x02,
45    /* B13*/        0xE8,
46    /* B14*/        0x03,
47    /* B15*/        0x00,
48    /* B16*/        0x00,
49    /* B17*/        0x00,
50    /* B18*/        0x00,
51    /* B19*/        0x00,
52    /* B20*/        0x00,
53    /* B21*/        0x00,
54    /* B22*/        0x00,
55    /* B23*/        0x00,
56    /* B24*/        0x00,
57    /* B25*/        0x00,
58    /* B26*/        0x00,
59    /* B27*/        0x00
60};
61
62UINT8 *p_nfc_hal_dm_start_up_cfg = (UINT8 *) nfc_hal_start_up_cfg;
63
64/* the VSCs at start up:
65 * The VSCs are specified in TLV format similar to nfa_start_up_cfg[]
66 * first byte is the TLV total len.
67 * B0 is the first T; i.e. the opcode for the VSC
68 * B1 is the len of the VSC parameters/payload
69 * */
70UINT8 nfc_hal_dm_start_up_vsc_cfg[] = {
71    /* TLV len */   5,
72    /* B0 */        NCI_MTS_CMD|NCI_GID_PROP,
73    /* B1 */        NCI_MSG_FRAME_LOG,
74    /* B2 */        2,
75    /* B3 */        0,  /* 1 to enable RF frames */
76    /* B4 */        1   /* 1 to enable SWP frames */
77};
78
79UINT8 *p_nfc_hal_dm_start_up_vsc_cfg = NULL;
80
81/* LPTD parameters (LowPowerTagDetection)
82 * This is typical values for 20791B2
83 * The timing and threshold parameters used for a customer handset/hardware may vary
84 * depending on antenna and should be verified during a customer testing phase.
85 * the data fields without comments are too complicated. Please see ""
86 * */
87const UINT8 nfc_hal_dm_lptd_cfg[] =
88{
89    21,             /* total TLV length excluding itself */
90    NCI_PARAM_ID_TAGSNIFF_CFG,  /* type */
91    19,             /* length */
92    0x01,           /* B0 enable: 0/disable, 1/enable*/
93    0x02,           /* B1 poll count: number of full power poll before starting lptd poll */
94    0xFF,           /* B2 sniff count lsb: number of lptd poll before switching to full power poll */
95    0xFF,           /* B3 sniff count msb */
96    0x80,           /* B4 threshold: Bigger thresholds give a smaller LPTD range but more immunity to false detections. Smaller thresholds increase LPTD range at the cost of greater likelihood of false detections. */
97    0x40,           /* B5 delay lsb: delay (us) to sampling power */
98    0x00,           /* B6 delay msb */
99    0x40,           /* B7 carrier threshold lsb */
100    0x00,           /* B8 carrier threshold msb */
101    0x80,           /* B9 mode: Bitwise variable used to enable various algorithm modes.*/
102    0x80,           /* B10 0-offset lsb */
103    0x00,           /* B11 0-offset msb */
104    0x10,           /* B12 field sense time lsb */
105    0x00,           /* B13 field sense time msb */
106    0x00,           /* B14 false detect threshold lsb: 0x00 to disable LPTD NTF. The number of false tag detections to resport LPTD NTF. */
107    0x00,           /* B15 false detect threshold msb. A false tag detect - full poll results in no tag being detected.*/
108    0x75,           /* B16 mode1; Bitwise variable used to enable various algorithm modes. */
109    0x0D,           /* B17 lptd ant cfg rx */
110    0x30,           /* B18 lptd rdr cfg ve */
111};
112
113UINT8 *p_nfc_hal_dm_lptd_cfg = (UINT8 *) &nfc_hal_dm_lptd_cfg[0];
114
115/* This must be configured before setting reader mode for 20791. No need to configure for 43341. */
116const UINT8 nfc_hal_dm_pll_325_cfg[NFC_HAL_XTAL_INDEX_MAX][NFC_HAL_PLL_325_SETCONFIG_PARAM_LEN] =
117{
118    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0x9A, 0x99, 0x99, 0x99, 0xD7, 0x03, 0x00, 0x87, 0x04, 0x1C, 0x0F, 0x00, 0x0B, FALSE}, /*  9.6 MHz */
119    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0xEF, 0x90, 0xA8, 0x22, 0xD0, 0x03, 0x00, 0x64, 0x06, 0x26, 0x0F, 0x00, 0x08, FALSE}, /* 13.0 MHz */
120    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0x5B, 0xB0, 0x05, 0x5B, 0xD8, 0x03, 0x00, 0x50, 0x07, 0x30, 0x0F, 0x00, 0x06, FALSE}, /* 16.2 MHz */
121    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0xCD, 0xCC, 0xCC, 0xCC, 0xD7, 0x03, 0x00, 0x43, 0x09, 0x39, 0x0F, 0x00, 0x04, FALSE}, /* 19.2 MHz */
122    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0xD7, 0xA3, 0x70, 0x3D, 0xD0, 0x03, 0x00, 0x36, 0x0B, 0x47, 0x0F, 0x00, 0x03, FALSE}, /* 24.0 MHz */
123    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0x78, 0x48, 0x54, 0x11, 0xD0, 0x03, 0x00, 0x32, 0x0C, 0x4D, 0x0F, 0x00, 0x02, FALSE}, /* 26.0 MHz */
124    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0xCD, 0xCC, 0xCC, 0xCC, 0xD7, 0x03, 0x00, 0x43, 0x09, 0x39, 0x0F, 0x00, 0x04, TRUE},  /* 38.4 MHz */
125    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0x78, 0x48, 0x54, 0x11, 0xD0, 0x03, 0x00, 0x32, 0x0C, 0x4D, 0x0F, 0x00, 0x02, TRUE},  /* 52.0 MHz */
126    {NCI_PARAM_ID_PLL325_CFG_PARAM, NCI_PARAM_LEN_PLL325_CFG_PARAM, 0x29, 0xB4, 0xE2, 0x9C, 0xCF, 0x03, 0x00, 0x45, 0x08, 0x37, 0x0F, 0x00, 0x04, TRUE}   /* 37.4 MHz */
127};
128
129UINT8 *p_nfc_hal_dm_pll_325_cfg = (UINT8 *) nfc_hal_dm_pll_325_cfg;
130
131
132/* set nfc_hal_prm_nvm_required to TRUE, if the platform wants to abort PRM process without NVM */
133BOOLEAN nfc_hal_prm_nvm_required = FALSE;
134