summaryrefslogtreecommitdiff
path: root/drivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h')
-rwxr-xr-xdrivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h343
1 files changed, 343 insertions, 0 deletions
diff --git a/drivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h b/drivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h
new file mode 100755
index 000000000000..a90567ce278c
--- /dev/null
+++ b/drivers/mxc/vpu-malone/Malone_Firmware/Incl/basetype.h
@@ -0,0 +1,343 @@
+/***************************************************
+ Copyright (c) 2015 Amphion Semiconductor Ltd
+ All rights reserved.
+ ***************************************************
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ ****************************************************
+ Filename: basetype.h
+ Description: Public header file for use in all FW
+ Author: Media IP FW team (Belfast)
+
+ ************************************************/
+
+#ifndef _BASETYPE_H_
+#define _BASETYPE_H_
+#ifndef VPU_KERNEL_BUILD
+#include <stdint.h>
+#include <stdio.h>
+#else
+#include <linux/types.h>
+#include <linux/kernel.h>
+#endif
+
+#ifdef WIN32
+#if _MSC_VER
+typedef unsigned __int64 u_int64;
+#else
+typedef unsigned long long u_int64;
+#endif
+#else
+typedef unsigned long long u_int64;
+#endif
+
+#ifdef MALONE_64BIT_ADDR
+typedef uint64_t uint_addr;
+#else
+typedef uint32_t uint_addr;
+#endif
+
+typedef uint32_t u_int32;
+typedef uint16_t u_int16;
+typedef uint8_t u_int8;
+
+//Alignment Macro
+#define ALIGN_SIZE(x) (((x)+sizeof(u_int32) - 1)/(sizeof(u_int32)))
+
+#ifdef WIN32
+#if _MSC_VER
+typedef signed __int64 int64;
+#else
+typedef signed long long int64;
+#endif
+#else
+typedef signed long long int64;
+#endif
+
+typedef int32_t int32;
+typedef int16_t int16;
+typedef int8_t int8;
+typedef unsigned char BYTE;
+
+// XXX:TAS No idea what all this ifdefing is about
+// should just need the C++ ifdef
+#ifndef HOST_BUILD
+#ifndef COREPLAY_API
+#ifndef _MSC_VER
+#ifndef VPU_KERNEL_BUILD
+typedef unsigned int bool;
+#endif
+#endif
+#else
+#ifndef _MSC_VER
+typedef unsigned int bool;
+#endif
+#endif
+#else
+ #ifndef __cplusplus
+ // bool is defined in cpp
+ typedef unsigned int bool;
+ #endif /* __cplusplus */
+#endif
+
+typedef unsigned char BOOLEAN;
+
+#define VOID_PARAMS void
+
+#define INT32 int32
+
+#define UINT8 u_int8
+#define UINT16 u_int16
+#define UINT32 u_int32
+#define UINT64 u_int64
+#ifdef _MSC_VER
+#define BOOL int
+#else
+#define BOOL bool
+#endif
+#define SINT8 int8
+#define SINT16 int16
+#define SINT32 int32
+#ifdef WIN32
+#define SINT64 int64
+#define SINT64_MIN (-9223372036854775807i64 - 1i64)
+#else
+#define SINT64 int64
+#define SINT64_MIN (-9223372036854775807LL - 1LL)
+#endif
+
+#ifndef VPU_KERNEL_BUILD
+#define SUCCESS 0
+#define FAILURE -1
+#endif
+
+#ifdef __cplusplus
+#ifndef FALSE
+ #define FALSE 0
+#endif
+#ifndef TRUE
+ #define TRUE 1
+#endif
+#else // 'C'
+#ifndef false
+ #define false 0
+#endif
+#ifndef true
+ #define true 1
+#endif
+
+#ifndef FALSE
+ #define FALSE 0
+#endif
+#ifndef TRUE
+ #define TRUE 1
+#endif
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef OKAY
+#define OKAY 0
+#endif
+
+#ifndef ZERO
+#define ZERO 0
+#endif
+
+// Define more error types as used - 1st is generic
+#define MEDIAIP_ERROR_FLAG 1
+#define MEDIAIP_END_ES 2
+#define MEDIAIP_DECODER_EXIT 3
+#define MEDIAIP_ENCODER_EXIT 4
+#define MEDIAIP_VC1D_NOFREEFRAMES 5
+#define MEDIAIP_DECODER_SKIP 6
+
+/* Alignment macros - align address to a specific byte alignment */
+#define MEDIAIP_ALIGN_16(addr) addr = (addr + (( 0x1 << 0x4 ) - 0x1 ) ) & ~((( 0x1 << 0x4 ) - 0x1 ))
+#define MEDIAIP_ALIGN_32(addr) addr = (addr + (( 0x1 << 0x5 ) - 0x1 ) ) & ~((( 0x1 << 0x5 ) - 0x1 ))
+#define MEDIAIP_ALIGN_64(addr) addr = (addr + (( 0x1 << 0x6 ) - 0x1 ) ) & ~((( 0x1 << 0x6 ) - 0x1 ))
+#define MEDIAIP_ALIGN_128(addr) addr = (addr + (( 0x1 << 0x7 ) - 0x1 ) ) & ~((( 0x1 << 0x7 ) - 0x1 ))
+#define MEDIAIP_ALIGN_256(addr) addr = (addr + (( 0x1 << 0x8 ) - 0x1 ) ) & ~((( 0x1 << 0x8 ) - 0x1 ))
+#define MEDIAIP_ALIGN_512(addr) addr = (addr + (( 0x1 << 0x9 ) - 0x1 ) ) & ~((( 0x1 << 0x9 ) - 0x1 ))
+
+/* used when declaring single bitfields
+*/
+#define FLAG 1
+
+#ifndef WIN32
+ #if CPU == MIPS
+ #define DOUBLE_ALIGN __attribute__((aligned(8)))
+ #define SECTION(sec) __attribute__ ((section (#sec)))
+ #define ALIGNED(ali) __attribute__ ((aligned (ali)))
+ #else
+ #define DOUBLE_ALIGN
+ #endif
+#endif // win32
+/* We need to stop defining ARM and use only CPU == ARM !!! */
+/* Lose all #ifdef ARM from code */
+
+/* - Only for RCVCT */
+#ifdef __CC_ARM
+ #define ALIGN_8_u_int8 __align(8) u_int8
+ #define ALIGN_8_u_int16 __align(8) u_int16
+ #define ALIGN_8_u_int32 __align(8) u_int32
+ #define ALIGN_256_u_int16 __align(256) u_int16
+ #define ALIGN_256_u_int32 __align(256) u_int32
+ #define ALIGN_1024_u_int32 __align(1024) u_int32
+ #define ALIGN_1024_u_int64 __align(1024) u_int64
+ #define ALIGN_1024 __align(1024)
+#else
+/* All others? */
+ #define ALIGN_8_u_int8 u_int8 __attribute__((aligned(8)))
+ #define ALIGN_8_u_int16 u_int16 __attribute__((aligned(8)))
+ #define ALIGN_8_u_int32 u_int32 __attribute__((aligned(8)))
+ #define ALIGN_256_u_int16 u_int16 __attribute__((aligned(256)))
+ #define ALIGN_256_u_int32 u_int32 __attribute__((aligned(256)))
+ #define ALIGN_1024_u_int32 u_int32 __attribute__((aligned(1024)))
+ #define ALIGN_1024_u_int64 u_int64 __attribute__((aligned(1024)))
+ #define ALIGN_1024 __attribute__((aligned(1024)))
+#endif
+
+#ifndef COREPLAY_API
+#if RTOS == UCOS
+
+/* Additions for uCOS */
+
+typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
+typedef signed char INT8S; /* Signed 8 bit quantity */
+typedef unsigned int INT16U; /* Unsigned 16 bit quantity */
+typedef signed int INT16S; /* Signed 16 bit quantity */
+typedef unsigned long INT32U; /* Unsigned 32 bit quantity */
+typedef signed long INT32S; /* Signed 32 bit quantity */
+typedef float FP32; /* Single precision floating point */
+typedef double FP64; /* Double precision floating point */
+
+typedef unsigned int OS_STK; /* Each stack entry is 16-bit wide */
+typedef unsigned int OS_CPU_SR; /* Define size of CPU status register (PSR = 32 bits) */
+
+#define UBYTE INT8U /* ... to uC/OS V1.xx. Not actually needed for ... */
+#define WORD INT16S /* ... uC/OS-II. */
+#define UWORD INT16U
+#define LONG INT32S
+#define ULONG INT32U
+
+#endif
+
+typedef signed short int SHORT; /* Signed 16 bit quantity */
+typedef unsigned short USHORT;
+
+#endif /* COREPLAY_API */
+
+/****************************************************************************/
+/* */
+/* Hardware register access macros */
+/* */
+/****************************************************************************/
+
+#define RMO(y) \
+ ( ((y) & 0x00000001) ? 0 : \
+ ( ((y) & 0x00000002) ? 1 : \
+ ( ((y) & 0x00000004) ? 2 : \
+ ( ((y) & 0x00000008) ? 3 : \
+ ( ((y) & 0x00000010) ? 4 : \
+ ( ((y) & 0x00000020) ? 5 : \
+ ( ((y) & 0x00000040) ? 6 : \
+ ( ((y) & 0x00000080) ? 7 : \
+ ( ((y) & 0x00000100) ? 8 : \
+ ( ((y) & 0x00000200) ? 9 : \
+ ( ((y) & 0x00000400) ? 10 : \
+ ( ((y) & 0x00000800) ? 11 : \
+ ( ((y) & 0x00001000) ? 12 : \
+ ( ((y) & 0x00002000) ? 13 : \
+ ( ((y) & 0x00004000) ? 14 : \
+ ( ((y) & 0x00008000) ? 15 : \
+ ( ((y) & 0x00010000) ? 16 : \
+ ( ((y) & 0x00020000) ? 17 : \
+ ( ((y) & 0x00040000) ? 18 : \
+ ( ((y) & 0x00080000) ? 19 : \
+ ( ((y) & 0x00100000) ? 20 : \
+ ( ((y) & 0x00200000) ? 21 : \
+ ( ((y) & 0x00400000) ? 22 : \
+ ( ((y) & 0x00800000) ? 23 : \
+ ( ((y) & 0x01000000) ? 24 : \
+ ( ((y) & 0x02000000) ? 25 : \
+ ( ((y) & 0x04000000) ? 26 : \
+ ( ((y) & 0x08000000) ? 27 : \
+ ( ((y) & 0x10000000) ? 28 : \
+ ( ((y) & 0x20000000) ? 29 : \
+ ( ((y) & 0x40000000) ? 30 : \
+ ( ((y) & 0x80000000) ? 31 : 0 ))))))))))))))))))))))))))))))))
+
+/*
+ * Access macros used to get, set/clear bits within a hardware register.
+ * These macros *do not* perform any automatic shifting of bits and are
+ * meant to be used with bit definitions which include their encoded bit
+ * position within the register definition (e.g. an enable bit).
+ */
+
+#ifdef VSIM_ENV
+ UINT32 MEDIAIP_GET(UINT32,UINT32);
+ void MEDIAIP_SET(UINT32,UINT32,UINT32);
+ #define MEDIAIP_PUT(reg,mask,val) { \
+ VSimAPI_WriteRegister((UINT32) reg, val); \
+ }
+ UINT32 MEDIAIP_SM_GET(volatile UINT32 *);
+ void MEDIAIP_SM_SET(volatile UINT32 *, UINT32, UINT32 );
+ void MEDIAIP_SM_PUT(volatile UINT32 *, UINT32 );
+
+#else
+
+ #define MEDIAIP_GET(reg,mask) (*(LPREG)(reg) & (mask))
+ #define MEDIAIP_SET(reg,mask,val) (*(LPREG)(reg)) = ((*(LPREG)(reg) & ~(mask)) | ((val) & (mask)))
+ #define MEDIAIP_PUT(reg,val) (*(LPREG)(reg)) = (val)
+ #define MEDIAIP_SM_GET(x) (*(x))
+ #define MEDIAIP_SM_SET(a,b,c) (*(a)) = (((*(a)) & ~(b)) | ((c) & (b)))
+ #define MEDIAIP_SM_PUT(a,b) (*(a)) = (b)
+
+// IDJ: Consider using this?
+// No- there are only a few instances where this would make a difference.
+//efine MEDIAIP_SET(reg,mask,val) (*(LPREG)(reg)) = ((~(mask) ? 0 : (*(LPREG)(reg) & ~(mask))) | ((val) & (mask)))
+
+#endif
+
+/*
+ * Access macros used to get & set a numerical value within a hardware
+ * register. These macros perform automatic shifting (based on the mask)
+ * of the numerical value used. These macros are useful for setting a
+ * numerical value into a multi-bit contiguous field within a register.
+ */
+#define MEDIAIP_GET_VAL(reg,mask) ((*(LPREG)(reg) & (mask)) >> RMO(mask))
+#define MEDIAIP_SET_VAL(reg,mask,val) (*(LPREG)(reg)) = \
+ ((*(LPREG)(reg) & ~(mask)) | (((unsigned long)(val) << RMO(mask)) & (mask)))
+
+#define MEDIAIP_REGWRITE(reg,val) *((LPREG)(reg)) = (val)
+#define MEDIAIP_REGREAD(reg) *((LPREG)(reg))
+
+
+#define MEDIAIP_SET_REG(reg,mask,val) reg = ((reg & ~(mask)) | ((val) & (mask)))
+#define MEDIAIP_GET_REG(reg,mask) reg & mask
+
+typedef unsigned long HW_DWORD; /* was u_int32; */
+typedef unsigned short HW_WORD; /* was u_int16; */
+typedef unsigned char HW_BYTE; /* was u_int8; */
+typedef unsigned int HW_BOOL; /* was bool; */
+typedef void HW_VOID;
+
+typedef volatile u_int32 *LPREG;
+
+#ifdef __CC_ARM
+#define FUNC_INLINE __inline
+#else
+#define FUNC_INLINE inline
+#endif
+
+#endif /* _BASETYPE_H_ */
+
+/* End of File */
+