1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2009-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Internal NFC HAL API functions.
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_INT_API_H
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_INT_API_H
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Device Configuration definitions
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project****************************************************************************/
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PLL_325_SETCONFIG_PARAM_LEN     (2 + NCI_PARAM_LEN_PLL325_CFG_PARAM)
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Crystal Frequency Index (in 1 KHz) */
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_9600,
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_13000,
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_16200,
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_19200,
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_24000,
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_26000,
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_38400,
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_52000,
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_XTAL_INDEX_37400,
46f0ab6c7239c3580550eda490042eaa1805b98302Sherry Smith    NFC_HAL_XTAL_INDEX_MAX,
47f0ab6c7239c3580550eda490042eaa1805b98302Sherry Smith    NFC_HAL_XTAL_INDEX_SPECIAL = 0xFF
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFC_HAL_XTAL_INDEX;
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Broadcom specific device initialization before sending NCI reset */
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
555c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    UINT32                  brcm_hw_id;
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16                  xtal_freq;
575c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    UINT8                   xtal_index;
585c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen} tNFC_HAL_DEV_INIT_XTAL_CFG;
595c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
605c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFC_HAL_DEV_INIT_MAX_XTAL_CFG       5
615c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenentypedef struct
635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen{
645c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    UINT8                       num_xtal_cfg;
655c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen    tNFC_HAL_DEV_INIT_XTAL_CFG  xtal_cfg[NFC_HAL_DEV_INIT_MAX_XTAL_CFG];
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFC_HAL_DEV_INIT_CFG;
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Low Power Mode definitions
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_SNOOZE_MODE_NONE      NFC_SNOOZE_MODE_NONE       /* Snooze mode disabled    */
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_SNOOZE_MODE_UART      NFC_SNOOZE_MODE_UART       /* Snooze mode for UART    */
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_SNOOZE_MODE_SPI_I2C   NFC_SNOOZE_MODE_SPI_I2C    /* Snooze mode for SPI/I2C */
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_ACTIVE_LOW            NFC_SNOOZE_ACTIVE_LOW      /* high to low voltage is asserting */
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_LP_ACTIVE_HIGH           NFC_SNOOZE_ACTIVE_HIGH     /* low to high voltage is asserting */
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Patch RAM Constants
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* patch format type */
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_FORMAT_BIN  0x00
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_FORMAT_HCD  0x01
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_PRM_FORMAT_NCD  0x02
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFC_HAL_PRM_FORMAT;
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Patch RAM Callback for event notificaton
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Events for tNFC_HAL_PRM_CBACK */
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_CONTINUE_EVT,
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_COMPLETE_EVT,
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_ABORT_EVT,
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT,       /* Patch is invalid (bad version, project id, or chip)  */
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_ABORT_BAD_SIGNATURE_EVT,       /* Patch has invalid signature                          */
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_SPD_GET_PATCHFILE_HDR_EVT,     /* Secure Patch Download: request for patchfile header  */
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_SPD_GET_NEXT_PATCH,            /* Get first command of next patch in patchfile         */
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFC_HAL_PRM_ABORT_NO_NVM_EVT               /* nfc_hal_prm_nvm_required is TRUE and NVM is unavail  */
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFC_HAL_PRM_CBACK) (UINT8 event);
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFC_HAL_NCI_EVT;     /* MT + Opcode */
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFC_HAL_NCI_CBACK) (tNFC_HAL_NCI_EVT event, UINT16 data_len, UINT8 *p_data);
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" {
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcPreInitDone
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Notify that pre-initialization of NFCC is complete
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          void
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid HAL_NfcPreInitDone (tHAL_NFC_STATUS status);
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcReInit
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
1295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** Description      This function is called to restart initialization after REG_PU
1305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen**                  toggled because of failure to detect NVM type or download patchram.
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note             This function should be called only during the HAL init process
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          HAL_NFC_STATUS_OK if successfully initiated
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  HAL_NFC_STATUS_FAILED otherwise
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
1385c65c3a0f42e174e47fecd4e569606003217ff4eMartijn CoenentHAL_NFC_STATUS HAL_NfcReInit (void);
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcSetSnoozeMode
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Set snooze mode
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  snooze_mode
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      NFC_HAL_LP_SNOOZE_MODE_NONE - Snooze mode disabled
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      NFC_HAL_LP_SNOOZE_MODE_UART - Snooze mode for UART
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      NFC_HAL_LP_SNOOZE_MODE_SPI_I2C - Snooze mode for SPI/I2C
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  idle_threshold_dh/idle_threshold_nfcc
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      Idle Threshold Host in 100ms unit
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  nfc_wake_active_mode/dh_wake_active_mode
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      NFC_HAL_LP_ACTIVE_LOW - high to low voltage is asserting
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      NFC_HAL_LP_ACTIVE_HIGH - low to high voltage is asserting
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  p_snooze_cback
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                      Notify status of operation
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          tHAL_NFC_STATUS
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttHAL_NFC_STATUS HAL_NfcSetSnoozeMode (UINT8 snooze_mode,
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                      UINT8 idle_threshold_dh,
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                      UINT8 idle_threshold_nfcc,
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                      UINT8 nfc_wake_active_mode,
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                      UINT8 dh_wake_active_mode,
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                      tHAL_NFC_STATUS_CBACK *p_snooze_cback);
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcPrmDownloadStart
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Initiate patch download
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Params
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  format_type     patch format type
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  (NFC_HAL_PRM_FORMAT_BIN, NFC_HAL_PRM_FORMAT_HCD, or
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                   NFC_HAL_PRM_FORMAT_NCD)
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  dest_address    destination adderess (needed for BIN format only)
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  p_patchram_buf  pointer to patchram buffer. If NULL,
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  then app must call HAL_NfcPrmDownloadContinue when
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  NFC_HAL_PRM_CONTINUE_EVT is received, to send the next
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  segment of patchram
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  patchram_len    size of p_patchram_buf (if non-NULL)
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  patchram_delay  The delay after each patch.
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  If the given value is less than the size of the patchram,
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                  the size of patchram is used instead.
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  p_cback         callback for download status
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          TRUE if successful, otherwise FALSE
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN HAL_NfcPrmDownloadStart (tNFC_HAL_PRM_FORMAT format_type,
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                 UINT32              dest_address,
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                 UINT8               *p_patchram_buf,
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                 UINT32              patchram_len,
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                 UINT32              patchram_delay,
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                 tNFC_HAL_PRM_CBACK  *p_cback);
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcPrmDownloadContinue
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Send next segment of patchram to controller. Called when
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  NFC_HAL_PRM_CONTINUE_EVT is received.
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  Only needed if HAL_NfcPrmDownloadStart was called with
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  p_patchram_buf=NULL
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Params     p_patch_data    pointer to patch data
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  patch_data_len  patch data len
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          TRUE if successful, otherwise FALSE
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN HAL_NfcPrmDownloadContinue (UINT8 *p_patch_data,
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                    UINT16 patch_data_len);
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcPrmSetI2cPatch
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Specify patchfile for BCM20791B3 I2C fix. This fix
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  must be downloaded prior to initial patch download for I2C
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  transport
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Params     p_i2c_patchfile_buf: pointer to patch for i2c fix
236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  i2c_patchfile_len: length of patch
237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  prei2c_delay: the delay before downloading main patch
238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                                if 0 is given, NFC_HAL_PRM_POST_I2C_FIX_DELAY is used instead.
239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          Nothing
241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid HAL_NfcPrmSetI2cPatch (UINT8 *p_i2c_patchfile_buf,
245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                      UINT16 i2c_patchfile_len, UINT32 prei2c_delay);
246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcPrmSetSpdNciCmdPayloadSize
250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      Set Host-to-NFCC NCI message size for secure patch download
252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  This API must be called before calling HAL_NfcPrmDownloadStart.
254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  If the API is not called, then PRM will use the default
255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  message size.
256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  Typically, this API is only called for platforms that have
258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  message-size limitations in the transport/driver.
259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  Valid message size range: NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE to 255.
261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          HAL_NFC_STATUS_OK if successful
263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  HAL_NFC_STATUS_FAILED otherwise
264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttHAL_NFC_STATUS HAL_NfcPrmSetSpdNciCmdPayloadSize (UINT8 max_payload_size);
268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcSetMaxRfDataCredits
272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      This function sets the maximum RF data credit for HAL.
274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  If 0, use the value reported from NFCC.
275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          none
277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid HAL_NfcSetMaxRfDataCredits (UINT8 max_credits);
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         HAL_NfcSetTraceLevel
284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      This function sets the trace level for HAL.  If called with
286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  a value of 0xFF, it simply returns the current trace level.
287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          The new or current trace level
289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUINT8 HAL_NfcSetTraceLevel (UINT8 new_level);
292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFC_HAL_INT_API_H */
299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
300