| /****************************************************************************** |
| * |
| * Copyright (C) 2018 NXP Semiconductors |
| * |
| * 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. |
| * |
| ******************************************************************************/ |
| #ifndef ANDROID_HARDWARE_HAL_NXPESE_V1_0_H |
| #define ANDROID_HARDWARE_HAL_NXPESE_V1_0_H |
| |
| #define ESE_NXPNFC_HARDWARE_MODULE_ID "ese_nxp.pn54x" |
| #define MAX_IOCTL_TRANSCEIVE_CMD_LEN 256 |
| #define MAX_IOCTL_TRANSCEIVE_RESP_LEN 256 |
| #define MAX_ATR_INFO_LEN 128 |
| enum { |
| HAL_ESE_IOCTL_P61_IDLE_MODE = 0, |
| HAL_ESE_IOCTL_P61_WIRED_MODE, |
| HAL_ESE_IOCTL_P61_PWR_MODE, |
| HAL_ESE_IOCTL_P61_DISABLE_MODE, |
| HAL_ESE_IOCTL_P61_ENABLE_MODE, |
| HAL_ESE_IOCTL_SET_BOOT_MODE, |
| HAL_ESE_IOCTL_GET_CONFIG_INFO, |
| HAL_ESE_IOCTL_CHECK_FLASH_REQ, |
| HAL_ESE_IOCTL_FW_DWNLD, |
| HAL_ESE_IOCTL_FW_MW_VER_CHECK, |
| HAL_ESE_IOCTL_DISABLE_HAL_LOG, |
| HAL_ESE_IOCTL_NXP_TRANSCEIVE, |
| HAL_ESE_IOCTL_P61_GET_ACCESS, |
| HAL_ESE_IOCTL_P61_REL_ACCESS, |
| HAL_ESE_IOCTL_ESE_CHIP_RST, |
| HAL_ESE_IOCTL_REL_SVDD_WAIT, |
| HAL_ESE_IOCTL_SET_JCP_DWNLD_ENABLE, |
| HAL_ESE_IOCTL_SET_JCP_DWNLD_DISABLE, |
| HAL_ESE_IOCTL_SET_ESE_SERVICE_PID, |
| HAL_ESE_IOCTL_REL_DWP_WAIT, |
| HAL_ESE_IOCTL_GET_FEATURE_LIST, |
| HAL_ESE_IOCTL_RF_STATUS_UPDATE |
| }; |
| |
| enum { |
| HAL_NFC_IOCTL_P61_IDLE_MODE = 0, |
| HAL_NFC_IOCTL_P61_WIRED_MODE, |
| HAL_NFC_IOCTL_P61_PWR_MODE, |
| HAL_NFC_IOCTL_P61_DISABLE_MODE, |
| HAL_NFC_IOCTL_P61_ENABLE_MODE, |
| HAL_NFC_IOCTL_SET_BOOT_MODE, |
| HAL_NFC_IOCTL_GET_CONFIG_INFO, |
| HAL_NFC_IOCTL_CHECK_FLASH_REQ, |
| HAL_NFC_IOCTL_FW_DWNLD, |
| HAL_NFC_IOCTL_FW_MW_VER_CHECK, |
| HAL_NFC_IOCTL_DISABLE_HAL_LOG, |
| HAL_NFC_IOCTL_NCI_TRANSCEIVE, |
| HAL_NFC_IOCTL_P61_GET_ACCESS, |
| HAL_NFC_IOCTL_P61_REL_ACCESS, |
| HAL_NFC_IOCTL_ESE_CHIP_RST, |
| HAL_NFC_IOCTL_REL_SVDD_WAIT, |
| HAL_NFC_IOCTL_SET_JCP_DWNLD_ENABLE, |
| HAL_NFC_IOCTL_SET_JCP_DWNLD_DISABLE, |
| HAL_NFC_IOCTL_SET_NFC_SERVICE_PID, |
| HAL_NFC_IOCTL_REL_DWP_WAIT, |
| HAL_NFC_IOCTL_GET_FEATURE_LIST, |
| HAL_NFC_IOCTL_SPI_DWP_SYNC, /*21*/ |
| HAL_NFC_IOCTL_RF_STATUS_UPDATE, |
| HAL_NFC_SET_SPM_PWR, |
| HAL_NFC_SET_POWER_SCHEME, |
| HAL_NFC_GET_SPM_STATUS, |
| HAL_NFC_GET_ESE_ACCESS, |
| HAL_NFC_SET_DWNLD_STATUS, |
| HAL_NFC_INHIBIT_PWR_CNTRL |
| }; |
| /* |
| * Data structures provided below are used of Hal Ioctl calls |
| */ |
| /* |
| * ese_nxp_ExtnCmd_t shall contain data for commands used for transceive command |
| * in ioctl |
| */ |
| typedef struct { |
| uint16_t cmd_len; |
| uint8_t p_cmd[MAX_IOCTL_TRANSCEIVE_CMD_LEN]; |
| } ese_nxp_ExtnCmd_t; |
| |
| /* |
| * ese_nxp_ExtnRsp_t shall contain response for command sent in transceive |
| * command |
| */ |
| typedef struct { |
| uint16_t rsp_len; |
| uint8_t p_rsp[MAX_IOCTL_TRANSCEIVE_RESP_LEN]; |
| } ese_nxp_ExtnRsp_t; |
| /* |
| * InputData_t :ioctl has multiple subcommands |
| * Each command has corresponding input data which needs to be populated in this |
| */ |
| typedef union { |
| uint16_t bootMode; |
| uint8_t halType; |
| ese_nxp_ExtnCmd_t nxpCmd; |
| uint32_t timeoutMilliSec; |
| long eseServicePid; |
| } eseInputData_t; |
| /* |
| * ese_nxp_ExtnInputData_t :Apart from InputData_t, there are context data |
| * which is required during callback from stub to proxy. |
| * To avoid additional copy of data while propagating from libese to Adaptation |
| * and Esestub to nxphal, common structure is used. As a sideeffect, context |
| * data is exposed to libese (Not encapsulated). |
| */ |
| typedef struct { |
| /*context to be used/updated only by users of proxy & stub of Ese.hal |
| * i.e, EseAdaptation & hardware/interface/Ese. |
| */ |
| void* context; |
| eseInputData_t data; |
| uint8_t data_source; |
| long level; |
| } ese_nxp_ExtnInputData_t; |
| |
| /* |
| * outputData_t :ioctl has multiple commands/responses |
| * This contains the output types for each ioctl. |
| */ |
| typedef union { |
| uint32_t status; |
| ese_nxp_ExtnRsp_t nxpRsp; |
| uint8_t nxpNciAtrInfo[MAX_ATR_INFO_LEN]; |
| uint32_t p61CurrentState; |
| uint16_t fwUpdateInf; |
| uint16_t fwDwnldStatus; |
| uint16_t fwMwVerStatus; |
| uint8_t chipType; |
| } eseOutputData_t; |
| |
| /* |
| * ese_nxp_ExtnOutputData_t :Apart from outputData_t, there are other |
| * information which is required during callback from stub to proxy. For ex |
| * (context, result of the operation , type of ioctl which was completed). To |
| * avoid additional copy of data while propagating from libese to Adaptation and |
| * Esestub to nxphal, common structure is used. As a sideeffect, these data is |
| * exposed(Not encapsulated). |
| */ |
| typedef struct { |
| /*ioctlType, result & context to be used/updated only by users of |
| * proxy & stub of Ese.hal. |
| * i.e, EseAdaptation & hardware/interface/Ese |
| * These fields shall not be used by libese or halimplementation*/ |
| uint64_t ioctlType; |
| uint32_t result; |
| void* context; |
| eseOutputData_t data; |
| } ese_nxp_ExtnOutputData_t; |
| |
| /* |
| * ese_nxp_IoctlInOutData_t :data structure for input & output |
| * to be sent for ioctl command. input is populated by client/proxy side |
| * output is provided from server/stub to client/proxy |
| */ |
| typedef struct { |
| ese_nxp_ExtnInputData_t inp; |
| ese_nxp_ExtnOutputData_t out; |
| } ese_nxp_IoctlInOutData_t; |
| |
| #endif // ANDROID_HARDWARE_HAL_NXPESE_V1_0_H |