summaryrefslogtreecommitdiff
path: root/mobicore/common/MobiCore/inc/Mci/mcifcfunc.h
diff options
context:
space:
mode:
Diffstat (limited to 'mobicore/common/MobiCore/inc/Mci/mcifcfunc.h')
-rw-r--r--mobicore/common/MobiCore/inc/Mci/mcifcfunc.h193
1 files changed, 0 insertions, 193 deletions
diff --git a/mobicore/common/MobiCore/inc/Mci/mcifcfunc.h b/mobicore/common/MobiCore/inc/Mci/mcifcfunc.h
deleted file mode 100644
index 895507e..0000000
--- a/mobicore/common/MobiCore/inc/Mci/mcifcfunc.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2013 TRUSTONIC LIMITED
- * All rights reserved
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- * @addtogroup FCI
- * @{
- * @file
- * Declaration of FastCall helper functions.
- *
- * @attention Helper functions are mostly RealView (ARM CC) specific.
- *
- * Holds the functions for SIQ, YIELD and FastCall for switching to the secure world.
- * <!-- Copyright © Trustonic Limited 2013 -->
- *
- */
-
-#ifndef MCIFCFUNC_H_
-#define MCIFCFUNC_H_
-
-#include "mcifc.h"
-/**
- * Execute a secure monitor call (SMC).
- *
- * @param mode SMC mode affects the way SMC is handled
- *
- * @attention This function shall not be used directly. Use N_Siq() or Yield() instead.
- */
-__smc(0) void smc(int32_t mode);
-
-/**
- * N-SIQ switch from NWd to SWd.
- * Execution will continue in the SWd. The notification queue will be drained by the MC4 and MC4 system schedules its services.
- */
-inline void N_Siq(void) { smc(MC_SMC_N_SIQ); }
-
-/**
- * Yield switch from NWd to SWd.
- * Execution will continue in the SWd without scheduling MC4 services.
- */
-inline void Yield(void) { smc(MC_SMC_N_YIELD); }
-
-/** Wrapper structure for parameter passing in registers.
- * This structure is used as a "wrapper" return value for functions that
- * return data in the registers r0 to r3. With the RealView compiler such
- * function are declare as: _value_in_regs reg_r0_r1_r2_r3_t foo()
-
- */
-typedef struct {
- uint32_t r0;
- uint32_t r1;
- uint32_t r2;
- uint32_t r3;
-} reg_r0_r1_r2_r3_t;
-
-/** Parameterized SMC for FastCalls.
- * @attention This function shall not be used directly.
- */
-__smc(0) __value_in_regs reg_r0_r1_r2_r3_t smcFc(
- uint32_t r0,
- uint32_t r1,
- uint32_t r2,
- uint32_t r3
-);
-
-/** FastCall helper function.
- * @attention This function shall not be used directly.
- */
-inline static __value_in_regs reg_r0_r1_r2_r3_t fastCall(
- uint32_t r0,
- uint32_t r1,
- uint32_t r2,
- uint32_t r3
-) {
- return smcFc(r0,r1,r2,r3);
-}
-
-/**
- * Initialize the MobiCore.
- * The FcMc4init FastCall shall be used to set up the MCI. The function passes the message buffers used in the MCI to the MC4 system.
- * As long as the buffers are not set up the MC4 message passing mechanisms (notifications, MCP commands) are not available.
- * NQ buffer and MCP buffer as well as length calculations are described in the "MobiCore4 Driver Interface Specification".
- * <br> The fastCallInit() will not check the parameters for validity. Instead the MC4 will perform a check on first usage of the parameters.
- *
- * @image html DoxyMciBuffer.png "MCI buffer"
- * @image latex DoxyMciBuffer.png "MCI buffer" width=12cm
- *
- * @param base Physical start address of the MCI buffer. Must be 4kB aligned.
- * @param nqOffset Offset in bytes to the beginning of the NQ buffer.
- * @param nqLength Length of the NQ buffer in bytes.
- * @param mcpOffset Offset in bytes to the beginning of the MCP buffer.
- * @param mcpLength Length of the MCP buffer in bytes
- *
- */
-inline static uint32_t fastCallInit(
- uint8_t *base,
- uint32_t nqOffset,
- uint32_t nqLength,
- uint32_t mcpOffset,
- uint32_t mcpLength
-) {
-
- reg_r0_r1_r2_r3_t ret;
-
- ret = fastCall(
- MC_FC_INIT,
- (uint32_t)base,
- ((nqOffset << 16) | (nqLength & 0xFFFF)),
- ((mcpOffset << 16) | (mcpLength & 0xFFFF)) );
-
-
- return ret.r1;
-}
-
-
-/** Get status information about MobiCore.
- * The FcMcGetInfo FastCall provides information about the current state of the MobiCore.
- * In certain states extended information is provided.
- *
- * @param extInfoId Extended info word to be obtained.
- * @param mc4state Current state of the MobiCore.
- * @param extInfo Extended information depending on state.
- */
-inline static uint32_t fastCallGetInfo(
- uint32_t extInfoId,
- uint32_t *mc4state,
- uint32_t *extInfo
-) {
- reg_r0_r1_r2_r3_t ret;
-
- ret = fastCall(MC_FC_INFO,extInfoId,0,0);
-
- if (MC_FC_RET_OK == ret.r1)
- {
- *mc4state = ret.r2;
- *extInfo = ret.r3;
- }
-
- return ret.r1;
-}
-
-/**
- * Power management.
- * The power management FastCall is platform specific.
- *
- * @param param0 platform specific parameter.
- * @param param1 platform specific parameter.
- * @param param2 platform specific parameter.
- */
-inline static uint32_t fastCallPower(
- uint32_t param0,
- uint32_t param1,
- uint32_t param2
-) {
-
- reg_r0_r1_r2_r3_t ret;
-
- ret = fastCall(
- MC_FC_POWER,
- param0,
- param1,
- param2 );
-
- return ret.r1;
-}
-
-#endif /* MCIFCFUNC_H_ */
-/**
- * @}*/