Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux...
[firefly-linux-kernel-4.4.55.git] / drivers / input / touchscreen / malata.h
1 /*
2  *  "MALATA" Cypress touchscreen driver
3  *
4  *  Copyright (C) 2008 LocoLabs LLC
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 version 2 as
8  *  published by the Free Software Foundation.
9  */
10  #define VERSION_1
11 #ifdef VERSION_1
12 /* I2C slave address */
13 #define MALATA_I2C_SLAVE_ADDR           0x5c
14
15 /* I2C registers */
16 #define MALATA_TOUCH_NUM                        0x00
17 #define MALATA_TOUCH_OLD_NUM                    0x01
18 #define MALATA_DATA_INFO                        0x02
19 #define MALATA_POS_X0_LO                        0x02    /* 16-bit register, MSB */
20 #define MALATA_POS_X0_HI                        0x03    /* 16-bit register, LSB */
21 #define MALATA_POS_Y0_LO                        0x04    /* 16-bit register, MSB */
22 #define MALATA_POS_Y0_HI                        0x05    /* 16-bit register, LSB */
23 #define MALATA_POS_X1_LO                        0x06    /* 16-bit register, MSB */
24 #define MALATA_POS_X1_HI                        0x07    /* 16-bit register, LSB */
25 #define MALATA_POS_Y1_LO                        0x08    /* 16-bit register, MSB */
26 #define MALATA_POS_Y1_HI                        0x09    /* 16-bit register, LSB */
27 #define MALATA_POS_PRESSURE                     0x12
28 #define MALATA_DATA_END                         0x12
29 #define MALATA_POWER_MODE                       0x14
30 #define MALATA_INT_MODE                         0x15
31 #define MALATA_SPECOP                           0x37
32 #define MALATA_EEPROM_READ                      0x01
33 #define MALATA_EEPROM_WRITE                     0x02
34 #define MALATA_EEPROM_READ_ADDR                 0x38    /* 16-bit register */
35 #define MALATA_RESOLUTION_X_LO                  0x3d    /* 8-bit register */
36 #define MALATA_RESOLUTION_X_HI                  0x01    /* 8-bit register */
37 #define MALATA_RESOLUTION_Y_LO                  0x3f    /* 8-bit register */
38 #define MALATA_RESOLUTION_Y_HI                  0x01    /* 8-bit register */
39
40 #else
41
42 #define MALATA_I2C_SLAVE_ADDR           0x34
43
44 /* I2C registers */
45 #define MALATA_TOUCH-NUM                        0x00
46 #define MALATA_DATA_INFO                        0x00
47 #define MALATA_POS_X0_LO                        0x03    /* 16-bit register, MSB */
48 #define MALATA_POS_X0_HI                        0x04    /* 16-bit register, LSB */
49 #define MALATA_POS_Y0_LO                        0x05    /* 16-bit register, MSB */
50 #define MALATA_POS_Y0_HI                        0x06    /* 16-bit register, LSB */
51 #define MALATA_POS_X1_LO                        0x09    /* 16-bit register, MSB */
52 #define MALATA_POS_X1_HI                        0x0a    /* 16-bit register, LSB */
53 #define MALATA_POS_Y1_LO                        0x0b    /* 16-bit register, MSB */
54 #define MALATA_POS_Y1_HI                        0x0c    /* 16-bit register, LSB */
55 #define MALATA_DATA_END                         0x0c
56
57 #endif
58
59
60 #define MALATA_IRQ_PERIOD               (26 * 1000000) /* ns delay between interrupts */
61
62 struct malata_data {
63         struct i2c_client               *client;
64         struct workqueue_struct         *workq;
65         struct input_dev                *input;
66         struct hrtimer                  timer;
67         int                             irq;
68         u32                             dx;
69         u32                             dy;
70         u32                             width;
71         u16                             x0;
72         u16                             y0;
73         u16                             x1;
74         u16                             y1;
75         u8                              z;
76 };