summaryrefslogtreecommitdiff
path: root/include/linux/i2c/lis3dh.h
blob: f14f80e9af24878643f5f77421fedb3c0bfb8754 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

/******************** (C) COPYRIGHT 2010 STMicroelectronics ********************
*
* File Name          : lis3dh_misc.h
* Authors            : MH - C&I BU - Application Team
*		     : Carmine Iascone (carmine.iascone@st.com)
*		     : Matteo Dameno (matteo.dameno@st.com)
* Version            : V 1.0.5
* Date               : 26/08/2010
*
********************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THE PRESENT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, FOR THE SOLE
* PURPOSE TO SUPPORT YOUR APPLICATION DEVELOPMENT.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* THIS SOFTWARE IS SPECIFICALLY DESIGNED FOR EXCLUSIVE USE WITH ST PARTS.
*
*******************************************************************************/
/*******************************************************************************
Version History.

Revision 1-0-0 05/11/2009
First Release
Revision 1-0-1 26/01/2010
Linux K&R Compliant Release
Revision 1-0-5 16/08/2010
Interrupt Management

*******************************************************************************/

#ifndef	__LIS3DH_H__
#define	__LIS3DH_H__

#include	<linux/ioctl.h>	/* For IOCTL macros */
#include	<linux/input.h>

#ifndef DEBUG
#define DEBUG
#endif

#define SAD0L			0x00
#define SAD0H			0x01
#define LIS3DH_ACC_I2C_SADROOT	0x0C
#define LIS3DH_ACC_I2C_SAD_L	((LIS3DH_ACC_I2C_SADROOT<<1)|SAD0L)
#define LIS3DH_ACC_I2C_SAD_H	((LIS3DH_ACC_I2C_SADROOT<<1)|SAD0H)
#define	LIS3DH_ACC_DEV_NAME	"lis3dh_acc"

/* SAO pad is connected to GND, set LSB of SAD '0' */
#define LIS3DH_ACC_I2C_ADDR     LIS3DH_ACC_I2C_SAD_L
#define LIS3DH_ACC_I2C_NAME     LIS3DH_ACC_DEV_NAME

#define	LIS3DH_ACC_IOCTL_BASE 77
/** The following define the IOCTL command values via the ioctl macros */
#define	LIS3DH_ACC_IOCTL_SET_DELAY		_IOW(LIS3DH_ACC_IOCTL_BASE, 0, int)
#define	LIS3DH_ACC_IOCTL_GET_DELAY		_IOR(LIS3DH_ACC_IOCTL_BASE, 1, int)
#define	LIS3DH_ACC_IOCTL_SET_ENABLE		_IOW(LIS3DH_ACC_IOCTL_BASE, 2, int)
#define	LIS3DH_ACC_IOCTL_GET_ENABLE		_IOR(LIS3DH_ACC_IOCTL_BASE, 3, int)
#define	LIS3DH_ACC_IOCTL_SET_FULLSCALE		_IOW(LIS3DH_ACC_IOCTL_BASE, 4, int)
#define	LIS3DH_ACC_IOCTL_SET_G_RANGE		LIS3DH_ACC_IOCTL_SET_FULLSCALE

#define	LIS3DH_ACC_IOCTL_SET_CTRL_REG3		_IOW(LIS3DH_ACC_IOCTL_BASE, 6, int)
#define	LIS3DH_ACC_IOCTL_SET_CTRL_REG6		_IOW(LIS3DH_ACC_IOCTL_BASE, 7, int)
#define	LIS3DH_ACC_IOCTL_SET_DURATION1		_IOW(LIS3DH_ACC_IOCTL_BASE, 8, int)
#define	LIS3DH_ACC_IOCTL_SET_THRESHOLD1		_IOW(LIS3DH_ACC_IOCTL_BASE, 9, int)
#define	LIS3DH_ACC_IOCTL_SET_CONFIG1		_IOW(LIS3DH_ACC_IOCTL_BASE, 10, int)

#define	LIS3DH_ACC_IOCTL_SET_DURATION2		_IOW(LIS3DH_ACC_IOCTL_BASE, 11, int)
#define	LIS3DH_ACC_IOCTL_SET_THRESHOLD2		_IOW(LIS3DH_ACC_IOCTL_BASE, 12, int)
#define	LIS3DH_ACC_IOCTL_SET_CONFIG2		_IOW(LIS3DH_ACC_IOCTL_BASE, 13, int)

#define	LIS3DH_ACC_IOCTL_GET_SOURCE1		_IOW(LIS3DH_ACC_IOCTL_BASE, 14, int)
#define	LIS3DH_ACC_IOCTL_GET_SOURCE2		_IOW(LIS3DH_ACC_IOCTL_BASE, 15, int)

#define	LIS3DH_ACC_IOCTL_GET_TAP_SOURCE		_IOW(LIS3DH_ACC_IOCTL_BASE, 16, int)

#define	LIS3DH_ACC_IOCTL_SET_TAP_TW		_IOW(LIS3DH_ACC_IOCTL_BASE, 17, int)
#define	LIS3DH_ACC_IOCTL_SET_TAP_CFG		_IOW(LIS3DH_ACC_IOCTL_BASE, 18, int)
#define	LIS3DH_ACC_IOCTL_SET_TAP_TLIM		_IOW(LIS3DH_ACC_IOCTL_BASE, 19, int)
#define	LIS3DH_ACC_IOCTL_SET_TAP_THS		_IOW(LIS3DH_ACC_IOCTL_BASE, 20, int)
#define	LIS3DH_ACC_IOCTL_SET_TAP_TLAT		_IOW(LIS3DH_ACC_IOCTL_BASE, 21, int)

#define LIS3DH_ACC_IOCTL_GET_COOR_XYZ           _IOW(LIS3DH_ACC_IOCTL_BASE, 22, int)

#define LIS3DH_ACC_IOCTL_GET_CHIP_ID            _IOR(LIS3DH_ACC_IOCTL_BASE, 255, char[32])

/************************************************/
/* 	Accelerometer defines section	 	*/
/************************************************/

/* Accelerometer Sensor Full Scale */
#define	LIS3DH_ACC_FS_MASK		0x30
#define LIS3DH_ACC_G_2G 		0x00
#define LIS3DH_ACC_G_4G 		0x10
#define LIS3DH_ACC_G_8G 		0x20
#define LIS3DH_ACC_G_16G		0x30


/* Accelerometer Sensor Operating Mode */
#define LIS3DH_ACC_ENABLE		0x01
#define LIS3DH_ACC_DISABLE		0x00

#ifdef	__KERNEL__
struct lis3dh_acc_platform_data {
	int poll_interval;
	int min_interval;

	int g_range;

	int axis_map_x;
	int axis_map_y;
	int axis_map_z;

	int negate_x;
	int negate_y;
	int negate_z;

	int (*init)(void);
	void (*exit)(void);
	int (*power_on)(void);
	int (*power_off)(void);

	int gpio_int1;
	int gpio_int2;

};
#endif	/* __KERNEL__ */

#endif	/* __LIS3DH_H__ */