sip: rockchip: fix bus about make kernel failure
[firefly-linux-kernel-4.4.55.git] / include / linux / mc3230.h
1 /*
2  *  MCube mc3230 acceleration sensor driver
3  *
4  *  Copyright (C) 2011 MCube Inc.,
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  * *****************************************************************************/
17
18 #ifndef MC3230_H
19 #define MC3230_H
20
21 #include <linux/ioctl.h>
22
23 #define MC3230_REG_CHIP_ID              0x18
24 #define MC3230_REG_X_OUT                        0x0 //RO
25 #define MC3230_REG_Y_OUT                        0x1 //RO
26 #define MC3230_REG_Z_OUT                        0x2 //RO
27 #define MC3230_REG_STAT                         0x04
28 #define MC3230_REG_SLEEP_COUNTER 0x05
29 #define MC3230_REG_INTMOD                       0x06
30 #define MC3230_REG_SYSMOD                       0x07
31 #define MC3230_REG_RATE_SAMP            0x08
32
33 #define MC32X0_XOUT_EX_L_REG                            0x0d
34
35 #define MC3230_REG_RBM_DATA             0x0D
36 #define MC3230_REG_PRODUCT_CODE 0x3b
37
38
39
40
41
42 #define MCIO                            0xA1
43
44 #define RBUFF_SIZE              12      /* Rx buffer size */
45 /* IOCTLs for MC3230 library */
46 #define MC_IOCTL_INIT                  _IO(MCIO, 0x01)
47 #define MC_IOCTL_RESET                    _IO(MCIO, 0x04)
48 #define MC_IOCTL_CLOSE                     _IO(MCIO, 0x02)
49 #define MC_IOCTL_START                       _IO(MCIO, 0x03)
50 #define MC_IOCTL_GETDATA               _IOR(MCIO, 0x08, char[RBUFF_SIZE+1])
51
52 /* IOCTLs for APPs */
53 #define MC_IOCTL_APP_SET_RATE           _IOW(MCIO, 0x10, char)
54
55 #if 0
56 /*wake mode rate Samples/Second (0~2)*/
57 #define MC3230_RATE_128          0
58 #define MC3230_RATE_64          1
59 #define MC3230_RATE_32         2
60 #define MC3230_RATE_16         3
61 #define MC3230_RATE_8             4
62 #define MC3230_RATE_4         5
63 #define MC3230_RATE_2         6
64 #define MC3230_RATE_1         7
65 #endif
66
67 /*sniffr mode rate Samples/Second (3~4)*/
68 #define MC3230_SNIFFR_RATE_32           0
69 #define MC3230_SNIFFR_RATE_16           1
70 #define MC3230_SNIFFR_RATE_8            2
71 #define MC3230_SNIFFR_RATE_1            3
72 #define MC3230_SNIFFR_RATE_SHIFT        3
73
74 //#define ACTIVE_MASK                           1
75 //#define FREAD_MASK                            2
76
77
78 /*status*/
79 #define MC3230_OPEN           1
80 #define MC3230_CLOSE          0
81
82 #define MC3230_RANGE            1500000
83 #define MC3230_IIC_ADDR           0x4c 
84 #define MC3230_PRECISION       8 //8bit data
85 #define MC3230_BOUNDARY        (0x1 << (MC3230_PRECISION - 1))
86 #define MC3230_GRAVITY_STEP   MC3230_RANGE/MC3230_BOUNDARY //110 //2g full scale range
87
88
89 struct mc3230_axis {
90         int x;
91         int y;
92         int z;
93 };
94
95 //#define  GSENSOR_DEV_PATH    "/dev/mma8452_daemon"
96
97
98
99 //add accel calibrate IO
100 typedef struct {
101         unsigned short  x;              /**< X axis */
102         unsigned short  y;              /**< Y axis */
103         unsigned short  z;              /**< Z axis */
104 } GSENSOR_VECTOR3D;
105
106 typedef struct{
107         int x;
108         int y;
109         int z;
110 }SENSOR_DATA;
111 //=========================================add by guanj============================
112 struct mc3230_platform_data {
113         u16     model;
114         u16     swap_xy;
115         u16     swap_xyz;
116         signed char orientation[9];
117         int     (*get_pendown_state)(void);
118         int     (*init_platform_hw)(void);
119         int     (*mc3230_platform_sleep)(void);
120         int     (*mc3230_platform_wakeup)(void);
121         void    (*exit_platform_hw)(void);
122 };
123
124 #define GSENSOR                                                 0x85
125 //#define GSENSOR_IOCTL_INIT                  _IO(GSENSOR,  0x01)
126 #define GSENSOR_IOCTL_READ_CHIPINFO         _IOR(GSENSOR, 0x02, int)
127 #define GSENSOR_IOCTL_READ_SENSORDATA       _IOR(GSENSOR, 0x03, int)
128 #define GSENSOR_IOCTL_READ_OFFSET                       _IOR(GSENSOR, 0x04, GSENSOR_VECTOR3D)
129 #define GSENSOR_IOCTL_READ_GAIN                         _IOR(GSENSOR, 0x05, GSENSOR_VECTOR3D)
130 #define GSENSOR_IOCTL_READ_RAW_DATA                     _IOR(GSENSOR, 0x06, int)
131 #define GSENSOR_IOCTL_SET_CALI                          _IOW(GSENSOR, 0x06, SENSOR_DATA)
132 #define GSENSOR_IOCTL_GET_CALI                          _IOW(GSENSOR, 0x07, SENSOR_DATA)
133 #define GSENSOR_IOCTL_CLR_CALI                          _IO(GSENSOR, 0x08)
134 #define GSENSOR_MCUBE_IOCTL_READ_RBM_DATA               _IOR(GSENSOR, 0x09, SENSOR_DATA)
135 #define GSENSOR_MCUBE_IOCTL_SET_RBM_MODE                _IO(GSENSOR, 0x0a)
136 #define GSENSOR_MCUBE_IOCTL_CLEAR_RBM_MODE              _IO(GSENSOR, 0x0b)
137 #define GSENSOR_MCUBE_IOCTL_SET_CALI                    _IOW(GSENSOR, 0x0c, SENSOR_DATA)
138 #define GSENSOR_MCUBE_IOCTL_REGISTER_MAP                _IO(GSENSOR, 0x0d)
139 #define GSENSOR_IOCTL_SET_CALI_MODE                     _IOW(GSENSOR, 0x0e,int)
140
141
142
143
144 /* IOCTLs for Msensor misc. device library */
145 #define MSENSOR                                            0x83
146 #define MSENSOR_IOCTL_INIT                                      _IO(MSENSOR, 0x01)
147 #define MSENSOR_IOCTL_READ_CHIPINFO                     _IOR(MSENSOR, 0x02, int)
148 #define MSENSOR_IOCTL_READ_SENSORDATA           _IOR(MSENSOR, 0x03, int)
149 #define MSENSOR_IOCTL_READ_POSTUREDATA          _IOR(MSENSOR, 0x04, int)
150 #define MSENSOR_IOCTL_READ_CALIDATA                     _IOR(MSENSOR, 0x05, int)
151 #define MSENSOR_IOCTL_READ_CONTROL                      _IOR(MSENSOR, 0x06, int)
152 #define MSENSOR_IOCTL_SET_CONTROL                       _IOW(MSENSOR, 0x07, int)
153 #define MSENSOR_IOCTL_SET_MODE                  _IOW(MSENSOR, 0x08, int)
154 #define MSENSOR_IOCTL_SET_POSTURE               _IOW(MSENSOR, 0x09, int)
155 #define MSENSOR_IOCTL_SET_CALIDATA              _IOW(MSENSOR, 0x0a, int)
156 #define MSENSOR_IOCTL_SENSOR_ENABLE         _IOW(MSENSOR, 0x51, int)
157 #define MSENSOR_IOCTL_READ_FACTORY_SENSORDATA  _IOW(MSENSOR, 0x52, int)
158
159
160 #if 0
161 /* IOCTLs for AKM library */
162 #define ECS_IOCTL_WRITE                 _IOW(MSENSOR, 0x0b, char*)
163 #define ECS_IOCTL_READ                  _IOWR(MSENSOR, 0x0c, char*)
164 #define ECS_IOCTL_RESET                 _IO(MSENSOR, 0x0d) /* NOT used in AK8975 */
165 #define ECS_IOCTL_SET_MODE              _IOW(MSENSOR, 0x0e, short)
166 #define ECS_IOCTL_GETDATA               _IOR(MSENSOR, 0x0f, char[SENSOR_DATA_SIZE])
167 #define ECS_IOCTL_SET_YPR               _IOW(MSENSOR, 0x10, short[12])
168 #define ECS_IOCTL_GET_OPEN_STATUS       _IOR(MSENSOR, 0x11, int)
169 #define ECS_IOCTL_GET_CLOSE_STATUS      _IOR(MSENSOR, 0x12, int)
170 #define ECS_IOCTL_GET_OSENSOR_STATUS    _IOR(MSENSOR, 0x13, int)
171 #define ECS_IOCTL_GET_DELAY             _IOR(MSENSOR, 0x14, short)
172 #define ECS_IOCTL_GET_PROJECT_NAME      _IOR(MSENSOR, 0x15, char[64])
173 #define ECS_IOCTL_GET_MATRIX            _IOR(MSENSOR, 0x16, short [4][3][3])
174 #define ECS_IOCTL_GET_LAYOUT                    _IOR(MSENSOR, 0x17, int[3])
175 #endif
176 #define ECS_IOCTL_GET_OUTBIT            _IOR(MSENSOR, 0x23, char)
177 #define ECS_IOCTL_GET_ACCEL             _IOR(MSENSOR, 0x24, short[3])
178 #define MMC31XX_IOC_RM                                  _IO(MSENSOR, 0x25)
179 #define MMC31XX_IOC_RRM                                 _IO(MSENSOR, 0x26)
180
181
182
183 /* IOCTLs for MMC31XX device */
184 #define MMC31XX_IOC_TM                                  _IO(MSENSOR, 0x18)
185 #define MMC31XX_IOC_SET                                 _IO(MSENSOR, 0x19)
186 #define MMC31XX_IOC_RESET                               _IO(MSENSOR, 0x1a)
187 #define MMC31XX_IOC_READ                                _IOR(MSENSOR, 0x1b, int[3])
188 #define MMC31XX_IOC_READXYZ                             _IOR(MSENSOR, 0x1c, int[3])
189
190 #define ECOMPASS_IOC_GET_DELAY                  _IOR(MSENSOR, 0x1d, int)
191 #define ECOMPASS_IOC_GET_MFLAG                  _IOR(MSENSOR, 0x1e, short)
192 #define ECOMPASS_IOC_GET_OFLAG                  _IOR(MSENSOR, 0x1f, short)
193 #define ECOMPASS_IOC_GET_OPEN_STATUS    _IOR(MSENSOR, 0x20, int)
194 #define ECOMPASS_IOC_SET_YPR                    _IOW(MSENSOR, 0x21, int[12])
195 #define ECOMPASS_IOC_GET_LAYOUT                 _IOR(MSENSOR, 0X22, int)
196
197
198
199
200 #define ALSPS                                                   0X84
201 #define ALSPS_SET_PS_MODE                                       _IOW(ALSPS, 0x01, int)
202 #define ALSPS_GET_PS_MODE                                       _IOR(ALSPS, 0x02, int)
203 #define ALSPS_GET_PS_DATA                                       _IOR(ALSPS, 0x03, int)
204 #define ALSPS_GET_PS_RAW_DATA                           _IOR(ALSPS, 0x04, int)
205 #define ALSPS_SET_ALS_MODE                                      _IOW(ALSPS, 0x05, int)
206 #define ALSPS_GET_ALS_MODE                                      _IOR(ALSPS, 0x06, int)
207 #define ALSPS_GET_ALS_DATA                                      _IOR(ALSPS, 0x07, int)
208 #define ALSPS_GET_ALS_RAW_DATA                  _IOR(ALSPS, 0x08, int)
209
210 #define GYROSCOPE                                                       0X86
211 #define GYROSCOPE_IOCTL_INIT                                    _IO(GYROSCOPE, 0x01)
212 #define GYROSCOPE_IOCTL_SMT_DATA                        _IOR(GYROSCOPE, 0x02, int)
213 #define GYROSCOPE_IOCTL_READ_SENSORDATA         _IOR(GYROSCOPE, 0x03, int)
214 #define GYROSCOPE_IOCTL_SET_CALI                        _IOW(GYROSCOPE, 0x04, SENSOR_DATA)
215 #define GYROSCOPE_IOCTL_GET_CALI                        _IOW(GYROSCOPE, 0x05, SENSOR_DATA)
216 #define GYROSCOPE_IOCTL_CLR_CALI                        _IO(GYROSCOPE, 0x06)
217
218 #define BROMETER                                                        0X87
219 #define BAROMETER_IOCTL_INIT                            _IO(BROMETER, 0x01)
220 #define BAROMETER_GET_PRESS_DATA                        _IOR(BROMETER, 0x02, int)
221 #define BAROMETER_GET_TEMP_DATA                     _IOR(BROMETER, 0x03, int)
222 #define BAROMETER_IOCTL_READ_CHIPINFO           _IOR(BROMETER, 0x04, int)
223
224 extern long mc3230_ioctl( struct file *file, unsigned int cmd,unsigned long arg,struct i2c_client *client);
225 #endif
226