Input: ALPS - add semi-MT support for v3 protocol
[sfrench/cifs-2.6.git] / drivers / input / mouse / alps.h
1 /*
2  * ALPS touchpad PS/2 mouse driver
3  *
4  * Copyright (c) 2003 Peter Osterlund <petero2@telia.com>
5  * Copyright (c) 2005 Vojtech Pavlik <vojtech@suse.cz>
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License version 2 as published by
9  * the Free Software Foundation.
10  */
11
12 #ifndef _ALPS_H
13 #define _ALPS_H
14
15 #define ALPS_PROTO_V1   0
16 #define ALPS_PROTO_V2   1
17 #define ALPS_PROTO_V3   2
18 #define ALPS_PROTO_V4   3
19
20 struct alps_model_info {
21         unsigned char signature[3];
22         unsigned char command_mode_resp; /* v3/v4 only */
23         unsigned char proto_version;
24         unsigned char byte0, mask0;
25         unsigned char flags;
26 };
27
28 struct alps_nibble_commands {
29         int command;
30         unsigned char data;
31 };
32
33 struct alps_data {
34         struct input_dev *dev2;         /* Relative device */
35         char phys[32];                  /* Phys */
36         const struct alps_model_info *i;/* Info */
37         const struct alps_nibble_commands *nibble_commands;
38         int addr_command;               /* Command to set register address */
39         int prev_fin;                   /* Finger bit from previous packet */
40         int multi_packet;               /* Multi-packet data in progress */
41         unsigned char multi_data[6];    /* Saved multi-packet data */
42         u8 quirks;
43         struct timer_list timer;
44 };
45
46 #define ALPS_QUIRK_TRACKSTICK_BUTTONS   1 /* trakcstick buttons in trackstick packet */
47
48 #ifdef CONFIG_MOUSE_PS2_ALPS
49 int alps_detect(struct psmouse *psmouse, bool set_properties);
50 int alps_init(struct psmouse *psmouse);
51 #else
52 inline int alps_detect(struct psmouse *psmouse, bool set_properties)
53 {
54         return -ENOSYS;
55 }
56 inline int alps_init(struct psmouse *psmouse)
57 {
58         return -ENOSYS;
59 }
60 #endif /* CONFIG_MOUSE_PS2_ALPS */
61
62 #endif