2 * ALPS touchpad PS/2 mouse driver
4 * Copyright (c) 2003 Peter Osterlund <petero2@telia.com>
5 * Copyright (c) 2005 Vojtech Pavlik <vojtech@suse.cz>
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.
15 #define ALPS_PROTO_V1 0
16 #define ALPS_PROTO_V2 1
17 #define ALPS_PROTO_V3 2
18 #define ALPS_PROTO_V4 3
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;
28 struct alps_nibble_commands {
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 */
43 struct timer_list timer;
46 #define ALPS_QUIRK_TRACKSTICK_BUTTONS 1 /* trakcstick buttons in trackstick packet */
48 #ifdef CONFIG_MOUSE_PS2_ALPS
49 int alps_detect(struct psmouse *psmouse, bool set_properties);
50 int alps_init(struct psmouse *psmouse);
52 inline int alps_detect(struct psmouse *psmouse, bool set_properties)
56 inline int alps_init(struct psmouse *psmouse)
60 #endif /* CONFIG_MOUSE_PS2_ALPS */