blob: 06534f25e643e15be91bb9eda118898a3241e5ed [file] [log] [blame]
Pavel Machek455fbdd2008-11-12 13:27:02 -08001Kernel driver lis3lv02d
Pavel Machek2b872902009-03-31 15:24:25 -07002=======================
Pavel Machek455fbdd2008-11-12 13:27:02 -08003
4Supported chips:
5
Éric Pielbc62c142009-12-14 18:01:39 -08006 * STMicroelectronics LIS3LV02DL, LIS3LV02DQ (12 bits precision)
7 * STMicroelectronics LIS302DL, LIS3L02DQ, LIS331DL (8 bits)
Pavel Machek455fbdd2008-11-12 13:27:02 -08008
Pavel Machek2b872902009-03-31 15:24:25 -07009Authors:
Pavel Machek455fbdd2008-11-12 13:27:02 -080010 Yan Burman <burman.yan@gmail.com>
11 Eric Piel <eric.piel@tremplin-utc.net>
12
13
14Description
15-----------
16
Éric Pielbc62c142009-12-14 18:01:39 -080017This driver provides support for the accelerometer found in various HP laptops
18sporting the feature officially called "HP Mobile Data Protection System 3D" or
19"HP 3D DriveGuard". It detects automatically laptops with this sensor. Known
20models (full list can be found in drivers/hwmon/hp_accel.c) will have their
21axis automatically oriented on standard way (eg: you can directly play
22neverball). The accelerometer data is readable via
Samu Onkaloe956e6b2009-12-14 18:01:46 -080023/sys/devices/platform/lis3lv02d. Reported values are scaled
24to mg values (1/1000th of earth gravity).
Pavel Machek455fbdd2008-11-12 13:27:02 -080025
26Sysfs attributes under /sys/devices/platform/lis3lv02d/:
27position - 3D position that the accelerometer reports. Format: "(x,y,z)"
Samu Onkaloe956e6b2009-12-14 18:01:46 -080028rate - read reports the sampling rate of the accelerometer device in HZ.
29 write changes sampling rate of the accelerometer device.
30 Only values which are supported by HW are accepted.
31selftest - performs selftest for the chip as specified by chip manufacturer.
Pavel Machek455fbdd2008-11-12 13:27:02 -080032
33This driver also provides an absolute input class device, allowing
Samu Onkaloe956e6b2009-12-14 18:01:46 -080034the laptop to act as a pinball machine-esque joystick. Joystick device can be
35calibrated. Joystick device can be in two different modes.
36By default output values are scaled between -32768 .. 32767. In joystick raw
37mode, joystick and sysfs position entry have the same scale. There can be
38small difference due to input system fuzziness feature.
39Events are also available as input event device.
40
41Selftest is meant only for hardware diagnostic purposes. It is not meant to be
42used during normal operations. Position data is not corrupted during selftest
43but interrupt behaviour is not guaranteed to work reliably. In test mode, the
44sensing element is internally moved little bit. Selftest measures difference
45between normal mode and test mode. Chip specifications tell the acceptance
46limit for each type of the chip. Limits are provided via platform data
47to allow adjustment of the limits without a change to the actual driver.
48Seltest returns either "OK x y z" or "FAIL x y z" where x, y and z are
49measured difference between modes. Axes are not remapped in selftest mode.
50Measurement values are provided to help HW diagnostic applications to make
51final decision.
Pavel Machek455fbdd2008-11-12 13:27:02 -080052
Éric Pielbc62c142009-12-14 18:01:39 -080053On HP laptops, if the led infrastructure is activated, support for a led
54indicating disk protection will be provided as /sys/class/leds/hp::hddprotect.
55
Pavel Machekef2cfc72009-02-18 14:48:23 -080056Another feature of the driver is misc device called "freefall" that
57acts similar to /dev/rtc and reacts on free-fall interrupts received
58from the device. It supports blocking operations, poll/select and
59fasync operation modes. You must read 1 bytes from the device. The
60result is number of free-fall interrupts since the last successful
Éric Pielbc62c142009-12-14 18:01:39 -080061read (or 255 if number of interrupts would not fit). See the hpfall.c
62file for an example on using the device.
Pavel Machekef2cfc72009-02-18 14:48:23 -080063
64
Pavel Machek455fbdd2008-11-12 13:27:02 -080065Axes orientation
66----------------
67
68For better compatibility between the various laptops. The values reported by
69the accelerometer are converted into a "standard" organisation of the axes
70(aka "can play neverball out of the box"):
71 * When the laptop is horizontal the position reported is about 0 for X and Y
Pavel Machek2b872902009-03-31 15:24:25 -070072 and a positive value for Z
Pavel Machek455fbdd2008-11-12 13:27:02 -080073 * If the left side is elevated, X increases (becomes positive)
Pavel Machek219beb22009-01-15 13:51:24 -080074 * If the front side (where the touchpad is) is elevated, Y decreases
75 (becomes negative)
Pavel Machek455fbdd2008-11-12 13:27:02 -080076 * If the laptop is put upside-down, Z becomes negative
77
Pavel Machek219beb22009-01-15 13:51:24 -080078If your laptop model is not recognized (cf "dmesg"), you can send an
Éric Pielbc62c142009-12-14 18:01:39 -080079email to the maintainer to add it to the database. When reporting a new
Pavel Machek219beb22009-01-15 13:51:24 -080080laptop, please include the output of "dmidecode" plus the value of
81/sys/devices/platform/lis3lv02d/position in these four cases.
Pavel Machek455fbdd2008-11-12 13:27:02 -080082
Pavel Machek2b872902009-03-31 15:24:25 -070083Q&A
84---
85
86Q: How do I safely simulate freefall? I have an HP "portable
87workstation" which has about 3.5kg and a plastic case, so letting it
88fall to the ground is out of question...
89
90A: The sensor is pretty sensitive, so your hands can do it. Lift it
91into free space, follow the fall with your hands for like 10
92centimeters. That should be enough to trigger the detection.