/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright ( C ) 2017 - 2018 , Intel Corporation
*/
#ifndef __STRATIX10_SMC_H
#define __STRATIX10_SMC_H
#include <linux/arm-smccc.h>
#include <linux/bitops.h>
/**
* This file defines the Secure Monitor Call ( SMC ) message protocol used for
* service layer driver in normal world ( EL1 ) to communicate with secure
* monitor software in Secure Monitor Exception Level 3 ( EL3 ) .
*
* This file is shared with secure firmware ( FW ) which is out of kernel tree .
*
* An ARM SMC instruction takes a function identifier and up to 6 64 - bit
* register values as arguments , and can return up to 4 64 - bit register
* value . The operation of the secure monitor is determined by the parameter
* values passed in through registers .
*
* EL1 and EL3 communicates pointer as physical address rather than the
* virtual address .
*
* Functions specified by ARM SMC Calling convention :
*
* FAST call executes atomic operations , returns when the requested operation
* has completed .
* STD call starts a operation which can be preempted by a non - secure
* interrupt . The call can return before the requested operation has
* completed .
*
* a0 . . a7 is used as register names in the descriptions below , on arm32
* that translates to r0 . . r7 and on arm64 to w0 . . w7 .
*/
/**
* @ func_num : function ID
*/
#define INTEL_SIP_SMC_STD_CALL_VAL(func_num) \
ARM_SMCCC_CALL_VAL(ARM_SMCCC_STD_CALL, ARM_SMCCC_SMC_64, \
ARM_SMCCC_OWNER_SIP, (func_num))
#define INTEL_SIP_SMC_FAST_CALL_VAL(func_num) \
ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_64, \
ARM_SMCCC_OWNER_SIP, (func_num))
/**
* Return values in INTEL_SIP_SMC_ * call
*
* INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION :
* Secure monitor software doesn ' t recognize the request .
*
* INTEL_SIP_SMC_STATUS_OK :
* Secure monitor software accepts the service client ' s request .
*
* INTEL_SIP_SMC_STATUS_BUSY :
* Secure monitor software is still processing service client ' s request .
*
* INTEL_SIP_SMC_STATUS_REJECTED :
* Secure monitor software reject the service client ' s request .
*
* INTEL_SIP_SMC_STATUS_ERROR :
* There is error during the process of service request .
*
* INTEL_SIP_SMC_RSU_ERROR :
* There is error during the process of remote status update request .
*/
#define INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION 0 xFFFFFFFF
#define INTEL_SIP_SMC_STATUS_OK 0 x0
#define INTEL_SIP_SMC_STATUS_BUSY 0 x1
#define INTEL_SIP_SMC_STATUS_REJECTED 0 x2
#define INTEL_SIP_SMC_STATUS_ERROR 0 x4
#define INTEL_SIP_SMC_RSU_ERROR 0 x7
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_START
*
* Sync call used by service driver at EL1 to request the FPGA in EL3 to
* be prepare to receive a new configuration .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_START .
* a1 : flag for full or partial configuration . 0 for full and 1 for partial
* configuration .
* a2 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK , or INTEL_SIP_SMC_STATUS_ERROR .
* a1 - 3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_START 1
#define INTEL_SIP_SMC_FPGA_CONFIG_START \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_START)
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_WRITE
*
* Async call used by service driver at EL1 to provide FPGA configuration data
* to secure world .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_WRITE .
* a1 : 64 bit physical address of the configuration data memory block
* a2 : Size of configuration data block .
* a3 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_STATUS_BUSY or
* INTEL_SIP_SMC_STATUS_ERROR .
* a1 : 64 bit physical address of 1 st completed memory block if any completed
* block , otherwise zero value .
* a2 : 64 bit physical address of 2 nd completed memory block if any completed
* block , otherwise zero value .
* a3 : 64 bit physical address of 3 rd completed memory block if any completed
* block , otherwise zero value .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_WRITE 2
#define INTEL_SIP_SMC_FPGA_CONFIG_WRITE \
INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_WRITE)
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE
*
* Sync call used by service driver at EL1 to track the completed write
* transactions . This request is called after INTEL_SIP_SMC_FPGA_CONFIG_WRITE
* call returns INTEL_SIP_SMC_STATUS_BUSY .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE .
* a1 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_FPGA_BUSY or
* INTEL_SIP_SMC_STATUS_ERROR .
* a1 : 64 bit physical address of 1 st completed memory block .
* a2 : 64 bit physical address of 2 nd completed memory block if
* any completed block , otherwise zero value .
* a3 : 64 bit physical address of 3 rd completed memory block if
* any completed block , otherwise zero value .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE 3
#define INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_ISDONE
*
* Sync call used by service driver at EL1 to inform secure world that all
* data are sent , to check whether or not the secure world had completed
* the FPGA configuration process .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_ISDONE .
* a1 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_STATUS_BUSY or
* INTEL_SIP_SMC_STATUS_ERROR .
* a1 - 3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_ISDONE 4
#define INTEL_SIP_SMC_FPGA_CONFIG_ISDONE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_ISDONE)
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM
*
* Sync call used by service driver at EL1 to query the physical address of
* memory block reserved by secure monitor software .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM .
* a1 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR .
* a1 : start of physical address of reserved memory block .
* a2 : size of reserved memory block .
* a3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_GET_MEM 5
#define INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_GET_MEM)
/**
* Request INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK
*
* For SMC loop - back mode only , used for internal integration , debugging
* or troubleshooting .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK .
* a1 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR .
* a1 - 3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_LOOPBACK 6
#define INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_LOOPBACK)
/**
* Request INTEL_SIP_SMC_REG_READ
*
* Read a protected register at EL3
*
* Call register usage :
* a0 : INTEL_SIP_SMC_REG_READ .
* a1 : register address .
* a2 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR .
* a1 : value in the register
* a2 - 3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_REG_READ 7
#define INTEL_SIP_SMC_REG_READ \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_READ)
/**
* Request INTEL_SIP_SMC_REG_WRITE
*
* Write a protected register at EL3
*
* Call register usage :
* a0 : INTEL_SIP_SMC_REG_WRITE .
* a1 : register address
* a2 : value to program into register .
* a3 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR .
* a1 - 3 : not used .
*/
#define INTEL_SIP_SMC_FUNCID_REG_WRITE 8
#define INTEL_SIP_SMC_REG_WRITE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_WRITE)
/**
* Request INTEL_SIP_SMC_FUNCID_REG_UPDATE
*
* Update one or more bits in a protected register at EL3 using a
* read - modify - write operation .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_REG_UPDATE .
* a1 : register address
* a2 : write Mask .
* a3 : value to write .
* a4 - 7 : not used .
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR .
* a1 - 3 : Not used .
*/
#define INTEL_SIP_SMC_FUNCID_REG_UPDATE 9
#define INTEL_SIP_SMC_REG_UPDATE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_UPDATE)
/**
* Request INTEL_SIP_SMC_RSU_STATUS
*
* Request remote status update boot log , call is synchronous .
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_STATUS
* a1 - 7 not used
*
* Return status
* a0 : Current Image
* a1 : Last Failing Image
* a2 : Version | State
* a3 : Error details | Error location
*
* Or
*
* a0 : INTEL_SIP_SMC_RSU_ERROR
*/
#define INTEL_SIP_SMC_FUNCID_RSU_STATUS 11
#define INTEL_SIP_SMC_RSU_STATUS \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_STATUS)
/**
* Request INTEL_SIP_SMC_RSU_UPDATE
*
* Request to set the offset of the bitstream to boot after reboot , call
* is synchronous .
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_UPDATE
* a1 64 bit physical address of the configuration data memory in flash
* a2 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
*/
#define INTEL_SIP_SMC_FUNCID_RSU_UPDATE 12
#define INTEL_SIP_SMC_RSU_UPDATE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_UPDATE)
/**
* Request INTEL_SIP_SMC_ECC_DBE
*
* Sync call used by service driver at EL1 to alert EL3 that a Double
* Bit ECC error has occurred .
*
* Call register usage :
* a0 INTEL_SIP_SMC_ECC_DBE
* a1 SysManager Double Bit Error value
* a2 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
*/
#define INTEL_SIP_SMC_FUNCID_ECC_DBE 13
#define INTEL_SIP_SMC_ECC_DBE \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_ECC_DBE)
/**
* Request INTEL_SIP_SMC_RSU_NOTIFY
*
* Sync call used by service driver at EL1 to report hard processor
* system execution stage to firmware
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_NOTIFY
* a1 32 bit value representing hard processor system execution stage
* a2 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
*/
#define INTEL_SIP_SMC_FUNCID_RSU_NOTIFY 14
#define INTEL_SIP_SMC_RSU_NOTIFY \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_NOTIFY)
/**
* Request INTEL_SIP_SMC_RSU_RETRY_COUNTER
*
* Sync call used by service driver at EL1 to query RSU retry counter
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_RETRY_COUNTER
* a1 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
* a1 the retry counter
*
* Or
*
* a0 INTEL_SIP_SMC_RSU_ERROR
*/
#define INTEL_SIP_SMC_FUNCID_RSU_RETRY_COUNTER 15
#define INTEL_SIP_SMC_RSU_RETRY_COUNTER \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_RETRY_COUNTER)
/**
* Request INTEL_SIP_SMC_RSU_DCMF_VERSION
*
* Sync call used by service driver at EL1 to query DCMF ( Decision
* Configuration Management Firmware ) version from FW
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_DCMF_VERSION
* a1 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
* a1 dcmf1 | dcmf0
* a2 dcmf3 | dcmf2
*
* Or
*
* a0 INTEL_SIP_SMC_RSU_ERROR
*/
#define INTEL_SIP_SMC_FUNCID_RSU_DCMF_VERSION 16
#define INTEL_SIP_SMC_RSU_DCMF_VERSION \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_DCMF_VERSION)
/**
* Request INTEL_SIP_SMC_RSU_MAX_RETRY
*
* Sync call used by service driver at EL1 to query max retry value from FW
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_MAX_RETRY
* a1 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
* a1 max retry value
*
* Or
* a0 INTEL_SIP_SMC_RSU_ERROR
*/
#define INTEL_SIP_SMC_FUNCID_RSU_MAX_RETRY 18
#define INTEL_SIP_SMC_RSU_MAX_RETRY \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_MAX_RETRY)
/**
* Request INTEL_SIP_SMC_RSU_DCMF_STATUS
*
* Sync call used by service driver at EL1 to query DCMF status from FW
*
* Call register usage :
* a0 INTEL_SIP_SMC_RSU_DCMF_STATUS
* a1 - 7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK
* a1 dcmf3 | dcmf2 | dcmf1 | dcmf0
*
* Or
*
* a0 INTEL_SIP_SMC_RSU_ERROR
*/
#define INTEL_SIP_SMC_FUNCID_RSU_DCMF_STATUS 20
#define INTEL_SIP_SMC_RSU_DCMF_STATUS \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_DCMF_STATUS)
/**
* Request INTEL_SIP_SMC_SERVICE_COMPLETED
* Sync call to check if the secure world have completed service request
* or not .
*
* Call register usage :
* a0 : INTEL_SIP_SMC_SERVICE_COMPLETED
* a1 : this register is optional . If used , it is the physical address for
* secure firmware to put output data
* a2 : this register is optional . If used , it is the size of output data
* a3 - a7 : not used
*
* Return status :
* a0 : INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_STATUS_ERROR ,
* INTEL_SIP_SMC_REJECTED or INTEL_SIP_SMC_STATUS_BUSY
* a1 : mailbox error if a0 is INTEL_SIP_SMC_STATUS_ERROR
* a2 : physical address containing the process info
* for FCS certificate - - the data contains the certificate status
* for FCS cryption - - the data contains the actual data size FW processes
* a3 : output data size
*/
#define INTEL_SIP_SMC_FUNCID_SERVICE_COMPLETED 30
#define INTEL_SIP_SMC_SERVICE_COMPLETED \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_SERVICE_COMPLETED)
/**
* Request INTEL_SIP_SMC_FIRMWARE_VERSION
*
* Sync call used to query the version of running firmware
*
* Call register usage :
* a0 INTEL_SIP_SMC_FIRMWARE_VERSION
* a1 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR
* a1 running firmware version
*/
#define INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION 31
#define INTEL_SIP_SMC_FIRMWARE_VERSION \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION)
/**
* SMC call protocol for Mailbox , starting FUNCID from 60
*
* Call register usage :
* a0 INTEL_SIP_SMC_MBOX_SEND_CMD
* a1 mailbox command code
* a2 physical address that contain mailbox command data ( not include header )
* a3 mailbox command data size in word
* a4 set to 0 for CASUAL , set to 1 for URGENT
* a5 physical address for secure firmware to put response data
* ( not include header )
* a6 maximum size in word of physical address to store response data
* a7 not used
*
* Return status
* a0 INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_STATUS_REJECTED or
* INTEL_SIP_SMC_STATUS_ERROR
* a1 mailbox error code
* a2 response data length in word
* a3 not used
*/
#define INTEL_SIP_SMC_FUNCID_MBOX_SEND_CMD 60
#define INTEL_SIP_SMC_MBOX_SEND_CMD \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_MBOX_SEND_CMD)
/**
* Request INTEL_SIP_SMC_SVC_VERSION
*
* Sync call used to query the SIP SMC API Version
*
* Call register usage :
* a0 INTEL_SIP_SMC_SVC_VERSION
* a1 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK
* a1 Major
* a2 Minor
*/
#define INTEL_SIP_SMC_SVC_FUNCID_VERSION 512
#define INTEL_SIP_SMC_SVC_VERSION \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_SVC_FUNCID_VERSION)
/**
* SMC call protocol for FPGA Crypto Service ( FCS )
* FUNCID starts from 90
*/
/**
* Request INTEL_SIP_SMC_FCS_RANDOM_NUMBER
*
* Sync call used to query the random number generated by the firmware
*
* Call register usage :
* a0 INTEL_SIP_SMC_FCS_RANDOM_NUMBER
* a1 the physical address for firmware to write generated random data
* a2 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_FCS_ERROR or
* INTEL_SIP_SMC_FCS_REJECTED
* a1 mailbox error
* a2 the physical address of generated random number
* a3 size
*/
#define INTEL_SIP_SMC_FUNCID_FCS_RANDOM_NUMBER 90
#define INTEL_SIP_SMC_FCS_RANDOM_NUMBER \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_RANDOM_NUMBER)
/**
* Request INTEL_SIP_SMC_FCS_CRYPTION
* Async call for data encryption and HMAC signature generation , or for
* data decryption and HMAC verification .
*
* Call INTEL_SIP_SMC_SERVICE_COMPLETED to get the output encrypted or
* decrypted data
*
* Call register usage :
* a0 INTEL_SIP_SMC_FCS_CRYPTION
* a1 cryption mode ( 1 for encryption and 0 for decryption )
* a2 physical address which stores to be encrypted or decrypted data
* a3 input data size
* a4 physical address which will hold the encrypted or decrypted output data
* a5 output data size
* a6 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_STATUS_ERROR or
* INTEL_SIP_SMC_STATUS_REJECTED
* a1 - 3 not used
*/
#define INTEL_SIP_SMC_FUNCID_FCS_CRYPTION 91
#define INTEL_SIP_SMC_FCS_CRYPTION \
INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_CRYPTION)
/**
* Request INTEL_SIP_SMC_FCS_SERVICE_REQUEST
* Async call for authentication service of HPS software
*
* Call register usage :
* a0 INTEL_SIP_SMC_FCS_SERVICE_REQUEST
* a1 the physical address of data block
* a2 size of data block
* a3 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_ERROR or
* INTEL_SIP_SMC_REJECTED
* a1 - a3 not used
*/
#define INTEL_SIP_SMC_FUNCID_FCS_SERVICE_REQUEST 92
#define INTEL_SIP_SMC_FCS_SERVICE_REQUEST \
INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_SERVICE_REQUEST)
/**
* Request INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE
* Sync call to send a signed certificate
*
* Call register usage :
* a0 INTEL_SIP_SMC_FCS_SEND_CERTIFICATE
* a1 the physical address of CERTIFICATE block
* a2 size of data block
* a3 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_FCS_REJECTED
* a1 - a3 not used
*/
#define INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE 93
#define INTEL_SIP_SMC_FCS_SEND_CERTIFICATE \
INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE)
/**
* Request INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
* Sync call to dump all the fuses and key hashes
*
* Call register usage :
* a0 INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
* a1 the physical address for firmware to write structure of fuse and
* key hashes
* a2 - a7 not used
*
* Return status :
* a0 INTEL_SIP_SMC_STATUS_OK , INTEL_SIP_SMC_FCS_ERROR or
* INTEL_SIP_SMC_FCS_REJECTED
* a1 mailbox error
* a2 physical address for the structure of fuse and key hashes
* a3 the size of structure
*
*/
#define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA 94
#define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
#endif
Messung V0.5 in Prozent C=96 H=94 G=94
¤ Dauer der Verarbeitung: 0.13 Sekunden
¤
*© Formatika GbR, Deutschland