1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/**************************************************************************** 2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** This header was automatically generated from a Linux kernel header 5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** of the same name, to make information necessary for userspace to 6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** call into the kernel available to libc. It contains only constants, 7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** structures, and macros generated from the original header, and thus, 8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** contains no copyrightable information. 9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** To edit the content of this header, modify the corresponding 11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** source file (e.g. under external/kernel-headers/original/) then 12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** run bionic/libc/kernel/tools/update_all.py 13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** Any manual change here will be lost the next time this script will 15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** be run. You've been warned! 16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/ 19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _PPS_H_ 20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _PPS_H_ 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_VERSION "5.3.6" 23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_MAX_SOURCES 16 24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_API_VERS_1 1 25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_API_VERS PPS_API_VERS_1 26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_MAX_NAME_LEN 32 27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pps_ktime { 28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __s64 sec; 29d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __s32 nsec; 30d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u32 flags; 31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 32525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct pps_ktime_compat { 33525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __s64 sec; 34525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __s32 nsec; 35525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 flags; 36525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris} __attribute__((packed, aligned(4))); 37d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define PPS_TIME_INVALID (1 << 0) 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pps_kinfo { 39d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u32 assert_sequence; 40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u32 clear_sequence; 41d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_ktime assert_tu; 42d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_ktime clear_tu; 43d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int current_mode; 44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 45525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct pps_kinfo_compat { 46525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 assert_sequence; 47525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 clear_sequence; 48525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct pps_ktime_compat assert_tu; 49525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct pps_ktime_compat clear_tu; 50525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris int current_mode; 51525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pps_kparams { 53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int api_version; 54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int mode; 55d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_ktime assert_off_tu; 56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_ktime clear_off_tu; 57655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_CAPTUREASSERT 0x01 59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_CAPTURECLEAR 0x02 60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_CAPTUREBOTH 0x03 61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_OFFSETASSERT 0x10 62655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_OFFSETCLEAR 0x20 63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_CANWAIT 0x100 64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_CANPOLL 0x200 65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_ECHOASSERT 0x40 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_ECHOCLEAR 0x80 67655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_TSFMT_TSPEC 0x1000 68655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_TSFMT_NTPFP 0x2000 69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_KC_HARDPPS 0 70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_KC_HARDPPS_PLL 1 71655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_KC_HARDPPS_FLL 2 72655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pps_fdata { 73d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_kinfo info; 74d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct pps_ktime timeout; 75655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 76525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct pps_fdata_compat { 77525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct pps_kinfo_compat info; 78525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct pps_ktime_compat timeout; 79525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 80655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pps_bind_args { 81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int tsformat; 82d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int edge; 83d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao int consumer; 84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 85655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/ioctl.h> 86655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_GETPARAMS _IOR('p', 0xa1, struct pps_kparams *) 87655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_SETPARAMS _IOW('p', 0xa2, struct pps_kparams *) 88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_GETCAP _IOR('p', 0xa3, int *) 89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_FETCH _IOWR('p', 0xa4, struct pps_fdata *) 90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPS_KC_BIND _IOW('p', 0xa5, struct pps_bind_args *) 91655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 92