Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / drivers / input / mouse / alps.h
bloba00a4ab92a0f7ca2050fa5a3d8b5c85fb142c233
1 /*
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.
12 #ifndef _ALPS_H
13 #define _ALPS_H
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;
25 unsigned char flags;
28 struct alps_nibble_commands {
29 int command;
30 unsigned char data;
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;
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);
51 #else
52 inline int alps_detect(struct psmouse *psmouse, bool set_properties)
54 return -ENOSYS;
56 inline int alps_init(struct psmouse *psmouse)
58 return -ENOSYS;
60 #endif /* CONFIG_MOUSE_PS2_ALPS */
62 #endif