summaryrefslogtreecommitdiff
path: root/iaxxx-module.h
blob: 27b1f33f5c866ea2e6aeded952cfba4b5c29f7b2 (plain)
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