1/* 2 * Copyright (C) 2010 NXP Semiconductors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/*! 18* =========================================================================== * 19* * 20* * 21* \file phHciNfc_DevMgmt.h * 22* \brief HCI Header for the PN544 Device Management Gate. * 23* * 24* * 25* Project: NFC-FRI-1.1 * 26* * 27* $Date: Tue Jun 8 09:30:49 2010 $ * 28* $Author: ing04880 $ * 29* $Revision: 1.15 $ * 30* $Aliases: NFC_FRI1.1_WK1023_R35_1 $ 31* * 32* =========================================================================== * 33*/ 34 35 36#ifndef PHHCINFC_DEVMGMT_H 37#define PHHCINFC_DEVMGMT_H 38 39/*@}*/ 40 41 42/** 43 * \name HCI 44 * 45 * File: \ref phHciNfc_DevMgmt.h 46 * 47 */ 48/*@{*/ 49#define PHHCINFC_DEVICE_MGMT_FILEREVISION "$Revision: 1.15 $" /**< \ingroup grp_file_attributes */ 50#define PHHCINFC_DEVICE_MGMT_FILEALIASES "$Aliases: NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */ 51/*@}*/ 52 53/* 54***************************** Header File Inclusion **************************** 55*/ 56 57#include <phHciNfc_Generic.h> 58 59/* 60****************************** Macro Definitions ******************************* 61*/ 62 63#define DEVICE_PWR_STATUS_INDEX 0x01U 64#define DEVICE_INFO_EVT_INDEX 0x02U 65#define DEVICE_INFO_EEPROM_INDEX 0x03U 66 67#define NXP_DOWNLOAD_GPIO 0x04U 68 69/* GPIO PIN Mask Macro */ 70#define NXP_NFC_GPIO_MASK(n) ((uint8_t)(1U << (n))) 71 72/* Address Definitions for GPIO Register Configuration */ 73#define NFC_ADDRESS_GPIO_PDIR 0xF821U 74#define NFC_ADDRESS_GPIO_PEN 0xF829U 75 76 77/* Address Definitions for SWP Configuration */ 78#define NFC_ADDRESS_SWP_BITRATE 0x9C01U 79#define NFC_ADDRESS_SWP_PWR_REQ 0x9EB4U 80 81/* Address Definitions for UICC Host Configuration */ 82#define NFC_ADDRESS_UICC_RD_A_ACCESS 0x9ED9U 83#define NFC_ADDRESS_UICC_RD_B_ACCESS 0x9EDAU 84#define NFC_ADDRESS_UICC_CE_A_ACCESS 0x9EDBU 85#define NFC_ADDRESS_UICC_CE_B_ACCESS 0x9EDCU 86#define NFC_ADDRESS_UICC_CE_BP_ACCESS 0x9EDDU 87#define NFC_ADDRESS_UICC_CE_F_ACCESS 0x9EDEU 88 89/* Address Definitions for SE Configuration */ 90 91/* Address Definitions for HW Configuration */ 92#define NFC_ADDRESS_CLK_REQ 0x9E71U 93#define NFC_ADDRESS_CLK_INPUT 0x9809U 94#define NFC_ADDRESS_HW_CONF 0x9810U 95#define NFC_ADDRESS_PWR_STATUS 0x9EAAU 96 97/* Address Definitions for RF Configuration */ 98 99 100/* Address Definitions for Interframe Character Timeout Configuration */ 101#define NFC_ADDRESS_IFC_TO_RX_H 0x9C0CU 102#define NFC_ADDRESS_IFC_TO_RX_L 0x9C0DU 103#define NFC_ADDRESS_IFC_TO_TX_H 0x9C12U 104#define NFC_ADDRESS_IFC_TO_TX_L 0x9C13U 105 106 107/* Address Definitions for LLC Configuration */ 108#define NFC_ADDRESS_LLC_ACK_TO_H 0x9C27U 109#define NFC_ADDRESS_LLC_ACK_TO_L 0x9C28U 110#define NFC_ADDRESS_LLC_GRD_TO_H 0x9C31U 111#define NFC_ADDRESS_LLC_GRD_TO_L 0x9C32U 112 113#define NFC_ADDRESS_ACT_GRD_TO 0x9916U 114 115/* The Address Definition for the TYPE B Tuning */ 116 117#ifdef SW_TYPE_RF_TUNING_BF 118#define NFC_ADDRESS_ANAIRQ_CONF 0x9801U 119#define NFC_ADDRESS_PMOS_MOD 0x997AU 120#endif 121 122#define NFC_FELICA_RC_ADDR 0x9F9AU 123 124/* The Address Definition for the Enabling the EVT_HOT_PLUG */ 125#define NFC_ADDRESS_HOTPLUG_EVT 0x9FF0U 126 127 128/* 129******************** Enumeration and Structure Definition ********************** 130*/ 131 132 133 134/* 135*********************** Function Prototype Declaration ************************* 136*/ 137 138/************************ Function Prototype Declaration *************************/ 139 140/*! 141 * \brief Allocates the resources required for PN544 Device management gate. 142 * 143 * This function Allocates necessary resources as requiered by PN544 Device 144 * gate management 145 * 146 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 147 * 148 * \retval NFCSTATUS_SUCCESS Function execution is successful 149 * 150 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid 151 */ 152 153extern 154NFCSTATUS 155phHciNfc_DevMgmt_Init_Resources(phHciNfc_sContext_t *psHciContext); 156 157 158/** 159* \ingroup grp_hci_nfc 160* 161* The phHciNfc_DevMgmt_Get_PipeID function gives the pipe id of the PN544 Device 162* management gate 163* 164* \param[in] psHciContext psHciContext is the pointer to HCI Layer 165* context Structure. 166* \param[in] pHwRef pHwRef is the Information of 167* the Device Interface Link 168* \param[in] ppipe_id ppipe_id of the Device management Gate 169* 170* \retval NFCSTATUS_SUCCESS Function execution is successful. 171* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 172* could not be interpreted properly. 173* 174*/ 175 176extern 177NFCSTATUS 178phHciNfc_DevMgmt_Get_PipeID( 179 phHciNfc_sContext_t *psHciContext, 180 uint8_t *ppipe_id 181 ); 182 183/** 184 * \ingroup grp_hci_nfc 185 * 186 * The phHciNfc_DevMgmt_Initialise function creates and the opens the pipe 187 * PN544 Device Management Gate in the NFC Device 188 * 189 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 190 * context Structure. 191 * \param[in] pHwRef pHwRef is the Information of 192 * the Device Interface Link . 193 * 194 * \retval NFCSTATUS_PENDING Device Mgmt Gate Initialisation is pending. 195 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 196 * could not be interpreted properly. 197 * \retval Other errors Errors related to the other layers 198 * 199 */ 200 201extern 202NFCSTATUS 203phHciNfc_DevMgmt_Initialise( 204 phHciNfc_sContext_t *psHciContext, 205 void *pHwRef 206 ); 207 208/** 209 * \ingroup grp_hci_nfc 210 * 211 * The phHciNfc_DevMgmt_Test function performs the System Management Tests 212 * provided by the NFC Peripheral device. 213 * 214 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 215 * context Structure. 216 * \param[in] pHwRef pHwRef is the Information of 217 * the Device Interface Link . 218 * \param[in] test_type test_type is the type of the Self Test 219 * that needs to be performed on the device. 220 * \param[in] test_param test_param is the parameter for the Self Test 221 * that needs to be performed on the device. 222 * 223 * 224 * \retval NFCSTATUS_PENDING Self Test on the Device Management gate 225 * is pending. 226 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 227 * could not be interpreted properly. 228 * \retval Other errors Errors related to the other layers 229 * 230 */ 231 232extern 233NFCSTATUS 234phHciNfc_DevMgmt_Test( 235 void *psContext, 236 void *pHwRef, 237 uint8_t test_type, 238 phNfc_sData_t *test_param 239 ); 240 241extern 242NFCSTATUS 243phHciNfc_DevMgmt_Get_Info ( 244 phHciNfc_sContext_t *psHciContext, 245 void *pHwRef, 246 uint16_t address, 247 uint8_t *p_val 248 ); 249 250extern 251NFCSTATUS 252phHciNfc_DevMgmt_Configure ( 253 phHciNfc_sContext_t *psHciContext, 254 void *pHwRef, 255 uint16_t address, 256 uint8_t value 257 ); 258 259extern 260NFCSTATUS 261phHciNfc_DevMgmt_Get_Test_Result( 262 phHciNfc_sContext_t *psHciContext, 263 phNfc_sData_t *test_result 264 ); 265 266 267/** 268* \ingroup grp_hci_nfc 269* 270* \brief Allocates the resources required for PN544 Device 271* management gate 272* This function Allocates necessary resources as requiered by PN544 273* Device management gate 274* 275* \param[in] psHciContext psHciContext is the pointer to HCI Layer 276* \param[in] pipeID pipeID of the Device management Gate 277* \param[in] pPipeInfo Update the pipe Information of the Device 278* Management Gate. 279* 280* \retval NFCSTATUS_SUCCESS Function execution is successful 281* 282* \retval NFCSTATUS_INVALID_PARAMETER One or more of the given inputs are not valid 283*/ 284extern 285NFCSTATUS 286phHciNfc_DevMgmt_Update_PipeInfo( 287 phHciNfc_sContext_t *psHciContext, 288 uint8_t pipeID, 289 phHciNfc_Pipe_Info_t *pPipeInfo 290 ); 291 292/** 293 * \ingroup grp_hci_nfc 294 * 295 * The phHciNfc_DevMgmt_Release function closes the opened pipes between 296 * the Device Management Gate in the Host Controller Device 297 * and the NFC Device. 298 * 299 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 300 * context Structure. 301 * \param[in] pHwRef pHwRef is the Information of 302 * the Device Interface Link . 303 * 304 * \retval NFCSTATUS_PENDING Release of the Device Management gate 305 * resources are pending. 306 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 307 * could not be interpreted properly. 308 * \retval Other errors Errors related to the other layers 309 * 310 */ 311extern 312NFCSTATUS 313phHciNfc_DevMgmt_Release( 314 phHciNfc_sContext_t *psHciContext, 315 void *pHwRef 316 ); 317 318extern 319NFCSTATUS 320phHciNfc_DevMgmt_Update_Sequence( 321 phHciNfc_sContext_t *psHciContext, 322 phHciNfc_eSeqType_t DevMgmt_seq 323 ); 324 325extern 326NFCSTATUS 327phHciNfc_DevMgmt_Set_Test_Result( 328 phHciNfc_sContext_t *psHciContext, 329 uint8_t test_status 330 ) 331; 332 333#endif 334 335