/*++
* Copyright (c) 2008-2013 WonderMedia Technologies, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* WonderMedia Technologies, Inc.
* 4F, 533, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C
--*/
#ifndef __COMMON_DEF_H
#define __COMMON_DEF_H
/*
* Common Constant define
*/
/*
#define TRUE 1
#define FALSE !TRUE
#define SUCCESS 1
#define FAIL !SUCCESS
#ifndef NULL
#define NULL 0
#endif
*/
/*
* Register pointer and value definitions moved to hardware.h
*/
/*
* Some type-definitions used by Gatien and Tia, keep them temporaty.
*/
#define U32 unsigned int
#define U16 unsigned short
#define S32 int
#define S16 short int
#define U8 unsigned char
#define S8 char
/*
* Bits definitions
*/
#define BIT0 0x00000001
#define BIT1 0x00000002
#define BIT2 0x00000004
#define BIT3 0x00000008
#define BIT4 0x00000010
#define BIT5 0x00000020
#define BIT6 0x00000040
#define BIT7 0x00000080
#define BIT8 0x00000100
#define BIT9 0x00000200
#define BIT10 0x00000400
#define BIT11 0x00000800
#define BIT12 0x00001000
#define BIT13 0x00002000
#define BIT14 0x00004000
#define BIT15 0x00008000
#define BIT16 0x00010000
#define BIT17 0x00020000
#define BIT18 0x00040000
#define BIT19 0x00080000
#define BIT20 0x00100000
#define BIT21 0x00200000
#define BIT22 0x00400000
#define BIT23 0x00800000
#define BIT24 0x01000000
#define BIT25 0x02000000
#define BIT26 0x04000000
#define BIT27 0x08000000
#define BIT28 0x10000000
#define BIT29 0x20000000
#define BIT30 0x40000000
#define BIT31 0x80000000
/*
* Size definitions, I recommend to use SZ_xxx in
* But I still keep them temporary.
*/
#define SIZE_1B 0x00000001
#define SIZE_2B 0x00000002
#define SIZE_4B 0x00000004
#define SIZE_8B 0x00000008
#define SIZE_16B 0x00000010
#define SIZE_32B 0x00000020
#define SIZE_64B 0x00000040
#define SIZE_128B 0x00000080
#define SIZE_256B 0x00000100
#define SIZE_512B 0x00000200
#define SIZE_1KB 0x00000400
#define SIZE_2KB 0x00000800
#define SIZE_4KB 0x00001000
#define SIZE_8KB 0x00002000
#define SIZE_16KB 0x00004000
#define SIZE_32KB 0x00008000
#define SIZE_64KB 0x00010000
#define SIZE_128KB 0x00020000
#define SIZE_256KB 0x00040000
#define SIZE_512KB 0x00080000
#define SIZE_1MB 0x00100000
#define SIZE_2MB 0x00200000
#define SIZE_4MB 0x00400000
#define SIZE_8MB 0x00800000
#define SIZE_16MB 0x01000000
#define SIZE_32MB 0x02000000
#define SIZE_64MB 0x04000000
#define SIZE_128MB 0x08000000
#define SIZE_256MB 0x10000000
#define SIZE_512MB 0x20000000
#define SIZE_1GB 0x40000000
#define SIZE_2GB 0x80000000
/*
* Get any byte from a word
*/
#define GET_LE_BYTE0(x) ((unsigned char)((x) & 0xFF))
#define GET_LE_BYTE1(x) ((unsigned char)((x) >> 8 & 0xFF))
#define GET_LE_BYTE2(x) ((unsigned char)((x) >> 16 & 0xFF))
#define GET_LE_BYTE3(x) ((unsigned char)((x) >> 24 & 0xFF))
/*
* Following are kept for Ellope temporary.
*
* Harry to Ellope: If you think they are no more need, just remove the
* following section on VSS.
*/
/* !!! Special Note !!! for packed
*
* use packed that will treat all member as "char" type.
* Please use "packed" very carefully.
*
* We should take care to use "packed"
* Make sure that each item in the structure will have the same align.
*
*/
#ifdef __GNUC__
#define MAKE_PACKED(X) X __attribute__((packed))
#elif defined (__arm)
#define MAKE_PACKED(X) __packed X
#define __FUNCTION__ __func__
#else
#error "Unknown Compile"
#endif
/*
Example for packed structure:
------------------------------
typedef MAKE_PACKED( struct Test1_s
{
unsigned short s1 ;
unsigned short s2 ;
unsigned int i1 ;
unsigned int i2 ;
} ) Test1_t ;
*/
#endif /* __COMMON_DEF_H */