17 #include <linux/module.h>
18 #include <linux/types.h>
19 #include <linux/errno.h>
26 #define AMS_COMMAND 0x00
27 #define AMS_STATUS 0x01
28 #define AMS_CTRL1 0x02
29 #define AMS_CTRL2 0x03
30 #define AMS_CTRL3 0x04
31 #define AMS_DATA1 0x05
32 #define AMS_DATA2 0x06
33 #define AMS_DATA3 0x07
34 #define AMS_DATA4 0x08
35 #define AMS_DATAX 0x20
36 #define AMS_DATAY 0x21
37 #define AMS_DATAZ 0x22
38 #define AMS_FREEFALL 0x24
39 #define AMS_SHOCK 0x25
40 #define AMS_SENSLOW 0x26
41 #define AMS_SENSHIGH 0x27
42 #define AMS_CTRLX 0x28
43 #define AMS_CTRLY 0x29
44 #define AMS_CTRLZ 0x2A
45 #define AMS_UNKNOWN1 0x2B
46 #define AMS_UNKNOWN2 0x2C
47 #define AMS_UNKNOWN3 0x2D
48 #define AMS_VENDOR 0x2E
68 {
"MAC,accelerometer_1", 0 },
78 .probe = ams_i2c_probe,
79 .remove = ams_i2c_remove,
103 if (result == 0 || result & 0x80)
142 static void ams_i2c_clear_irq(
enum ams_irq reg)
144 if (reg & AMS_IRQ_FREEFALL)
147 if (reg & AMS_IRQ_SHOCK)
151 static u8 ams_i2c_get_vendor(
void)
156 static void ams_i2c_get_xyz(
s8 *
x,
s8 *
y,
s8 *z)
194 if (vmaj != 1 || vmin != 52) {
204 if (vmaj != 0 || vmin != 1) {
238 static int ams_i2c_remove(
struct i2c_client *client)
257 static void ams_i2c_exit(
void)
269 ams_info.get_vendor = ams_i2c_get_vendor;
271 ams_info.clear_irq = ams_i2c_clear_irq;
274 result = i2c_add_driver(&ams_i2c_driver);