11ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
21ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * Copyright (C) 2010-2014 NXP Semiconductors
31ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *
41ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * Licensed under the Apache License, Version 2.0 (the "License");
51ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * you may not use this file except in compliance with the License.
61ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * You may obtain a copy of the License at
71ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *
81ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *      http://www.apache.org/licenses/LICENSE-2.0
91ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *
101ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * Unless required by applicable law or agreed to in writing, software
111ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * distributed under the License is distributed on an "AS IS" BASIS,
121ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * See the License for the specific language governing permissions and
141ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * limitations under the License.
151ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
161ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
171ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
181ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *  OSAL header files related to memory, debug, random, semaphore and mutex functions.
191ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
201ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
211ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#ifndef PHNFCCOMMON_H
221ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define PHNFCCOMMON_H
231ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
241ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
251ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao************************* Include Files ****************************************
261ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao*/
271ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
281ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <phNfcStatus.h>
291ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <semaphore.h>
301ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <phOsalNfc_Timer.h>
311ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <pthread.h>
321ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <phDal4Nfc_messageQueueLib.h>
331ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#include <phNfcCompId.h>
341ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
351ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
361ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#   define FW_DLL_ROOT_DIR "/system/vendor/firmware/"
371ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#   define FW_DLL_EXTENSION ".so"
381ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
391ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#if(NFC_NXP_CHIP_TYPE != PN547C2)
401ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
411ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Actual FW library name*/
421ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define FW_LIB_PATH       FW_DLL_ROOT_DIR "libpn548ad_fw"          FW_DLL_EXTENSION
431ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Restore Currupted PLL Setttings/etc */
441ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw_platform" FW_DLL_EXTENSION
451ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Upgrade the public Key */
461ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define PKU_LIB_PATH      FW_DLL_ROOT_DIR "libpn548ad_fw_pku"      FW_DLL_EXTENSION
471ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#else
481ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Actual FW library name*/
491ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define FW_LIB_PATH       FW_DLL_ROOT_DIR "libpn547_fw"          FW_DLL_EXTENSION
501ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Restore Currupted PLL Setttings/etc */
511ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw_platform" FW_DLL_EXTENSION
521ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* Upgrade the public Key */
531ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define PKU_LIB_PATH      FW_DLL_ROOT_DIR "libpn547_fw_pku"      FW_DLL_EXTENSION
541ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#endif
551ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
561ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/* HAL Version number (Updated as per release) */
571ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define NXP_MW_VERSION_MAJ  (1U)
581ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define NXP_MW_VERSION_MIN  (0U)
591ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
601ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
611ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *****************************************************************
621ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao ***********  System clock source selection configuration ********
631ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *****************************************************************
641ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
651ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
661ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_SRC_UNDEF      0
671ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_SRC_XTAL       1
681ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_SRC_PLL        2
691ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_SRC_PADDIRECT  3
701ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
711ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*Extern crystal clock source*/
721ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define NXP_SYS_CLK_SRC_SEL         CLK_SRC_PLL  /* Use one of CLK_SRC_<value> */
731ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*Direct clock*/
741ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
751ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
761ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *****************************************************************
771ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao ***********  System clock frequency selection configuration ****************
781ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * If Clk_Src is set to PLL, make sure to set the Clk_Freq also*
791ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *****************************************************************
801ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
811ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_UNDEF         0
821ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_13MHZ         1
831ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_19_2MHZ       2
841ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_24MHZ         3
851ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_26MHZ         4
861ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_38_4MHZ       5
871ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_FREQ_52MHZ         6
881ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
891ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define NXP_SYS_CLK_FREQ_SEL  CLK_FREQ_19_2MHZ /* Set to one of CLK_FREQ_<value> */
901ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
911ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_TO_CFG_DEF         1
921ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#define CLK_TO_CFG_MAX         26
931ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
941ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao *  information to configure OSAL
951ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
961ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liaotypedef struct phOsalNfc_Config
971ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao{
981ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    uint8_t *pLogFile; /* Log File Name*/
991ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    uintptr_t dwCallbackThreadId; /* Client ID to which message is posted */
1001ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao}phOsalNfc_Config_t, *pphOsalNfc_Config_t /* Pointer to #phOsalNfc_Config_t */;
1011ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1021ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1031ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
1041ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * Deferred call declaration.
1051ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * This type of API is called from ClientApplication (main thread) to notify
1061ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * specific callback.
1071ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
1081ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liaotypedef  void (*pphOsalNfc_DeferFuncPointer_t) (void*);
1091ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1101ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1111ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
1121ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * Deferred message specific info declaration.
1131ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
1141ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liaotypedef struct phOsalNfc_DeferedCallInfo
1151ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao{
1161ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao        pphOsalNfc_DeferFuncPointer_t   pDeferedCall;/* pointer to Deferred callback */
1171ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao        void                            *pParam;    /* contains timer message specific details*/
1181ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao}phOsalNfc_DeferedCallInfo_t;
1191ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1201ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1211ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
1221ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao * States in which a OSAL timer exist.
1231ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
1241ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liaotypedef enum
1251ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao{
1261ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    eTimerIdle = 0,         /* Indicates Initial state of timer */
1271ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    eTimerRunning = 1,      /* Indicate timer state when started */
1281ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    eTimerStopped = 2       /* Indicates timer state when stopped */
1291ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao}phOsalNfc_TimerStates_t;   /* Variable representing State of timer */
1301ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1311ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao/*
1321ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao **Timer Handle structure containing details of a timer.
1331ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao */
1341ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liaotypedef struct phOsalNfc_TimerHandle
1351ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao{
1361ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    uint32_t TimerId;                                   /* ID of the timer */
1371ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    timer_t hTimerHandle;                               /* Handle of the timer */
1381ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    pphOsalNfc_TimerCallbck_t   Application_callback;   /* Timer callback function to be invoked */
1391ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    void *pContext;                                     /* Parameter to be passed to the callback function */
1401ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    phOsalNfc_TimerStates_t eState;                     /* Timer states */
1411ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    phLibNfc_Message_t tOsalMessage;                    /* Osal Timer message posted on User Thread */
1421ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao    phOsalNfc_DeferedCallInfo_t tDeferedCallInfo;       /* Deferred Call structure to Invoke Callback function */
1431ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao}phOsalNfc_TimerHandle_t,*pphOsalNfc_TimerHandle_t;     /* Variables for Structure Instance and Structure Ptr */
1441ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao
1451ab8a755853d5118d6a504311d079bd5aa21a964Jizhou Liao#endif /*  PHOSALNFC_H  */
146