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