blob: 6c7ef594fc38d122cf862eae05e210277f7bf8d4 [file] [log] [blame]
/* Copyright 2020 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
/** @file se05x_Personalization_I2C.c
*
* This file solves purpose for
*/
/* ************************************************************************** */
/* Includes */
/* ************************************************************************** */
#include "se05x_Personalization.h"
#include <se05x_perso_api.h>
#include <se05x_perso_cnst.h>
#include <nxEnsure.h>
#include <nxLog_App.h>
/* ************************************************************************** */
/* Local Defines */
/* ************************************************************************** */
#define I2C_SET_API(NAME, DEF_NAME) \
smStatus_t ex_perso_I2C_##NAME(pSe05xSession_t session_ctx) \
{ \
smStatus_t status; \
uint8_t i2c_params = 0; \
status = Se05x_API_Perso_Get_I2C_PARAMS(session_ctx, &i2c_params); \
ENSURE_OR_GO_CLEANUP(status == SM_OK); \
i2c_params |= SE05X_PERSO_I2C_PARAMS_SET_##DEF_NAME; \
status = Se05x_API_Perso_Set_I2C_PARAMS(session_ctx, i2c_params); \
ENSURE_OR_GO_CLEANUP(status == SM_OK); \
cleanup: \
return status; \
}
#define I2C_MSK_API(NAME, DEF_NAME) \
smStatus_t ex_perso_I2C_##NAME(pSe05xSession_t session_ctx) \
{ \
smStatus_t status; \
uint8_t i2c_params = 0; \
status = Se05x_API_Perso_Get_I2C_PARAMS(session_ctx, &i2c_params); \
ENSURE_OR_GO_CLEANUP(status == SM_OK); \
i2c_params &= SE05X_PERSO_I2C_PARAMS_MSK_##DEF_NAME; \
status = Se05x_API_Perso_Set_I2C_PARAMS(session_ctx, i2c_params); \
ENSURE_OR_GO_CLEANUP(status == SM_OK); \
cleanup: \
return status; \
}
/* ************************************************************************** */
/* Structures and Typedefs */
/* ************************************************************************** */
/* ************************************************************************** */
/* Global Variables */
/* ************************************************************************** */
/* ************************************************************************** */
/* Static function declarations */
/* ************************************************************************** */
/* ************************************************************************** */
/* Public Functions */
/* ************************************************************************** */
/* ************************************************************************** */
/* Private Functions */
/* ************************************************************************** */
#if 0
smStatus_t ex_perso_I2CEnableCLockStretching2(pSe05xSession_t session_ctx) {
smStatus_t status;
uint8_t i2c_params = 0;
status = Se05x_API_Perso_Get_I2C_PARAMS(session_ctx, &i2c_params);
ENSURE_OR_GO_CLEANUP(status == SM_OK);
i2c_params |= (SE05X_PERSO_I2C_PARAMS_SET_SLAVE_CLK_STRCH);
status = Se05x_API_Perso_Set_I2C_PARAMS(session_ctx, i2c_params);
ENSURE_OR_GO_CLEANUP(status == SM_OK);
cleanup:
return status;
}
smStatus_t ex_perso_I2CDisableClockStretching2(pSe05xSession_t session_ctx) {
smStatus_t status;
uint8_t i2c_params = 0;
status = Se05x_API_Perso_Get_I2C_PARAMS(session_ctx, &i2c_params);
ENSURE_OR_GO_CLEANUP(status == SM_OK);
i2c_params &= SE05X_PERSO_I2C_PARAMS_MSK_SLAVE_CLK_STRCH;
status = Se05x_API_Perso_Set_I2C_PARAMS(session_ctx, i2c_params);
ENSURE_OR_GO_CLEANUP(status == SM_OK);
cleanup:
return status;
}
#endif
I2C_SET_API(EnableCLockStretching, CLK_STRCH_ENABLED)
I2C_MSK_API(DisableClockStretching, CLK_STRCH_DISABLED)
I2C_SET_API(ProtocolGP, I2C_GP)
I2C_MSK_API(ProtocolUM, I2C_UM)
I2C_SET_API(EnablePowerSave, PWR_SAVE_ENABLED)
I2C_MSK_API(DisablePowerSave, PWR_SAVE_DISABLED)
I2C_SET_API(SemiBlocking, I2C_SEMI_BLOCKING)
I2C_MSK_API(NonBlocking, I2C_NON_BLOCKING)
I2C_MSK_API(ProtocolAutoDetect, PROTO_DETECT_AUTO)
I2C_SET_API(ProtocolManual, PROTO_SEL_MANUAL)