1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __IAXXX_MODULE_H__
#define __IAXXX_MODULE_H__
#define MAX_FILE_CHAR_SIZE 256
enum {
MPLL_CLK_3000,
MPLL_CLK_5000,
MPLL_CLK_6000,
MPLL_CLK_8000,
MPLL_CLK_10000,
MPLL_CLK_15000,
MPLL_CLK_30000,
MPLL_CLK_60000,
MPLL_CLK_80000,
MPLL_CLK_120000,
#ifdef EXTENDED_FREQ_SUPPORT
MPLL_CLK_150000,
MPLL_CLK_180000,
MPLL_CLK_200000,
#endif
NUM_MPLL_CLK_FREQ,
};
enum {
APLL_CLK_3072,
APLL_CLK_6144,
APLL_CLK_12288,
APLL_CLK_24576,
APLL_CLK_49152,
APLL_CLK_98304,
APLL_CLK_368640,
NUM_APLL_CLK_FREQ,
};
struct iaxxx_pwr_stats {
uint64_t mpll_cumulative_cnts[NUM_MPLL_CLK_FREQ];
uint64_t apll_cumulative_cnts[NUM_APLL_CLK_FREQ];
uint64_t mpllCumulativeDur[NUM_MPLL_CLK_FREQ];
uint64_t mpllTimeStamp[NUM_MPLL_CLK_FREQ];
uint64_t sleepModeTimeStamp;
uint64_t sleepModeCumulativeDur;
};
enum {
SENSOR_MODE_OFF,
SENSOR_MODE_ENTRANCE,
SENSOR_MODE_INTERACTIVE,
SENSOR_NUM_MODE,
};
struct iaxxx_sensor_mode_stats {
uint64_t totalNumEntries;
uint64_t totalTimeSpentMs;
uint64_t lastEntryTimeStampMs;
uint64_t lastExitTimeStampMs;
};
struct iaxxx_sensor_info {
uint32_t block_id;
uint32_t inst_id;
};
struct iaxxx_sensor_param {
uint32_t inst_id;
uint32_t param_id;
uint32_t param_val;
uint8_t block_id;
};
struct iaxxx_sensor_param_blk {
uint32_t inst_id;
uint32_t blk_size;
uint64_t blk_data;
uint32_t param_blk_id;
uint8_t block_id;
};
struct iaxxx_script_info {
char script_name[MAX_FILE_CHAR_SIZE];
uint32_t script_id;
};
struct iaxxx_osc_trim_period {
int period;
};
/* IOCTL Magic character */
#define IAXXX_IOCTL_MAGIC 'I'
/* Create IOCTL */
#define MODULE_SENSOR_ENABLE _IO(IAXXX_IOCTL_MAGIC, 0x51)
#define MODULE_SENSOR_DISABLE _IO(IAXXX_IOCTL_MAGIC, 0x52)
#define MODULE_SENSOR_SET_PARAM _IO(IAXXX_IOCTL_MAGIC, 0x53)
#define MODULE_SENSOR_GET_PARAM _IO(IAXXX_IOCTL_MAGIC, 0x54)
#define MODULE_SENSOR_WRITE_PARAM_BLK _IO(IAXXX_IOCTL_MAGIC, 0x55)
#define SCRIPT_LOAD _IO(IAXXX_IOCTL_MAGIC, 0x61)
#define SCRIPT_UNLOAD _IO(IAXXX_IOCTL_MAGIC, 0x62)
#define SCRIPT_TRIGGER _IO(IAXXX_IOCTL_MAGIC, 0x63)
#define IAXXX_POWER_STATS_COUNT _IO(IAXXX_IOCTL_MAGIC, 0x71)
#define IAXXX_SET_OSC_TRIM_PERIOD _IO(IAXXX_IOCTL_MAGIC, 0x72)
#define IAXXX_SENSOR_MODE_STATS _IO(IAXXX_IOCTL_MAGIC, 0x73)
#endif
|