Merge remote-tracking branch 'linux-2.6.32.y/master' into develop
[firefly-linux-kernel-4.4.55.git] / include / linux / mma8452.h
1 /*
2  * Definitions for mma8452 compass chip.
3  */
4 #ifndef MMA8452_H
5 #define MMA8452_H
6
7 #include <linux/ioctl.h>
8
9 /* Default register settings */
10 #define RBUFF_SIZE              12      /* Rx buffer size */
11
12 #define MMA8452_REG_STATUS              0x0 //RO
13 #define MMA8452_REG_X_OUT_MSB           0x1 //RO
14 #define MMA8452_REG_X_OUT_LSB           0x2 //RO
15 #define MMA8452_REG_Y_OUT_MSB           0x3 //RO
16 #define MMA8452_REG_Y_OUT_LSB           0x4 //RO
17 #define MMA8452_REG_Z_OUT_MSB           0x5 //RO
18 #define MMA8452_REG_Z_OUT_LSB           0x6 //RO
19 #define MMA8452_REG_F_SETUP                     0x9 //RW
20
21 #define MMA8452_REG_SYSMOD                              0xB //RO
22 #define MMA8452_REG_INTSRC                      0xC //RO
23 #define MMA8452_REG_WHO_AM_I                    0xD //RO
24 #define MMA8452_REG_XYZ_DATA_CFG                0xE //RW
25 #define MMA8452_REG_HP_FILTER_CUTOFF    0xF //RW
26 #define MMA8452_REG_PL_STATUS                   0x10 //RO
27 #define MMA8452_REG_PL_CFG                              0x11 //RW
28 #define MMA8452_REG_PL_COUNT                    0x12 //RW
29 #define MMA8452_REG_PL_BF_ZCOMP                 0x13 //RW
30 #define MMA8452_REG_P_L_THS_REG                 0x14 //RW
31 #define MMA8452_REG_FF_MT_CFG                   0x15 //RW
32 #define MMA8452_REG_FF_MT_SRC                   0x16 //RO
33 #define MMA8452_REG_FF_MT_THS                   0x17 //RW
34 #define MMA8452_REG_FF_MT_COUNT                 0x18 //RW
35 #define MMA8452_REG_TRANSIENT_CFG               0x1D //RW
36 #define MMA8452_REG_TRANSIENT_SRC               0x1E //RO
37 #define MMA8452_REG_TRANSIENT_THS               0x1F //RW
38 #define MMA8452_REG_TRANSIENT_COUNT             0x20 //RW
39 #define MMA8452_REG_PULSE_CFG                   0x21 //RW
40 #define MMA8452_REG_PULSE_SRC                   0x22 //RO
41 #define MMA8452_REG_PULSE_THSX                  0x23 //RW
42 #define MMA8452_REG_PULSE_THSY                  0x24 //RW
43 #define MMA8452_REG_PULSE_THSZ                  0x25 //RW
44 #define MMA8452_REG_PULSE_TMLT                  0x26 //RW
45 #define MMA8452_REG_PULSE_LTCY                  0x27 //RW
46 #define MMA8452_REG_PULSE_WIND                  0x28 //RW
47 #define MMA8452_REG_ASLP_COUNT                  0x29 //RW
48 #define MMA8452_REG_CTRL_REG1                   0x2A //RW
49 #define MMA8452_REG_CTRL_REG2                   0x2B //RW
50 #define MMA8452_REG_CTRL_REG3                   0x2C //RW
51 #define MMA8452_REG_CTRL_REG4                   0x2D //RW
52 #define MMA8452_REG_CTRL_REG5                   0x2E //RW
53 #define MMA8452_REG_OFF_X                               0x2F //RW
54 #define MMA8452_REG_OFF_Y                               0x30 //RW
55 #define MMA8452_REG_OFF_Z                               0x31 //RW
56
57 #define MMAIO                           0xA1
58
59 /* IOCTLs for MMA8452 library */
60 #define MMA_IOCTL_INIT                  _IO(MMAIO, 0x01)
61 #define MMA_IOCTL_RESET                   _IO(MMAIO, 0x04)
62 #define MMA_IOCTL_CLOSE                    _IO(MMAIO, 0x02)
63 #define MMA_IOCTL_START                      _IO(MMAIO, 0x03)
64 #define MMA_IOCTL_GETDATA               _IOR(MMAIO, 0x08, char[RBUFF_SIZE+1])
65
66 /* IOCTLs for APPs */
67 #define MMA_IOCTL_APP_SET_RATE          _IOW(MMAIO, 0x10, char)
68
69
70 /*rate*/
71 #define MMA8452_RATE_800          0
72 #define MMA8452_RATE_400          1
73 #define MMA8452_RATE_200          2
74 #define MMA8452_RATE_100          3
75 #define MMA8452_RATE_50           4
76 #define MMA8452_RATE_12P5         5
77 #define MMA8452_RATE_6P25         6
78 #define MMA8452_RATE_1P56         7
79 #define MMA8452_RATE_SHIFT                3
80
81
82 #define MMA8452_ASLP_RATE_50          0
83 #define MMA8452_ASLP_RATE_12P5        1
84 #define MMA8452_ASLP_RATE_6P25        2
85 #define MMA8452_ASLP_RATE_1P56        3
86 #define MMA8452_ASLP_RATE_SHIFT           6
87
88 #define ACTIVE_MASK                             1
89 #define FREAD_MASK                              2
90
91
92 /*status*/
93 #define MMA8452_SUSPEND           2
94 #define MMA8452_OPEN           1
95 #define MMA8452_CLOSE          0
96
97
98
99 //#define MMA8452_IIC_ADDR          0x98  
100 #define MMA8452_REG_LEN         11
101 #define MMA8452_GRAVITY_STEP    156 //2g full scale range
102 #define MMA8452_PRECISION       8 //8bit data
103 #define MMA8452_BOUNDARY        (0x1 << (MMA8452_PRECISION - 1))
104 #define MMA8452_TOTAL_TIME      10
105
106
107 /*
108 struct mma8452_platform_data {
109         int reset;
110         int clk_on;
111         int intr;
112 };
113
114 */
115
116 struct mma8452_axis {
117         int x;
118         int y;
119         int z;
120 };
121
122 #define  GSENSOR_DEV_PATH    "/dev/mma8452_daemon"
123
124 #endif
125