blob: 987375c4a93d81b5d87c25088f825b6a202b894b [file] [log] [blame]
/******************************************************************************
*
* Copyright 2010-2018, 2021 NXP
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/*
* OSAL header files related to memory, debug, random, semaphore and mutex
* functions.
*/
#ifndef PHNFCCOMMON_H
#define PHNFCCOMMON_H
/*
************************* Include Files ****************************************
*/
#include <phDal4Nfc_messageQueueLib.h>
#include <phNfcCompId.h>
#include <phNfcStatus.h>
#include <phOsalNfc_Timer.h>
#include <pthread.h>
#include <semaphore.h>
#define FW_DLL_ROOT_DIR "/system/vendor/"
#define FW_DLL_EXTENSION ".so"
/* Actual FW library name*/
/* Restore Corrupted PLL Settings/etc */
#define PLATFORM_LIB_PATH \
FW_DLL_ROOT_DIR "libsn100u_fw_platform" FW_DLL_EXTENSION
/* Upgrade the public Key */
#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libsn100u_fw_pku" FW_DLL_EXTENSION
/* HAL Version number (Updated as per release) */
#define NXP_MW_VERSION_MAJ (0x03)
#define NXP_MW_VERSION_MIN (0x02)
#define GET_EEPROM_DATA (1U)
#define SET_EEPROM_DATA (2U)
#define BITWISE (1U)
#define BYTEWISE (2U)
#define GET_FW_DWNLD_FLAG (1U)
#define RESET_FW_DWNLD_FLAG (2U)
#define FLASH_UPPER_VERSION (1)
#define FLASH_DIFFERENT_VERSION (2)
#define FLASH_ALWAYS (3)
/*
*****************************************************************
*********** System clock source selection configuration ********
*****************************************************************
*/
#define CLK_SRC_UNDEF 0
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
#define CLK_SRC_PADDIRECT 3
#define CLK_CFG_XTAL 8
/*Extern crystal clock source*/
/* Use one of CLK_SRC_<value> */
#define NXP_SYS_CLK_SRC_SEL CLK_SRC_PLL
/*Direct clock*/
/*
*****************************************************************
*********** System clock frequency selection configuration ****************
* If Clk_Src is set to PLL, make sure to set the Clk_Freq also*
*****************************************************************
*/
#define CLK_FREQ_UNDEF 0
#define CLK_FREQ_13MHZ 1
#define CLK_FREQ_19_2MHZ 2
#define CLK_FREQ_24MHZ 3
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
#define CLK_FREQ_32MHZ 7
static const uint8_t PN557_SET_CONFIG_CMD_PLL_13MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0x08,
0x52, 0xA2, 0x02, 0x30, 0x01, 0xE1, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_13MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0x40,
0x42, 0xA3, 0x02, 0x88, 0x01, 0xE2, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_PLL_19_2MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0x88,
0x51, 0xE3, 0x02, 0xB8, 0x21, 0xE1, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_19_2MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0x88,
0x01, 0xE2, 0x02, 0xF0, 0x00, 0xA2, 0x01};
static const uint8_t PN557_SET_CONFIG_CMD_PLL_24MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0x28,
0xC2, 0xA2, 0x83, 0x88, 0x11, 0xE1, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_24MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0x38,
0x41, 0xD3, 0x02, 0x88, 0x01, 0xE2, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_PLL_26MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0x08,
0x52, 0xA2, 0x82, 0x30, 0x01, 0xE1, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_26MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0x20,
0x41, 0xA3, 0x01, 0x88, 0x01, 0xE2, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_PLL_32MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0xB8,
0x51, 0xA3, 0x82, 0x88, 0xF1, 0xF0, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_32MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0xB0,
0x01, 0xA3, 0x82, 0x88, 0x01, 0xE2, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_PLL_38_4MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x20, 0x08, 0x88,
0x51, 0xE3, 0x82, 0xB8, 0x21, 0xE1, 0x02};
static const uint8_t PN557_SET_CONFIG_CMD_DPLL_38_4MHZ[] = {
0x20, 0x02, 0x0C, 0x01, 0xA0, 0x26, 0x08, 0x88,
0x01, 0xE2, 0x82, 0xF0, 0x00, 0xA2, 0x01};
/* Set to one of CLK_FREQ_<value> */
#define NXP_SYS_CLK_FREQ_SEL CLK_FREQ_19_2MHZ
#define CLK_TO_CFG_DEF 1
#define CLK_TO_CFG_MAX 6
#define CLK_REQ_DELAY_MIN 1
#define CLK_REQ_DELAY_MAX 31
#define CLK_REQ_DELAY_DEF 22
#define CLK_REQ_DELAY_MASK 0x1F
#define CLK_REQ_DELAY_PLL_OFFSET 13
#define CLK_REQ_DELAY_XTAL_OFFSET 14
/*
* information to configure OSAL
*/
typedef struct phOsalNfc_Config {
uint8_t* pLogFile; /* Log File Name*/
uintptr_t dwCallbackThreadId; /* Client ID to which message is posted */
} phOsalNfc_Config_t, *pphOsalNfc_Config_t /* Pointer to #phOsalNfc_Config_t */;
/*
* Deferred call declaration.
* This type of API is called from ClientApplication (main thread) to notify
* specific callback.
*/
typedef void (*pphOsalNfc_DeferFuncPointer_t)(void*);
/*
* Deferred message specific info declaration.
*/
typedef struct phOsalNfc_DeferedCallInfo {
pphOsalNfc_DeferFuncPointer_t pDeferedCall; /* pointer to Deferred callback */
void* pParam; /* contains timer message specific details*/
} phOsalNfc_DeferedCallInfo_t;
/*
* States in which a OSAL timer exist.
*/
typedef enum {
eTimerIdle = 0, /* Indicates Initial state of timer */
eTimerRunning = 1, /* Indicate timer state when started */
eTimerStopped = 2 /* Indicates timer state when stopped */
} phOsalNfc_TimerStates_t; /* Variable representing State of timer */
/*
**Timer Handle structure containing details of a timer.
*/
typedef struct phOsalNfc_TimerHandle {
uint32_t TimerId; /* ID of the timer */
timer_t hTimerHandle; /* Handle of the timer */
/* Timer callback function to be invoked */
pphOsalNfc_TimerCallbck_t Application_callback;
void* pContext; /* Parameter to be passed to the callback function */
phOsalNfc_TimerStates_t eState; /* Timer states */
/* Osal Timer message posted on User Thread */
phLibNfc_Message_t tOsalMessage;
/* Deferred Call structure to Invoke Callback function */
phOsalNfc_DeferedCallInfo_t tDeferedCallInfo;
/* Variables for Structure Instance and Structure Ptr */
} phOsalNfc_TimerHandle_t, *pphOsalNfc_TimerHandle_t;
#endif /* PHOSALNFC_H */