2 * SPDX-License-Identifier: GPL-2.0-or-later
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 #ifndef HWCLOCK_CLOCK_H
10 #define HWCLOCK_CLOCK_H
22 #define HWCLOCK_DEBUG_INIT (1 << 0)
23 #define HWCLOCK_DEBUG_RANDOM_SLEEP (1 << 1)
24 #define HWCLOCK_DEBUG_DELTA_VS_TARGET (1 << 2)
25 #define HWCLOCK_DEBUG_ALL 0xFFFF
27 UL_DEBUG_DECLARE_MASK(hwclock
);
28 #define DBG(m, x) __UL_DBG(hwclock, HWCLOCK_DEBUG_, m, x)
29 #define ON_DBG(m, x) __UL_DBG_CALL(hwclock, HWCLOCK_DEBUG_, m, x)
31 struct hwclock_control
{
34 double rtc_delay
; /* --delay <seconds> */
35 #if defined(__linux__) && defined(__alpha__)
41 char *param_get_option
;
42 char *param_set_option
;
50 #if defined(__linux__) && defined(__alpha__)
63 universal
:1, /* will store hw_clock_is_utc() return value */
71 int (*get_permissions
) (void);
72 int (*read_hardware_clock
) (const struct hwclock_control
*ctl
, struct tm
* tm
);
73 int (*set_hardware_clock
) (const struct hwclock_control
*ctl
, const struct tm
* tm
);
74 int (*synchronize_to_clock_tick
) (const struct hwclock_control
*ctl
);
75 const char *(*get_device_path
) (void);
78 extern const struct clock_ops
*probe_for_cmos_clock(void);
79 extern const struct clock_ops
*probe_for_rtc_clock(const struct hwclock_control
*ctl
);
82 extern double time_diff(struct timeval subtrahend
, struct timeval subtractor
);
85 #if defined(__linux__) && defined(__alpha__)
86 extern int get_epoch_rtc(const struct hwclock_control
*ctl
, unsigned long *epoch
);
87 extern int set_epoch_rtc(const struct hwclock_control
*ctl
);
90 struct hwclock_param
{
96 extern const struct hwclock_param
*get_hwclock_params(void);
97 extern int get_param_rtc(const struct hwclock_control
*ctl
,
98 const char *name
, uint64_t *id
, uint64_t *value
);
99 extern int set_param_rtc(const struct hwclock_control
*ctl
, const char *name
);
101 extern int rtc_vl_read(const struct hwclock_control
*ctl
);
102 extern int rtc_vl_clear(const struct hwclock_control
*ctl
);
104 extern void __attribute__((__noreturn__
))
105 hwclock_exit(const struct hwclock_control
*ctl
, int status
);
107 extern int parse_date(struct timespec
*, char const *, struct timespec
const *);
109 #endif /* HWCLOCK_CLOCK_H */