Home | History | Annotate | Download | only in src
      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 
    153 extern
    154 NFCSTATUS
    155 phHciNfc_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 
    176 extern
    177 NFCSTATUS
    178 phHciNfc_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 
    201 extern
    202 NFCSTATUS
    203 phHciNfc_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 
    232 extern
    233 NFCSTATUS
    234 phHciNfc_DevMgmt_Test(
    235                     void                            *psContext,
    236                     void                            *pHwRef,
    237                     uint8_t                         test_type,
    238                     phNfc_sData_t                   *test_param
    239                  );
    240 
    241 extern
    242 NFCSTATUS
    243 phHciNfc_DevMgmt_Get_Info (
    244                             phHciNfc_sContext_t *psHciContext,
    245                             void                *pHwRef,
    246                             uint16_t            address,
    247                             uint8_t             *p_val
    248                 );
    249 
    250 extern
    251 NFCSTATUS
    252 phHciNfc_DevMgmt_Configure (
    253                             phHciNfc_sContext_t *psHciContext,
    254                             void                *pHwRef,
    255                             uint16_t            address,
    256                             uint8_t             value
    257                 );
    258 
    259 extern
    260 NFCSTATUS
    261 phHciNfc_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 */
    284 extern
    285 NFCSTATUS
    286 phHciNfc_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  */
    311 extern
    312 NFCSTATUS
    313 phHciNfc_DevMgmt_Release(
    314                                 phHciNfc_sContext_t     *psHciContext,
    315                                 void                    *pHwRef
    316                      );
    317 
    318 extern
    319 NFCSTATUS
    320 phHciNfc_DevMgmt_Update_Sequence(
    321                                 phHciNfc_sContext_t     *psHciContext,
    322                                 phHciNfc_eSeqType_t     DevMgmt_seq
    323                              );
    324 
    325 extern
    326 NFCSTATUS
    327 phHciNfc_DevMgmt_Set_Test_Result(
    328                                 phHciNfc_sContext_t        *psHciContext,
    329                                 uint8_t                    test_status
    330                             )
    331 ;
    332 
    333 #endif
    334 
    335