aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lis3lv02d.h
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2009-06-16 18:34:17 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 22:47:57 -0400
commit8f3128e714ded7cf1e8c786c204a4f253b5d8ff4 (patch)
treecb3c1e9df2da5e4817acfeb75284e8d7b92eae33 /drivers/hwmon/lis3lv02d.h
parent0093716e6dd18dad554bef81cc788a4c50d32a09 (diff)
lis3: add click function
The LIS302DL accelerometer chip has a 'click' feature which can be used to detect sudden motion on any of the three axis. Configuration data is passed via spi platform_data and no action is taken if that's not specified, so it won't harm any existing platform. To make the configuration effective, the IRQ lines need to be set up appropriately. This patch also adds a way to do that from board support code. The DD_* definitions were factored out to an own enum because they are specific to LIS3LV02D devices. Signed-off-by: Daniel Mack <daniel@caiaq.de> Acked-by: Pavel Machek <pavel@ucw.cz> Acked-by: Eric Piel <eric.piel@tremplin-utc.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/hwmon/lis3lv02d.h')
-rw-r--r--drivers/hwmon/lis3lv02d.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/hwmon/lis3lv02d.h b/drivers/hwmon/lis3lv02d.h
index 5a5a196e6a66..e320e2f511f1 100644
--- a/drivers/hwmon/lis3lv02d.h
+++ b/drivers/hwmon/lis3lv02d.h
@@ -29,12 +29,14 @@
29 * They can also be connected via I²C. 29 * They can also be connected via I²C.
30 */ 30 */
31 31
32#include <linux/lis3lv02d.h>
33
32/* 2-byte registers */ 34/* 2-byte registers */
33#define LIS_DOUBLE_ID 0x3A /* LIS3LV02D[LQ] */ 35#define LIS_DOUBLE_ID 0x3A /* LIS3LV02D[LQ] */
34/* 1-byte registers */ 36/* 1-byte registers */
35#define LIS_SINGLE_ID 0x3B /* LIS[32]02DL and others */ 37#define LIS_SINGLE_ID 0x3B /* LIS[32]02DL and others */
36 38
37enum lis3lv02d_reg { 39enum lis3_reg {
38 WHO_AM_I = 0x0F, 40 WHO_AM_I = 0x0F,
39 OFFSET_X = 0x16, 41 OFFSET_X = 0x16,
40 OFFSET_Y = 0x17, 42 OFFSET_Y = 0x17,
@@ -62,6 +64,19 @@ enum lis3lv02d_reg {
62 FF_WU_THS_L = 0x34, 64 FF_WU_THS_L = 0x34,
63 FF_WU_THS_H = 0x35, 65 FF_WU_THS_H = 0x35,
64 FF_WU_DURATION = 0x36, 66 FF_WU_DURATION = 0x36,
67};
68
69enum lis302d_reg {
70 CLICK_CFG = 0x38,
71 CLICK_SRC = 0x39,
72 CLICK_THSY_X = 0x3B,
73 CLICK_THSZ = 0x3C,
74 CLICK_TIMELIMIT = 0x3D,
75 CLICK_LATENCY = 0x3E,
76 CLICK_WINDOW = 0x3F,
77};
78
79enum lis3lv02d_reg {
65 DD_CFG = 0x38, 80 DD_CFG = 0x38,
66 DD_SRC = 0x39, 81 DD_SRC = 0x39,
67 DD_ACK = 0x3A, 82 DD_ACK = 0x3A,
@@ -183,6 +198,8 @@ struct lis3lv02d {
183 struct fasync_struct *async_queue; /* queue for the misc device */ 198 struct fasync_struct *async_queue; /* queue for the misc device */
184 wait_queue_head_t misc_wait; /* Wait queue for the misc device */ 199 wait_queue_head_t misc_wait; /* Wait queue for the misc device */
185 unsigned long misc_opened; /* bit0: whether the device is open */ 200 unsigned long misc_opened; /* bit0: whether the device is open */
201
202 struct lis3lv02d_platform_data *pdata; /* for passing board config */
186}; 203};
187 204
188int lis3lv02d_init_device(struct lis3lv02d *lis3); 205int lis3lv02d_init_device(struct lis3lv02d *lis3);