/******************************************************************************
*
* Copyright 2018 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.
*
******************************************************************************/
/**
* \addtogroup SPI_Power_Management
*
* @{ */
#ifndef _PHNXPESE_SPM_H
#define _PHNXPESE_SPM_H
#include <phEseStatus.h>
#include <phNxpEseFeatures.h>
/*! SPI Power Manager (SPM) possible error codes */
typedef enum spm_power {
SPM_POWER_ENABLE = 0,
SPM_POWER_DISABLE, /*!< SPM power disable */
SPM_POWER_RESET, /*!< SPM Reset pwer */
SPM_POWER_PRIO_ENABLE, /*!< SPM prio mode enable */
SPM_POWER_PRIO_DISABLE /*!< SPM prio mode disable */
} spm_power_t;
typedef enum spm_state {
SPM_STATE_INVALID = 0x0000, /*!< Nfc i2c driver misbehaving */
SPM_STATE_IDLE = 0x0100, /*!< ESE is free to use */
SPM_STATE_WIRED = 0x0200, /*!< p61 is being accessed by DWP (NFCC)*/
SPM_STATE_SPI = 0x0400, /*!< ESE is being accessed by SPI */
SPM_STATE_DWNLD = 0x0800, /*!< NFCC fw download is in progress */
SPM_STATE_SPI_PRIO = 0x1000, /*!< Start of p61 access by SPI on priority*/
SPM_STATE_SPI_PRIO_END = 0x2000 /*!< End of p61 access by SPI on priority*/
#ifdef NXP_ESE_JCOP_DWNLD_PROTECTION
,
SPM_STATE_JCOP_DWNLD = 0x8000 /*!< P73 state JCOP Download*/
#endif
} spm_state_t;
ESESTATUS phNxpEse_SPM_Init(void* pDevHandle);
ESESTATUS phNxpEse_SPM_DeInit(void);
ESESTATUS phNxpEse_SPM_ConfigPwr(spm_power_t arg);
ESESTATUS phNxpEse_SPM_EnablePwr(void);
ESESTATUS phNxpEse_SPM_DisablePwr(void);
ESESTATUS phNxpEse_SPM_GetState(spm_state_t* current_state);
#ifdef NXP_ESE_JCOP_DWNLD_PROTECTION
ESESTATUS phNxpEse_SPM_SetState(long arg);
#endif
ESESTATUS phNxpEse_SPM_RelAccess(void);
ESESTATUS phNxpEse_SPM_SetPwrScheme(long arg);
ESESTATUS phNxpEse_SPM_DisablePwrControl(unsigned long arg);
#ifdef NXP_ESE_JCOP_DWNLD_PROTECTION
ESESTATUS phNxpEse_SPM_SetJcopDwnldState(long arg);
#endif
#endif /* _PHNXPESE_SPM_H */
/** @} */