blob: 2d90c1d62eec7f7ae62aa2bfb2c77f7a2d64671e [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _PPS_H_
8#define _PPS_H_
9#include <linux/types.h>
10#define PPS_VERSION "5.3.6"
Ben Cheng655a7c02013-10-16 16:09:24 -070011#define PPS_MAX_SOURCES 16
12#define PPS_API_VERS_1 1
13#define PPS_API_VERS PPS_API_VERS_1
14#define PPS_MAX_NAME_LEN 32
Ben Cheng655a7c02013-10-16 16:09:24 -070015struct pps_ktime {
Tao Baod7db5942015-01-28 10:07:51 -080016 __s64 sec;
17 __s32 nsec;
18 __u32 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -070019};
Christopher Ferris525ce912017-07-26 13:12:53 -070020struct pps_ktime_compat {
21 __s64 sec;
22 __s32 nsec;
23 __u32 flags;
24} __attribute__((packed, aligned(4)));
Tao Baod7db5942015-01-28 10:07:51 -080025#define PPS_TIME_INVALID (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070026struct pps_kinfo {
Tao Baod7db5942015-01-28 10:07:51 -080027 __u32 assert_sequence;
Tao Baod7db5942015-01-28 10:07:51 -080028 __u32 clear_sequence;
29 struct pps_ktime assert_tu;
30 struct pps_ktime clear_tu;
31 int current_mode;
Ben Cheng655a7c02013-10-16 16:09:24 -070032};
Christopher Ferris525ce912017-07-26 13:12:53 -070033struct pps_kinfo_compat {
34 __u32 assert_sequence;
35 __u32 clear_sequence;
36 struct pps_ktime_compat assert_tu;
37 struct pps_ktime_compat clear_tu;
38 int current_mode;
39};
Ben Cheng655a7c02013-10-16 16:09:24 -070040struct pps_kparams {
Tao Baod7db5942015-01-28 10:07:51 -080041 int api_version;
42 int mode;
Tao Baod7db5942015-01-28 10:07:51 -080043 struct pps_ktime assert_off_tu;
44 struct pps_ktime clear_off_tu;
Ben Cheng655a7c02013-10-16 16:09:24 -070045};
46#define PPS_CAPTUREASSERT 0x01
Ben Cheng655a7c02013-10-16 16:09:24 -070047#define PPS_CAPTURECLEAR 0x02
48#define PPS_CAPTUREBOTH 0x03
49#define PPS_OFFSETASSERT 0x10
50#define PPS_OFFSETCLEAR 0x20
Ben Cheng655a7c02013-10-16 16:09:24 -070051#define PPS_CANWAIT 0x100
52#define PPS_CANPOLL 0x200
53#define PPS_ECHOASSERT 0x40
54#define PPS_ECHOCLEAR 0x80
Ben Cheng655a7c02013-10-16 16:09:24 -070055#define PPS_TSFMT_TSPEC 0x1000
56#define PPS_TSFMT_NTPFP 0x2000
57#define PPS_KC_HARDPPS 0
58#define PPS_KC_HARDPPS_PLL 1
Ben Cheng655a7c02013-10-16 16:09:24 -070059#define PPS_KC_HARDPPS_FLL 2
60struct pps_fdata {
Tao Baod7db5942015-01-28 10:07:51 -080061 struct pps_kinfo info;
62 struct pps_ktime timeout;
Ben Cheng655a7c02013-10-16 16:09:24 -070063};
Christopher Ferris525ce912017-07-26 13:12:53 -070064struct pps_fdata_compat {
65 struct pps_kinfo_compat info;
66 struct pps_ktime_compat timeout;
67};
Ben Cheng655a7c02013-10-16 16:09:24 -070068struct pps_bind_args {
Tao Baod7db5942015-01-28 10:07:51 -080069 int tsformat;
70 int edge;
Tao Baod7db5942015-01-28 10:07:51 -080071 int consumer;
Ben Cheng655a7c02013-10-16 16:09:24 -070072};
73#include <linux/ioctl.h>
74#define PPS_GETPARAMS _IOR('p', 0xa1, struct pps_kparams *)
Ben Cheng655a7c02013-10-16 16:09:24 -070075#define PPS_SETPARAMS _IOW('p', 0xa2, struct pps_kparams *)
76#define PPS_GETCAP _IOR('p', 0xa3, int *)
77#define PPS_FETCH _IOWR('p', 0xa4, struct pps_fdata *)
78#define PPS_KC_BIND _IOW('p', 0xa5, struct pps_bind_args *)
Ben Cheng655a7c02013-10-16 16:09:24 -070079#endif