Home | History | Annotate | Download | only in dnld
      1 /*
      2  * Copyright (C) 2010-2014 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  * Firmware Download Interface File
     19  */
     20 #ifndef PHDNLDNFC_H
     21 #define PHDNLDNFC_H
     22 
     23 #include <phNfcStatus.h>
     24 
     25 /*
     26  *
     27  * Callback for handling the received data/response from PN54X.
     28  * Parameters to be passed/registered to download context during respective
     29  * download function call:
     30  *      pContext - Upper layer context
     31  *      wStatus  - Status of the transaction
     32  *      pInfo    - Contains the Transaction Info
     33  */
     34 typedef void (*pphDnldNfc_RspCb_t)(void* pContext, NFCSTATUS wStatus,
     35                                    void* pInfo);
     36 
     37 #define PHLIBNFC_FWDNLD_SESSNOPEN (0x01U)   /* download session is Open */
     38 #define PHLIBNFC_FWDNLD_SESSNCLOSED (0x00U) /* download session is Closed */
     39 
     40 #define PHDNLDNFC_HWVER_MRA1_0 (0x01U) /* ChipVersion MRA1.0 */
     41 #define PHDNLDNFC_HWVER_MRA1_1 (0x02U) /* ChipVersion MRA1.1 */
     42 #define PHDNLDNFC_HWVER_MRA2_0 (0x03U) /* ChipVersion MRA2.0 */
     43 #define PHDNLDNFC_HWVER_MRA2_1 (0x04U) /* ChipVersion MRA2.1 */
     44 #define PHDNLDNFC_HWVER_MRA2_2 (0x05U) /* ChipVersion MRA2.2 */
     45 
     46 /* PN551 ChipVersion MRA1.0 */
     47 #define PHDNLDNFC_HWVER_PN551_MRA1_0 (0x08U)
     48 /* PN553-NCI1.0 ChipVersion MRA1.0 */
     49 #define PHDNLDNFC_HWVER_PN553_MRA1_0 (0x0BU)
     50 /* PN553 A0 -> 0x40 hardware version
     51    PN553 B0 -> 0x41
     52    PN80T A0 -> 0x50
     53    PN80T B0 -> 0x51 */
     54 #define PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED (0x40U)
     55 #define PHDNLDNFC_HWVER_PN557_MRA1_0 (0x01U)
     56 /*
     57  * Enum definition contains Download Life Cycle States
     58  */
     59 typedef enum phDnldNfc_LC {
     60   phDnldNfc_LCCreat = 11, /* Life Cycle Creation*/
     61   phDnldNfc_LCInit = 13,  /* Life Cycle Initializing */
     62   phDnldNfc_LCOper = 17,  /* Life Cycle Operational */
     63   phDnldNfc_LCTerm = 19   /* Life Cycle Termination */
     64 } phDnldNfc_LC_t;
     65 
     66 /*
     67  * Enum definition contains Clk Source Options for Force command request
     68  */
     69 typedef enum phDnldNfc_ClkSrc {
     70   phDnldNfc_ClkSrcXtal = 1U, /* Crystal */
     71   phDnldNfc_ClkSrcPLL = 2U,  /* PLL output */
     72   phDnldNfc_ClkSrcPad = 3U   /* Directly use clk on CLK_IN Pad */
     73 } phDnldNfc_ClkSrc_t;
     74 
     75 /*
     76  * Enum definition contains Clk Frequency value for Force command request
     77  */
     78 typedef enum phDnldNfc_ClkFreq {
     79   phDnldNfc_ClkFreq_13Mhz = 0U,   /* 13Mhz Clk Frequency */
     80   phDnldNfc_ClkFreq_19_2Mhz = 1U, /* 19.2Mhz Clk Frequency */
     81   phDnldNfc_ClkFreq_24Mhz = 2U,   /* 24Mhz Clk Frequency */
     82   phDnldNfc_ClkFreq_26Mhz = 3U,   /* 26Mhz Clk Frequency */
     83   phDnldNfc_ClkFreq_38_4Mhz = 4U, /* 38.4Mhz Clk Frequency */
     84   phDnldNfc_ClkFreq_52Mhz = 5U    /* 52Mhz Clk Frequency */
     85 } phDnldNfc_ClkFreq_t;
     86 
     87 /*
     88  * Struct contains buffer where user payload shall be stored
     89  */
     90 typedef struct phDnldNfc_Buff {
     91   uint8_t* pBuff; /*pointer to the buffer where user payload shall be stored*/
     92   uint16_t wLen;  /*Buffer length*/
     93 } phDnldNfc_Buff_t, *pphDnldNfc_Buff_t; /* pointer to #phDnldNfc_Buff_t */
     94 
     95 /*
     96 *********************** Function Prototype Declaration *************************
     97 */
     98 
     99 extern NFCSTATUS phDnldNfc_Reset(pphDnldNfc_RspCb_t pNotify, void* pContext);
    100 extern NFCSTATUS phDnldNfc_GetVersion(pphDnldNfc_Buff_t pVersionInfo,
    101                                       pphDnldNfc_RspCb_t pNotify,
    102                                       void* pContext);
    103 extern NFCSTATUS phDnldNfc_CheckIntegrity(uint8_t bChipVer,
    104                                           pphDnldNfc_Buff_t pCRCData,
    105                                           pphDnldNfc_RspCb_t pNotify,
    106                                           void* pContext);
    107 extern NFCSTATUS phDnldNfc_GetSessionState(pphDnldNfc_Buff_t pSession,
    108                                            pphDnldNfc_RspCb_t pNotify,
    109                                            void* pContext);
    110 extern NFCSTATUS phDnldNfc_Force(pphDnldNfc_Buff_t pInputs,
    111                                  pphDnldNfc_RspCb_t pNotify, void* pContext);
    112 extern NFCSTATUS phDnldNfc_Read(pphDnldNfc_Buff_t pData, uint32_t dwRdAddr,
    113                                 pphDnldNfc_RspCb_t pNotify, void* pContext);
    114 extern NFCSTATUS phDnldNfc_ReadLog(pphDnldNfc_Buff_t pData,
    115                                    pphDnldNfc_RspCb_t pNotify, void* pContext);
    116 extern NFCSTATUS phDnldNfc_Write(bool_t bRecoverSeq, pphDnldNfc_Buff_t pData,
    117                                  pphDnldNfc_RspCb_t pNotify, void* pContext);
    118 extern NFCSTATUS phDnldNfc_Log(pphDnldNfc_Buff_t pData,
    119                                pphDnldNfc_RspCb_t pNotify, void* pContext);
    120 extern void phDnldNfc_SetHwDevHandle(void);
    121 void phDnldNfc_ReSetHwDevHandle(void);
    122 extern NFCSTATUS phDnldNfc_ReadMem(void* pHwRef, pphDnldNfc_RspCb_t pNotify,
    123                                    void* pContext);
    124 extern NFCSTATUS phDnldNfc_RawReq(pphDnldNfc_Buff_t pFrameData,
    125                                   pphDnldNfc_Buff_t pRspData,
    126                                   pphDnldNfc_RspCb_t pNotify, void* pContext);
    127 extern NFCSTATUS phDnldNfc_InitImgInfo(void);
    128 extern NFCSTATUS phDnldNfc_LoadRecInfo(void);
    129 extern NFCSTATUS phDnldNfc_LoadPKInfo(void);
    130 extern void phDnldNfc_CloseFwLibHandle(void);
    131 extern NFCSTATUS phDnldNfc_LoadFW(uint8_t** pImgInfo, uint16_t* pImgInfoLen);
    132 extern NFCSTATUS phDnldNfc_LoadBinFW(uint8_t** pImgInfo, uint16_t* pImgInfoLen);
    133 extern NFCSTATUS phDnldNfc_LoadRecoveryFW(uint8_t** pImgInfo,
    134                                           uint16_t* pImgInfoLen);
    135 extern NFCSTATUS phDnldNfc_UnloadFW(void);
    136 #endif /* PHDNLDNFC_H */
    137