diff options
Diffstat (limited to 'drivers/staging/nmf-cm/inc')
-rw-r--r-- | drivers/staging/nmf-cm/inc/nmf-def.h | 42 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/inc/nmf-limits.h | 106 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/inc/nmf-tracedescription.h | 323 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/inc/nmf_type.idt | 63 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/inc/type.h | 35 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/inc/typedef.h | 192 |
6 files changed, 761 insertions, 0 deletions
diff --git a/drivers/staging/nmf-cm/inc/nmf-def.h b/drivers/staging/nmf-cm/inc/nmf-def.h new file mode 100644 index 00000000000..439adf8ef56 --- /dev/null +++ b/drivers/staging/nmf-cm/inc/nmf-def.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) ST-Ericsson SA 2010. All rights reserved. + * This code is ST-Ericsson proprietary and confidential. + * Any use of the code for whatever purpose is subject to + * specific written permission of ST-Ericsson SA. + */ + /*! + * \brief NMF Version. + * + * This file contains the NMF Version. + * + * \defgroup NMF_VERSION NMF Version + * \ingroup COMMON + */ + +#ifndef __INC_NMF_DEF_H +#define __INC_NMF_DEF_H + +/*! + * \brief Current NMF version number + * + * \ingroup NMF_VERSION + */ +#define NMF_VERSION ((2 << 16) | (10 << 8) | (123)) + +/*! + * \brief Get NMF major version corresponding to NMF version number + * \ingroup NMF_VERSION + */ +#define VERSION_MAJOR(version) (((version) >> 16) & 0xFF) +/*! + * \brief Get NMF minor version corresponding to NMF version number + * \ingroup NMF_VERSION + */ +#define VERSION_MINOR(version) (((version) >> 8) & 0xFF) +/*! + * \brief Get NMF patch version corresponding to NMF version number + * \ingroup NMF_VERSION + */ +#define VERSION_PATCH(version) (((version) >> 0) & 0xFF) + +#endif /* __INC_NMF_DEF_H */ diff --git a/drivers/staging/nmf-cm/inc/nmf-limits.h b/drivers/staging/nmf-cm/inc/nmf-limits.h new file mode 100644 index 00000000000..374795f91e0 --- /dev/null +++ b/drivers/staging/nmf-cm/inc/nmf-limits.h @@ -0,0 +1,106 @@ +/* + * Copyright (C) ST-Ericsson SA 2010 + * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2, with + * user space exemption described in the top-level COPYING file in + * the Linux kernel source tree. + */ +/*! + * \brief Common Nomadik Multiprocessing Framework limits definition + * + * This file contains the limit definitions used into NMF. + * + * \warning Don't modify it since it is also hardcoded in tools + * + * \defgroup NMF_LIMITS NMF limits definition + * \ingroup COMMON + */ +#ifndef __INC_NMF_LIMITS_H +#define __INC_NMF_LIMITS_H + +/*! + * \brief Maximum interface name length + * + * Define the maximum interface name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_INTERFACE_NAME_LENGTH 32 + +/*! + * \brief Maximum interface method name length + * + * Define the maximum interface method name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_INTERFACE_METHOD_NAME_LENGTH 64 + +/*! + * \brief Maximum interface type name length + * + * Define the maximum interface type name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_INTERFACE_TYPE_NAME_LENGTH 128 + + +/*! + * \brief Maximum template name length + * + * Define the maximum template name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_TEMPLATE_NAME_LENGTH 128 + +/*! + * \brief Maximum component local name length + * + * Define the maximum component local name length inside a composite component allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_COMPONENT_NAME_LENGTH 32 + +/*! + * \brief Maximum property name length + * + * Define the maximum property name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_PROPERTY_NAME_LENGTH 32 + +/*! + * \brief Maximum property value length + * + * Define the maximum property value length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_PROPERTY_VALUE_LENGTH 128 + +/*! + * \brief Maximum attribute name length + * + * Define the maximum attribute name length allowed by NMF. + * + * \ingroup NMF_LIMITS + */ +#define MAX_ATTRIBUTE_NAME_LENGTH 32 + +/*! + * \brief Maximum fifo size allowed for binding component + * + * Define the maximum fifo size allowed for binding component allowed by NMF when calling + * CM_BindComponentFromHost and CM_BindComponentAsynchronous. + * + * \ingroup NMF_LIMITS + */ +#define MAX_COMMUNICATION_FIFO_SIZE 256 + +#define MAX_COMPONENT_FILE_PATH_LENGTH 1024 + +#endif /* __INC_NMF_LIMITS_H */ diff --git a/drivers/staging/nmf-cm/inc/nmf-tracedescription.h b/drivers/staging/nmf-cm/inc/nmf-tracedescription.h new file mode 100644 index 00000000000..bce589079b9 --- /dev/null +++ b/drivers/staging/nmf-cm/inc/nmf-tracedescription.h @@ -0,0 +1,323 @@ +/* + * Copyright (C) ST-Ericsson SA 2010 + * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2, with + * user space exemption described in the top-level COPYING file in + * the Linux kernel source tree. + */ +/*! + * \brief NMF xti/stm trace format description + * + * \defgroup NMF_TRACE_FORMAT NMF xti/stm trace format description + * + * The NMF trace is output by either xti ip on 8815 or stm ip on 8820 and 8500. + * Each type of trace is output on a dedicated channel. Following is a description + * of each of this traces. + * + * Traces have generally a timestamp added by hardware but is not described here. + * \ingroup NMF_ABI + */ +#ifndef TRACE_FORMAT_H_ +#define TRACE_FORMAT_H_ + +#include <inc/nmf-limits.h> + +/*! + * \brief XTI/STM Channel where trace are dumped + * + * \note This type is only for defining constants, please not reference it. + * + * \note Ever if this format is able to be generated on same channel, Host EE & CM channel are separated + * in order to avoir concurrency and access STM IP without require mutual exclusion. + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + MPC_EE_CHANNEL = 100, //!< MPC EE channel (MPC activity) in 32bits bundle + CM_CHANNEL = 101, //!< CM channel (MPC deployment) in 64bits bundle + HOST_EE_CHANNEL = 151 //!< Host EE channel (deployment & activity) in 64bits bundle +} t_nmfTraceChannelDescription; + +/*! + * \brief Message trace type + * + * \note This type is only for defining constants, please not reference it. + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_TYPE_RESET = 1, //!< Reset trace type + TRACE_TYPE_COMPONENT = 2, //!< Component instantiate trace type + TRACE_TYPE_BIND = 3, //!< Component bind trace type + TRACE_TYPE_METHOD = 4, //!< Component method trace type + TRACE_TYPE_ACTIVITY = 5, //!< Activity trace type + TRACE_TYPE_PANIC = 6, //!< Panic trace type + TRACE_TYPE_COMMUNICATION = 7, //!< Communication trace type + TRACE_TYPE_ALLOCATOR = 8, //!< Allocator trace type + TRACE_TYPE_ALLOC = 9, //!< Alloc trace type + TRACE_TYPE_USER = 10 //!< User trace type +} t_nmfTraceTypeDescription; + +#define TRACE_MAJOR_VERSION 1 //!< Current major trace version number \ingroup NMF_TRACE_FORMAT +#define TRACE_MINOR_VERSION 2 //!< Current minor trace version number \ingroup NMF_TRACE_FORMAT + +/*! + * \brief Trace header description. + * + * \note XTI will add 64bits time-stamp in first field of this structure, but not generated by us ! + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceChannelHeader { + // t_uint64 timeStamp; + t_uint8 traceType; //!< Trace type + t_uint8 reserved; + t_uint16 traceSize; //!< Trace size (depending on trace type description) +}; + +/*! + * \brief Trace header union + * + * The purpose of this is to optimize header setting in one instruction. + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef union { + struct t_nmfTraceChannelHeader s; + t_uint32 v; +} t_nmfTraceChannelHeaderUnion; + + +/*! + * \brief Trace reset description + * + * Inform tools to reset their internal state because network will be dumped new time. + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceReset { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 minorVersion; //!< NMF trace format minor version + t_uint16 majorVersion; //!< NMF trace format major version +}; + +/** + * \brief Component instantiation trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_COMPONENT_COMMAND_ADD = 0x1, + TRACE_COMPONENT_COMMAND_REMOVE = 0x2 +} t_nmfTraceComponentCommandDescription; + + +/*! + * \brief Component instantiation trace description + * + * Component instantiation trace is generated each time an instance of a component is added or removed. + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceComponent { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceComponentCommandDescription + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA, in SMPEE: 0x1 + t_uint32 componentContext; //!< Component context belonging domain (DSP this or ARM class this) + t_uint32 componentUserContext; //!< User friendly component Id belonging the channel (CM handle or ARM class this) + t_uint8 componentLocalName[MAX_COMPONENT_NAME_LENGTH]; //!< local name of component as given by user (null terminated) + t_uint8 componentTemplateName[MAX_TEMPLATE_NAME_LENGTH];//!< template name of component (null terminated) +}; + +/** + * \brief Component binding trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_BIND_COMMAND_BIND_SYNCHRONOUS = 0x1, + TRACE_BIND_COMMAND_UNBIND_SYNCHRONOUS = 0x2, + TRACE_BIND_COMMAND_BIND_ASYNCHRONOUS = 0x3, + TRACE_BIND_COMMAND_UNBIND_ASYNCHRONOUS = 0x4 +} t_nmfTraceBindCommandDescription; + +/** + * \brief Component binding trace description + * + * \note clientComponentContext & serverComponentContext take value 0xffffffff when client or server are Component Manager. + * \note serverComponentContext take value 0x00000000 when binding to void. + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceBind { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceBindCommandDescription + t_uint16 reserved; + t_uint16 clientDomainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA, in SMPEE: 0x1 + t_uint16 serverDomainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA, in SMPEE: 0x1 + t_uint32 clientComponentContext; //!< Component context belonging domain (DSP this or ARM class this) + t_uint32 serverComponentContext; //!< Component context belonging domain (DSP this or ARM class this) + t_uint8 requiredItfName[MAX_INTERFACE_NAME_LENGTH]; //!< Required interface name + t_uint8 providedItfName[MAX_INTERFACE_NAME_LENGTH]; //!< Provided interface name +}; + +/*! + * \brief Component interface method name trace description + * + * For each methods of each interfaces provided by a component, one such trace is dumped. + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceMethod { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA, in SMPEE: 0x1 + t_uint16 reserved; + t_uint32 methodId; //!< Unique Method Id belonging the component + t_uint32 componentContext; //!< Component context belonging domain (DSP this or ARM class this) + t_uint8 methodName[MAX_INTERFACE_METHOD_NAME_LENGTH]; //!< Symbolic method name +}; + +/** + * \brief Activity trace trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_ACTIVITY_START = 0x1, //!< Start method + TRACE_ACTIVITY_END = 0x2, //!< End method + TRACE_ACTIVITY_POST = 0x3, //!< Post method + TRACE_ACTIVITY_CALL = 0x4, //!< Synchronous call method + TRACE_ACTIVITY_RETURN = 0x5 //!< Synchronous return method +} t_nmfTraceActivityCommandDescription; + +/*! + * \brief Execution Engine scheduling activity trace description + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceActivity { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceActivityCommandDescription + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA + t_uint32 componentContext; //!< Unique component Id (Component Handle for CM, Component this for EE) + t_uint32 methodId; //!< Unique Method Id belonging the component +}; + +/** + * \brief Component instantiation trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_COMMUNICATION_COMMAND_SEND = 0x1, + TRACE_COMMUNICATION_COMMAND_RECEIVE = 0x2 +} t_nmfTraceCommunicationCommandDescription; + +/** + * \brief Inter-processor communication signaling trace description + * + * Use when trigging interrupt through core. + * + * \note Not used on SMP EE + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceCommunication { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceCommunicationCommandDescription + t_uint16 reserved_0; + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA + t_uint16 remoteDomainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA +}; + +/** + * \brief Component instantiation trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_ALLOCATOR_COMMAND_CREATE = 0x1, + TRACE_ALLOCATOR_COMMAND_DESTROY = 0x2 +} t_nmfTraceAllocatorCommandDescription; + +/*! + * \brief Panic trace description + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceAllocator { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceAllocatorCommandDescription + t_uint16 allocId; //!< Memory allocator ID + t_uint32 size; //!< Memory allocator size + t_uint8 name[32]; //!< Memory allocator name +}; + +/** + * \brief Component instantiation trace command description + * + * \ingroup NMF_TRACE_FORMAT + */ +typedef enum { + TRACE_ALLOC_COMMAND_ALLOC = 0x1, + TRACE_ALLOC_COMMAND_FREE = 0x2 +} t_nmfTraceAllocCommandDescription; + +/*! + * \brief Panic trace description + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceAlloc { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 command; //!< See \ref t_nmfTraceAllocatorCommandDescription + t_uint16 allocId; //!< Memory allocator ID + t_uint32 offset; //!< Memory chunk offet + t_uint32 size; //!< Memory chunk size +}; + +/*! + * \brief Panic trace description + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTracePanic { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint16 reason; //!< See \ref t_panic_reason for description + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA + t_uint32 componentContext; //!< Unique component Id (Component Handle for CM, Component this for EE) + t_uint32 information1; //!< Reason dependent information 1st + t_uint32 information2; //!< Reason dependent information 2nd +}; + +/*! + * \brief User trace description + * + * \ingroup NMF_TRACE_FORMAT + */ +struct t_nmfTraceUser { + t_nmfTraceChannelHeaderUnion header; //!< Trace header + + t_uint32 key; //!< User key + t_uint16 domainId; //!< In CM: 0x01:Arm | 0x02:SAA | 0x03:SVA | 0x04:SIA + t_uint16 reserved; + t_uint32 componentContext; //!< Unique component Id (Component Handle for CM, Component this for EE) + t_uint32 callerAddress; //!< Unique code address belonging the component +}; + +/* +struct t_nmfTracePower{ + struct t_nmfTraceChannelHeader header; +}; +*/ + +#endif /* TRACE_FORMAT_H_ */ diff --git a/drivers/staging/nmf-cm/inc/nmf_type.idt b/drivers/staging/nmf-cm/inc/nmf_type.idt new file mode 100644 index 00000000000..dda547a463e --- /dev/null +++ b/drivers/staging/nmf-cm/inc/nmf_type.idt @@ -0,0 +1,63 @@ +/* + * Copyright (C) ST-Ericsson SA 2010 + * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2, with + * user space exemption described in the top-level COPYING file in + * the Linux kernel source tree. + */ +#ifndef NMF_TYPE_H_ +#define NMF_TYPE_H_ + +/*! + * \defgroup NMF_COMMON_TYPE NMF Common Type + * \ingroup COMMON + */ + +/*! + * \brief Error type returned by NMF API routines + * + * Possible value describe by \ref t_nmf_errorDescription + * + * \ingroup NMF_COMMON_TYPE + */ +typedef t_sint8 t_nmf_error; + +/*! + * \brief Error type values + * + * \ingroup NMF_COMMON_TYPE + */ +typedef enum { + NMF_OK = 0, //!< No error + NMF_INVALID_PARAMETER = -2, //!< Invalid parameter + NMF_NO_MORE_MEMORY = -30, //!< Out of memory + NMF_INTERFACE_NOT_BINDED = -59, //!< Try to unbind not binded interface + NMF_INTERFACE_ALREADY_BINDED = -60, //!< Try to bind already binded interface + NMF_NO_SUCH_REQUIRED_INTERFACE = -63, //!< Interface name not required by a component + NMF_NO_SUCH_PROVIDED_INTERFACE = -64, //!< Interface name not provided by a component + NMF_COMPONENT_NOT_STOPPED = -80, //!< Component must be stopped to perform operation + NMF_INVALID_COMPONENT_STATE_TRANSITION = -81, //!< Invalid component state transition caused by user action + NMF_NO_SUCH_PROPERTY = -87, //!< Property name doesn't exported by the underlying component + NMF_NO_SUCH_ATTRIBUTE = -88, //!< Attribute name not shared (exported) by a component + NMF_NO_MESSAGE = -103, //!< No message available + NMF_FLUSH_MESSAGE = -106, //!< Message send after call to EE_FlushChannel() + NMF_INTEGRATION_ERROR0 = -112, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR1 = -113, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR2 = -114, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR3 = -115, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR4 = -116, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR5 = -117, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR6 = -118, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR7 = -119, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR8 = -120, //!< OS dependent integration Error [-112 -> -121] + NMF_INTEGRATION_ERROR9 = -121 //!< OS dependent integration Error [-112 -> -121] +} t_nmf_errorDescription; + +/*! + * \brief Define t_nmf_channel type that identify a communication channel between nmf and user. + * + * \ingroup NMF_COMMON_TYPE + */ +typedef t_uint32 t_nmf_channel; + +#endif /* NMF_TYPE_H_ */ diff --git a/drivers/staging/nmf-cm/inc/type.h b/drivers/staging/nmf-cm/inc/type.h new file mode 100644 index 00000000000..3075505aee5 --- /dev/null +++ b/drivers/staging/nmf-cm/inc/type.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) ST-Ericsson SA 2010 + * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2, with + * user space exemption described in the top-level COPYING file in + * the Linux kernel source tree. + */ +/* inc/type.h - Programming Model. + * + * Copyright (c) 2006, 2007, 2008 STMicroelectronics. + * + * Reproduction and Communication of this document is strictly prohibited + * unless specifically authorized in writing by STMicroelectronics. + * + * Written by NMF team. + */ +#ifndef _NMF_TYPE_H_ +#define _NMF_TYPE_H_ + +#include <inc/typedef.h> + +PUBLIC IMPORT_SHARED void NMF_LOG(const char* fmt, ...); +PUBLIC IMPORT_SHARED void NMF_PANIC(const char* fmt, ...); + +#define NMF_ASSERT(cond) do { if(!(cond)) NMF_PANIC("NMF_ASSERT at %s:%d\n", (int)__FILE__, (int)__LINE__); } while(0) + +#ifndef EXPORT_NMF_COMPONENT + #define EXPORT_NMF_COMPONENT EXPORT_SHARED +#endif + +#ifndef IMPORT_NMF_COMPONENT + #define IMPORT_NMF_COMPONENT IMPORT_SHARED +#endif + +#endif /* _NMF_TYPE_H_ */ diff --git a/drivers/staging/nmf-cm/inc/typedef.h b/drivers/staging/nmf-cm/inc/typedef.h new file mode 100644 index 00000000000..a29e6b88fde --- /dev/null +++ b/drivers/staging/nmf-cm/inc/typedef.h @@ -0,0 +1,192 @@ +/* + * Copyright (C) ST-Ericsson SA 2010 + * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2, with + * user space exemption described in the top-level COPYING file in + * the Linux kernel source tree. + */ +/*! + * \defgroup COMMON Common types and definitions + * + * \defgroup NMF_COMMON NMF common definition + * \ingroup COMMON + * + * \defgroup NMF_ABI NMF ABI specification + * \warning This page is not for multimedia developers ! + */ +/*! + * \brief Primitive Type Definition + * + * \defgroup NMF_PRIMITIVE_TYPE Primitive type definition + * \ingroup COMMON + */ + +#ifndef NMF_TYPEDEF_H_ +#define NMF_TYPEDEF_H_ + +#undef PRIVATE +#define PRIVATE static //!< Private macro declaration \ingroup NMF_PRIMITIVE_TYPE + +#undef PUBLIC +#ifdef __cplusplus +#define PUBLIC extern "C" //!< Public macro declaration \ingroup NMF_PRIMITIVE_TYPE +#else +#define PUBLIC extern //!< Public macro declaration \ingroup NMF_PRIMITIVE_TYPE +#endif + +#if defined(__SYMBIAN32__) +/*! + * \brief Declared IMPORT_SHARED to allow dll/shared library creation + * + * \note Value depend on OS. + * + * \ingroup NMF_PRIMITIVE_TYPE + */ + #ifndef IMPORT_SHARED + #define IMPORT_SHARED IMPORT_C + #endif +/*! + * \brief Declared EXPORT_SHARED to allow dll/shared library creation + * + * \note Value depend on OS. + * + * \ingroup NMF_PRIMITIVE_TYPE + */ + #ifndef EXPORT_SHARED + #define EXPORT_SHARED EXPORT_C + #endif +#elif defined(LINUX) + #ifndef IMPORT_SHARED + #define IMPORT_SHARED + #endif + #ifndef EXPORT_SHARED + #define EXPORT_SHARED __attribute__ ((visibility ("default"))) + #endif +#else + #ifndef IMPORT_SHARED + #define IMPORT_SHARED + #endif + + #ifndef EXPORT_SHARED + #define EXPORT_SHARED + #endif +#endif + +/* + * Definition of type that are used by interface. + */ + +typedef unsigned int t_uword; +typedef signed int t_sword; + +#ifdef __flexcc2__ + +typedef unsigned char t_bool; + +#ifdef __mode16__ + +typedef signed char t_sint8; +typedef signed int t_sint16; +typedef signed long t_sint24; +typedef signed long t_sint32; +typedef signed long long t_sint40; +// bigger type are not handle on this mode + +typedef unsigned char t_uint8; +typedef unsigned int t_uint16; +typedef unsigned long t_uint24; +typedef unsigned long t_uint32; +typedef unsigned long long t_uint40; +// bigger type are not handle on this mode + +// shared addr type definition +//typedef __SHARED16 t_uint16 * t_shared_addr; +typedef void * t_shared_field; + +#else /* __mode16__ -> __mode24__ */ + +typedef signed char t_sint8; +typedef signed short t_sint16; +typedef signed int t_sint24; +typedef signed long t_sint32; +typedef signed long t_sint40; +typedef signed long t_sint48; +typedef signed long long t_sint56; + +typedef unsigned char t_uint8; +typedef unsigned short t_uint16; +typedef unsigned int t_uint24; +typedef unsigned long t_uint32; +typedef unsigned long t_uint40; +typedef unsigned long t_uint48; +typedef unsigned long long t_uint56; + +// shared addr type definition +//typedef __SHARED16 t_uint16 * t_shared_addr; +typedef t_uint24 t_shared_field; + +#endif /* MMDSP mode24 */ + +// shared register (ARM world) type definition +#if 0 +typedef struct { + t_uint16 lsb; + t_uint16 msb; +} t_shared_reg; +#endif +typedef t_uint32 t_shared_reg; + +typedef t_uint32 t_physical_address; + +#include <stwdsp.h> + +#else /* __flexcc2__ -> RISC 32 Bits */ + +#ifndef _HCL_DEFS_H +typedef unsigned char t_bool; //!< Boolean primitive type \ingroup NMF_PRIMITIVE_TYPE + +typedef unsigned char t_uint8; //!< Unsigned 8 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef signed char t_sint8; //!< Signed 8 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef unsigned short t_uint16; //!< Unsigned 16 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef signed short t_sint16; //!< Signed 16 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef unsigned long t_uint32; //!< Unsigned 32 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef signed long t_sint32; //!< Signed 32 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef unsigned long long t_uint64; //!< Unsigned 64 bits primitive type \ingroup NMF_PRIMITIVE_TYPE +typedef signed long long t_sint64; //!< Signed 64 bits primitive type \ingroup NMF_PRIMITIVE_TYPE + +typedef t_uint32 t_physical_address; +#endif /* _HCL_DEFS_H */ + +typedef unsigned long t_uint24; +typedef signed long t_sint24; +typedef unsigned long long t_uint48; +typedef signed long long t_sint48; + +// shared addr type definition +typedef t_uint32 t_shared_addr; + +// shared register (ARM world) type definition +typedef t_uint32 t_shared_reg; +typedef t_uint32 t_shared_field; + +#endif /* RISC 32 Bits */ + +/* + * Define boolean type + */ +#undef FALSE +#define FALSE 0 //!< Boolean FALSE value +#undef TRUE +#define TRUE 1 //!< Boolean TRUE value + +#ifndef NULL + #if defined __flexcc2__ || defined __SYMBIAN32__ + #define NULL (0x0) //!< Null type \ingroup NMF_PRIMITIVE_TYPE + #else + #define NULL ((void*)0x0) //!< Null type \ingroup NMF_PRIMITIVE_TYPE + #endif +#endif + +typedef t_uint32 t_nmf_component_handle; + +#endif /* NMF_TYPEDEF_H_ */ |