110 lines
3.3 KiB
C
Executable File
110 lines
3.3 KiB
C
Executable File
/*
|
|
* Copyright (c) 2010-2014, 2016, 2018-2020 The Linux Foundation. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* * Neither the name of The Linux Foundation nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
#ifndef __TIME_GENOFF_H__
|
|
#define __TIME_GENOFF_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* Time genoff base -- To be used by the time setter
|
|
* Reserved bases to be supported later.
|
|
*/
|
|
typedef enum time_bases {
|
|
ATS_RTC = 0,
|
|
ATS_TOD,
|
|
ATS_USER,
|
|
ATS_SECURE,
|
|
ATS_DRM,
|
|
ATS_RESERVED_2,
|
|
ATS_RESERVED_3,
|
|
ATS_GPS,
|
|
ATS_1X,
|
|
ATS_RESERVED_4,
|
|
ATS_WCDMA,
|
|
ATS_SNTP,
|
|
ATS_UTC,
|
|
ATS_MODEM,
|
|
ATS_MFLO,
|
|
ATS_TOD_MODEM,
|
|
ATS_WLAN,
|
|
ATS_5G,
|
|
ATS_TOD_GEN,
|
|
ATS_INVALID
|
|
} time_bases_type;
|
|
|
|
/* Time unit -- Unit in which time is set/get */
|
|
typedef enum time_unit {
|
|
TIME_STAMP, /* Not supported */
|
|
TIME_MSEC,
|
|
TIME_SECS,
|
|
TIME_JULIAN,
|
|
TIME_20MS_FRAME, /* Not supported */
|
|
TIME_INVALID
|
|
} time_unit_type;
|
|
|
|
/* Operation to be done */
|
|
typedef enum time_genoff_opr {
|
|
T_SET,
|
|
T_GET,
|
|
T_IS_SET,
|
|
T_DISABLE,
|
|
T_ENABLE,
|
|
T_MAX
|
|
} time_genoff_opr_type;
|
|
|
|
/* Structure to be passed as argument to time_genoff_operation() */
|
|
/*
|
|
* In set/get: ts_val should be assigned memory and then passed.
|
|
* if time_unit = TIME_MSEC, TIME_SECS then ts_val = (uint64_t *)
|
|
* if time_unit = TIME_JULIAN then ts_val = (struct tm *)
|
|
*/
|
|
typedef struct time_genoff_info {
|
|
time_bases_type base; /* Genoff in consideration */
|
|
void *ts_val; /* Time to be set/get */
|
|
time_unit_type unit; /* Time unit */
|
|
time_genoff_opr_type operation; /* Time operation to be done */
|
|
}time_genoff_info_type;
|
|
|
|
/* API to be called for time get/set operation */
|
|
int time_genoff_operation(time_genoff_info_type *pargs);
|
|
|
|
/* API to be called for logging operations */
|
|
int time_control_operations(time_genoff_info_type *pargs);
|
|
|
|
/* API to be called for getting qtimer based timestamp */
|
|
unsigned long long time_get_from_timetick();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __TIME_GENOFF_H__ */
|