staging: csr: remove CsrInt32 typedef
[linux-2.6.git] / drivers / staging / csr / csr_time.h
blob286b2895915d9764f44edced18bbcfe4c736f667
1 #ifndef CSR_TIME_H__
2 #define CSR_TIME_H__
3 /*****************************************************************************
5 (c) Cambridge Silicon Radio Limited 2010
6 All rights reserved and confidential information of CSR
8 Refer to LICENSE.txt included with this source for details
9 on the license terms.
11 *****************************************************************************/
13 #include "csr_types.h"
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
19 /*******************************************************************************
21 NAME
22 CsrTime
24 DESCRIPTION
25 Type to hold a value describing the current system time, which is a
26 measure of time elapsed since some arbitrarily defined fixed time
27 reference, usually associated with system startup.
29 *******************************************************************************/
30 typedef u32 CsrTime;
33 /*******************************************************************************
35 NAME
36 CsrTimeUtc
38 DESCRIPTION
39 Type to hold a value describing a UTC wallclock time expressed in
40 seconds and milliseconds elapsed since midnight January 1st 1970.
42 *******************************************************************************/
43 typedef struct
45 u32 sec;
46 u16 msec;
47 } CsrTimeUtc;
50 /*******************************************************************************
52 NAME
53 CsrTimeGet
55 DESCRIPTION
56 Returns the current system time in a low and a high part. The low part
57 is expressed in microseconds. The high part is incremented when the low
58 part wraps to provide an extended range.
60 The caller may provide a NULL pointer as the high parameter. In this case
61 the function just returns the low part and ignores the high parameter.
63 Although the time is expressed in microseconds the actual resolution is
64 platform dependent and can be less. It is recommended that the
65 resolution is at least 10 milliseconds.
67 PARAMETERS
68 high - Pointer to variable that will receive the high part of the
69 current system time. Passing NULL is valid.
71 RETURNS
72 Low part of current system time in microseconds.
74 *******************************************************************************/
75 CsrTime CsrTimeGet(CsrTime *high);
78 /*******************************************************************************
80 NAME
81 CsrTimeUtcGet
83 DESCRIPTION
84 Get the current system wallclock time, and optionally the current system
85 time in a low and a high part as would have been returned by
86 CsrTimeGet.
88 Although CsrTimeUtc is expressed in seconds and milliseconds, the actual
89 resolution is platform dependent, and can be less. It is recommended
90 that the resolution is at least 1 second.
92 PARAMETERS
93 tod - Pointer to variable that will receive the current system
94 wallclock time.
95 low - The low part of the current system time in microseconds. Passing
96 NULL is valid.
97 high - The high part of the current system time in microseconds. Passing
98 NULL is valid.
100 *******************************************************************************/
101 void CsrTimeUtcGet(CsrTimeUtc *tod, CsrTime *low, CsrTime *high);
104 /*------------------------------------------------------------------*/
105 /* CsrTime Macros */
106 /*------------------------------------------------------------------*/
108 /*----------------------------------------------------------------------------*
109 * NAME
110 * CsrTimeAdd
112 * DESCRIPTION
113 * Add two time values. Adding the numbers can overflow the range of a
114 * CsrTime, so the user must be cautious.
116 * RETURNS
117 * CsrTime - the sum of "t1" and "t2".
119 *----------------------------------------------------------------------------*/
120 #define CsrTimeAdd(t1, t2) ((t1) + (t2))
122 /*----------------------------------------------------------------------------*
123 * NAME
124 * CsrTimeSub
126 * DESCRIPTION
127 * Subtract two time values. Subtracting the numbers can provoke an
128 * underflow, so the user must be cautious.
130 * RETURNS
131 * CsrTime - "t1" - "t2".
133 *----------------------------------------------------------------------------*/
134 #define CsrTimeSub(t1, t2) ((s32) (t1) - (s32) (t2))
136 /*----------------------------------------------------------------------------*
137 * NAME
138 * CsrTimeEq
140 * DESCRIPTION
141 * Compare two time values.
143 * RETURNS
144 * !0 if "t1" equal "t2", else 0.
146 *----------------------------------------------------------------------------*/
147 #define CsrTimeEq(t1, t2) ((t1) == (t2))
149 /*----------------------------------------------------------------------------*
150 * NAME
151 * CsrTimeGt
153 * DESCRIPTION
154 * Compare two time values.
156 * RETURNS
157 * !0 if "t1" is greater than "t2", else 0.
159 *----------------------------------------------------------------------------*/
160 #define CsrTimeGt(t1, t2) (CsrTimeSub((t1), (t2)) > 0)
162 /*----------------------------------------------------------------------------*
163 * NAME
164 * CsrTimeGe
166 * DESCRIPTION
167 * Compare two time values.
169 * RETURNS
170 * !0 if "t1" is greater than, or equal to "t2", else 0.
172 *----------------------------------------------------------------------------*/
173 #define CsrTimeGe(t1, t2) (CsrTimeSub((t1), (t2)) >= 0)
175 /*----------------------------------------------------------------------------*
176 * NAME
177 * CsrTimeLt
179 * DESCRIPTION
180 * Compare two time values.
182 * RETURNS
183 * !0 if "t1" is less than "t2", else 0.
185 *----------------------------------------------------------------------------*/
186 #define CsrTimeLt(t1, t2) (CsrTimeSub((t1), (t2)) < 0)
188 /*----------------------------------------------------------------------------*
189 * NAME
190 * CsrTimeLe
192 * DESCRIPTION
193 * Compare two time values.
195 * RETURNS
196 * !0 if "t1" is less than, or equal to "t2", else 0.
198 *----------------------------------------------------------------------------*/
199 #define CsrTimeLe(t1, t2) (CsrTimeSub((t1), (t2)) <= 0)
201 #ifdef __cplusplus
203 #endif
205 #endif