Home | History | Annotate | Download | only in hal
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2011-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 compile-time configurable constants for BRCM HAL
     23  *  modules
     24  *
     25  ******************************************************************************/
     26 #include "nfc_hal_int.h"
     27 #include "nci_defs.h"
     28 #include "nfc_brcm_defs.h"
     29 
     30 /* the SetConfig at start up*/
     31 UINT8 nfc_hal_start_up_cfg[] = {
     32     /* TLV len */   31,
     33     /* B0 */        NCI_PARAM_ID_EMVCO_ENABLE,
     34     /* B1 */        1,
     35     /* B2 */        1,     /* (1 = enable emvco mode, 0 = disable emvco mode) Default = 0.*/
     36     /* B3 */        NCI_PARAM_ID_CONTINUE_MODE, /* NFCC will restart discovery after deactivated */
     37     /* B4 */        1,
     38     /* B5 */        1,     /* (1 = enable, 0 = disable) Default = 0.*/
     39     /* B6 */        NCI_PARAM_ID_RFU_CONFIG,
     40     /* B7 */        0x14,
     41     /* B8 */        0x00,
     42     /* B9 */        0x00,
     43     /* B10*/        0x00,
     44     /* B11*/        0x00,
     45     /* B12*/        0x0E,
     46     /* B13*/        0xE8,
     47     /* B14*/        0xF0,
     48     /* B15*/        0x55,
     49     /* B16*/        0x00,
     50     /* B17*/        0x0F, /* CE3 SO delay in sec */
     51     /* B18*/        0x00,
     52     /* B19*/        0x00,
     53     /* B20*/        0x00,
     54     /* B21*/        0x00,
     55     /* B22*/        0x00,
     56     /* B23*/        0x00,
     57     /* B24*/        0x00,
     58     /* B25*/        0x00,
     59     /* B26*/        0x00,
     60     /* B27*/        0x00,
     61     /* B28*/        NCI_PARAM_ID_ACT_ORDER, /* polling sequence */
     62     /* B29*/        1,
     63     /* B30*/        1,     /* (1 = active mode polling before passive, 0 = passive polling first) Default = 0.*/
     64 };
     65 
     66 UINT8 *p_nfc_hal_dm_start_up_cfg = (UINT8 *) nfc_hal_start_up_cfg;
     67 
     68 /* the VSCs at start up:
     69  * The VSCs are specified in TLV format similar to nfa_start_up_cfg[]
     70  * first byte is the TLV total len.
     71  * B0 is the first T; i.e. the opcode for the VSC
     72  * B1 is the len of the VSC parameters/payload
     73  * */
     74 UINT8 nfc_hal_dm_start_up_vsc_cfg[] = {
     75     /* TLV len */   5,
     76     /* B0 */        NCI_MTS_CMD|NCI_GID_PROP,
     77     /* B1 */        NCI_MSG_FRAME_LOG,
     78     /* B2 */        2,
     79     /* B3 */        0,  /* 1 to enable RF frames */
     80     /* B4 */        1   /* 1 to enable SWP frames */
     81 };
     82 
     83 UINT8 *p_nfc_hal_dm_start_up_vsc_cfg = NULL;
     84 
     85 /* the SetConfig at HAL_NfcPreDiscover. This is done once after HAL_NfcOpen */
     86 UINT8 nfc_hal_pre_discover_cfg[] = {
     87     /* TLV len */   0x0A,
     88     /* B0 */        NCI_PARAM_ID_SWPCFG,
     89     /* B1 */        0x08,
     90     /* B2 */        0x01,
     91     /* B3 */        0x08,
     92     /* B4 */        0x00,
     93     /* B5 */        0x04,
     94     /* B6 */        0x80,
     95     /* B7 */        0xC3,
     96     /* B8 */        0xC9,
     97     /* B9 */        0x01
     98 };
     99 
    100 UINT8 *p_nfc_hal_pre_discover_cfg = NULL;
    101 
    102 /* LPTD parameters (LowPowerTagDetection)
    103  * This is typical values for 20791B2
    104  * The timing and threshold parameters used for a customer handset/hardware may vary
    105  * depending on antenna and should be verified during a customer testing phase.
    106  * the data fields without comments are too complicated. Please see ""
    107  * */
    108 const UINT8 nfc_hal_dm_lptd_cfg[] =
    109 {
    110     21,             /* total TLV length excluding itself */
    111     NCI_PARAM_ID_TAGSNIFF_CFG,  /* type */
    112     19,             /* length */
    113     0x01,           /* B0 enable: 0/disable, 1/enable*/
    114     0x02,           /* B1 poll count: number of full power poll before starting lptd poll */
    115     0xFF,           /* B2 sniff count lsb: number of lptd poll before switching to full power poll */
    116     0xFF,           /* B3 sniff count msb */
    117     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. */
    118     0x40,           /* B5 delay lsb: delay (us) to sampling power */
    119     0x00,           /* B6 delay msb */
    120     0x40,           /* B7 carrier threshold lsb */
    121     0x00,           /* B8 carrier threshold msb */
    122     0x80,           /* B9 mode: Bitwise variable used to enable various algorithm modes.*/
    123     0x80,           /* B10 0-offset lsb */
    124     0x00,           /* B11 0-offset msb */
    125     0x10,           /* B12 field sense time lsb */
    126     0x00,           /* B13 field sense time msb */
    127     0x00,           /* B14 false detect threshold lsb: 0x00 to disable LPTD NTF. The number of false tag detections to resport LPTD NTF. */
    128     0x00,           /* B15 false detect threshold msb. A false tag detect - full poll results in no tag being detected.*/
    129     0x75,           /* B16 mode1; Bitwise variable used to enable various algorithm modes. */
    130     0x0D,           /* B17 lptd ant cfg rx */
    131     0x30,           /* B18 lptd rdr cfg ve */
    132 };
    133 
    134 UINT8 *p_nfc_hal_dm_lptd_cfg = (UINT8 *) &nfc_hal_dm_lptd_cfg[0];
    135 
    136 /*
    137 ** NFCC has a table which has 9 XTAL frequencies: 9.6, 13, 16.2,  19.2, 24, 26, 38.4, 52 and 37.4 in MHz.
    138 ** For these 9 xtal frequencies, host doesn't need to configure PLL325.
    139 ** For 43341, host doesn't need to configure it at all.
    140 */
    141 UINT8 *p_nfc_hal_dm_pll_325_cfg = NULL;
    142 
    143 /*
    144 ** Proprietary pre-set is required, if not NULL.
    145 */
    146 tNFC_HAL_DM_PRE_SET_MEM *p_nfc_hal_dm_pre_set_mem = NULL;
    147 
    148 tNFC_HAL_CFG nfc_hal_cfg =
    149 {
    150     FALSE,                                  /* set nfc_hal_prm_nvm_required to TRUE, if the platform wants to abort PRM process without NVM */
    151     (UINT16) NFC_HAL_NFCC_ENABLE_TIMEOUT,   /* max time to wait for RESET NTF after setting REG_PU to high
    152                                             ** If NFCC doesn't have NVM or cannot load patch from NVM without Xtal setting
    153                                             ** then set it to short to optimize bootup time because NFCC cannot send RESET NTF.
    154                                             ** Otherwise, it depends on NVM type and size of patchram.
    155                                             */
    156     (UINT16) NFC_HAL_NFCC_ENABLE_TIMEOUT    /* max time to wait for RESET NTF after setting Xtal frequency
    157                                             ** It depends on NVM type and size of patchram.
    158                                             */
    159 #if (defined(NFC_HAL_HCI_INCLUDED) && (NFC_HAL_HCI_INCLUDED == TRUE))
    160     ,
    161     TRUE,                                   /* set nfc_hal_first_boot to TRUE, if platform enables NFC for the first time after bootup */
    162     (HAL_NFC_HCI_UICC0_HOST | HAL_NFC_HCI_UICC1_HOST | HAL_NFC_HCI_UICC2_HOST)  /* Set bit(s) for supported UICC(s) */
    163 #endif
    164 };
    165 
    166 tNFC_HAL_CFG *p_nfc_hal_cfg= (tNFC_HAL_CFG *) &nfc_hal_cfg;
    167 
    168 const UINT8 nfc_hal_dm_xtal_params_cfg [] =
    169 {
    170     8,             /* length */
    171     0x00,           /* B0 Rfpll_cfg_pll_xtal_div_2                  */
    172     0x00,           /* B1 Rfpll_cfg_pll_vcocal1_0_cal_ref_timeout   */
    173     0x00,           /* B2 Rfpll_cfg_pll_vcocal2_cal_count           */
    174     0x00,           /* B3 Rfpll_cfg_pll_vcocal3_cal_count           */
    175     0x00,           /* B4 Rfpll_cfg_pll_dsm_b_msb_wild_base         */
    176     0x00,           /* B5 Rfpll_cfg_pll_dsm_b_lsb_3_wild_base_3     */
    177     0x00,           /* B6 Rfpll_cfg_pll_dsm_b_lsb_2_wild_base_2     */
    178     0x00            /* B7 Rfpll_cfg_pll_dsm_b_lsb_1_wild_base_1     */
    179 };
    180 
    181 /* By default, the XTAL command does not need these extra params. */
    182 UINT8 *p_nfc_hal_dm_xtal_params_cfg = NULL;
    183