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 */