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