upload tizen1.0 source
[kernel/linux-2.6.36.git] / include / linux / wacom_i2c.h
1 #include <linux/module.h>
2 #include <linux/init.h>
3 #include <linux/kernel.h>
4 #include <linux/input.h>
5 #include <linux/i2c.h>
6 #include <linux/interrupt.h>
7 #include <linux/slab.h>
8 #include <linux/hrtimer.h>
9 #include <asm/gpio.h>
10 /*#include <plat/gpio-cfg.h>*/
11 #include <linux/irq.h>
12 #include <asm/irq.h>
13 #include <linux/delay.h>
14
15 #define NAMEBUF 12
16 #define WACNAME "WAC_I2C_EMR"
17 #define WACFLASH "WAC_I2C_FLASH"
18 #define LATEST_VERSION 0x15
19
20 /*Wacom Command*/
21 #define COM_COORD_NUM      7
22 #define COM_QUERY_NUM      9
23
24 #define COM_SAMPLERATE_40  0x33
25 #define COM_SAMPLERATE_80  0x32
26 #define COM_SAMPLERATE_133 0x31
27 #define COM_SURVEYSCAN     0x2B
28 #define COM_QUERY          0x2A
29 #define COM_FLASH          0xff
30
31 /*I2C address for digitizer and its boot loader*/
32 #define WACOM_I2C_ADDR 0x56
33 #define WACOM_I2C_BOOT 0x57
34
35 /*Information for input_dev*/
36 #define EMR 0
37 #define WACOM_PKGLEN_I2C_EMR 0
38
39 /*Enable/disable irq*/
40 #define ENABLE_IRQ 1
41 #define DISABLE_IRQ 0
42
43 /*Special keys*/
44 #define EPEN_TOOL_PEN           0x220
45 #define EPEN_TOOL_RUBBER        0x221
46 #define EPEN_STYLUS                     0x22b
47 #define EPEN_STYLUS2            0x22c
48
49 //#define EMR_INT IRQ_EINT_GROUP(6, 2)  // group 6 : D2
50 //#define PDCT_INT GPIO_ACCESSORY_INT
51 //#define GPIO_PEN_SLP S5PV210_GPH2(3)
52
53 /* Add android code to change position++ */
54 #define WACOM_POSX_MAX 7120
55 #define WACOM_POSY_MAX 11392
56 #define WACOM_PRESSURE_MAX 255
57
58 #define MAX_ROTATION    4
59 #define MAX_HAND                2
60
61 #define COOR_WORK_AROUND
62 /* Add android code to change position-- */
63
64 /*Parameters for wacom own features*/
65 struct wacom_features{
66   int x_max;
67   int y_max;
68   int pressure_max;
69   char comstat;
70   int fw_version;
71   u8 data[COM_COORD_NUM];
72 };
73
74 static struct wacom_features wacom_feature_EMR = {
75         .x_max = 7120,
76         .y_max = 11392,
77         .pressure_max = 256,
78         .comstat = COM_QUERY,
79         .fw_version = 0x0,
80         .data = {0, 0, 0, 0, 0, 0, 0},
81 };
82
83 struct wacom_g5_callbacks {
84         int (*check_prox)(struct wacom_g5_callbacks *);
85 };
86
87 struct wacom_g5_platform_data {
88         int x_invert;
89         int y_invert;
90         int xy_switch;
91         void  (*init_platform_hw)(void);
92         void  (*exit_platform_hw)(void);
93         void  (*suspend_platform_hw)(void);
94         void  (*resume_platform_hw)(void);
95         void (*register_cb)(struct wacom_g5_callbacks *);
96 };
97
98 /*Parameters for i2c driver*/
99 struct wacom_i2c {
100   struct i2c_client *client;
101   struct input_dev *input_dev;
102   struct mutex lock;
103   int irq;
104   int pen_pdct;
105   int gpio;
106   int irq_flag;
107   int pen_prox;
108   int pen_pressed;
109   int side_pressed;
110   int tool;
111   const char name[NAMEBUF];
112   struct wacom_features *wac_feature;
113   struct wacom_g5_platform_data *wac_pdata;
114   struct wacom_g5_callbacks callbacks;
115   int (*power)(int on);
116 };
117