Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / mt_typedefs.h
1 #ifndef _TYPEDEFS_H
2 #define _TYPEDEFS_H
3
4 #include <linux/bug.h>
5
6 // ---------------------------------------------------------------------------
7 // Basic Type Definitions
8 // ---------------------------------------------------------------------------
9
10 typedef volatile unsigned char *P_kal_uint8;
11 typedef volatile unsigned short *P_kal_uint16;
12 typedef volatile unsigned int *P_kal_uint32;
13
14 typedef long LONG;
15 typedef unsigned char UBYTE;
16 typedef short SHORT;
17
18 typedef signed char kal_int8;
19 typedef signed short kal_int16;
20 typedef signed int kal_int32;
21 typedef long long kal_int64;
22 typedef unsigned char kal_uint8;
23 typedef unsigned short kal_uint16;
24 typedef unsigned int kal_uint32;
25 typedef unsigned long long kal_uint64;
26 typedef char kal_char;
27
28 typedef unsigned int *UINT32P;
29 typedef volatile unsigned short *UINT16P;
30 typedef volatile unsigned char *UINT8P;
31 typedef unsigned char *U8P;
32
33 typedef volatile unsigned char *P_U8;
34 typedef volatile signed char *P_S8;
35 typedef volatile unsigned short *P_U16;
36 typedef volatile signed short *P_S16;
37 typedef volatile unsigned int *P_U32;
38 typedef volatile signed int *P_S32;
39 typedef unsigned long long *P_U64;
40 typedef signed long long *P_S64;
41
42 typedef unsigned char U8;
43 typedef signed char S8;
44 typedef unsigned short U16;
45 typedef signed short S16;
46 typedef unsigned int U32;
47 typedef signed int S32;
48 typedef unsigned long long U64;
49 typedef signed long long S64;
50 //typedef unsigned char bool;
51
52 typedef unsigned char UINT8;
53 typedef unsigned short UINT16;
54 typedef unsigned int UINT32;
55 typedef unsigned short USHORT;
56 typedef signed char INT8;
57 typedef signed short INT16;
58 typedef signed int INT32;
59 typedef unsigned int DWORD;
60 typedef void VOID;
61 typedef unsigned char BYTE;
62 typedef float FLOAT;
63
64 typedef char *LPCSTR;
65 typedef short *LPWSTR;
66
67
68 // ---------------------------------------------------------------------------
69 // Constants
70 // ---------------------------------------------------------------------------
71
72 #define IMPORT EXTERN
73 #ifndef __cplusplus
74 #define EXTERN extern
75 #else
76 #define EXTERN extern "C"
77 #endif
78 #define LOCAL static
79 #define GLOBAL
80 #define EXPORT GLOBAL
81
82 #define EQ ==
83 #define NEQ !=
84 #define AND &&
85 #define OR ||
86 #define XOR(A,B) ((!(A) AND (B)) OR ((A) AND !(B)))
87
88 #ifndef FALSE
89 #define FALSE (0)
90 #endif
91
92 #ifndef TRUE
93 #define TRUE (1)
94 #endif
95
96 #ifndef NULL
97 #define NULL (0)
98 #endif
99
100 //enum boolean {false, true};
101 enum {RX, TX, NONE};
102
103 #ifndef BOOL
104 typedef unsigned char BOOL;
105 #endif
106
107 typedef enum {
108 KAL_FALSE = 0,
109 KAL_TRUE = 1,
110 } kal_bool;
111
112
113 // ---------------------------------------------------------------------------
114 // Type Casting
115 // ---------------------------------------------------------------------------
116
117 #define AS_INT32(x) (*(INT32 *)((void*)x))
118 #define AS_INT16(x) (*(INT16 *)((void*)x))
119 #define AS_INT8(x) (*(INT8 *)((void*)x))
120
121 #define AS_UINT32(x) (*(UINT32 *)((void*)x))
122 #define AS_UINT16(x) (*(UINT16 *)((void*)x))
123 #define AS_UINT8(x) (*(UINT8 *)((void*)x))
124
125
126 // ---------------------------------------------------------------------------
127 // Register Manipulations
128 // ---------------------------------------------------------------------------
129
130 #define READ_REGISTER_UINT32(reg) \
131 (*(volatile UINT32 * const)(reg))
132
133 #define WRITE_REGISTER_UINT32(reg, val) \
134 (*(volatile UINT32 * const)(reg)) = (val)
135
136 #define READ_REGISTER_UINT16(reg) \
137 (*(volatile UINT16 * const)(reg))
138
139 #define WRITE_REGISTER_UINT16(reg, val) \
140 (*(volatile UINT16 * const)(reg)) = (val)
141
142 #define READ_REGISTER_UINT8(reg) \
143 (*(volatile UINT8 * const)(reg))
144
145 #define WRITE_REGISTER_UINT8(reg, val) \
146 (*(volatile UINT8 * const)(reg)) = (val)
147
148 #define INREG8(x) READ_REGISTER_UINT8((UINT8*)((void*)(x)))
149 #define OUTREG8(x, y) WRITE_REGISTER_UINT8((UINT8*)((void*)(x)), (UINT8)(y))
150 #define SETREG8(x, y) OUTREG8(x, INREG8(x)|(y))
151 #define CLRREG8(x, y) OUTREG8(x, INREG8(x)&~(y))
152 #define MASKREG8(x, y, z) OUTREG8(x, (INREG8(x)&~(y))|(z))
153
154 #define INREG16(x) READ_REGISTER_UINT16((UINT16*)((void*)(x)))
155 #define OUTREG16(x, y) WRITE_REGISTER_UINT16((UINT16*)((void*)(x)),(UINT16)(y))
156 #define SETREG16(x, y) OUTREG16(x, INREG16(x)|(y))
157 #define CLRREG16(x, y) OUTREG16(x, INREG16(x)&~(y))
158 #define MASKREG16(x, y, z) OUTREG16(x, (INREG16(x)&~(y))|(z))
159
160 #define INREG32(x) READ_REGISTER_UINT32((UINT32*)((void*)(x)))
161 #define OUTREG32(x, y) WRITE_REGISTER_UINT32((UINT32*)((void*)(x)), (UINT32)(y))
162 #define SETREG32(x, y) OUTREG32(x, INREG32(x)|(y))
163 #define CLRREG32(x, y) OUTREG32(x, INREG32(x)&~(y))
164 #define MASKREG32(x, y, z) OUTREG32(x, (INREG32(x)&~(y))|(z))
165
166
167 #define DRV_Reg8(addr) INREG8(addr)
168 #define DRV_WriteReg8(addr, data) OUTREG8(addr, data)
169 #define DRV_SetReg8(addr, data) SETREG8(addr, data)
170 #define DRV_ClrReg8(addr, data) CLRREG8(addr, data)
171
172 #define DRV_Reg16(addr) INREG16(addr)
173 #define DRV_WriteReg16(addr, data) OUTREG16(addr, data)
174 #define DRV_SetReg16(addr, data) SETREG16(addr, data)
175 #define DRV_ClrReg16(addr, data) CLRREG16(addr, data)
176
177 #define DRV_Reg32(addr) INREG32(addr)
178 #define DRV_WriteReg32(addr, data) OUTREG32(addr, data)
179 #define DRV_SetReg32(addr, data) SETREG32(addr, data)
180 #define DRV_ClrReg32(addr, data) CLRREG32(addr, data)
181
182 // !!! DEPRECATED, WILL BE REMOVED LATER !!!
183 #define DRV_Reg(addr) DRV_Reg16(addr)
184 #define DRV_WriteReg(addr, data) DRV_WriteReg16(addr, data)
185 #define DRV_SetReg(addr, data) DRV_SetReg16(addr, data)
186 #define DRV_ClrReg(addr, data) DRV_ClrReg16(addr, data)
187
188
189 // ---------------------------------------------------------------------------
190 // Compiler Time Deduction Macros
191 // ---------------------------------------------------------------------------
192
193 #define _MASK_OFFSET_1(x, n) ((x) & 0x1) ? (n) :
194 #define _MASK_OFFSET_2(x, n) _MASK_OFFSET_1((x), (n)) _MASK_OFFSET_1((x) >> 1, (n) + 1)
195 #define _MASK_OFFSET_4(x, n) _MASK_OFFSET_2((x), (n)) _MASK_OFFSET_2((x) >> 2, (n) + 2)
196 #define _MASK_OFFSET_8(x, n) _MASK_OFFSET_4((x), (n)) _MASK_OFFSET_4((x) >> 4, (n) + 4)
197 #define _MASK_OFFSET_16(x, n) _MASK_OFFSET_8((x), (n)) _MASK_OFFSET_8((x) >> 8, (n) + 8)
198 #define _MASK_OFFSET_32(x, n) _MASK_OFFSET_16((x), (n)) _MASK_OFFSET_16((x) >> 16, (n) + 16)
199
200 #define MASK_OFFSET_ERROR (0xFFFFFFFF)
201
202 #define MASK_OFFSET(x) (_MASK_OFFSET_32(x, 0) MASK_OFFSET_ERROR)
203
204
205 // ---------------------------------------------------------------------------
206 // Assertions
207 // ---------------------------------------------------------------------------
208
209 #ifndef ASSERT
210 #define ASSERT(expr) BUG_ON(!(expr))
211 #endif
212
213 #ifndef NOT_IMPLEMENTED
214 #define NOT_IMPLEMENTED() BUG_ON(1)
215 #endif
216
217 #define STATIC_ASSERT(pred) STATIC_ASSERT_X(pred, __LINE__)
218 #define STATIC_ASSERT_X(pred, line) STATIC_ASSERT_XX(pred, line)
219 #define STATIC_ASSERT_XX(pred, line) \
220 extern char assertion_failed_at_##line[(pred) ? 1 : -1]
221
222 // ---------------------------------------------------------------------------
223 // Resolve Compiler Warnings
224 // ---------------------------------------------------------------------------
225
226 #define NOT_REFERENCED(x) { (x) = (x); }
227
228
229 // ---------------------------------------------------------------------------
230 // Utilities
231 // ---------------------------------------------------------------------------
232
233 #define MAXIMUM(A,B) (((A)>(B))?(A):(B))
234 #define MINIMUM(A,B) (((A)<(B))?(A):(B))
235
236 #define ARY_SIZE(x) (sizeof((x)) / sizeof((x[0])))
237 #define DVT_DELAYMACRO(u4Num) \
238 { \
239 UINT32 u4Count = 0 ; \
240 for (u4Count = 0; u4Count < u4Num; u4Count++ ); \
241 } \
242
243 #define A68351B 0
244 #define B68351B 1
245 #define B68351D 2
246 #define B68351E 3
247 #define UNKNOWN_IC_VERSION 0xFF
248
249
250 #endif // _TYPEDEFS_H
251