1 /*
2  * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *  * Redistributions of source code must retain the above copyright
7  *    notice, this list of conditions and the following disclaimer.
8  *  * Redistributions in binary form must reproduce the above copyright
9  *    notice, this list of conditions and the following disclaimer in the
10  *    documentation and/or other materials provided with the distribution.
11  *  * Neither the name of The Linux Foundation nor the names of its contributors
12  *    may be used to endorse or promote products derived from this software
13  *    without specific prior written permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  */
28 
29 #ifndef __TIME_GENOFF_H__
30 #define __TIME_GENOFF_H__
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /*
37  * Time genoff base -- To be used by the time setter
38  * Reserved bases to be supported later.
39  */
40 typedef enum time_bases {
41 	ATS_RTC = 0,
42 	ATS_TOD,
43 	ATS_USER,
44 	ATS_SECURE,
45 	ATS_RESERVED_1,
46 	ATS_RESERVED_2,
47 	ATS_RESERVED_3,
48 	ATS_GPS,
49 	ATS_1X,
50 	ATS_RESERVED_4,
51 	ATS_WCDMA,
52 	ATS_SNTP,
53 	ATS_UTC,
54 	ATS_MODEM,
55 	ATS_MFLO,
56 	ATS_INVALID
57 } time_bases_type;
58 
59 /* Time unit -- Unit in which time is set/get */
60 typedef enum time_unit {
61 	TIME_STAMP,		/* Not supported */
62 	TIME_MSEC,
63 	TIME_SECS,
64 	TIME_JULIAN,
65 	TIME_20MS_FRAME,	/* Not supported */
66 	TIME_INVALID
67 } time_unit_type;
68 
69 /* Operation to be done */
70 typedef enum time_genoff_opr {
71 	T_SET,
72 	T_GET,
73 	T_IS_SET,
74 	T_DISABLE,
75 	T_ENABLE,
76 	T_MAX
77 } time_genoff_opr_type;
78 
79 /* Structure to be passed as argument to time_genoff_operation() */
80 /*
81  * In set/get: ts_val should be assigned memory and then passed.
82  * if time_unit = TIME_MSEC, TIME_SECS then ts_val = (uint64_t *)
83  * if time_unit = TIME_JULIAN then ts_val = (struct tm *)
84  */
85 typedef struct time_genoff_info {
86 	time_bases_type base;		/* Genoff in consideration */
87 	void *ts_val;			/* Time to be set/get */
88 	time_unit_type unit;		/* Time unit */
89 	time_genoff_opr_type operation; /* Time operation to be done */
90 }time_genoff_info_type;
91 
92 /* API to be called for time get/set operation */
93 int time_genoff_operation(time_genoff_info_type *pargs);
94 
95 /* API to be called for logging operations */
96 int time_control_operations(time_genoff_info_type *pargs);
97 
98 #ifdef __cplusplus
99 }
100 #endif
101 
102 #endif /* __TIME_GENOFF_H__ */
103