vserver 1.9.3
[linux-2.6.git] / drivers / input / mouse / psmouse.h
1 #ifndef _PSMOUSE_H
2 #define _PSMOUSE_H
3
4 #define PSMOUSE_CMD_SETSCALE11  0x00e6
5 #define PSMOUSE_CMD_SETRES      0x10e8
6 #define PSMOUSE_CMD_GETINFO     0x03e9
7 #define PSMOUSE_CMD_SETSTREAM   0x00ea
8 #define PSMOUSE_CMD_POLL        0x03eb
9 #define PSMOUSE_CMD_GETID       0x02f2
10 #define PSMOUSE_CMD_SETRATE     0x10f3
11 #define PSMOUSE_CMD_ENABLE      0x00f4
12 #define PSMOUSE_CMD_DISABLE     0x00f5
13 #define PSMOUSE_CMD_RESET_DIS   0x00f6
14 #define PSMOUSE_CMD_RESET_BAT   0x02ff
15
16 #define PSMOUSE_RET_BAT         0xaa
17 #define PSMOUSE_RET_ID          0x00
18 #define PSMOUSE_RET_ACK         0xfa
19 #define PSMOUSE_RET_NAK         0xfe
20
21 #define PSMOUSE_FLAG_ACK        0       /* Waiting for ACK/NAK */
22 #define PSMOUSE_FLAG_CMD        1       /* Waiting for command to finish */
23 #define PSMOUSE_FLAG_CMD1       2       /* Waiting for the first byte of command response */
24 #define PSMOUSE_FLAG_WAITID     3       /* Command execiting is GET ID */
25
26 enum psmouse_state {
27         PSMOUSE_IGNORE,
28         PSMOUSE_INITIALIZING,
29         PSMOUSE_CMD_MODE,
30         PSMOUSE_ACTIVATED,
31 };
32
33 /* psmouse protocol handler return codes */
34 typedef enum {
35         PSMOUSE_BAD_DATA,
36         PSMOUSE_GOOD_DATA,
37         PSMOUSE_FULL_PACKET
38 } psmouse_ret_t;
39
40 struct psmouse {
41         void *private;
42         struct input_dev dev;
43         struct serio *serio;
44         char *vendor;
45         char *name;
46         unsigned char cmdbuf[8];
47         unsigned char packet[8];
48         unsigned char cmdcnt;
49         unsigned char pktcnt;
50         unsigned char type;
51         unsigned char model;
52         unsigned long last;
53         unsigned long out_of_sync;
54         enum psmouse_state state;
55         unsigned char nak;
56         char error;
57         char devname[64];
58         char phys[32];
59         unsigned long flags;
60
61         /* Used to signal completion from interrupt handler */
62         wait_queue_head_t wait;
63
64         psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse, struct pt_regs *regs);
65         int (*reconnect)(struct psmouse *psmouse);
66         void (*disconnect)(struct psmouse *psmouse);
67
68         void (*pt_activate)(struct psmouse *psmouse);
69         void (*pt_deactivate)(struct psmouse *psmouse);
70 };
71
72 #define PSMOUSE_PS2             1
73 #define PSMOUSE_PS2PP           2
74 #define PSMOUSE_PS2TPP          3
75 #define PSMOUSE_GENPS           4
76 #define PSMOUSE_IMPS            5
77 #define PSMOUSE_IMEX            6
78 #define PSMOUSE_SYNAPTICS       7
79
80 int psmouse_command(struct psmouse *psmouse, unsigned char *param, int command);
81 int psmouse_sliced_command(struct psmouse *psmouse, unsigned char command);
82 int psmouse_reset(struct psmouse *psmouse);
83
84 extern int psmouse_smartscroll;
85 extern unsigned int psmouse_rate;
86
87 #endif /* _PSMOUSE_H */